루트 가드란?

특정 포트에 접속된 네트워크에 있는 스위치들은 루트 스위치가 될 수 없도록 하는 기능이다.

예를들어 어느 스위치의 포트로 루트 스위치보다 더 우선순위의 ID가 BPDU로 들어온다면, STP에 의해 루트 스위치가 변경될 것이다. 하지만 루트 가드를 그 포트에 적용시키면 루트 스위치가 변경되지 않고, 유지된다. BPDU 수신되는 쪽 포트를 다운 시켜버린다.

이러한 것은 ISP나 일반 기업체에서 원하지 않는 스위치가 루트 스위치가 되어 네트워크에 영향을 주는 것을 방지 할 수 있어서 주로 사용된다.




1. 맨 처음 토폴로지는 SW1이 루트 브리지로 선정되어 SW3의 f1/1이 blocking 상태가 되었다.

2. SW1에 f1/0과 f1/2로 root guard를 건다.

명령어는 fa1/0과 f1/2 인터페이스 모드로 들어간 후, spanning-tree guard root를 입력한다.

3. 그 후, SW1의 priority 값은 현재 4096인데, SW2에서 Priority값을 100으로 루트 브리지인 SW1의 4096보다 더 낮게 한다.

4. 그렇게 되면 그림과 같이 BPDU를 전송할 것이다.  그럼 SW1의 fa1/0과 fa1/2에는 root guard가 설정되어 있었기 떄문에 해당 포트가 다운되어 버린다.

 

※ GNS3와 Packet Tracer가 root guard에 대한 명령어가 먹히지 않아 실습을 못했다. 양해 바란다.ㅠㅠ

LIST

UDLD란? 

 

Unidirectional Link Detection는 스위치간에 단방향 링크가 생겼을 때 해당 포트를 셧다운 시킨다.

예를 들어 A스위치와 B스위치가 있다.

A스위치와 B스위치는 송신과 수신을 잘 하고 있는데, A스위치의 수신이 문제가 생겨서 봤더니 UTP 케이블이나 광케이블의 결함이었다.

원래는 물리계층 자동협상에 의해서 해당 포트는 활성화되지 않는게 정상이지만, 자동협상 기능이 동작하지 않은 경우에는 포트가 활성화되고, 단방향 링크가 만들어진다. 즉, A스위치쪽 수신이 장애가 있으므로 B는 계속 보내지만 A입장에서는 받지 못하는 경우가 발생한다. (중요한 것은 B는 그 사실을 모른다는 것 - B에게는 잘 보낸것이 중요함)



SW3은 f0/12포트를 통해 SW2가 보낸 BPDU를 수신하지 못하고 , f0/12 포트를 지정포트로 만든다. 이렇게 되면 STP에 의한 차단포트가 없어지게 되고, SW3에서는 SW2로 BPDU를 전송할 수 있어 프레임 루프가 발생한다.

UDLD는 주기적으로 송신 포트를 통하여 UDLD패킷을 전송, 이 패킷을 수신한 상대 포트는 이것을 다시 자신의 송신포트를 이용하여 상대에게 전송시켜줌으로써 양방향 링크가 동작중인 것을 확인한다.

UDLD는 Normal mode와 agressive mode가 있다.

normal모드는 광케이블의 결선 오류로 인한 단방향 링크를 감지할 수 있고, agressive mode는 광케이블과 UTP의 단방향 트래픽으로 인한 단방향 링크 까지도 감지할 수 있다.

 

명령어는 전체설정모드에서 SW3(config)# udld agressive | enable 이 있다.

enable은 normal모드임. 그 후, 인터페이스 모드에서 SW3(config-if)# udld port라고 입력하면 그 해당 포트는 udld가 적용된다.

 

LIST

Loop Guard란?

차단 상태에 있는 포트가 상대 포트에서 BPDU를 받지 못했을 때 전송상태로 변경되는 것을 방지하는 기능을 말한다. 이 경우 차단 상태의 포트는 루프 비일관(inconsistent) 상태로 바뀐다. 루프 비일관 상태도 일종의 차단상태이다.

다시 BPDU를 수신하기 시작하면 자동으로 정상적인 차단상태로 변경된다. 

왜 이런기능을 사용할까?

예를 들어보자.



SW3의 f1/1포트는 STP로 인해 Blocking상태이지만 SW2의 f1/1포트로 부터 지속적인 BPDU를 수신하고 있는 상태이다.

그러다가 SW2에 과도한 부하가 걸리거나, 잘못된 BPDU 필터링이나 ACL적용, 장애 등으로 인해 SW3으로 BPDU를 보내지 못하는 경우가 발생할 경우, SW3은 기본적으로 50초동안 기다리다가 그래도 BPDU가 오지않을 경우, SW3의 f1/1를 차단상태에서 전송상태로 변경한다.

