2013년 7월 31일 수요일

Access Host Ports 설정하기

Access Host Ports

이 기능은 종단장치에 직접 연결된 포트 한정으로 사용하는 기능이다.
설정은 해당 인터패이스에서 아래와 같이 입력하면 된다.

SW(config-if)# switchport host

이 설정을 입력하면 아래와 같은 효과를 얻는다.

- Trunk포트인 경우, 강제로 Access 포트로 변경된다.
- Etherchannel을 구성한 경우, 강제로 해제된다.
- PortFast 기능이 자동으로 설정된다.

위의 두가지는 굳이 종단장치가 아니여도 상관없지만, 마지막의 PortFast 기능 때문에 이 설정은 반드시 종단장치에 직접 연결된 포트에 대해서만 사용해야 한다.


관련 문서
Configuring Access Host Ports 


P.S : 순서가 엉망인 이유? 그야 뭐... 공부하는 사람이 엉망이라서?

Errdisable Port State Recovery

Errdisable Port State Recovery 기능

앞에서 언급한, 다양한 보호기술들은 상당수가 포트 차단을 동반하고 있다.
이런 기술들을 적용한 상태에서 실제로 동작하게 될 경우, 관련 이슈가 발생하면 포트가 차단된다. 그리고 관리자가 해제하기 전까지는 그 상태가 유지된다. 문제는 항상 그 자리에 대기해서 해제해 줄 수는 없다는 것.

Errdisable Port State Recovery 기능은 이런식으로 차단된 포트를 일정 시간 이후에 다시 전송 상태로 전환시켜주는 기능이다.

설정은 전체 설정모드에서 아래와 같이 입력하면 된다.

SW(config)# errdisable recovery cause [해당이슈명]

예를 들어 BPDU Guard로 인한 차단을 자동적으로 해제하고자 하는 경우라면

SW(config)# errdisable recovery cause bpduguard


복구 시키는 시간은 기본값으로 300초(=5분)로 되어있다. 이 시간을 변경하고자 하는 경우에는 아래와 같이 전체 설정모드에서 입력하면 된다.

SW(config)# errdisable recovery interval [시간(초단위)]


더 자세한 내용은 아래의 관련 문서를 참고하면 된다.


관련 문서
Errdisable Port State Recovery on the Cisco IOS Platforms

2013년 7월 28일 일요일

STP보호기술 2 - BPDU Filtering 와 Loop Guard

BPDU Filtering 

BPDU를 송/수신 하지 않도록 설정하는 기능.
BPDU를 받지 않아도 될 장비에 보내서 부하가 걸리지 않도록 하는데 그 목적이 있다.

설정은 크게 두가지 방식을 취한다.

첫번째 방법은 전체 설정모드에서 설정하는 방식으로, 전체 설정모드에서 다음과 같이 입력한다.

SW(config)# spanning-tree portfast bpdufilter default

이렇게 하면, 더이상 해당 스위치에서는 BPDU를 송신하지 않는다.
다만 수신은 하며, 수신한 경우에는 그 포트에 대해서는 BPDU Filtering이 해제되고
정상적으로 BPDU를 송수신하게된다.

이 방식의 장점은 일괄적으로 한번에 설정할 수 있다는 점.

이렇게 설정된 경우, 일단은 해당 스위치에 존재하는 모든 포트에 일괄적으로 BPDU Filtering기능이 적용된다. 하지만 다른 장치에서 BPDU를 전송 받을 경우, 해당 포트는 BPDU Filtering이 해제된다. 이후는 일반적인 STP환경처럼 Root/Desg/Altn으로 설정된다.

결과적으로 BPDU를 보내지 않는 종단 장치와 연결된 포트들에는 BPDU Filtering이 유지되고, 그 외의 포트들은 BPDU Filtering이 자동적으로 해제된다.

단점은 그 기준이 BPDU 수신여부라는 점.

누군가가 악의적으로 BPDU를 조작해서 보낼 경우, STP구조가 엉망이 되는 상황이 발생 할 수 있다. 별도로 조정하지 않은 기본상태 기준으로 최대 50초간 네트워크가 마비될 수도 있다.


