태그 보관물: Switch

[Switch] SPAN

Switch Port Analyzer

특정 포트를 통해 입/출력되는 트래픽을 다른 포트로 복제하여 분석하는 기능이다. 트래픽 분석 또는 침입방지시스템(IPS)를 위해 설정한다. 여러 개의 포트로 입/출력되는 트래픽을 동시에 복제할 수 있고, VLAN 트래픽도 복제할 수 있다.

SPAN 포트 종류

SPAN Source Port : 분석 대상이 되는 포트.
SPAN Destination Port : 분석장비가 연결된 포트, 여기에 접속된 장비는 인터넷은 물론 Layer 2 프로토콜이 동작하지 않는다. 어떤 VLAN에 소속되어도 상관 없다.

SPAN 지역 종류

Local SPAN : SPAN Source 와 Destination이 동일한 스위치 소속.
Remote SPAN : SPAN Source 와 Destination이 서로 다른 스위치 소속.

SPAN 설정

토폴로지1. SPAN 설정
Switch(config)# monitor session 1 source int fa0/3
Switch(config)# monitor session 1 destination int fa0/2

RSPAN 설정

토폴로지2. RSPAN 설정

[ SPAN Source 스위치 설정 ]

SW1(config)# vlan 500
SW1(config-vlan)# remote-span
SW1(config-vlan)# exit
SW1(config)#
SW1(config)# monitor session 1 source int fa0/1
SW1(config)# monitor session 1 destination remote vlan 500

[ SPAN Destination 스위치 설정 ]

SW2(config)# vlan 500
SW2(config-vlan)# remote-span
SW2(config-vlan)# exit
SW2(config)#
SW2(config)# monitor session 1 source remote vlan 500
SW2(config)# monitor session 1 destination int fa0/20


[Switch] VLAN Hopping Attack

서로 다른 VLAN의 호스트들끼리 통신하려면, L3 장비를 거쳐서 통신해야한다. 그러나, 다른 VLAN에 속한 대상을 공격할 때, L3 장비를 거치지 않고 공격하는 것을 VLAN Hopping Attack이라고 한다.

아래 토폴로지를 보고 어떻게 Hopping Attack이 진행되는지 보자.

토폴로지 1. VLAN Hopping Attack

[현재 토폴로지 구성 상태]
(1) 현재 관리자가 PC와 연결된 SW2의 포트를 설정할 때,
‘switchport access vlan 20’만 설정한 상황.
(2) ‘switchport mode access’를 누락했고, native vlan 도 1인 상황이다.

이 상태라면 공격자는 DTP 프레임을 이용해 SW2-공격자 PC의 mode를 Trunk로 변경할 수 있게 된다.


① Trunk포트로 변경하고, Data를 보낸다.

SW2—–공격자의 Port mode가 Trunk로 변경되고,

공격자는 SW2로 패킷을 보낸다.
( Vlan 1 Tag | Vlan 10 Tag | 공격 Data )

SW2의 Native VLAN이 1 이므로
VLAN 1 TAG를 제거 후 SW1로 전달한다.

② VLAN 1 TAG를 제거 후 SW1로 데이터를 전송한다.

SW1은 패킷의 VLAN 10 TAG를 보고, VLAN 10에 속한 PC1에게 패킷을 전달한다.
이렇게 공격자의 패킷은 무탈히 PC1로 전송되었다.

그렇다면, 이런 공격을 막을 수 있는 방법은 무엇일까?
당연하게도 이미 방법은 나와있다.

①Trunking을 사용하지 않는 포트는 반드시 Access로 설정해주고,
②Native VLAN은 반드시 다른 번호로 변경하는 것이다.

[Switch] 포트 트래픽 제어

스위치 보안 중 트래픽의 출발지를 보고 차단하는 방법만 있는 것이 아니다. 트래픽의 종류, 트래픽의 양에 따라 차단하는 방법도 있다. 바로 포트 트래픽을 제어하는 것이다. 포트 트래픽에 대해 알아보자.

  1. Storm Control
  2. Protected Port
  3. Port Blocking

토폴로지1. 포트 트래픽 제어

1. Storm Control (과다 트래픽 제어)

스위치의 포트로 Unicast / Multicast / Broadcast 트래픽이 1초 동안 사용자가 설정한 수준 이상으로 많이 수신되었을 때, 해당 트래픽을 모두 차단한다.

설정

예를 들어, SW2의 F0/3에서 Broadcast 패킷이 대역폭의 25% 이상을 차지할 경우 차단하는 것을 설정해보자.

SW2(config)# int fa0/3
SW2(config-if)# storm-control broadcast level 25

3: broadcast 대신 unicast, multicast로 설정할 수 있다. level 25는 대역폭의 25%를 의미하므로 적절한 값으로 변경하여 설정할 수 있다.


2. Protected Port (방어 포트)

하나의 스위치에서 Protected Port로 설정된 포트끼리 Unicast / Multicast / Broadcast를 차단한다. 서로 다른 스위치의 Protected Port끼리는 정상적으로 트래픽을 주고 받는다.
(단, 목적지가 없는 프레임은 Flooding 된다.)
Protected Port로 설정되지 않은 포트와는 정상적으로 트래픽을 주고 받을 수 있다.

설정

SW2의 F0/2, F0/3을 Protected Port로 설정해보자.