그렇게되면? SW2는 다운된 것이 아니기 때문에 STP 전 구간에 차단 포트가 없게된다.

잠시후 브로드캐스트 프레임이 스위치 네트워크로 전송되면 SW1, SW2, SW3간의 루프가 만들어진다. (각각 갈 수 있는 길은 양방향이기 때문에 양쪽으로 프레임을 뿌려주기 때문)

이런 상황(SW2가 물리적인 힘에의해 포트가 완전히 다운된 것이 아닌데 SW3의 f1/1을 전송상태로 바꾸는 상황)을 방지하려면 대체 포트가 BPDU를 수신하지 못해도 차단상태를 전송상태로 변경하지 못하게 하면 되는데, 이런 기능을 루프 가드라 한다.

 

전체 설정모드에서 루프 가드를 설정하려면 spanning-tree loopguard default 명령어를 사용한다.

인터페이스 모드에서 루프 가드를 설정하려면 spanning-tree guard loop 명령어를 사용한다.

루프 가드가 잘 되어 있는지 확인하는 명령어는 show spanning-tree summary이다.

 

GNS3 에서 loopguard 명령어를 지원하지 않아 실습은 못하지만, 이론적으로라도 작성해 보았다.



LIST

<BPDU Guard 란?>

BPDU Guard를 걸어놓은 포트를 통해서 BPDU를 수신했을 때 해당 포트를 자동으로 셧다운 시키는 기능을 말한다.

이렇게 셧다운되면 관리자가 직접 shutdown명령어를 다시 사용한 후, 다시 no shutdown 명령어를 사용해야만 포트가 살아난다.

BPDU Guard는 주로 종단장치 쪽(PC나 서버) 포트에 걸어놓는다. 그곳으로 BPDU가 들어온다는 것은 임의로 사용자가 스위치를 연결하거나 STP 관련 해킹 공격을 받고 있음을 의미하기 때문에  BPDU Guard를 사용하는 것이다.

명령어는 전체 설정모드에서 spanning-tree portfast bpduguard default명령어를 사용하면 Portfast가 설정된 포트에만 BPDU Guard가 동작한다.


 

<실습>



다음 화살표 방향을 루트 브리지가 각 스위치들에게 BPDU를 전송하는 방향이다.

SW3의 f1/1은 대체포트로 작동하여 blocking 상태에다.

여기서, SW3의 f1/2에 BPDU guard를 걸어버리면 어떻게 될까?

SW3의 f1/2에 BPDU guard를 걸면 f1/2로 BPDU를 헬로 주기 2초마다 받고있었기 때문에 다운되고 말 것이다.


LIST

<Backbone Fast 란?>


직접 접속되어 있지 않은 간접 링크가 다운되었을 때, 차단상태의 포트에서 Max age시간 20초를 생략하고 listening상태로 변경시킨다.

직접 링크가 다운되었을 때는 왜 Max Age시간이 걸리지 않을까?

직접링크는 자기 자신의 링크가 다운된 것이기 때문에 바로 알 수 있기 때문이다.

간접 링크가 다운되었을 경우에는 Max Age시간이 걸리는 이유는 무엇일까?

예를들어 SW1과 SW2사이의 링크가 다운되었다. 그럼 SW2는 루트 브리지로 부터 BPDU를 송신할 수 없게 된다. 왜냐? SW3과 연결되어 있는 것은 Root Port이기 때문에 송신밖에 못한다. 수신만 하는 Designated Port가 절단된 상황이라 받을 수 없게된다. 그러므로 SW2는

자신의 BPDU에 루트 브리지ID를 자신으로 한 BPDU를 SW3에게 전송한다. SW3은 자신이 원래 가지고 있던 SW1의 BPDU와 비교하게 된다. 당연히 SW1의 BPDU가 더 높기 때문에 SW2의 후순위 BPDU를 무시한다. 약 10개를 전송받는다. Hello 주기가 2초이기 때문 20초 동안 10개!

후순위 BPDU를 수신한 SW3은 인접 스위치 SW2와 루트 스위치 사이에 뭔 일이 생겼는지 감지를 한다. 이때 SW3은 RLQ(링크 상태에 문제가 있는지 없는지 확인하는 패킷) 를 SW2에게 보낸다. RLQ를 받은 SW2는 수신했다는 RLQ 응답패킷을 SW3에게 보낸다. 그때부터 차단상태에 있던 SW3의 f1/1이 forwarding상태로 열리게 된다.

 

<실습>



SW1과 SW2사이의 링크를 다운시켰을때 SW3에서는 SW2으로부터 BPDU를 10개 받는다.

SW2의 f1/0을 다운시킨 후,



SW3에서는 BPDU를 약 10개 받게된다.

그 후, f1/1이 forwarding상태로 변경된다.


이제 Backbond fast를 실습할 차례다.