두번째 방법은 개별 인터페이스에서 직접 설정하는 방식으로, 개별 인터페이스에서 다음과 같이 입력한다.

SW(config-if)# spanning-tree bpdufilter enable

이 방식의 경우는 BPDU 송신만이 아닌, BPDU의 수신도 차단한다.

이 방식의 장점은 직접 설정을 해제하지 않는 한 해제되지 않는다는 점.

앞서 언급한 전체설정모드에서 하는 방법의 단점은, 이 방식에서는 발생하지 않는다.

단점은 STP구성에 포함된 포트에서 사용시, 루프가 발생할 수 있다는 것.

본래 Altn포트로 지정되서 블럭되야하는 포트가 BPDU Filtering설정이 되면, 강제적으로 Forwarding상태가 되어 버린다. 이렇게 되면 Loop구성이 되버려서 정상적인 통신을 하지 못하게 된다.

따라서, 종단포트에 대해서만 개별 인터페이스에서 설정하는 것이 좋다.



Loop Guard

STP상에서 이미 차단(Altn - BLK)된 포트가 상대 포트에게 일정시간 이상(기본값은 50초) BPDU를 받지 못하면, 차단상태에서 전송상태(Desg - FWD)로 변경된다. 이 경우, 루프가 발생하게 된다. Loop Guard는 이러한 현상을 방지하기 위한 기능으로, 이 기능이 설정된 경우에는 차단된 포트가 BPDU를 받지 못해서 전송포트로 변경되는걸 방지한다.


전체 설정 모드에서 설정하고자 하는 경우는 아래와 같이 한다.

SW(config)# spanning-tree loopguard default


개별 인터페이스에 대해서 설정하고자 하는 경우는 해당 인터페이스에 들어가서 아래와 같이 설정한다.

SW(config-if)# spanning-tree guard loop


관련 문서

Configuring Spanning Tree PortFast, BPDU Guard, BPDU Filter, UplinkFast, BackboneFast, and Loop Guard 

Catalyst 2960-X Switch Layer 2 Configuration Guide, Cisco IOS Release 15.0(2)EX 

Configuring Optional Spanning-Tree Features

2013년 7월 27일 토요일

STP보호기술 1 - BPDU Guard 와 Root Guard

BPDU Guard

정상적인 경우, 종단장치가 연결된 포트에서는 BPDU가 송신될 필요가 없다. 같은 이유로 수신될 필요도 없고, 수신 될 일도 없는 것이 정상이다. 종단장치가 연결된 포트에서 BPDU가 수신된다는 것은, 승인되지 않은 개인의 스위치or허브 연결이나 해킹으로 인한 STP공격등이 있을 수 있다. 이를 방지하기 위한 기능이 BPDU Guard. 설정하게 되면, BPDU를 수신할 경우 해당 포트가 차단된다.


전체 설정모드에서는 아래와 같이 설정하면 된다.

SW(config)# spanning-tree portfast bpduguard default

이 방법을 사용하면 스위치에 존재하는 포트중 PortFast 설정이 적용된 포트에서 BPDU가 수신되면 해당 포트를 차단하게 된다.


개별 인터페이스에 대해서는 아래와 같이 설정하면 된다.

SW(config-if)# spanning-tree bpduguard enable

이 방법으로 설정한 포트에 BPDU가 수신되면 해당 포트를 차단한다.


Root Guard

STP를 구성할때 핵심이 되는 Root Switch는 브릿지ID가 가장 낮은 스위치가 담당하게 된다.
L2 네트워크의 중심이 되는 장비가 되므로, 대게는 전체를 관리하는 코어쪽(아래 이미지에서 오른쪽의 Service-Provider측)에 Root스위치를 설정해서 사용하게 된다. 문제는 코어에 연결된 개별 사용자측(아래 이미지에서 왼쪽의 Customer측)에서 별도의 장비(Switch)를 연결하고 내부적으로 설정하는 과정에서 Root Switch보다 더 낮은 브릿지ID를 가지게 설정한 경우가 발생할 수 있다. 이렇게 되면, Root Switch가 변경되면서 STP구조가 변경되는 등의 문제가 발생 할 수 있다.