SW2(config)# int ran fa0/2 - 3
SW2(config-if)# switchport protected

이제 PC1과 PC2를 PING 테스트해보면 응답이 없는 것을 확인할 수 있다.
PC1 – PC3, PC2 – PC3 간의 PING은 정상적으로 나간다.


3. Port Blocking (포트 차단)

스위치가 수신한 프레임의 목적지가 MAC Table에 없다면, Flooding 되는 것을 차단한다. Unicast / Multicast 패킷에만 적용할 수 있다.

설정

SW2의 F0/4에 목적지가 없는 Multicast 프레임을 차단하도록 설정해보자.

SW2(config)# int fa0/4
SW2(config-if)# switchport block multicast

3: multicast 대신 unicast를 사용할 수 있다.

ACL을 알아보자 3: MAC/Port/VLAN ACL, PBACL

ACL은 라우터 뿐만 아니라 스위치에서도 설정할 수 있다. 스위치에서 구성할 수 있는 ACL은 아래와 같다.

  1. MAC ACL
    IP ACL (이전 게시글 참고)
  2. Port ACL
  3. VLAN ACL
  4. PBACL

1. MAC ACL

MAC 주소를 이용해 트래픽을 제어한다. 일반적인 IP ACL과 다르게 MAC ACL은 반드시 Named ACL을 사용해야 한다.

설정

Switch(config)# mac access-list extended <name>
Switch(config-ext-macl)# deny host <MAC> host <MAC>
Switch(config-ext-macl)# permit any any

만일, 여러 개의 MAC주소를 지정하려면, 와일드카드 마스크를 이용해 지정한다.
ex) 0011. CB 로 시작하는 모든 MAC주소를 지정한다면, 와일드카드 마스크가 0000.00FF.FFFF가 될 것이다.


2. Port ACL

일반적으로 라우터에 사용하는 IP ACL과 비슷해보이지만, Port ACL은 L2 포트에 ACL을 적용하는 것이다. IP주소/MAC주소 모두 사용할 수 있고, 동시에 필터링을 할 수도 있다.

  • 프레임을 수신하는 경우(in방향)에만 ACL을 설정할 수 있다.
  • 특정 스위치에 VLAN ACL이 설정되었거나 라우터에 Inbound ACL이 설정되어있다면, 사용할 수 없다.
  • Etherchannel을 사용하는 인터페이스에서 사용할 수 없다.
  • MAC주소로만 필터링 한다면, MAC의 접근은 차단되어도 해당 MAC의 IP로는 접근할 수 있다.

3. VLAN ACL

VLAN에 적용하는 ACL이다. 서로 다른 VLAN 번호 간 제어, 같은 VLAN 번호 간 트래픽을 제어한다.
VACL, VLAN Map 이라고도 한다.

설정

(1) ACL 생성
(2) VLAN MAP 생성
(3) VLAN MAP을 VLAN에 적용

[설정 예시]

-
Switch(config)# access-list 100 permit tcp host 10.10.10.1 host 10.10.10.3 eq ssh
Switch(config)# access-list 100 permit tcp host 10.10.20.1 host 10.10.10.3 eq ssh
Switch(config)# access-list 101 permit ip any any
Switch(config)# 
Switch(config)# vlan access-map <VLAN_MAP_NAME>
Switch(config-access-map)# match ip address 100
Switch(config-access-map)# action drop
Switch(config-access-map)# exit
Switch(config)# 
Switch(config)# vlan access-map <VLAN_MAP_NAME>
Switch(config-access-map)# match ip address 101
Switch(config-access-map)# action forward
Switch(config-access-map)# exit
Switch(config)# 
Switch(config)# vlan filter <VLAN_MAP_NAME> vlan-list <VLAN_NUM>
-

2,3,4 : Access list를 통해 허용할 호스트를 지정한다.
6: VLAN Map을 설정한다.
7: 허용하거나 차단할 대상을 불러온다.
8: 7번 대상이 오면 Drop(차단)하도록 설정한다. 별도 action 설정을 하지 않으면, Forward(허용)이다.
11: 6번과 같은 이름을 사용한다. 이름이 같아도 상관없다. 어차피 access-map을 보게 되면 자동으로 맵 이름 뒤에 20이 추가로 붙게 되어 서로 다른 맵이다.
12,13: 맵 이름만 정의하면, match / action을 설정하지 않으면 나머지 모든 것을 허용한다는 의미이므로 12,13는 생략해도 된다.
16: 원하는 VLAN에 VLAN 맵을 적용한다.


4. PBACL

Policy-Based ACL
IP 주소나 포트 번호를 ‘Object Group’으로 지정하고, ACL 생성 시 ‘Object Group’을 사용해 지정하는 방식이다. Routed / SVI와 같은 L3 인터페이스와 IPv4만 적용할 수 있다. 또한, Named ACL로만 적용할 수 있다.

설정