backbone fast는 모든 스위치에 설정해주어야 한다.

SW1(config)#spanning-tree backbonefast

SW2(config)#spanning-tree backbonefast

SW3(config)#spanning-tree backbonefast

 

그 후, 똑같은 실습을 했을때 20초가 감소되어 forwarding상태로 되는 것을 확인 할 수 있을것이다.


backbone fast를 적용한 후, SW2에서 f1/0을 다운시켰을 때, Max age시간을 바로 건너뛰고 listening상태로 진입하게 된다.

 

LIST

<UplinkFast란?>


직접 연결된 링크가 다운되었을 때(밑의 그림을 보면 SW3에서는 f1/0이 직접 연결된 링크이다.) 차단 상태에 있는 포트를 즉시 전송상태로 변경시키는 역할을 한다. uplinkfast는 종단 스위치에서 설정해주어야 한다. 루트 스위치는 차단상태에 있는 포트가 없기 때문에 업링크 패스트를 설정해도 효과가 없다.



<실습>

다음 그림에서 SW1과 SW3사이의 링크가 끊어졌을 때, 30초 후에(Listening, Learning) 대체포트인 SW3의 f1/1이 전송상태로 변경된다.



다음과 같이 30초 후에 대체포트인 SW3의 f1/1이 forwarding되었다. 이 시간을 단축시키는 방법이 uplinkfast이다.



shutdown을 시키자 마자 fa1/0은 bloking이 되고, 대체포트인 f1/1이 살아났다.



SW3에는 Uplinkfast가 enabled 된것을 알 수 있다.

 


LIST

<Portfast란?>

포트가 활성화 되면 바로 전송상태가 되게하는 것을 말한다. Portfast는 PC와 서버 등과 같이 종단장치와 연결된 포트에 많이 설정한다.


<실습>



참고로 라우터를 L3스위치 처럼 사용하였다.

SW1을 Root브릿지로 설정하고, SW3의 f1/1이 Blocking이 되었다.


SW1)



SW2)


SW3)



이번에는 SW3의 종단장치인 PC부분쪽 인터페이스를 다운시켰다가 다시 살려보겠다.

debug명령으로 STP 진행상황을 지켜보겠다.

Portfast를 적용시키지 않아 시간이 오래걸렸다.



처음 블록킹이 되고나서 리스닝과 러닝 그리고 포워딩까지 총 30초가 소요되었다.

이번에는 portfast를 적용하고 나서 시간 경과를 살펴보자.



이처럼 portfast를 사용하면 listening, learning 단계를 건너뛰고 바로 forwarding상태가 된다.

LIST

< 스패닝 트리 프로토콜 >

STP(Spanning Tree Protocol) - 스위치에서 루핑을 막아주기 위한 프로토콜

스위치나 브리지 구성에서 출발지부터 목적지까지의 경로가 두 개 이상 존재할 때, 한 개의 경로만을 남겨 두고 나머지는 모두 끊어 두었다가 사용하던 경로에 문제가 발생하면 그때 끊어두었던 경로를 하나씩 살리는 방식의 프로토콜

 

① Bridge ID - 스위치나 브리지들이 통신할 때 서로를 확인하기 위해 하나씩 가지고 있는 번호. (디폴트 값은 32768)

구성은 앞 2Byte : Priority, 뒤 6Byte : Mac address

② Path Cost - 스위치가 얼마나 가까이, 빠른 링크로 연결되어 있는지를 알아내기 위한 값이며, 속도가 빠를수록 값이 작다.

둘 사이의 링크 대역폭을 1000Mbps로 나눈 값이지만, 기가비트로 넘어갈 때는 소수점이 나와 IEEE에서 정수 값으로 정의해줌






<스패닝 트리 프로토콜 구하기 법칙>

1. 네트워크당 하나의 루트 브리지를 갖는다

2. 루트 브리지가 아닌 나머지 모든 브리지는 무조건 하나씩의 루트 포트를 갖는다

- 루트포트란? 루트 브리지에 가장 빨리 갈 수 있는 포트

3. 세그먼트(스위치 간에 서로 연결된 링크)당 하나씩의 Designated 포트를 갖는다.

 



<STP 정하는 순서>

1. 누가 더 작은 Root BID(Bridge ID)를 가졌는가?

2. 루트 브리지의 Path Cost값은 누가 더 작은가?

3. 누구의 BID(Sender BID)가 더 낮은가?

4. 누구의 포트 ID가 더 낮은가?

 

BPDU란? 스패닝 트리 정보를 자기들끼리 주고받기 위해서 사용하는 프레임, 2초에 한 씩 뿌려짐

① 루트 브리지의 BID

② Root Path Cost값

③ 보내는 브리지의 BID

④ 어떤 포트에서 보냈는지를 알게 해주는 Port ID
 



<STP 1단계. 루트 브리지 뽑기>

