실습을 위한 테스트 네트워크 구성
BPDU Guard
특정 포트를 통해 BPDU를 수신했을 때, 해당 포트를 자동으로 shutdown 시키는 기능이다.
스위치가 아닌 장비들이 BPDU를 보낼일이 없기 때문에, 일반적으로 PC나 서버와 같은 종단 장치가 접속된 포트에 설정한다.
종단장치가 접속된 포트가 BPDU를 수신한다는 것은 일반 사용자들이 무단으로 스위치에 개인의 스위치나 허브를 접속했거나, STP 관련 해킹 공격을 받고 있음을 의미하는 경우가 많다.
Configuration
@ Global configuration Mode
Switch(config)# spanning-tree portfast bpduguard default
@ Interface configuration Mode
Switch(config)# interface F0/13
Switch(config-if)# spanning-tree bpduguard enable
BPDU Guard 설정 실습
DP에 BPDU Guard 설정해보기
SW2(config)# interface f0/13
SW2(config-if)# spanning-tree bpduguard enable
→ SW2의 f0/13은 DP이기 때문에 BPDU를 송신만 하고 수신은 하지 않는다. 변화가 없는 것을 확인하고 제거한다.
BPDU를 수신하는 포트에 BPDU Guard 설정해보기
SW3(config)# interface f0/13
SW3(config-if)# spanning-tree bpduguard enable
에러가 발생된 인터페이스와 원인 확인하기
SW3# show interface f0/13
FastEhternet0/13 is down, line protocol ids down (err-disabled)
SW3# show errdisable detect
→ 다양한 원인으로 인해 에러가 발생했을 경우 확인하는 명령어
SW3# show interface status err-disabled
→ 에러가 발생한 포트와 상태 및 원인을 알 수 있다.
에러난 포트 복구하기
인터페이스를 다운시켰다 활성화 시켜서 복구한다
SW3#(config)# interface f0/13
SW3#(config-if)# shutdown (and no shutdown)
Recovery 시간을 설정하여 자동으로 복구하도록 설정한다
SW3(config)# errdisable recovery cause bpduguard
SW3(config)# errdisable recovery interval 120 (Sec)
BPDU Filter
특정 포트로 BPDU를 보내거나 받지 않게 하는 기능이다. 이 기능을 통해 BPDU를 송신하지 않음으로써 스위치 및 포트에 접속된 종단 장치에 불필요한 부하가 걸리는 것을 방지할 수 있다.
전역 설정모드에서 설정하면 포트패스트가 설정된 포트에만 BPDU 필터 기능이 적용되며, 인터페이스에서 BPDU가 송신되는 것을 차단시키는 역할을 한다. 만약 BPDU 송신이 차단된 인터페이스에서 BPDU를 수신하게 되면 BPDU 필터링 기능이 해제되면서 수신한 BPDU에 따라 적절한 STP 포트상태로 변한다.
인터페이스 설정모드에서 설정하면 해당 인터페이스에서 BPDU 송수신 모두 필터링 시킨다. 수신도 차단하기 때문에 이 기능을 잘못 설정하게 되면 STP 차단포트가 사라지면서 루프가 발생될 수 있다.
Configuration
@ Global configuration Mode
Switch(config)# spanning-tree portfast bpdufilter default
@ Interface configuration Mode
Switch(config)# interface F0/13
Switch(config-if)# spanning-tree bpdufilter enable
BPDU Filter 설정 실습
전역설정모드에서 BPDU Filter 설정해보기
SW3(config)# spanning-tree portfast bpdufilter default
→ BPDU 필터링이 설정된 인터페이스로 BPDU를 수신하면 필터링 기능이 없어지면서 정상적으로 동작한다.
인터페이스 설정모드에서 BPDU Filter 설정해보기
SW3(config)# interface f0/8
SW3(config-if)# spanning-tree bpdufilter enable
→ 인터페이스에서 설정하면 BPDU 송수신이 모두 안되기 때문에 STP가 동작되지 않는 것과 같아서 주의해야한다.
차단포트에 BPDU Filter 설정해보기
SW3(config)# interface f0/13
SW3(config-if)# spanning-tree bpdufilter enable
→ BPDU를 수신하지 못한 SW3의 f0/13을 DP라고 여겨 전송상태로 변경한다. 결과적으로 루프가 발생한다.
Root Guard
Root Guard란 특정 포트에 접속된 네트워크에 있는 스위치들은 루트 스위치가 될 수 없도록 하는 기능이다.
루트 가드가 설정된 포트에서 현재 Root Bridge의 B-ID보다 낮은 값의 B-ID를 담은 BPDU를 수신하면 해당 포트를 다운시켜서 루트선출에 참여하지 못하도록 막아서 Root Bridge를 보호하는 기술이다.
Configuration
@ Interface configuration Mode
Switch(config)# interface F0/8
Switch(config-if)# spanning-tree guard root
Loop Guard
Loop Guard란 차단포트가 BPDU를 받지 못해도 전송상태로 변경되지 않도록 해주는 기능이다.
차단 상태에 있던 포트가 상대 포트(DP)로부터 BPDU를 받지 못하면, 상대 장비에 문제가 생긴 것으로 인식하여 자신의 포트를 DP로 역할을 변경하고 전송상태로 전환시킨다. 하지만 필터링 설정을 잘못하여 BPDU를 수신하지 못한 경우라면 차단포트가 전송상태로 변경되면서 루프가 발생될 수도 있다.
링크에 문제가 생긴 경우에 차단 상태가 변하지 않으면 어떻게 해야되는지 의아해할 수도 있겠지만, 루프 가드가 설정되어 있어도 네트워크에 문제가 생겨서 차단 포트가 전송 상태로 변경이 필요한 경우에는 정상적으로 동작된다.
Configuration
@ Global configuration Mode
Switch(config)# spanning-tree loopguard default
@ Interface configuration Mode
Switch(config)# interface F0/13
Switch(config-if)# spanning-tree guard loop
Loop Guard 설정 실습
Loop Guard 설정 상태에서 BPDU를 받지 못한 경우
SW3(config)# spanning-tree loopguard default
SW2(config)# interface f0/13
SW2(config-if)# spanning-tree bpdufilter enable
→ SW3에 Loop Guard 설정을 해두고 SW2에서 BPDU를 송신하지 않도록 설정하였다.
SW3# debug spanning-tree events
10:25:41: %SPANTREE-2-LOOPGUARD_BLOCK: Loop guard blocking port FastEthernet0/13 on VLAN0001
→ SW3에서 디버깅을 해보면 차단포트에서 BPDU를 수신하지 못하자 전송상태로 변경하지 않고 루프가드에 의해 차단상태로 유지한다. show spanning vlan 1로 확인해보면 해당 포트가 Loop Inconsistent (일종의 차단상태)로 되어있다.
SW2에서 필터링을 해제하면 포트상태가 정상적인 차단상태가 되는 것을 볼 수 있다.
Loop Guard 설정 상태에서 실제로 네트워크 문제 발생된 경우
SW2(config)# interface f0/11
SW2(config-if)# shutdown
→ 간접링크의 다운을 감지하는 후순위 BPDU를 만들어내기 위해 SW2의 인터페이스를 다운시켜본다.
SW3# debug spanning-tree events
10:44:28: STP: VLAN0001 heard root 4097-001a.2fd4.0f80 on Fa0/13
10:44:28: STP: VLAN0001 Fa0/13 -> listening
10:44:38: STP: VLAN0001 Fa0/13 -> learning
10:44:48: STP: VLAN0001 Fa0/13 -> forwarding
SW3(config)# interface f0/1
SW3(config-if)# shutdown
→ 직접링크의 다운을 감지했을 때를 보기 위해 SW3의 f0/1 인터페이스를 다운시켜본다.
SW3# debug spanning-tree events
10:48:29: %SPANTREE FAST-7-PORT FWD UPLlNK: VLAN0001 FastEthernet0/13 moved to Forwarding
UDLD (Unidirectional Link Detection)
UDLD는 스위치간 단방향 링크가 생겼을 때 해당 포트를 셧다운 시키는 기능이다.
연결된 두 장비의 링크에 송신 또는 수신에 문제가 생겨서 트래픽을 못받는 경우, L2 Loop가 발생하거나 한 쪽이 송신한 프레임이 사라지는 블랙홀이 발생할 수 있다.
UDLD는 기본적인 정상모드 (normal mode) 와 적극모드(aggressive mode) 라는 두 가지 동작모드가 있다.
정상모드는 광케이블의 결선오류로 인한 단방향 링크를 감지할 수 있다. 적극모드에서는 추가적으로 광케이블과 UTP의 단방향 트래픽으로 인한 단방향 링크까지도 감지할 수 있다.
- 정상모드 : Fiberoptic Cable에서 쓸 때
- 적극모드 : Ethernet Cable에서 쓸 떄
Configuration
@ Global configuration Mode
Switch(Config)# udld enable (정상모드)
Switch(Config)# udld aggressive (적극모드)
@ Interface configuration Mode
Switch(Config-if)# udld port (정상모드)
Switch(Config-if)# udld port aggressive (적극모드)
UDLD 동작 과정
- UDLD가 설정되어 있지 않은 상태에서 위 그림과 같이 단방향 링크가 만들어지게 되면 BPDU를 수신하지 못한 SW3의 차단포트가 DP로 설정되면서 전송상태로 변경되고 2계층 루프가 발생되게 된다.
- UDLD를 설정하게 되면 주기적으로 송신포트를 통하여 UDLD 패킷을 전송하고, 상대 장비에서는 다시 자신의 송신포트로 상대에게 재전달(echo)해줘서 양방향 링크가 동작중인 것을 확인한다.
'Switch' 카테고리의 다른 글
Switchport - Access (1) | 2018.06.17 |
---|---|
Port-security 실습 (0) | 2015.11.28 |
이중화 게이트웨이 프로토콜 (HSRP/VRRP) (2) | 2014.10.05 |
[Config] Inter VLAN Routing (with L3 Switch) (0) | 2014.09.29 |
[Config] Inter VLAN Routing (with Router) (2) | 2014.09.29 |