-
Switch(config)# object-group ip address <OBJECT_NAME>
Switch(config-port-ogroup)# host <IP>
Switch(config-port-ogroup)# <NETWORK_ID> <SUBNETMASK>
Switch(config-port-ogroup)# exit
Switch(config)#
Switch(config)# object-group ip address <OBJECT_NAME2>
Switch(config-port-ogroup)# eq <PORT_NUM>
Switch(config-port-ogroup)# <NETWORK_ID> <SUBNETMASK>
Switch(config-port-ogroup)# exit
Switch(config)#
Switch(config)# ip access-list extended <ACL_NAME>
Switch(config-ext-nacl)# permit tcp addgroup <OBJECT_NAME> portgroup <OBJECT_NAME2> any
Switch(config-ext-nacl)# deny tcp any any
Switch(config-ext-nacl)# exit
Switch(config)# int <interface>
Switch(config-if)# ip access-group <ACL_NAME> in
-

[Switch] 포트 보안

스위치의 특정 포트에 특정 MAC만 허용할 수 있는 기능이다.
Access / Trunk / Tunnel 이 아닌 동적 모드에서는 사용할 수 없다.

  1. 정적 MAC 지정
  2. 동적 MAC 지정
  3. Port-Sticky
  4. 포트 보안 침해 시 동작

토폴로지1. 포트보안

1. 정적 MAC 지정

-
Switch0(config)# int <INTERFACE>
Switch0(config-if)# switchport mode access
Switch0(config-if)# switchport port-security mac-address <MAC>
Switch0(config-if)# switchport port-security
-

5: switchport port-security 부터 설정하면, 동적 MAC 지정이 되므로 반드시 정적으로 MAC 지정할 때는 4:을 먼저 설정한다.

또한, fa0/1에 설정했던 MAC이 fa0/2로 들어온다면, fa0/2도 포트가 비활성화된다.

2. 동적 MAC 지정

동적 MAC으로 지정하도록 설정한다면, MAC Table에 있는 첫번째 MAC 또는 처음 MAC Table에 기록되는 것으로 지정한다. 스위치가 재부팅되면 동적으로 지정된 MAC은 삭제된다.

-
Switch0(config)# int <INTERFACE>
Switch0(config-if)# switchport port-security
-

3. Port-Sticky

한번에 여러 개의 MAC을 지정해야될 때, 유용하다.
동적 MAC 지정과는 다르게 스위치가 재부팅되도 지정된 MAC정보가 유지된다.

-
Switch0(config)# int <INTERFACE>
Switch0(config-if)# switchport trunk encapsulation dot1q
Switch0(config-if)# switchport mode trunk
Switch0(config-if)# switchport port-security
Switch0(config-if)# switchport port-security maximum 3
Switch0(config-if)# switchport port-security mac-address sticky
-

4. 포트 보안 침해 시 동작

기본적으로 포트 보안 침해 시 Shutdown.

  • protect : 보안 침해 시 침해한 장비를 차단한다. 접속 허용된 장비는 그대로 허용한다.
  • restrict : 보안 침해 시 침해한 장비를 차단한다. 접속 허용된 장비는 그대로 허용한다. Log를 발생시키고, 보안 침해 카운터를 증가시킨다.
  • shutdown : 포트를 셧다운한다.
-
Switch0(config)# int <INTERFACE>
Switch0(config-if)# switchport port-security violation [protect|restrict|shutdown]
-

[Switch] MSTP

Multiple Spanning Tree Protocol

그동안 학습한 STP와 RSTP는 VLAN 하나 당 1개의 스패닝 트리가 동작한다. VLAN이 200개라면, 200개의 스패닝 트리가 돌아간다는 의미이자 2초마다 200개의 BPDU를 수신한다는 의미이다.
왠지 Switch에 부담이 가지 않을까 싶다..

다행히 이런 문제점을 해결하기 위해 나온 프로토콜이 있으니,,
이름하여 MSTP다. 여러 개의 VLAN을 묶어 하나의 스패팅 트리만 동작되도록 하는 것이다.
VLAN 묶는다면 묶인 VLAN을 셀 때 필요한 단위가 있을거고, 여러 개의 Switch 중 하나는 대표 역할을 해야할 것이다. 그래야 관리하기 쉬울 테니 말이다.

  1. MSTP 단위
  2. CIST와 MSTI
  3. MSTP 동작과정
  4. MSTP의 BPDU
  5. MSTP 설정

1. MSTP 단위

VLAN 여러 개를 묶으면, Instance
Instance 여러 개를 묶으면, Region

Instance 당 1개의 스패닝 트리가 동작한다.

참고로, 동일 VLAN 번호일지라도 서로 다른 Instance에 속할 수 있다.


2. CIST와 MSTI

MSTP에는 2가지 스패닝 트리가 사용된다.

CIST

Common and Internal Spanning Tree

전체 Switch 네트워크를 루프없이 연결하는 목적을 갖고 있다.
전체 Switch 네트워크의 통신 경로를 설정한다.
CIST Root Switch – 1개
CIST Regional Root Switch – Region별 1개

MSTI

Multiple Spanning Tree Instance

Region의 각 Instance 통신 경로를 설정한다.
Root Switch – MST Instance별 1개


3. MSTP 동작과정

CIST 스패닝 트리의 동작 과정

  1. 각 Switch는 특정 VLAN ID를 특정 MSTI에 할당하는 ‘MST Configuration ID’를 광고한다.
  2. Bridge ID와 Path Cost를 이용해 CIST를 구성한다.
    ① 전체 LAN에서 ‘CIST Root Switch’ 1개 선택
    ② 각 Switch와 LAN에서 CIST Root까지의 최소값 경로 선택
    여기서 각 Region 별로 CIST Root까지 최소 경로값을 갖는 Switch가 ‘CIST Regional Root Switch’가 된다.