대장 브리지를 뽑는 조건은 무조건 낮은 BID를 갖는 녀석이 대장이 됨

스위치들이 부팅을 시작하면 서로 BPDU를 보내면서 자신의 스위치 정보와 상대방의 스위치 정보를 비교해서 더 낮은 BID를 가려낸다. → 가장 낮은 BID를 갖은 스위치가 루트 브리지가 됨.

명령어)

show spanning-tree : Bridge Priority를 확인하는 명령어

spanning-tree vlan 1 priority 100 : 브리지의 Priority를 100으로 변경하는 명령어

 




<STP 2단계. Non Root Bridge의 루트 포트 뽑기>

루트 포트를 뽑는 조건은 루트 브리지와 가장 가까이 있는 포트를 말하는데. 즉, Path Cost가 가장 적게 드는 포트를 말한다.

 



<STP 3단계, Designated 포트 뽑기>

Designated 포트를 뽑는 조건은 우선 맨 처음에 루트 브리지를 뽑았기 때문에 서로의 BPDU에는 모두 같은 Root BID가 있을 것이다. 두 번째 조건인 Path Cost를 이용하여 가장 가까이 있는 포트가 Designated 포트로 뽑힌다.(루트 브리지의 나머지 포트는 모두 Designated가 되는 것을 알 수 있다)

두 번째 조건까지 똑같다면 <STP 정하는 순서>에 세 번째 단계인 Sender ID를 비교해보면 된다.

 



<스패닝 트리 프로토콜 5가지 상태 변화>

① Disabled : 포트가 고장나서 사용할 수 없거나 포트를 shutdown시켜 놓은 상태

- 데이터 전송 : X

- 맥 어드레스 : 배울 수 없음

- BPDU : 못 받음

 

② Blocking : 스위치를 맨 처음 켜거나 포트를 다시 살렸을 때 블로킹 상태가 됨. 루트 브리지, 루트 포트, Designated 포트를 뽑는 과정이 블로킹 상태에서 발생한다.

- 데이터 전송 : X

- 맥 어드레스 : 배울 수 없음

- BPDU : 받음

 

③ Listening : 블로킹 상태에 있던 스위치 포트가 루트 포트나 Designated 포트로 선정되면 포트는 바로 리스닝 상태로 넘어감. But 새로운 스위치가 접속했거나 스위치의 구성 값이 바뀌면서 루트 포트나 Designated 포트에서 Non Designated 포트로 상황이 변하면 블로킹 상태로 돌아감

- 데이터 전송 : X

- 맥 어드레스 : 배울 수 없음

- BPDU : 받음

④ Learning : 리스닝 상태에 있던 스위치 포트가 포워딩 딜레이(15초)동안 그 상태를 유지하면 러닝 상태로 넘어감

- 데이터 전송 : X

- 맥 어드레스 : 배울 수 있음

- BPDU : 받음

 

⑤ Forwarding : 스위치 포트가 러닝 상태에서 다른 상태로 넘어가지 않고, 포워딩 딜레이(15초)동안 유지하면 포워딩 상태로 넘어간다.

- 데이터 전송 : O

- 맥 어드레스 : 배울 수 있음

- BPDU : 받음



 

<스패닝 트리에 변화가 생기는 경우>

① Hello Time : 루트 브리지가 얼마만에 한 번씩 헬로 BPDU를 보내는지에 대한 시간. 디폴트 2초

② Max Age : 브리지들이 루트브리지로부터 얼마 동안 헬로 패킷을 받지 못했을 때 루트 브리지가 죽었다고 생각하고 새로운 스패닝 트리를 만들기 시작하는가에 대한 시간.

③ Forwarding Delay : 브리지 포트가 블로킹 상태에서 포워딩 상태로 넘어갈 때까지 걸리는 시간.



1. 루트 브리지로부터 헬로패킷을 2초마다 받던 스위치 C에 갑자기 헬로패킷이 들어오지 않게 된다.

2. 스위치 C는 Max Age시간인 20초 동안 기다리지만, E0포트를 통해 들어오지 않는다

3. 스위치 C는 스위치 B에서 전달해 준 헬로패킷을 자신의 E1포트로 받아들여(원래 블로킹 상태였지만, BPDU는 받아들임), E1포트를 루트 포트로 세팅하게 된다.

4. Non Designated 포트로 블로킹 상태에 있던 스위치 C의 E1 포트를 루트 포트로 선정했다고 바로 포워딩이 되는건 아니다. 포워딩 딜레이 시간 15초를 두 번(리스닝→러닝→포워딩) 기다려야 포워딩 상태로 넘어가게 된다.




VLAN10과 VLAN11 두 VALN을 만들어 종단 장치인 R5와 R7는 VLAN10으로 R6와 R8은 VLAN11로 지정한다.

그 후, R1~R4간의 STP를 조정하여 다음그림과 같이 만들어보자

