[Config] STP Convergence Time 조정
STP Convergence Time 조정
STP는 장애 발생시 이중화가 되어있어도 30~50초간 스위치 네트워크의 다운상태가 지속되는 컨버전스 시간이 길다는 단점이 존재한다. 컨버전스 시간을 조정하는 방법은 시스코에서 개발한 Port-fast, Uplink-fast, Backbone-fast를 사용하거나, 전송지연시간을 명령어를 통해 직접 조정할 수 있다.
또는 RSTP나 MSTP를 사용하기도 한다.
STP Timer
Hello : Hello시간은 스위치간 BPDU를 보내는 시간으로 2초가 기본설정되어있다.
1~10초 사이로 시간조정이 가능하다
Forward delay : Listening과 Learning시간으로 보내는 시간으로 모두 15초로 기본설정되어있다.
4~30초 사이로 시간조정이 가능하다
Max-age : 20초로 기본설정 되어있고 6~40초 사이로 시간조정이 가능하다
실습을 위한 테스트 네트워크 구성
포트패스트 (Port-fast)
스위치의 모든 포트는 어떤 장비와 연결이 되던 활성화가 되면 기본적으로 Listening - Learning 상태를 거쳐서 전송상태로 변경된다. 하지만 PC나 서버와 같은 End-Device 장비가 연결된 포트는 루프가 발생되지 않기 때문에 활성화 되자마자 바로 전송상태가 되어도 문제가 되지 않는다.
포트패스트는 포트가 활성화되면 바로 전송상태가 되게 하는 것으로 PC나 서버와 같은 종단장치가 연결된 포트에 주로 설정한다.
Configuration
@ Global configuration Mode
Switch(config)# spanning-tree portfast default : 스위치의 모든 엑세스 포트에 포트패스트 설정
@ Interface configuration Mode
Switch(config-if)# spanning-tree portfast : 해당 포트에 포트패스트 설정, 기본적으로 엑세스만 가능
Switch(config-if)# spanning-tree portfast trunk : Loop가 없는 토폴로지의 트렁크는 설정 가능
----------------------------------------------------
확인 : show interface fx/x switchport
포트패스트 동작 확인 실습
SW3에서 포트패스트 동작을 확인하기 위해 디버깅을 시작한다.
SW3# debug spanning-tree events
설정 전, 인터페이스가 활성화 되었을때 Forwarding Delay되는 것을 보기 위해 포트를 다운시켰다가 살려본다.
SW3(config)# interface f0/8
SW3(config-if)# shutdown
SW3(config-if)# no shutdown
전역 설정 모드에서 포트패스트 활성화 시키기
SW3(config)# spanning-tree portfast default
→ 허브, 스위치 브리지가 연결된 포트들은 일시적인 루프가 발생될 수 있다는 경고 메시지가 뜬다.
라우터가 연결된 f0/8을 셧다운 시켰다가 활성화 시키면 포트패스트 기능에 의해 바로 전송상태로 변경된다.
스위치가 연결된 포트도 다운시켰다가 활성화시켜보자.
현재 다이나믹 오토로 설정되어 있는 스위치들은 포트가 전부 엑세스로 동작되고 있어서 포트 패스트가 활성화 된다.
SW2이 연결된 f0/13을 다운시켰다가 활성화 시키면 차단 상태에서 바로 전송상태가 되는 것을 확인할 수 있다.
하지만 STP에 의해 블럭킹 되야하는 포트이므로 잠시 후 다시 차단상태로 변경된다.
SW3(config)# interface f0/13
SW3(config-if)# shutdown
SW3(config-if)# no shutdown
01 :36:37: STP: VLAN0001 Fa0/13 ->jump to forwarding from blocking
01 :36:37: STP: VLAN0001 Fa0/13 -> blocking
일시적으로 프레임 루프가 발생될 수있기 때문에 가능하면 전역 설정 모드에서 설정하지 않는 것이 좋다.
인터페이스 설정 모드에서 포트패스트 활성화 시키기
SW3(config)# interface f0/8
SW3(config-if)# spanning-tree portfast
→ 포트패스트가 설정되었지만 트렁크 포트가 아닐때만 적용된다는 경고 메시지가 뜬다
만일 루프가 발생되지 않는다면 트렁크 포트에서도 설정할 수 있다.
SW3(config-if)# spanning-tree portfast trunk
업링크 패스트 (Uplink-fast)
정상적인 링크가 다운이 된 경우 대체포트를 전송상태로 변경하기 위해서 30초의 컨버전스 시간이 필요하다. 업링크 패스트는 직접 연결된 링크가 다운되었을 때 Forward Delay(30초)를 기다리지 않고 대체포트를 차단상태에서 즉시 전송상태로 변경한다.
Uplink란 루트 스위치로 가는 길을 말하며, Uplink Switch란 대체포트를 가진 스위치를 말한다.
우선순위를 조정하지 않은 스위치에서 업링크패스트를 설정하면 해당 스위치를 종단 스위치로 만들기 위해서 기본 우선순위인 32768을 49152로 변경하므로 주의해야 한다.
Configuration
@ Global configuration Mode
Switch(config)# spanning-tree uplinkfast
-------------------------------------------------
확인 : show spanning-tree uplinkfast
업링크패스트 동작 확인 실습
설정 전, 백업링크가 전송상태로 변하는데 30초가 걸리는 것을 디버깅을 통해 확인한다.
SW3(config)# interface f0/1
SW3(config-if)# shutdown
02:11 :28: STP: VLAN0001 Fa0/13 -> listening
02:11 :43: STP: VLAN0001 Fa0/13 -> learning
02:11:58: STP: VLAN0001 Fa0/13 -> forwarding
전역 설정 모드에서 업링크 패스트를 설정한다.
SW3(config)# spanning-tree uplinkfast
이 설정은 종단 스위치에서 설정해야 하고, 루트 스위치에서는 설정해도 효과가 없다.
업링크 패스트를 설정하면 해당 스위치를 엑세스 스위치로 만들기 위해 자신의 우선순위를 기본 32768에서 49152로 변경한다. 따라서 조정하지 않은 상태의 루트 스위치에서 이 명령어를 사용하게 되면 엑세스 스위치로 변경되므로 주의해야 한다.
SW3(config)# interface f0/1
SW3(config-if)# shutdown
업링크 패스트에 의해 차단포트가 바로 전송상태로 변경되는것을 확인할 수 있다.
백본패스트 (Backbone-fast)
백본패스트는 간접적으로 연결된 링크가 다운되었을 때 Max-age(20초)를 생략하고 차단 상태의 대체포트를 즉시 청취상태로 변경시킨다.
STP가 동작되고 있는 스위치 망에서 간접링크가 다운되면 대체포트를 가진 스위치는 후순위 BPDU를 통해 링크의 다운을 감지한다. (후순위 BPDU : 루트스위치의 B-ID 보다 우선순위가 떨어지는 BPDU)
기본적으로는 Max-age 20초동안(후순위 BPDU를 10번 받는동안) 기다리다가 대체포트를 청취상태로 변경하게 되는데, 백본패스트를 설정하면 후순위 BPDU를 받으면 그냥 Max-age를 생략하는 것이 아니라, 대체포트를 가진 스위치가 루트스위치고 RLQ(Root Link Query)를 전송하여 루트스위치로부터 응답을 받아 이상이 없음을 확인하면 Max-age를 만료하고 청취상태로 변경시킨다.
Configuration
@ Global configuration Mode
Switch(config)# spanning-tree backbonefast
-------------------------------------------------
확인 : show spanning-tree backbonefast
백본패스트 동작 확인 실습
설정 전, 간접 링크가 다운되었을 때 컨버전스 시간이 걸리는 과정을 디버깅 해본다.
SW2(config)# interface f0/11
SW2(config-if)# shutdown
SW3# debug spanning-tree events
03:29:18: STP: VLAN0001 heard root 4097-001a.2fd4.0f80 on Fa0/13
03:29:19: STP: VLAN0001 heard root 4097-001a.2fd4.0f80 on Fa0/13
: (생략)
03:29:33: STP: VLAN0001 heard root 4097-001a.2fd4.0f80 on Fa0/13
03:29:35: STP: VLAN0001 heard root 4097-001a.2fd4.0f80 on Fa0/13
03:29:36: STP: VLAN0001 Fa0/13 -> listening
03:29:51: STP: VLAN0001 Fa0/13 -> learning
03:30:06: STP: VLAN0001 Fa0/13 -> forwarding
루트 스위치와 연결이 끊긴 SW2는 자신의 B-ID를 R-ID에 넣은 후순위 BPDU를 SW3에게 전달한다.
SW3은 Max-age 시간인 20초동안 BPDU를 10번 받고난 후에 청취상태로 들어가게 된다.
모든 스위치에서 백본패스트를 설정한다.
SW1(config)# spanning-tree backbonefast
SW2(config)# spanning-tree backbonefast
SW3(config)# spanning-tree backbonefast
백본패스트 동작을 확인하기 위해 SW2의 f0/11 포트를 다운시켜본다.
그 뒤 SW2에서 디버깅으로 확인해보면 후순위 BPDU를 수신하는 즉시 차단포트를 청취상태로 변경시키는것을 확인할 수 있다
SW3#
03:37:59: STP: VLAN0001 heard root 4097-001a.2fd4.0f80 on Fa0/12
03:37:59: STP: VLAN0001 Fa0/12 -> listening
03:38:14: STP: VLAN0001 Fa0/12 -> learning
03:38:29: STP: VLAN0001 Fa0/12 -> forwarding
STP Timer 직접 조정
Default Timer : Hello (2sec), Max-age (20sec), Forward (15sec)
위 기본 타이머 시간을 직접 조정하여 컨버전스 시간을 단축 시킬 수 있는데, 이는 반드시 루트스위치에서 조정해야만 전체 네트워크에 적용된다. 조정할 수 있는 범위가 지정되어있어서 아예 없앨수는 없다.
네트워크 Diameter(디아미터)를 조절하면 자동적으로 적정 타이머 값으로 변경되는데, 여기서 Diameter란 Root 스위치를 포함해서 가장 멀리 떨어진 스위치의 수량을 의미한다. Diameter별 타이머 값은 아래와 같고 기본적으로 사용하고 있는 타이머 값은 네트워크 디아미터가 7인 경우를 가정하고 설정된 것이다.
Diameter |
2 |
3 |
4 |
5 |
6 |
7 |
Hello |
2 |
2 |
2 |
2 |
2 |
2 |
Delay |
7 |
9 |
10 |
12 |
13 |
15 |
Max-age |
10 |
12 |
14 |
16 |
18 |
20 |
이 값을 이용하여 자동적으로 변경하고자 하면 아래와 같이 설정할 수 있다.
SW1(config)# spanning-tree vlan 10 root primary diameter 4
관리자가 원하는대로 조정하고 싶다면 아래와 같은 명령어로 변경할 수 있다.
Hello time 조정 (컨버전스 시간 줄이는데 영향을 주지 않고 부하만 주기 때문에 권장X)
Switch(config)# spanning-tree vlan x helllo-time x (1~10sec)
Max-age 조정
Switch(config)# spanning-tree vlan x max-age x (6~40sec)
Forward time 조정
Switch(config)# spanning-tree vlan x forward-time x (4~30sec)