CIST의 포트 역할
CIST Root Port: CIST Regional Root Switch를 통해 CIST Root Switch로 가는 최소 경로값을 가진 포트
CIST Designated Port: 접속된 LAN에서 CIST Root Switch까지 최저 경로값을 가진 포트
CIST Alternate Port / Backup Port: 타 Switch / 포트 또는 LAN에 장애가 발생했을 때 사용되는 포트

CIST의 특징
모든 Switch를 하나의 네트워크로 연결한다.
(=각 Region을 하나로 연결한다.)
영역내부 경로가 영역외부 경로보다 우선된다.

MSTI 스패닝 트리의 동작 과정

  1. 각 Region에서 MSTI Root Switch 1개를 선택한다.
  2. 각 Switch에서 MSTI Root로 가는 최저 경로값을 선택한다.

MSTI의 포트 역할
MSTI Root Port: MSTI Root Switch까지 최소 경로값을 가진 포트
MSTI Designated Port: 접속된 LAN에서 MSTI Root Switch까지 최저 경로값을 가진 포트
MSTI Master Port: Region 외부에 있는 CIST Root Switch와 연결된 포트
MSTI Alternate Port / Backup Port: 타 Switch/포트 또는 LAN에 장애가 발생했을 때 사용되는 포트


4. MSTI BPDU

출처: MSTP protocol frames, https://techhub.hpe.com/eginfolib/networking/docs/switches/10500/cg/5200-1896_l2-lan_cg/content/470790451.htm

MSTP BPDU이므로
Protocol Version ID는 3, BPDU Type은 2이다.
Flags (CIST Flag): RSTP의 Flag와 동일한 Flag 값을 가진다.
CIST Root ID: 전체 Switch 네트워크의 Root Switch ID
CIST Path Cost: CIST 외부의 Root Switch까지의 경로값
Bridge ID:
MSTP일 때, CIST Regional Root Switch ID
RSTP/STP일 때, Designated Switch ID
MST Configure ID: 동일 VLAN에 소속된 Switch들끼리는 VLAN 번호와 Instance 매핑 정보가 동일해야한다. 아래의 내용을 담고 있다.
Selector(1 Byte): 항상 값 0
Configuration name(32 Byte): 가변
Revision level(2 Byte)
Configuration Digest(16 Byte): MSTP Configuration Table로부터 생성된 MD5 Signature.
CIST Bridge ID: BPDU를 전송하는 Switch의 Bridge ID
MSTI Configuration Messages: Region 내 Instance 별로 스패닝트리를 계산할 때 사용한다.


5. MSTP 설정

[기본 MSTP 설정]

Switch(config)# spanning-tree mode mst
Switch(config)# spanning-tree mst configuration
Switch(config-mst)# name <name>
Switch(config-mst)# instance <INSTANCE_NUM> vlan <VLAN_NUM>
Switch(config-mst)# instance 1 vlan 101-102 #(예시)#
Switch(config-mst)# revision 1
Switch(config-mst)# exit

[MSTP 우선순위 설정]

Switch(config)# spanning-tree mst 0 priority 0
Switch(config)# spanning-tree mst 1 priority 0

1: CIST Root Switch 설정
2: Instance 1의 Root Switch 설정

[MSTP 설정 확인]

Switch# show spanning-tree mst 0
Switch# show spanning-tree mst 1(or 2)

1: CIST 스패닝 트리 동작 확인
2: MSTI 스패닝 트리 동작 확인

[Switch] RSTP 상세 동작과정

  1. 최초 RSTP 구성 과정
  2. 간접 링크 장애 시 RSTP 동작과정
  3. 직접 링크 장애 시 RSTP 동작과정
  4. DP 장애 시 BP 동작과정

1. 최초 RSTP 구성 과정

1단계 – Root Switch 선정
우선순위가 가장 낮은 SW1가 Root Switch가 된다.

2단계 – Proposal BPDU 전송 및 DP 선택
Root Switch가 상대 Switch로 Proposal BPDU를 전송한다.
이 때, P-BPDU를 전송하는 포트는 Designated Port(DP)가 된다.

3단계 – 동기화
P-BPDU를 수신한 Switch는 수신한 포트는 Root Port(RP) 후보가 되고, 나머지 포트는 Blocking 상태로 전환한다.
RP후보를 제외하고 나머지 포트를 Blocking 하는 것을 동기화(Synchronizational)이라고 한다. 다음 단계에서 RP를 Forwarding 상태로 변경해도 루프가 발생되지 않도록 하기 위해서이다.

4단계 – Agreement BPDU 전송 및 RP 선택
SW2, SW3은 SW2의 F0/2, SW3의 F0/1을 RP로 설정한 Agreement BPDU를 Root Switch로 전송하고, Forwarding 상태로 전환한다.
이 때, A-BPDU를 전송한 포트는 Root Port(RP)가 된다.

5단계 – Root Switch의 Forwarding 상태 전환
A-BPDU를 수신한 SW1은 SW2,SW3와 연결된 F0/1, F0/2를 Forwarding 상태로 전환한다.