위에 설명한 방법으로 하려면 R1에 루트(여기 실습에서는 VLAN10만 생각하자)브리지로 만들고, R2를 secondary브리지로 만들어야 가능하다.

 

R1)

R1의 구성

spanning-tree vlan 10 priority 8192
spanning-tree vlan 11 priority 16384

interface FastEthernet1/0
 no switchport
 ip address 1.1.1.1 255.255.255.0

interface FastEthernet1/1
 switchport trunk native vlan 99
 switchport trunk allowed vlan 1,10,11,1002-1005
 switchport mode trunk

interface FastEthernet1/2
 switchport trunk native vlan 99
 switchport trunk allowed vlan 1,10,11,1002-1005
 switchport mode trunk

interface Vlan10
 ip address 10.10.10.254 255.255.255.0

router ospf 1
 network 1.1.1.1 0.0.0.0 area 0
 network 10.10.10.254 0.0.0.0 area 0

 

show spanning-tree brief 명령어를 쳤을때 R1의 STP

VLAN10
  Spanning tree enabled protocol ieee
  Root ID    Priority    8192
             Address     c400.0b9c.0001
             This bridge is the root
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    8192
             Address     c400.0b9c.0001
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time 300

Interface                                   Designated
Name                 Port ID Prio Cost  Sts Cost  Bridge ID            Port ID
-------------------- ------- ---- ----- --- ----- -------------------- -------
FastEthernet1/1      128.42   128    19 FWD     0  8192 c400.0b9c.0001 128.42 
FastEthernet1/2      128.43   128    19 FWD     0  8192 c400.0b9c.0001 128.43

 

 

 

R2)

R2의 구성

spanning-tree vlan 10 priority 16384
spanning-tree vlan 11 priority 8192

interface FastEthernet1/0
 no switchport
 ip address 1.1.1.2 255.255.255.0

interface FastEthernet1/1
 switchport trunk native vlan 99
 switchport trunk allowed vlan 1,10,11,1002-1005
 switchport mode trunk

interface FastEthernet1/2
 switchport trunk native vlan 99
 switchport trunk allowed vlan 1,10,11,1002-1005
 switchport mode trunk

interface Vlan11
 ip address 11.11.11.254 255.255.255.0

router ospf 1
 log-adjacency-changes
 network 1.1.1.2 0.0.0.0 area 0
 network 11.11.11.254 0.0.0.0 area 0

 

show spanning-tree brief 명령어를 쳤을때 R2의 STP

VLAN10
  Spanning tree enabled protocol ieee
  Root ID    Priority    8192
             Address     c400.0b9c.0001
             Cost        38
             Port        43 (FastEthernet1/2)
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    16384
             Address     c401.0b9c.0001
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time 300

Interface                                   Designated
Name                 Port ID Prio Cost  Sts Cost  Bridge ID            Port ID
-------------------- ------- ---- ----- --- ----- ---------------------------
FastEthernet1/1      128.42   128    19 BLK    19 32768 c403.1ce8.0001 128.42 
FastEthernet1/2      128.43   128    19 FWD    19 32768 c402.1ce8.0001 128.43

 

 

 

R3)

R3의 구성

interface FastEthernet1/0
 switchport trunk native vlan 99
 switchport trunk allowed vlan 1,10,11,1002-1005
 switchport mode trunk

interface FastEthernet1/1
 switchport trunk native vlan 99
 switchport trunk allowed vlan 1,10,11,1002-1005
 switchport mode trunk

interface FastEthernet1/2
 switchport trunk native vlan 99
 switchport trunk allowed vlan 1,10,11,1002-1005
 switchport mode trunk

interface FastEthernet1/10
 switchport access vlan 10

interface FastEthernet1/11
 switchport access vlan 11

 

show spanning-tree brief 명령어를 쳤을때 R3의 STP

VLAN10
  Spanning tree enabled protocol ieee
  Root ID    Priority    8192
             Address     c400.0b9c.0001
             Cost        19
             Port        42 (FastEthernet1/1)
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    32768
             Address     c402.1ce8.0001
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time 300

Interface                                   Designated
Name                 Port ID Prio Cost  Sts Cost  Bridge ID            Port ID
-------------------- ------- ---- ----- --- ----- -------------------- -------
FastEthernet1/0      128.41   128    19 FWD    19 32768 c402.1ce8.0001 128.41 
FastEthernet1/1      128.42   128    19 FWD     0  8192 c400.0b9c.0001 128.42 
FastEthernet1/2      128.43   128    19 FWD    19 32768 c402.1ce8.0001 128.43 
FastEthernet1/10     128.51   128    19 FWD    19 32768 c402.1ce8.0001 128.51

 

 

 

R4)

R4의 구성