Root Guard 기능은, 설정된 포트로 들어오는 BPDU중, 해당 스위치의 루트ID보다 브릿지ID가 더 낮은 BPDU가 들어오게 되면 해당 포트를 차단하는 기능이다.

이 기능은 개별 인터페이스에서 설정할 수 있다. (전체모드 미지원)

SW(config-if)# spanning-tree guard root

이 기능은 설정시 주의가 필요하다. 대놓고 매뉴얼 상에 장애 발생의 원인이 될 수 있다고 명시될 정도.


관련 문서

Configuring Spanning Tree PortFast, BPDU Guard, BPDU Filter, UplinkFast, BackboneFast, and Loop Guard 

Spanning Tree PortFast BPDU Guard Enhancement

Catalyst 2960-X Switch Layer 2 Configuration Guide, Cisco IOS Release 15.0(2)EX 

Configuring Optional Spanning-Tree Features

2013년 7월 16일 화요일

STP - Priority값

0~61440사이의 값으로 지정 가능하며, 4096 단위로 지정이 가능하다.

0000 = 0
0001 = 4096
0010 = 8192
0011 = 12288
0100 = 16384
0101 = 20480
0110 = 24576
0111 = 28672
1000 = 32768 default
1001 = 36864
1010 = 40960
1011 = 45056
1100 = 49152
1101 = 53248
1110 = 57344
1111 = 61440

위와 같이 표현되는건, 본래 16bit인걸 4bit로 표현하기위해.

STP - 경로 선택


CCNP - Switch 덤프 문제중 하나.
기본적으로 100Mb/s 회선 상태에서 DSW-1 Fa0/7 ~ ASW-1 Fa0/23 사이의 연결만 10Mb/s가 되면, 경로 선택이 어떻게 되는가에 대한 문제.

아래는 각 인터페이스 속도별 경로값(기본값이고 임의로 변경 가능.)이다.

속도(단위 : Mb/s) 경로값
10 100
100 19
1000 4
10000 2

기본적으로 경로 선택은 Root스위치까지의 각 구간별 경로값 합을 기준으로, 가장 낮은 수치의 경로를 선택하게된다. (값이 같은 경우는 포트번호 등을 따지게 된다.)

본래 저 구조라면, DSW-1 Fa0/7 ~ ASW-1 Fa0/23 가 19의 값을 가지게 되고 다른 라인을 거쳐서 오게 되면 19의 배수가 되는 상황(속도가 다 100Mb/s니까.)이라 그 이상 낮아질 수가 없다. 하지만 문제의 조건처럼 저 구간이 10Mb/s가 되면? 100Mb/s 구간을 6회 거치는 경우가 아닌 이상은 사용하지 않게된다. 그리고 저 상황에서는 2회(즉 경로값이 38)가 가장 낮은 상황이 되므로...

참고로 이러한 정보들은 BPDU(Bridge Protocol Data Unit)를 통해 전달된다.


----여기까지는 해당 문제에 대한 이야기고, 좀더 자세한 경로선택에 대해 알아보자.

STP상에서 경로 선택에는 다음과 같은 사항들이 고려된다.
(Root Switch는 기본적으로 활성화된 모든 포트가 Desg상태이므로 언급하지 않는다.)

Path Cost

위에서 언급한 값이다. 기본적으로 Root Switch로 부터 계산하게 된다.


Port Priority

포트별로 지정되는 우선권. 기본값은 128이고, 0~240 범위 내에서 16단위로 설정할 수 있다. 이 값이 낮을 수록 우선권을 가진다. 동일 스위치와 연결된 포트가 여럿이고, 설정된 경로값도 동일할 경우라면 이 값을 기준으로 RP, DP, AP를 결정한다.


Port ID

다른값이 모두 동일한 경우, 포트 자체번호를 기준으로 가장 낮은 번호가 우선권을 가진다.



P.S : 작성 사유? 경로값 자꾸 까먹어서...