6단계 SW2<->SW3 동작
SW2는 자신의 DP에 대한 P-BPDU를 SW3으로 전송하지만, SW3의 F0/3은 AP 상태이므로 A-BPDU를 전송하지 않는다.

7단계 SW2<->SW3 동작
SW3로부터 응답을 받지 못한 SW2는 15초동안 P-BPDU를 전송한다.
그래도 응답이 없으면 Learning 상태로 변경하고, 다시 15초 동안 P-BPDU를 전송한다. 이후 15초가 지나면 Forwarding 상태로 전환한다.

P-BPDU / A-BPDU는 쉽게 설명하기 위해 줄인 단어이다. 해당 용어가 실제 사용되는지는 모른다.


2. 간접 링크 장애 시 RSTP 동작과정

만약 STP를 사용한다면,
SW3의 F0/3은 Max-Age 20초동안 후순위 BPDU를 받고, Listening, Learning 순차적으로 상태가 전환되어 50초가 지나야 Forwarding 상태로 전환되었을 것이다.

RSTP를 사용한다면,
SW3의 F0/3이 후순위 BPDU를 수신하자마자 DP역할을 하기 위해 SW2에게 Proposal BPDU를 전송한다. SW2는 Agreement BPDU로 응답하고, SW3은 A-BPDU를 받자마자 F0/3을 Forwarding 상태로 전환한다.


3. 직접 링크 장애 시 RSTP 동작과정

1단계.
SW3의 RP인 F0/2가 다운되면, F0/3이 즉시 RP역할을 이어받고 Forwarding 상태로 전환한다.

2단계.
동기화를 위해 F0/14는 Blocking 상태로 전환하고, BP인 F0/15를 AP로 변경한다.

3단계.
DP인 F0/14를 통해 Proposal BPDU를 전송하고, F0/15로 다시 되돌아온 것을 확인함과 동시에 F0/15를 BP로 변경한다.

4단계.
F0/14로 Proposal BPDU를 30초간 전송하고, 이후 Forwarding 상태로 전환한다.


4. DP 장애 시 BP 동작과정

SW3의 DP인 F0/14가 다운되면, F0/15가 DP 역할을 이어받는다.
30초간 Proposal BPDU를 전송하고 Forwarding 상태로 전환한다.

만약 F0/14가 복구된다면,
F0/14는 DP, F0/15는 BP로 변경되고, F0/14가 30초간 Proposal BPDU를 전송하고 Forwarding 상태로 전환한다.

[Switch] RSTP

Rapid Spanning-Tree Protocol

동작 시간이 느린 STP를 대체할 수 있는 RSTP이다. STP 타이머나 Fast 설정을 해도 단축된다곤 한다만,, 여전히 한계가 있다. 그래서 IEEE는 2001년 6월 RSTP를 발표했으며 지금은 802.1W에 정의되어있다.

STP는 경우에 따라 Blocking 상태에서 Forwarding 상태까지 소요 시간이30초 or 50초지만, RSTP는 토폴로지에 변화가 생길 경우 즉시 반영된다. RTSP에서는 자신의 BPDU가 더 우세하면 바로 본인이 Designated Port라고 주장하는 Proposal BPDU를 보낸다. 이 Proposal BPDU를 수신한 상대가 동의하면 Agreement BPDU로 응답한다.

이외 Root Switch를 선정하고, Root Port/Designated Port를 결정하여 활성 토폴로지를 구성하는 것은 동일하다.

RSTP와 STP는 별도 설정없이 호환된다.
RSTP를 사용하는 Switch의 특정포트가 STP를 사용하는 Switch와 연결되었다면, STP에서 사용하는 Configuration BPDU와 TCN BPDU가 전송된다.

  1. RSTP의 BPDU
  2. RSTP 포트 상태
  3. RSTP 포트 종류
  4. RSTP 링크 종류
  5. RSTP 설정

1. RSTP의 BPDU

STP의 Configuration BPDU와 비슷하다.

출처: Ethernet, VLAN, STP, https://www.slideshare.net/isikalp82/alp-stp
  • Version 값은 항상 2이다.
  • Message Type(BPDU Type) 값은 항상 2이다.
    RSTP BPDU임을 표시하기 위함이다.
  • Flag 필드는 모두 다 사용한다.
    STP에서 Bit 0과 Bit 7만 사용한다.
    Bit 7은 TCN BPDU를 수신했음을 알릴 때 사용하지만, RSTP는 TCN BPDU 차제를 사용하지 않기 때문에 거의 Bit 7을 사용하진 않는다. 다만, STP가 동작하는 Switch와의 호환성을 위해 사용한다.
  • 마지막에 ‘Version 1 length’가 추가 되었다.

2. RSTP 포트 상태

Discarding
STP의 Blocking 상태와 동일하다.

Learning
STP의 Learning 상태와 동일하다.
학습 시간은 기존 15초보다 훨씬 짧다.

Forwarding
STP의 Forwarding 상태와 동일하다.


3. RSTP 포트 종류

Root Port
STP의 Root Port와 동일하다.
Switch 당 RP 1개씩 선택된다.

Designated Port
STP의 Designated Port와 동일하다.

Alternate Port
RP가 다운되면 RP 역할을 이어받는 포트이다.
Blocking 상태에 있으며, 데이터 송수신은 하지 않고 BPDU만 수신한다.