interface FastEthernet1/0
 switchport trunk native vlan 99
 switchport trunk allowed vlan 1,10,11,1002-1005
 switchport mode trunk

interface FastEthernet1/1
 switchport trunk native vlan 99
 switchport trunk allowed vlan 1,10,11,1002-1005
 switchport mode trunk

interface FastEthernet1/2
 switchport trunk native vlan 99
 switchport trunk allowed vlan 1,10,11,1002-1005
 switchport mode trunk

interface FastEthernet1/10
 switchport access vlan 10

interface FastEthernet1/11
 switchport access vlan 11

 

show spanning-tree brief 명령어를 쳤을때 R4의 STP

VLAN10
  Spanning tree enabled protocol ieee
  Root ID    Priority    8192
             Address     c400.0b9c.0001
             Cost        19
             Port        43 (FastEthernet1/2)
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    32768
             Address     c403.1ce8.0001
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time 300

Interface                                   Designated
Name                 Port ID Prio Cost  Sts Cost  Bridge ID            Port ID
-------------------- ------- ---- ----- --- ----- -------------------- -------
FastEthernet1/0      128.41   128    19 BLK    19 32768 c402.1ce8.0001 128.41 
FastEthernet1/1      128.42   128    19 FWD    19 32768 c403.1ce8.0001 128.42 
FastEthernet1/2      128.43   128    19 FWD     0  8192 c400.0b9c.0001 128.43 
FastEthernet1/10     128.51   128    19 FWD    19 32768 c403.1ce8.0001 128.51

LIST

VTP를 이해기하기전에 VLAN의 개념부터 정리해보자

 

<VLAN?>

VLAN이란 논리적으로 분할된 스위치 네트워크를 말한다. 서로 다른 VLAN은 브로드캐스트 도메인을 분할하는데, VLAN에 의해 분할된 네트워크 영역도 라우터나 L3스위치를 통해서 통신해야 한다.

 


<트렁킹?>

트렁크란 복수개의 VLAN 프레임을 전송할 수 있는 링크를 말한다. 특정 포트를 트렁크 포트로 동작시키는 것을 트렁킹이라고 한다.

그렇다면 트렁킹 프로토콜이란? 하나의 포트(인터페이스)에 여러개의 VLAN이 묶여 통신하는데 각 VLAN별로 이름을 붙여주는 방식의 차이를 말한다.

 

1. 802.1Q 트렁킹

IEEE 802.1Q에 정의된 표준 트렁킹 프로토콜이다. 이더넷 프레임의 출발지 주소 다음에 다음 표와같이 4바이트 길이의 802.1Q태그를 추가하여 VLAN번호와 기타 정보를 표시한다.



이더타입 : 현재 프레임이 802.1Q 프레임이라는 것을 표시하며, 이 필드를 TPID(tag protocol identifier)라고도 한다.

우선순위 : 프레임의 우선순위를 표시한다. 0~7 사이를 갖으며, 값이 클수록 우선순위가 높다.

CFI : 이 비트가 1로 설정되면 토큰링 프레임이 인캡슐레이션된 것임을 표시

VLAN번호 : 프레임의 VLAN번호를 표시한다. 필드의 길이가 12비트이므로, 802.1Q 트렁킹 방식을 사용하면 4096개의 VLAN이 지원된다.

※ 네이티브 VLAN : 802.1Q 방식의 트렁크 에서만 사용되는 개념이다. 802.1Q는 네이티브 VLAN을 이용하여 인캡슐레이션되지 않은 프레임도 송수신한다. 네이티브 VLAN이란 무엇일까? VLAN 번호를 표시하지 않는 VLAN이다. (기본 디폴트 VLAN은 1이다.)

802.1Q 지정하기) SW1(config-if)# switchport trunk encapsulation dot1q

 

2. ISL

시스코에서 개발한 트렁킹 인캡슐레이션 방식이다. 802.1Q과 달리 확장 VLAN을 지원하지 못한다. ISL은 이더넷 프레임은 변경하지 않고, 프레임 앞에 26바이트의 ISL 헤더를 추가한다. FCS 다음에 별도로 4바이트 길이의 ISL FCS를 추가한다.



ISL 헤더

① DA : 이 프레임이 ISL 프레임 이라는 것을 나타탬(40bit)

② Type : 인탭슐레이션된 프레임의 종류를 표시한다. 0000은 이더넷, 0001은 토큰링, 0010은 FDDI, 0011은 ATM (4bit)

③ User : 이더넷 프레임의 우선순위를 표시한다(4bit)

④ SA : 출발지 스위치의 맥주소를 표시(48bit)

⑤ LEN : 프리임의 길이를 표시(16bit)

⑥ SNAP : SNAP을 표시(16bit)

⑦ HAS : 출발지 주소중 상위 3바이트 즉, 제조회사 코드 또는 OUI를 표시(24bit)

