● Port Fast
* PC↔SW 연결되자마자 포워딩 과정을 거치지 않고, 항상 포워딩 상태를 유지할 수 있도록 한다.
* SW↔SW 간에 연결되어 있으면 서로 BPDU를 주고 받아서 스패닝 트리를 동작시켜야 한다. 그런데 포트 패스트 적용 시
스패닝 트리를 계산하지 않고 항상 포워딩 상태를 유지하게 된다. 상대방이 던져주는 BPDU 무시하나 양쪽 다 무시하게 되면 룹이 발생할 수 있기 때문에 상대방 쪽에서 BLOCK을 할 수 있게 하기 위해서 BPDU를 주기적으로 전달한다.
즉, 해당 기술은 STP 기능을 디세이블 시키는 게 아니라 인에이블은 돼있지만 항상 포워딩 상태를 유지할거기 때문에 별도로 스패닝 트리를 계산할 필요가 없고(포워딩 또는 블록을 결정 하기 위함) BPDU를 2초마다 보내지만 받는거는 무시한다.
* INTERFACE에 설정 - 해당 인터페이스만 포트 패스트 설정
: 조건에 상관 없이 항상 포트 패스트가 인에이블 상태
* GLOBAL 설정 - 어떤 조건에 매치가 되면 그 조건에 매치되는 인터페이스를 포트 패스트 적용하라.
방법1. 모든 Access port에 PortFast 설정, PC나 서버는 엑세스로 연결되고 스위치하고는 트렁크 포트로 연결될거라는 가정에서 설정한다.
방법2. Access port인테 스위치와 연결된 경우 - Access port 중 Switch와 연결된 포트는 제외하고 PortFast 설정
스위치와 연결됐는지 아닌지 아는 방법은 BPDU 정보를 받는지 아닌지 확인하면 된다.
방법3. Trunk Port에 PortFast 설정
스위치랑 연결된 쪽에 적용하는 게 아닌 서버들 중에서 트렁크를 지원하고 설정된 서버와 연결된 경우 사용.
● Uplink Fast
블록 포트를 통해서 BPDU를 수집하고 있었으니, 스패닝 트리를 미리 계산 해놓고 30초라는 시간을 줄이고자 함.
● Backbone Fast
루트 포트가 죽었는데도 불구하고, 루트까지 가는 경로가 없는데 계속 루트에 대한 정보를 갖고 있을 필요가 없으니 루트 포트가 없어지고 나면 루트로 가는 경로가 사라진거니 루트에 대한 정보를 바로 삭제 시켜서 맥시멈 에이징 타임(20초)을 없애고자 만들었다.
################################################################
● BPDU Guard - 알지 못하는 스위치 또는 허브가 연결되지 못하게 하는 기술
* 동작원리
- 관리자가 알지 못하는 스위치가 연결되는 것을 막기 위한 기술.
- 스위치가 연결되고 BPDU를 받으면 유입된 인터페이스를 ERR-DISABLE 상태로 만든다.
* 적용방법
방법1. 인터페이스 설정(글로벌 설정도 동작 원리는 같다)
- 조건에 상관 없이 해당 인터페이스에 무조건 BPDU 가드 적용
- 글로벌 설정과의 차이점은 인터페이스에는 무조건 BPDU 가드가 적용되는거고, 글로벌에 걸게 되면 포트패스트가 적용된 인터페이스에만 BPDU 가드가 적용 된다.
spanning-tree bpduguard ebanle
(default) no spanning-tree bpduguard
방법2. 글로벌 설정(포트 패스트와 연동)
- 포트 패스트가 적용된 인터페이스에만 적용된다.
spanning-tree port type edge bpduguard default
no spanning-tree bpduguard (default)
● BPDU Filter - 스위치가 연결되서 룹 구조가 발생하지 않게 하는 기술
* 동작원리
포트패스트는 BPDU를 받는 건 무시하고 보내는건 허용하면서 항상 포워딩 상태를 유지하지만 스패닝 트티가 디세이블된 상태는 아니었다.(STP 계산만 하지 않음) 그런데 필터는 BPDU를 받지도 보내지도 않는다. 아예 STP 자체를 해당 인터페이스에서 디세이블 하는 기술. 리소스는 아낄 수 있지만 자칫 잘못된 설정으로 룹 구조가 되어 루핑이 발생할 수 있다는 위험성이 있다.
* 적용 방법
1. 인터페이스 설정
무조건 BPDU FILTER 적용(PC, 스위치 어떤게 연결이 되든), 항상 스패닝 트리가 디세이블 됨. 그리고 스위치가 아닌 단말이 연결되어 있다는 게 보장되었을 때 적용되어야 한다.
만약 스위치가 연결이 되서 룹 구조가 된다면 절대로 인터페이스에 설정하면 안된다. 이럴 경우 한 쪽을 블록 시켜야 하는데 해당 설정은 스패닝 트리를 디세이블 시키는데 어떻게 블록을 시킬 것이냐라는 문제가 생긴다. 필터는 STP를 디세이블 하기 때문에 BPDU를 인식하지 못하기 때문에 항상 포워딩 상태이고 룹이 발생하는 상황이 생길 수 있다. 그래서 포트 패스트를 이용하게 된다.
무슨 말이냐면 글로벌에 BPDU 필터를 적용하면 조건이 포트 패스트가 적용된 인터페이스에 BPDU 필터를 적용해라는 식으로 동작하게 된다. 그러면 일단 STP는 인에이블 되어있고, 필터가 적용되어 있으니 BPDU를 보내지도 받지도 않게 된다. 이 상태에서 BPDU가 들어오게 되면 STP는 필터가 적용되어 있는데 BPDU가 들어오네 라는 것을 감지하게 되고, 포트 패스트를 강제로 디세이블 시키도록 만들었다.
2. 글로벌 설정(포트 패스트와 연동)
- 특정 조건에 해당이 되는 경우 BPDU FILTER을 일괄적으로 적용.
- 포트 패스트가 설정된 포트에 BPDU 필터 적용
- BPDU를 받는 경우 포트 패스트 디세이블(1) 그리고 포트 패스트가 디세이블 되었기 때문에 BPDU 필터도 디세이블(2)
STP가 동작하게 된다(3) 그래서 하나의 인터페이스가 블록이 된다(4)
================== Leaf-3 =======================
spanning-tree loopguard default
spanning-tree vlan 1,30 priority 0
================== USER_SW-1 =======================
spanning-tree port type edge bpduguard default
spanning-tree loopguard default
spanning-tree vlan 1,30 priority 4096
interface Ethernet1/4
switchport access vlan 30
spanning-tree port type edge
================== USER_SW-2 =======================
spanning-tree port type edge bpduguard default
spanning-tree loopguard default
spanning-tree vlan 1,30 priority 8192
interface Ethernet1/3
switchport access vlan 30
spanning-tree port type edge
Leaf-3# show spanning-tree vlan 30
VLAN0030
Spanning tree enabled protocol rstp
Root ID Priority 30
Address 00b3.cd3e.1b08
This bridge is the root
Bridge ID Priority 30 (priority 0 sys-id-ext 30)
Address 00b3.cd3e.1b08
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Po30 Desg FWD 3 128.4125 P2p
Eth1/3 Desg FWD 4 128.3 P2p
Eth1/4 Desg FWD 4 128.4 P2p
USER_SW-1# show spanning-tree vlan 30
VLAN0030
Spanning tree enabled protocol rstp
Root ID Priority 30
Address 00b3.cd3e.1b08
Cost 4
Port 1 (Ethernet1/1)
Bridge ID Priority 4126 (priority 4096 sys-id-ext 30)
Address 0049.02de.1b08
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Eth1/1 Root FWD 4 128.1 P2p
Eth1/2 Desg FWD 4 128.2 P2p
Eth1/4 Desg FWD 4 128.4 Edge P2p
USER_SW-2# show spanning-tree vlan 30
VLAN0030
Spanning tree enabled protocol rstp
Root ID Priority 30
Address 00b3.cd3e.1b08
Cost 4
Port 1 (Ethernet1/1)
Bridge ID Priority 8222 (priority 8192 sys-id-ext 30)
Address 0070.92c0.1b08
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Eth1/1 Root FWD 4 128.1 P2p
Eth1/2 Altn BLK 4 128.2 P2p
Eth1/3 Desg FWD 4 128.3 Edge P2p
● Root Guard - 기존의 STP 구조를 망가뜨리는 상황을 막기 위함.
* 동작원리
스위치가 연결되는 것까지 허용, 그런데 새로 연결된 스위치가 BPDU 정보를 보냈는데 그 BPDU에 루트에 대한 정보가 기존에 내가 알고 있던 정보보다 더 좋은 정보여서 해당 인터페이스가 루트 포트가 되는 것을 막는 기술이다.
만일 받은 BPDU 정보 내에 현재 내가 알고 있는 루트 정보보다 더 좋은 우선순위가 높은 루트 정보가 들어온다 라고 하면 해당 인터페이스를 블록 시킨다. 즉, 새로운 스위치에 연결된 인터페이스에 루트 포트가 되는 상황이 발생하게 되면 블록 포트로 만든다.
################################################################
● Loop Guard - 스위치가 연결된다는 조건에서 사용 그래서 포트 패스트와 연동되지 않는다.
- 스위치와 연결된 인터페이스에 적용하는 기술이다. 그렇기 때문에 포트 패스트와 관련이 없다.
-
- 어떤 정상적이지 않은 상태에서 이상함을 감지하고 BPDU가 들어와야 하는데 안들어오면 BLOCK 상태를 풀지 않음으로써 룹을 방지하는 기술이다.
- 특정 장비에 BPDU Filter가 적용 되었거나 또는 STP 프로세스에 문제나 케이블 불량 등으로 BPDU가 제대로 전달되지 못하는 경우에 룹을 차단하는 기술.
- 루프 가드는 BPDU를 받는 인터페이스에서만 동작하기 때문에 D.P 포트에서는 설정할 필요가 없지만 다른 역할의 포트로 변경될 수 있으니 설정하는 게 좋다.
- 정상 경우: 루트 또는 블록 포트인데 BPDU가 들어오지 않으면 비정상적인 경우이다.
1. 인터페이스 설정
BPDU를 받아야 되는 루트 포트와 블록 포트에서 동작하도록 만들어 졌다.
2. 글로벌 설정
port-type P2P인 경우(full duplex) 이면서 스위치와 연결된 인터페이스에만 적용 된다.
● 스위치 전원을 켜고 케이블을 연결하고 바로 STP가 바로 포워딩 상태로 동작하는 게 아니다.
BLOCK(20s) > Listening(15s) > Learning(15s) > Forwarding