Backup Port
DP가 다운되면 DP 역할을 이어받는 포트이다.
복수개의 링크로 구성하면, BP가 생긴다.
Blocking 상태에 있으며, 데이터 송수신을 하지 않는다.

Disabled Port
RSTP에서 역할이 없는 포트이다.
ex) 셧다운된 포트


4. RSTP 링크 종류

Duplex에 따른 구분

(1) Point-to-Point Link : Full-Duplex로 동작하는 포트
(2) Shared Link : Half-Duplex로 동작하는 포트

상대 장비에 따른 구분

(1) Link : RSTP로 동작하는 Switch와 연결된 포트
(2) Edge : STP가 동작하지 않는 장비(PC,라우터)와 연결된 포트, Catalyst Switch에서는 portfast를 설정해야만 Edge 포트로 동작.
(3) Peer : STP와 같은 (RSTP가 아닌) 프로토콜로 동작하는 Switch와 연결된 포트

  • Point-to-Point Peer
    Full-Duplex로 동작하고, STP가 동작중인 Switch와 연결된 포트
    (STP가 아닐수도 있음)
  • Point-to-Point Link
    Full-Duplex로 동작하고, RSTP가 동작중인 Switch와 연결된 포트
링크 종류 설정
Switch(config)# interface <INTERFACE>
Switch(config-if)# spanning-tree link-type [point-to-point | shared]

5. RSTP 설정

Switch(config)# spanning-tree mode rapid-pvst
Switch(config)# spanning-tree vlan 1 priority <num>
Switch(config)# interface <INTERFACE>
Switch(config-if)# spanning-tree portfast

1: RSTP를 사용한다.
2: RSTP 우선순위를 조정하여 Root Switch로 만들 수 있다.
3,4: RSTP가 동작한다면 종단장치나 라우터가 연결된 포트는 portfast 설정하여 바로 Forwarding 상태로 변경되도록 한다.

[Switch] 이더채널

이더채널; Etherchannel
두 Switch 사이에 여러 포트들을 하나의 포트처럼 동작하게 한다. STP는 이더채널을 하나의 포트로 간주한다.
이더채널을 생성하고나선 반드시 port-channel에서 설정을 변경해야 한다.

이더채널 Protocol Type

  1. 시스코에서 만든 PAgP(Port Aggregation Protocol)
    1개의 이더채널은 최대 8 포트로 구성할 수 있다.
    Desirable과 Auto Mode 사용.
  2. IEEE에서 만든 LACP(Link Aggregation Control Protocol)
    1개의 이더채널은 최대 16 포트로 구성할 수 있다.
    (8개 사용 + 8개 백업용)
    Active와 Passive Mode 사용.

이더채널 Mode

Active – 무조건 LACP 사용, 만일 상대 Switch와 이더채널이 안되면 일반 단일 포트로 사용됨.
Desirable – 무조건 PAgP 사용, 만일 상대 Switch와 이더채널이 안되면 일반 단일 포트로 사용됨.
Passive – 상대가 LACP 사용할 때만, LACP 활성화
Auto – 상대가 PAgP 사용할 때만, PAgP 활성화
on – 상대 Switch와 협상없이 이더채널 멤버포트를 모두 활성화, 상대 Switch도 on으로 설정해야함.


이더채널 설정

1. Routed 이더채널

Routed 포트로 동작하는 이더채널.

Switch(config)# interface range <port range>
Switch(config-if)# no switchport
Switch(config-if)# channel <channel_num> mode <mode>
Switch(config-if)# exit
Switch(config)#
Switch(config)# interface port-channel <channel_num>
Switch(config-if)# ip addr <ip> <subnet>
Switch(config-if)# exit
Switch(config)# exit
Switch# show etherchannel summary
Switch# show interface port-channel <num>

3: channel의 포트번호는 Switch 모델에 따라 다르다. ex) catalyst 3550: 1-64, 3560: 1-48.
mode는 active/desirable/passive/auto/on 중 하나를 선택한다.
6: 이더채널 포트로 접속 하여 IP를 설정한다.
10,11: 이더채널이 정상 설정되어있는지 확인한다.

2. SVI 이더채널

가상 VLAN 포트로 동작하는 이더채널.

Switch(config)# interface range <port range>
Switch(config-if)# switchport mode access
Switch(config-if)# switchport access vlan <vlan_num>
Switch(config-if)# channel <channel_num> mode <mode>
Switch(config-if)# exit
Switch(config)#
Switch(config)# interface vlan <vlan_num>
Switch(config-if)# ip addr <ip> <subnet>
Switch(config-if)# exit
Switch(config)# exit
Switch# show etherchannel summary
Switch# show ip interface brief

2,3: Access 포트로 설정하고 허용할 VLAN을 설정한다.

3. Access 포트 이더채널

Access포트로 동작하는 이더채널

Switch(config)# interface range <port range>
Switch(config-if)# switchport mode access
Switch(config-if)# switchport access vlan <vlan_num>
Switch(config-if)# channel <channel_num> mode <mode>
Switch(config-if)# exit
Switch(config)# exit
Switch# show etherchannel summary
Switch# show interface port-channel <num>

4. Trunk 포트 이더채널

Trunk 포트로 동작하는 이더채널.