⑧ VLAN 번호 : 15비트가 할당되어 있으며 1024개의 VLAN 번호를 지원한다.

⑨ BDPU : BPDU정보를 표시

ISL 지정하기) SW1(config-if)# switchport trunk encapsulation ISL

 


<스위치 포트의 DTP 모드>

DTP(dynamic trunking protocol)란 시스코 스위치에서 상대 스위치와 트렁크와 관련된 사항을 협상할 때 사용되는 프로토콜이다. DTP에 의해 결정되는 것은 트렁크 포트 전환여부와 트렁크 포트로 동작시 인캡슐레이션 방식이다.

1. 액세스 : 상대 포트와 상관없이 자신은 액세스 포트로 동작

SW1(config-if)# switchport mode access

 

2. 트렁크 : 상대포트와 상관없이 자신은 트렁크 포트로 동작

SW1(config-if)# switchport trunk encapsulation ISL or dot1q

 

3. 트렁크 포트가 DTP 프레임을 보내지 않게 설정하기 (자동 협상기능을 중지시키는 방법)

SW1(config-if)# switchport mode trunk 

SW1(config-if)# switchport nonegotiate

 


<VTP>

스위치들 간에 VLAN정보를 서로 주고받아 스위치들이 가지고 있는 VLAN정보를 항상 일치시켜 주기위한 프로토콜이다. VTP서버에서 한 번만 VLAN정보를 설정하면 VTP 서버는 다른 스위치와의 트렁크 링크를 통해서 VLAN 정보를 자동으로 업데이트한다.

동작원리는 스위치에서 VLAN을 추가, 삭제, 수정을 한다. 결과적으로 VLAN 설정정보가 변경되고 새로운 VLAN정보를 다른 스위치에게 전송해야 한다.

스위치는 VTP 설정 번호를 기본값+1해서 다른 스위치에게 전송한다.

VTP정보를 수신한 스위치는 자신의 VTP설정 번호와 수신한 번호를 비교후, 더 높으면 그 새로운 정보로 대체하고, 낮으면 무시한다.

 

<VTP간에 주고받는 메시지 3가지>

① Summary Advertisement : VTP서버가 자기에게 연결되어 있는 스위치들에게 5분마다 한 번씩 전달하는 메시지. 자신이 관리하는 VTP도메인의 Revision 넘버를 보낸다. 각 스위치는 Revision 넘버를 보고 자신들의 VLAN정보가 최신인지 아닌지를 판단한다.

VTP메인서버가 보내는 것

 

② Subset Advertisement : VLAN의 구성이 변경되었을 때나 VTP 클라이언트로부터 Advertisement Request 메시지를 받았을 때 전송된다. 실제 VLAN 정보가 들어있다. VTP메인서버가 보내는 것

 

③ Advertisement Request : 클라이언트가 VTP서버에게 Summary Advertisement와 Subset Advertisement를 요청하는 용도로 사용. VTP서버로부터 자신이 갖고 있는 Revision 넘버보다 더 높은 Revision넘버가 있는 Summary Advertisement 메시지를 받았을 때, Request메시지를 보내서 VTP서버로부터 Subset Advertisement를 받는다. 스위치가 새로 리셋되었을 경우 Advertisement Request 메시지를 VTP서버에게 보낸다.

 


<VTP 모드 3가지>

① VTP 서버 모드 : VLAN 생성, 삭제, 이름 변경, VTP 도메인 안에 있는 나머지 스위치들에게 VTP 도메인 이름과 VLAN 구성, Configuration Revision 넘버를 전달해 줄 수 있다. VTP 서버는 VTP 도메인 내의 모든 VLAN에 대한 정보를 NVRAM에 관리하며, 꺼졌다 켜지더라도 VLAN정보를 모두 가지고 있다.

 

② VTP 클라이언트 모드 : VLAN 생성, 삭제, 이름 변경이 불가능. VTP서버가 전달해준 VLAN 정보를 받고, 또 받은 정보를 자기와 연결된 다른쪽 스위치에 전달하는 것만 가능하다. VTP 클라이언트는 전원이 꺼지면 NVRAM에 저장하지 않아, VLAN의 모든 정보를 잃게된다. VTP서버로부터 정보를 얻어와야 함.

 

③ VTP 트랜스페어런트 모드 : 서버로부터 메시지를 받아 자신의 VLAN을 업데이트하거나 자신이 업데이트한 정보를 다른 스위치에게 전달하지 않는다.

직접 VLAN을 만들고 삭제가 가능하며, 자기만 정보를 알면 되기 때문에 이러한 정보를 다른 스위치들에게 알리지 않는다. 대신, 서버로부터 들어온 메시지를 자기를 통해 연결된 다른 스위치쪽으로 전달해 주거나 자기와 연결된 다른 스위치쪽에서 서버쪽으로 가는 VTP메시지를 전달해 주는 역할만 한다. 자신의 VLAN정보를 NVRAM에 저장해놓는다.