Switch(config)# interface range <port range>
Switch(config-if)# switchport trunk encapsulation dot1q
Switch(config-if)# switchport mode trunk
Switch(config-if)# channel <channel_num> mode <mode>
Switch(config-if)# exit
Switch(config)# exit
Switch# show etherchannel summary
Switch# show interface port-channel <num>

2,3: Trunk 인캡슐레이션 및 Trunk 포트로 설정

[Switch] STP 조정 및 보호기술

STP는 전원을 꽂기만 하면 동작되는 ‘Plug and Play’ Protocol이라고 한다. 그러나 STP 값을 조정하지 않고 그대로 사용한다면, 네트워크의 동작 속도는 느릴 것이다. 장애가 발생되어 복구하는 시간도 오래 소요되고, 간단한 조작에 의해서도 스위치 네트워크가 마비될 수 있다.

이러한 위험(?)을 방지하고자 STP를 좀 더 유용하게 사용하려면, 컨버전스 시간을 조정해야 한다. ‘컨버전스 시간’이란, 토폴로지에 변동이 생겼을 때 네트워크가 재구성될 때까지 소요되는 시간이다.

컨버전스 시간을 줄이는 방법은 아래와 같다.

┌─ Port Fast
├─ Uplink Fast
├─ Backbone Fast
├─ Hello / Max-Age / Forward-Delay 조정
└─ RSTP 또는 MSTP 사용

또한, STP는 보안에 취약하다.
STP 네트워크를 보호하는 방법은 아래와 같다.

┌─ BPDU Guard
├─ BPDU Filtering
├─ Loop Guard
├─ Root Guard
└─ UDLD


1. STP 조정

1-1. Port Fast

Switch의 Port가 활성화되면, Listening 상태부터 시작한다.
(Blocking → Listening → Learning →Forwarding)
그러나 Port Fast 기능을 사용하면, Listening 상태가 아닌 바로 Forwarding 상태가 되도록 한다.
(Blocking → Forwarding)
보통 PC나 서버 등과 같이 종단 장치가 연결된 Port에 설정한다.

설정

[방법1. 모든 Access port에 Port Fast 적용]

Switch(config)# spanning-tree portfast default

Hub/Switch/Bridge가 연결되어있다면, 일시적으로 프레임 루프가 발생할 수 있다. Switch 간 Access port를 사용하는 추세이므로 가능한 이 방법은 권장하지 않는다.

[방법2. 특정 인터페이스에 Port Fast 적용]

Switch(config)# interface <INTERFACE>
Switch(config-if)# spanning-tree portfast

[Trunk 포트에 Port Fast 적용]
Server/Router 등과 연결되는 Trunk 포트나 링크가 하나 뿐인 Switch를 연결하는 Trunk 포트에선 사용할 수 있다.

Switch(config)# interface <TRUNK_INTERFACE>
Switch(config-if)# spanning-tree portfast trunk

직접 연결된 링크가 다운되었을 때, Blocking 상태에 있는 포트를 즉시 Forwarding 상태로 변경한다. Root Switch에선 차단 상태 포트가 없으므로 Access(종단) Switch에서 설정한다. Uplink Fast 설정 시 자신을 Access Switch로 만들기 위해 Priority를 32768에서 49152로 변경한다.

설정
Switch(config)# spanning-tree uplinkfast

1-3. Backbone Fast

직접 접속되지 않은 간접 링크가 다운되었을 때, Blocking 상태의 포트에서 Max-Age를 생략하고 바로 Listening 상태로 변경한다. Max-Age를 생략하면 Forwarding 단계까지 20초 단축할 수 있다.

동작과정
  1. ‘SW1—SW2’ 링크 다운
  2. SW2는 자신이 Root Switch라고 주장하는 후순위 BPDU를 SW3로 전송
  3. SW3이 ‘SW1—SW2’ 링크 다운 인지
  4. SW3가 SW1로 RLQ 전송 (‘SW3—SW1’ 링크 상태 확인을 위함)
  5. SW1은 이상이 없다는 의미로 RLQ 응답패킷 전송
  6. 해당 패킷을 받은 SW3는 Blocking 상태 포트의 Max-Age를 만료시켜 바로 Listening 상태로 변경
설정

Backbone Fast를 구성하려면 전체 Switch에서 설정해야한다.

Switch(config)# spanning-tree backbonefast

1-4. STP Timer 조정

앞서 본 Fast 방식 설정 말고, 직접 타이머를 조정하여 컨버전스 시간을 단축할 수 있다.

– 기본값
Diameter 별로 타이머 기본 값이 상이하다.
기본 Diameter 값은 7이다.

Diameter 값을 조정해 STP 타이머를 변경하려면, 반드시 Root Switch에서 조정해야 한다. 일반 Switch에서 설정하면 나중에 해당 Switch가 Root Switch가 되어야만 전체 네트워크에 적용되기 때문이다.

[Root Switch에서 Diameter 조정]

Switch(config)# spanning-tree vlan <VLAN_NUM> root primary diameter [2-7]

[Hello / Max-Age / Forward-Delay 조정]

Switch(config)# spanning-tree vlan <VLAN_NUM> hello-timer [1-10]
Switch(config)# spanning-tree vlan <VLAN_NUM> max-age [6-40]
Switch(config)# spanning-tree vlan <VLAN_NUM> forward-time [4-30]

2. STP 네트워크 보호

2-1. BPDU Guard