※ VTP 모드 설정 하는 명령어

SW1(config)# vtp mode client/transparent/server

 

<실습>

※ GNS3로 실습하였으며 종단장치의 라우터는 PC대용으로 ping을 확인하기 위해 사용하였고, 위의 라우터는 L3스위치라고 생각하면 된다.



각 종단장치에 속하는 라우터들의 구성을 볼 필요가 없다. 왜냐? 단순히 ping을 확인하기 위한 PC대용으로 사용하기 때문에

R1~R4의 구성을 보면서 설명하겠다.

 

R1)
interface FastEthernet1/0
 switchport trunk native vlan 99
 switchport trunk allowed vlan 1,11,13,1002-1005
 switchport mode trunk

interface FastEthernet1/1
 switchport trunk native vlan 99
 switchport trunk allowed vlan 1,11,13,1002-1005
 switchport mode trunk

interface FastEthernet1/2
 switchport trunk native vlan 99
 switchport trunk allowed vlan 1,11,13,1002-1005
 switchport mode trunk

 

interface FastEthernet1/10
 switchport access vlan 11

interface FastEthernet1/11
 switchport access vlan 13

 

R2)

interface FastEthernet1/0
 switchport trunk native vlan 99
 switchport trunk allowed vlan 1,11,13,1002-1005
 switchport mode trunk

interface FastEthernet1/1
 switchport trunk native vlan 99
 switchport trunk allowed vlan 1,11,13,1002-1005
 switchport mode trunk

interface FastEthernet1/2
 switchport trunk native vlan 99
 switchport trunk allowed vlan 1,11,13,1002-1005
 switchport mode trunk

interface FastEthernet1/10
 switchport access vlan 11

interface FastEthernet1/11
 switchport access vlan 13

 

R3 ~ R4의 구성도 이와 같다.

다음은 show vtp status를 했을때 각각의 vtp정보를 보여준다.

 

R1#sh vtp status 
VTP Version                     : 2
Configuration Revision          : 2
Maximum VLANs supported locally : 68
Number of existing VLANs        : 7
VTP Operating Mode              : Server
VTP Domain Name                 : 
VTP Pruning Mode                : Disabled
VTP V2 Mode                     : Disabled
VTP Traps Generation            : Disabled

 

R2#sh vtp status
VTP Version                     : 2
Configuration Revision          : 2
Maximum VLANs supported locally : 68
Number of existing VLANs        : 7
VTP Operating Mode              : Client
VTP Domain Name                 : 
VTP Pruning Mode                : Disabled
VTP V2 Mode                     : Disabled
VTP Traps Generation            : Disabled

 

R3#sh vtp status
VTP Version                     : 2
Configuration Revision          : 2
Maximum VLANs supported locally : 68
Number of existing VLANs        : 7
VTP Operating Mode              : Client
VTP Domain Name                 : 
VTP Pruning Mode                : Disabled
VTP V2 Mode                     : Disabled
VTP Traps Generation            : Disabled

 

R4#sh vtp status
VTP Version                     : 2
Configuration Revision          : 0
Maximum VLANs supported locally : 68
Number of existing VLANs        : 7
VTP Operating Mode              : Transparent
VTP Domain Name                 : 
VTP Pruning Mode                : Disabled
VTP V2 Mode                     : Disabled
VTP Traps Generation            : Disabled

 

transparent모드에서는 Revision넘버가 0인것을 알 수있다.

그렇다면 만약 여기서 R1에서 vlan을 새로 추가한다거나 Revision넘버가 1이 증가하여 3으로되면 주위에있는 R2와 R3은 같이 Revision넘버가 올라가면서 그 정보를 학습하게된다.

LIST

이더넷에서 IP패킷이 목적지로 전송되기 위해서는 MAC주소를 알아야 한다. 'ping 1.1.1.2'라는 명령을 입력하면 R1은 자신이 전송하는 패킷의 목적지 IP 주소가 1.1.1.2라는 것을 알게 된다. 그러나, IP 주소가 1.1.1.3인 장비의 맥주소는 알지 못한다. 목적지 맥주소를 모르면 이더넷 프레임을 만들 수 없다. 목적지 IP 주소로 가기위한 맥주소를 알아보는 방법에 대해서 알아보자.

 

1. 동일 네트워크에서의 ARP



R0는 그림처럼 목적지 맥주소를 브로드캐스트로 설정한 후, 프레임을 전송한다. 

이 프레임을 수신한 스위치는 수신 포트를 제외한 모든 포트로 플러딩한다.

자신의 맥주소를 찾는 ARP브로드캐스트 프레임을 수신한 R1이 R0에게 응답 프레임을 전송한다.

 

R1이 응답 프레임으로 보내는 메시지이다. 





LIST

+ Recent posts