특정 Port를 통해 BPDU 수신 시 해당 Port를 자동으로 Shutdown한다. 이렇게 shutdown된 Port는 ‘다시 직접 shutdown → no shutdown’ 해야 up된다. 일반적으로 PC/Server와 같은 종단 장치가 BPDU를 전송하지 않으므로 이러한 Port에 설정한다.

설정

[방법1. Port Fast가 적용된 Port에 설정]

Switch(config)# spanning-tree portfast bpduguard default

[방법2. 특정 인터페이스에 적용]

Switch(config)# interface <INTERFACE>
Switch(config-if)# spanning-tree bpduguard enable

[복구]

Switch(config)# errdisable recovery cause bpduguard
Switch(config)# errdisable recovery interval 120

1: 300초 후 자동으로 Port 복구
2: 120초 후 자동으로 Port 복구


2-2. BPDU Filtering

특정 Port로BPDU를 보내거나 받지 않게 한다. 보통 BPDU를 수신하지 않아도 되는 종단 장치에 불필요한 프레임이 전송되는 것을 방지한다. BPDU를 보내지 않기 때문에 STP가 동작하지 않는 것과 비슷하다.

설정

[방법1. portfast가 적용된 포트에만 BPDU Filtering 설정]

Switch(config)# spanning-tree portfast bpdufilter default

[방법2. 특정 인터페이스에 설정]

Switch(config)# interface <INTERFACE>
Switch(config-if)# spanning-tree bpdufilter enable
만약, SW3의 F0/3에 BPDU Filtering을 하면 어떻게 될까?

SW3의 F0/3은 현재 Alternate Port이다. 이런 상황에서 BPDU Filtering을 설정하면, F0/3은 BPDU를 받지 못할 것이고 STP로 인해 Designated Port로 변경될 것이다. 그럼 SW3 — SW2 링크가 살아나고, 루프가 생길 것이다.


2-3. Loop Guard

일반적으로 Blocking 상태에 있는 포트가 BPDU를 받지 못했을 때, 일정 시간이 지나게 되면 Forwarding 상태로 변경된다. 이 것을 방지하는 기능이다. 이 기능을 사용하면 Blocking 상태의 포트가 Loop Inconsistent(루프 비일관) 상태로 바뀐다. Loop Inconsistent도 Blocking과 비슷하다.

다시 BPDU를 받게 되면 자동으로 정상적인 Blocking 상태로 돌아간다. 물론, Loop Guard가 설정되어도 링크가 다운되거나 후순위 BPDU를 받는 경우엔 Blocking 상태에서 Forwarding 상태로 변경된다.

설정

[방법1. 전체 인터페이스에 적용]

Switch(config)# spanning-tree loopguard default

[방법2. 특정 인터페이스에 적용]

Switch(config)# interface <INTERFACE>
Switch(config-if)# spanning-tree guard loop

2-4. Root Guard

특정 포트에 접속된 네트워크에 있는 Switch들이 Root Switch가 될 수 없도록 한다. Root Guard가 설정된 포트에서 현재의 Root Bridge ID보다 더 우선되는 Bridge ID를 수신하면 해당 포트를 다운시킨다.

설정

[방법. 특정 인터페이스에서 설정]

Switch(config)# interface <INTERFACE>
Switch(config-if)# spanning-tree guard root

[복구]
문제되는 Bridge ID를 가진 Switch에서 우선순위를 조정하면 차단된 포트가 다시 활성화된다. 또는, 해당 포트를 shutdown → no shutdown하여 활성화할 수 있다.


2-5. UDLD

Unidirectional Link Detection
Switch 간 링크에서 단방향 링크가 생겼을 때, 해당 포트를 다운시킨다. 단방향 링크로 인해 L2 루프가 발생하거나 한 쪽에서 보낸 프레임이 사라지는 블랙홀 현상이 발생할 수 있기 때문이다.

주기적으로 송신포트를 통해 UDLD패킷을 전송한다. 이 패킷을 수신한 상대는 다시 자신의 송신포트를 통해 Echo시킴으로써 양방향 링크가 정상 동작하는지 확인한다.

얼핏 보면, Loop Guard와 비슷한 기능이라고 생각할 수 있지만, Loop Guard는 소프트웨어적인 상황(상대 Swtich 이상)으로 인해 BPDU를 송신하지 못할 때 동작하고 UDLD는 케이블링을 감지하여 동작한다. UDLD를 사용하려면 상대 Switch도 UDLD 기능을 지원해야한다.

UDLD Mode
  • Normal Mode(일반모드): 광케이블 결선 오류로 인한 단방향 링크를 감지한다.
  • Aggressive Mode(적극?모드): 광케이블 및 UTP의 단방향 트래픽으로 인한 단방향 링크를 감지한다.
설정

[방법1. 전체 인터페이스에 설정]

Switch(config)# udld [Aggressive | normal]

[방법2. 특정 인터페이스에 설정]

Switch(config)# interface <INTERFACE>
Switch(config-if)# udld port 
Switch(config-if)# udld port aggressive

2: or 3: 둘 중 하나를 택하여 설정한다.
2-Normal, 3-Aggressive

[복구]

Switch# udld reset
OR
Switch(config)# errdiasble recovery cause udld

이외에도 다운된 포트에서 직접 복구하는 방법도 있다.