태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
 

 
블로그 이미지
[www.netrain.co.kr]에서 네트워크/보안을 공부하시는 분들을 위해 서비스를 제공하는 블로그입니다 승진아빠
Follow silpir  on Twitter


 
 

Distance-Vector와 Link-State의 차이점 (1)

네트워크 기초 | 2010.09.10 14:35 | Posted by 승진아빠


많은 분들이 RIP이라는 Protocol의 특징을 Distance-Vector의 특징이라고 잘못알고 계시는 경우가 많이 있습니다. 한가지 예를 들어볼까요?

'Distance-Vector는 Update를 주기적으로 전달한다.'

맞나요? Distance-Vector 방식의 대표적인 Routing Protocol은 RIPv1/2, EIGRP, BGP 등이 있습니다. 이 중 주기적인 Update를 하는 Routing Protocol은 RIPv1/2 뿐이죠. 물론, 과거에 존재했던 IGRP라는 Protocol도 주기적인 Update를 수행하기는 했지만, 사라진 Protocol이잖아요. ^^

Distance-Vector의 특징은 지난 시간에도 말씀드렸듯이 '나와 이웃하고 있는 Router(Neighbor)'가 알려주는 정보만을 가지고 Best-Path를 찾는 Routing Protocol 입니다. 잘 이해가 가지 않는다구요?
그럼 LAB을 통해 Link-State와 어떤 차이가 있는지 한번 확인해 보도록 하겠습니다.

오늘은 다음 Topology를 가지고 Distance-Vector와 Link-State의 3가지의 큰 차이를 먼저 확인해 보도록 하겠습니다.



먼저 Distance-Vector의 설정입니다. 메일링의 양을 줄이기 위해 Interface 설정은 모두 되어 있다는 가정하여 진행합니다.

[R1/R2/R3]
router rip
 network 10.0.0.0

[R1 Routing-Table]
C       10.10.1.0 is directly connected, Loopback0
R       10.10.2.0 [120/1] via 10.10.12.2, 00:00:11, FastEthernet0/0
R       10.10.3.0 [120/2] via 10.10.12.2, 00:00:09, FastEthernet0/0
C       10.10.12.0 is directly connected, FastEthernet0/0
R       10.10.23.0 [120/1] via 10.10.12.2, 00:00:11, FastEthernet0/0

[R2 Routing-Table]
R       10.10.1.0 [120/1] via 10.10.12.1, 00:00:24, FastEthernet0/0
C       10.10.2.0 is directly connected, Loopback0
R       10.10.3.0 [120/1] via 10.10.23.3, 00:00:20, FastEthernet0/1
C       10.10.12.0 is directly connected, FastEthernet0/0
C       10.10.23.0 is directly connected, FastEthernet0/1

[R3 Routing-Table]
R       10.10.1.0 [120/2] via 10.10.23.2, 00:00:00, FastEthernet0/1
R       10.10.2.0 [120/1] via 10.10.23.2, 00:00:00, FastEthernet0/1
C       10.10.3.0 is directly connected, Loopback0
R       10.10.12.0 [120/1] via 10.10.23.2, 00:00:00, FastEthernet0/1
C       10.10.23.0 is directly connected, FastEthernet0/1

자, 이번에는 R1의 update에 대해 debug를 걸어보도록 하겠습니다.

R1# debug ip rip
*Mar  4 16:17:26.810: RIP: received v1 update from 10.10.12.2 on FastEthernet0/0
*Mar  4 16:17:26.810:      10.10.2.0 in 1 hops
*Mar  4 16:17:26.814:      10.10.3.0 in 2 hops
*Mar  4 16:17:26.814:      10.10.23.0 in 1 hops

R2(10.10.12.2)에게 FastEthernet0/0으로 update를 받는데 Network 정보만 받는군요. 즉, 어떤 Router가 가지고 있는 Network인지에 대한 정보는 없습니다. 이런 경우, R1은 '10.10.2.0', '10.10.3.0'. '10.10.23.0'으로 가기 위해서는 R2에게 Packet을 보내면 되겠구나! 라고 판단하게 될 것입니다.

즉, Distance-Vector Routing Protocol은 단순히 자신에게 Update 정보를 전달하는 Router가 알려준 정보만을 믿게 됩니다. 그럼 이번에는 R2에서 10.10.2.0에 대해 Filtering을 한 후, debug 정보를 확인해 보시죠!

R2(config)# access-list 1 deny 10.10.3.0
R2(config)# access-list 1 permit all
R2(config)# router rip
R2(config-router)# distribute-list 1 out FastEthernet 0/0

R1# debug ip rip
*Mar  4 16:27:31.210: RIP: received v1 update from 10.10.12.2 on FastEthernet0/0
*Mar  4 16:27:31.210:      10.10.2.0 in 1 hops
*Mar  4 16:27:31.214:      10.10.23.0 in 1 hops

R1# show ip route
Gateway of last resort is not set
     10.0.0.0/24 is subnetted, 4 subnets
C       10.10.1.0 is directly connected, Loopback0
R       10.10.2.0 [120/1] via 10.10.12.2, 00:00:04, FastEthernet0/0
C       10.10.12.0 is directly connected, FastEthernet0/0
R       10.10.23.0 [120/1] via 10.10.12.2, 00:00:04, FastEthernet0/0

어떻게 되었나요? R1의 Routing Table에서 '10.10.2.0'이 사라져 버렸네요.
RIP의 database를 한번 볼까요?

R1# show ip rip database
10.0.0.0/8    auto-summary
10.10.1.0/24    directly connected, Loopback0
10.10.2.0/24
    [1] via 10.10.12.2, 00:00:21, FastEthernet0/0
10.10.12.0/24    directly connected, FastEthernet0/0
10.10.23.0/24
    [1] via 10.10.12.2, 00:00:21, FastEthernet0/0

Database 자체에 '10.10.2.0'이 없어져 버렸군요. 당연한거 아니냐구요? 자, 그럼 이번에는 Link-State의 대표적인 Routing Protocol인 OSPF를 한번 돌려보도록 하겠습니다. 그림은 위와 동일합니다.



[R1/R2/R3]
router ospf 1
  network 0.0.0.0 0.0.0.0 area 0

[R1 Routing-Table]
O       10.10.3.1/32 [110/21] via 10.10.12.2, 00:00:10, FastEthernet0/0
O       10.10.2.1/32 [110/11] via 10.10.12.2, 00:00:10, FastEthernet0/0
C       10.10.1.0/24 is directly connected, Loopback0
C       10.10.12.0/24 is directly connected, FastEthernet0/0
O       10.10.23.0/24 [110/20] via 10.10.12.2, 00:00:10, FastEthernet0/0

[R2 Routing-Table]
O       10.10.3.1/32 [110/11] via 10.10.23.3, 00:00:26, FastEthernet0/1
O       10.10.1.1/32 [110/11] via 10.10.12.1, 00:00:26, FastEthernet0/0
C       10.10.2.0/24 is directly connected, Loopback0
C       10.10.12.0/24 is directly connected, FastEthernet0/0
C       10.10.23.0/24 is directly connected, FastEthernet0/1

[R3 Routing-Table]
O       10.10.2.1/32 [110/11] via 10.10.23.2, 00:00:44, FastEthernet0/1
O       10.10.1.1/32 [110/21] via 10.10.23.2, 00:00:44, FastEthernet0/1
C       10.10.3.0/24 is directly connected, Loopback0
O       10.10.12.0/24 [110/20] via 10.10.23.2, 00:00:44, FastEthernet0/1
C       10.10.23.0/24 is directly connected, FastEthernet0/1

별로 다른게 없어 보이는군요. 이번에는 R1에 Debug를 한번 걸어보도록 하겠습니다.

*Mar  4 16:45:36.969:  It is a router LSA 10.10.2.1. Link Count 3
*Mar  4 16:45:36.969:  It is a router LSA 10.10.3.1. Link Count 2

위와 같이 정보를 받습니다. '10.10.2.1'라는 Router가 Network을 3개 가지고 있다는군요. 그리고, '10.10.3.1'이라는 Router가 Network을 2개 가지고 있다는군요.
어떤 Network인지 궁금하시다구요? 한번 보도록 하시죠!

R1# show ip ospf database router 10.10.2.1
            OSPF Router with ID (10.10.1.1) (Process ID 1)
                Router Link States (Area 0)
  LS age: 348
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 10.10.2.1
  Advertising Router: 10.10.2.1
  LS Seq Number: 8000000C
  Checksum: 0x64A8
  Length: 60
  Number of Links: 3
    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 10.10.2.1
     (Link Data) Network Mask: 255.255.255.255
      Number of TOS metrics: 0
       TOS 0 Metrics: 1
    Link connected to: a Transit Network
     (Link ID) Designated Router address: 10.10.23.3
     (Link Data) Router Interface address: 10.10.23.2
      Number of TOS metrics: 0
       TOS 0 Metrics: 10
    Link connected to: a Transit Network
     (Link ID) Designated Router address: 10.10.12.2
     (Link Data) Router Interface address: 10.10.12.2
      Number of TOS metrics: 0
       TOS 0 Metrics: 10

'10.10.2.1'라는 Router는 Link가 3개 있는데, 하나는 10.10.2.1/32이고 나머지는 '10.10.12.2', '10.10.23.2'라는 군요. 헉! '10.10.12.2'와 '10.10.23.2'는 subnet 정보가 없군요. 다행히 DR이라는 놈이 던져주는 정보를 보면 알 수 있을 것이라고 DR의 IP address를 알려주는군요.

그럼, DR의 정보를 한번 볼까요? 향후 OSPF를 설명드릴 때 보다 자세하게 설명드릴테니.. 오늘은 그냥 편안한 마음으로 따라와 주세요. ^^

R1# show ip ospf database network 10.10.23.3
            OSPF Router with ID (10.10.1.1) (Process ID 1)
                Net Link States (Area 0)
  Routing Bit Set on this LSA
  LS age: 1248
  Options: (No TOS-capability, DC)
  LS Type: Network Links
  Link State ID: 10.10.23.3 (address of Designated Router)
  Advertising Router: 10.10.3.1
  LS Seq Number: 80000001
  Checksum: 0xA31C
  Length: 32
  Network Mask: /24
        Attached Router: 10.10.3.1
        Attached Router: 10.10.2.1


'10.10.23.2'는 subnet이 24bit군요. 그럼 10.10.23.0/24 겠군요. 그리고, 그 Network에는 '10.10.3.1'과 '10.10.2.1' 2대의 Router가 연결되어 있다고 알려주는군요. 그럼 10.10.12.2도 한번 볼까요?

R1# show ip ospf database network 10.10.12.2
            OSPF Router with ID (10.10.1.1) (Process ID 1)
                Net Link States (Area 0)
  Routing Bit Set on this LSA
  LS age: 898
  Options: (No TOS-capability, DC)
  LS Type: Network Links
  Link State ID: 10.10.12.2 (address of Designated Router)
  Advertising Router: 10.10.2.1
  LS Seq Number: 80000001
  Checksum: 0x6CB
  Length: 32
  Network Mask: /24
        Attached Router: 10.10.2.1
        Attached Router: 10.10.1.1


'10.10.12.2'도 subnet이 24bit군요. 그럼 10.10.12.0/24 겠군요. 그리고, 그 Network에는 '10.10.1.1'과 '10.10.2.1' 2대의 Router가 연결되어 있다고 알려주는군요. 자! 이것으로 무엇을 할 수 있을까요? Router가 모든 Network Topology를 그릴 수 있습니다. 자세한 이야기는 후에 다루기로 하시죠! 처음부터 너무 많은 이야기를 하면 머리아프시잖아요. ^^

자! 다시 RIP하고 비교하기 위해서 이번에는 OSPF에서 Filtering을 합니다. 그런데, 아쉽게도 OSPF는 같은 Area에서 outbound로 filtering이 안되기 때문에 inbound로 걸도록 하겠습니다.

R2(config)# access-list 2 deny 10.10.3.1
R2(config)# access-list 2 permit all
R2(config)# router ospf 1
R2(config-router)# distribute-list 2 out fastEthernet 0/0
% Interface not allowed with OUT for OSPF
R2(config-router)# distribute-list 2 in fastEthernet 0/1

자 이제 어떻게 될까요?

[R1 Routing-Table]
O     10.10.3.1/32 [110/21] via 10.10.12.2, 00:18:02, FastEthernet0/0
O       10.10.2.1/32 [110/11] via 10.10.12.2, 00:18:02, FastEthernet0/0
C       10.10.1.0/24 is directly connected, Loopback0
C       10.10.12.0/24 is directly connected, FastEthernet0/0
O       10.10.23.0/24 [110/20] via 10.10.12.2, 00:18:02, FastEthernet0/0

[R2 Routing-Table]
O       10.10.1.1/32 [110/11] via 10.10.12.1, 00:17:56, FastEthernet0/0
C       10.10.2.0/24 is directly connected, Loopback0
C       10.10.12.0/24 is directly connected, FastEthernet0/0
C       10.10.23.0/24 is directly connected, FastEthernet0/1

R2에서 '10.10.3.1'을 Filtering 했는데 R1에는 정보가 넘어갔네요. 왜 그럴까요? R2가 Network을 Filtering 했다고 해서 R3가 던져준 정보를 Filtering 한것이 아니기 때문입니다. R2에서 Database를 한번 볼까요?

R2#show ip ospf database router 10.10.3.1
            OSPF Router with ID (10.10.2.1) (Process ID 1)
                Router Link States (Area 0)
  LS age: 1271
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 10.10.3.1
  Advertising Router: 10.10.3.1
  LS Seq Number: 80000005
  Checksum: 0x4E1C
  Length: 48
  Number of Links: 2
    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 10.10.3.1
     (Link Data) Network Mask: 255.255.255.255
      Number of TOS metrics: 0
       TOS 0 Metrics: 1
    Link connected to: a Transit Network
     (Link ID) Designated Router address: 10.10.23.3
     (Link Data) Router Interface address: 10.10.23.3
      Number of TOS metrics: 0
       TOS 0 Metrics: 10

어떤가요? 정보를 다 가지고 있죠! R2에서 그 정보를 Routing table에 올리지 않겠다는 것 뿐입니다. Link-State Routing Protocol은 모든 Router가 정확하게 Topology를 그려야 하기 때문에 정보 자체를 Filtering할 수 없습니다. 흠.... 오히려 단점 같다구요? 그럼 다음 사항을 한번 보도록 하시죠!



이번에는 동일한 상황에서 R2에서 Static Routing Protocol을 사용해서 10.10.3.1/32의 경로를 생성했군요. 이런 경우, Distance-Vector와 Link-State에서 어떤 변화가 있는지 살펴보도록 하겠습니다.

먼저 Distance-Vector Routing Protocol의 결과입니다.
R2(config)# ip roure 10.10.3.0 255.255.255.0 10.10.23.3

[R1 Routing-Table]
C       10.10.1.0 is directly connected, Loopback0
R       10.10.2.0 [120/1] via 10.10.12.2, 00:00:15, FastEthernet0/0
C       10.10.12.0 is directly connected, FastEthernet0/0
R       10.10.23.0 [120/1] via 10.10.12.2, 00:00:15, FastEthernet0/0

[R2 Routing-Table]
R       10.10.1.0 [120/1] via 10.10.12.1, 00:00:02, FastEthernet0/0
C       10.10.2.0 is directly connected, Loopback0
S     10.10.3.0 [1/0] via 10.10.23.3
C       10.10.12.0 is directly connected, FastEthernet0/0
C       10.10.23.0 is directly connected, FastEthernet0/1

어떤 변화가 생겼나요? R2는 당연히 Static Routing Protocol이 RIP보다 우선하기 때문에 RIP으로 정보가 나타날 것이고, R1은요? 정보가 사라져버렸군요. 왜 그런가요? 이유는 간단합니다. Distance-Vector는 학습한 정보가 Routing Table에서 Best-Path로 잡혀 있어야 다른 Router에게 전달이 가능하기 때문입니다.

그래서, Static Routing Protocol을 잘못사용하게 되면 하위단 장비들이 통신이 안되는 불상사가 발생할 수 있기 때문에 조심스럽게 사용하셔야 합니다. 반드시 명심하세요.

그럼, Link-State Routing Protocol을 한번 볼까요?

R2(config)# ip route 10.10.3.1 255.255.255.255 10.10.23.3

[R1 Routing-Table]
C       10.10.1.0/24 is directly connected, Loopback0
O     10.10.3.1/32 [110/21] via 10.10.12.2, 00:00:05, FastEthernet0/0
O       10.10.2.1/32 [110/11] via 10.10.12.2, 00:00:05, FastEthernet0/0
C       10.10.12.0/24 is directly connected, FastEthernet0/0
O       10.10.23.0/24 [110/20] via 10.10.12.2, 00:00:05, FastEthernet0/0


[R2 Routing-Table]
O       10.10.1.1/32 [110/11] via 10.10.12.1, 00:00:02, FastEthernet0/0
S     10.10.3.1/32 [1/0] via 10.10.23.3
C       10.10.2.0/24 is directly connected, Loopback0
C       10.10.12.0/24 is directly connected, FastEthernet0/0
C       10.10.23.0/24 is directly connected, FastEthernet0/1

RIP과 마찬가지로 R2는 Static Routing Protocol이 올라왔지만, R1에는 아무런 문제없이 10.10.3.1 정보가 전달되는 것을 확인하실 수 있습니다. 즉, Link-State Routing Protocol은 아무런 문제없이 Static Routing Protocol과 호환되어 사용하실 수 있습니다. 물론, 잘못 사용하시면 Looping이 발생할 수 있다는 단점이 있습니다.

내용이 길었습니다. 강의시간에 설명을 드리면 10분 정도에 간단히 설명이 가능할텐데 안타깝군요.

이해가 가지 않으시더라도 천천히 따라오시면 제가 반드시 이해가 되도록 만들어 드리도록 할께요. ^^


날씨가 참 변덕스럽군요. 어제 너무 속상한 일이 있어서 술을 많이 먹었더니 속이 많이 안좋군요. ^^
저희 교육센터에서 또 한분이 CCIE R&S 시험에서 Fail 하셨습니다.
저와 같이 밤셈하시면서 열심히 하셨는데, 너무 안타까워 어제는 술을 아무리 많이 먹어도 잠이 오지 않더군요. 충분히 도움을 드리지 못한 저의 불찰같아 아직까지 마음 한구석이 허합니다. CCIE 취득을 위해 교육센터에 오신 분인데 CCIE 취득을 못하신다면 다 저희 책임이죠.
실수를 하셔서 그렇다고 하시는데, 실수를 하지 않도록 해 드리는게 저희 임무고 책임 아니겠습니까!
이렇게 부족한 상황에서 수강생을 모집하면 뭐 할 것이고, CCIE 과정을 진행한다고 어떻게 제 입으로 떠들겠습니까? 스스로 사기꾼이 된것 같아 마음이 찹찹합니다.

그래서, 오늘 스스로에게 약속을 했습니다.
현재 저희 학원에서 CCIE 과정을 수강하신 모든 분들이 합격하실 때까지 음주를 비롯하여 어떠한 개인시간을 사용하지 않겠다고요. 저희 교육센터에서 수강을 하신 분들은 모두 가족입니다. 가족이 힘든데, 맏형으로써 책임을 지고 더욱더 노력해야지요.

오늘은 IGP에 대해 한단계 더 깊숙히 살펴보도록 하겠습니다. IGP는 AS내에 있는 Network에 대해서 Best-Path를 찾기 위한 Routing Protocol입니다. 그런데, 이 IGP는 동작방식에 따라 다시 2가지 종류가 나뉩니다.
바로 Distance-Vector 방식과 Link-State 방식의 Routing Protocol입니다.

오늘은 두가지의 기본적인 차이를 이해하는 시간을 갖도록 하겠습니다.

먼저, Distance-Vector라는 Routing Rrotocol부터 살펴보도록 하시죠. Distance-Vector는 이름 그대로 각 Network에 대해서 거리(Distance)가 얼마나 떨어져 있고, 어느 방향(Vector)으로 보내면 되는지를 알고 있는 Routing Protocol입니다. 무슨 말이냐구요?

우리가 전철을 타고 총신대 입구에서 강남역으로 가려고 합니다. 그래서 친구에게 전화를 걸어서 물어봅니다.
"총신대 입구에서 강남역으로 가려면 몇호선을 타야해?"
친구가 대답을 해주는군요.
"7호선타면 4정거장이고, 4호선타면 5정거장이야!"
우리는 가까운 경로인 4정거장을 선택할 것이고, 결국 7호선을 타게 될겁니다. 이렇게 거리(4정거장 or 5정거장)와 방향(7호선 or 4호선)만을 가지고 Best-Path를 결정하는 것 Routing Protocol이 'Distance-Vector'입니다. 사람은 다음과 같이 판단하겠죠!



그럼 다음의 경우를 보시죠.

이번에는 친구가 이렇게 대답을 해주는군요.
"4호선을 타고 사당역에서 2호선을 갈아타면 방배, 서초, 교대역 다음이 강남역이야! 그리고, 7호선을 타고 남성 다음에 고속터미널역에서 3호선을 갈아타고, 교대에서 한번 더 2호선으로 갈아타면 다음이 강남역이야!"
라고요.
그럼 우리는 각 역들이 어떻게 연결이 되어 있는지 알겠군요.



위의 그림처럼 각 역들이 어떻게 연결되어 있는지 각 구간(Link)에 대한 모든 연결상태(State)를 그림으로 그려 Best-Path를 결정할 수 있을 것입니다. 우리는 이러한 Routing Protocol을 'Link-State'라고 이야기 합니다.

그럼, 라우터가 어떻게 이 정보를 알 수 있냐구요? 자, 다음 그림을 잘 보세요.
먼저 Distance-Vector가 Network 정보를 전달하는 방법입니다.



R1은 A로 가기 위해 R2와 R5가 던져준 정보만 참조합니다. 즉, 어떤 경로를 통해 전달되는지는 관심이 없고 R2가 던져준 A까지의 거리(X+Y+Z)와 R5가 던져준 A까지의 거리(L+M+N)만을 비교해서 거리가 짧은 쪽으로 Packet을 전달합니다. 즉, R2로 전송을 할지, R5에서 전송을 할지 방향을 결정하게 되는거죠!

그럼, Link-State는 어떻게 동작을 할까요?
다음 그림을 한번 보시죠!



각 Router는 자신과 직접 연결된 Network 정보를 담아서 자신과 이웃해 있는 Router에게 전달을 해주고, 전달을 받은 Router는 타 Router의 정보을 수정하지 않고 자신의 정보와 함께 다른 Router에게 전달을 해주게 됩니다. 거기에 추가적으로 어느 Network에 어떠한 Router와 연결되어 있는지도 함께 전달을 합니다. 그 자료를 기반으로 모든 Router는 Network의 구조를 그리게 됩니다.
 
이해가 잘 안가신다고요?

이렇게 생각을 해보세요. 다음과 같이 학생들이 자리에 앉아 있습니다.



선생님이 학생들에게 자신의 이름과 앞뒤좌우에 누가 있는지를 써서 제출하라고 합니다.
학생 A : 오른쪽 B
학생 B : 오른쪽 C, 왼쪽 A, 뒤쪽 E, 앞쪽 선생님
학생 C : 왼쪽 B, 뒤쪽 F
학생 E : 오른쪽 F, 뒤쪽 H, 앞쪽 B
학생 F : 왼쪽 E, 앞쪽 C
학생 G : 오른쪽 H
학생 H : 왼쪽 B, 앞쪽 E

이 자료를 가지고 선생님이 배치도를 완성할 수 있을까요?
선생님을 기준으로 선생님은 B와 연결되어 있습니다. 다음에는 B 학생 카드를 가져와서 오른쪽에 C 학생 카드를 놓고, 왼쪽에는 A 학생 카드를 놓고, 뒤쪽에는 E 학생 카드를 놓으면 되겠군요.
다음에는요? A 학생 카드는 B학생하고만 연결되어 있으니 그냥 놔두면 되고, C 학생 카드에는 뒤에 F학생이 있다고 하니 F 학생의 카드를 놓으면 되겠군요.

이런식으로 만들어 나가면 모든 자리배치도가 완성될 겁니다. 이런식으로 Network의 모든 구조를 만들어 나가는 Routing Protocol이 Link-State랍니다. 어렵다구요? 다음시간에 하나하나씩 살펴보면 쉽게 이해가 가실겁니다. ^^

재미있으셨나요? 많은 분들이 잘 이해하지 못하시는 부분이라 쉽게 설명해 보려고 했는데 역시 말보다는 글로 설명하는게 더 어렵군요. 그래도, 최선을 다해서 여러분의 이해를 돕도록 노력하겠습니다.

IGP와 EGP

네트워크 기초 | 2010.08.20 11:31 | Posted by 승진아빠


친구에게 우리집 위치를 설명할 때 집 내부구조까지 설명을 해야 할까요? 그렇지 않을 겁니다. 이처럼 우리집 위치를 타인에게 설명하기 위한 Routing Protocol을 EGP라고 이야기를 합니다.

그리고, 친구들이 우리집에 찾아와서 물어봅니다.
"화장실이 어디야?"
이제는 내부 구조를 설명해줘야 하겠군요. 이처럼 집안에서 위치를 찾아가기 위한 Routing Protocol을 IGP라고 이야기를 합니다.

오늘은 이러한 IGP와 EGP에 대해서 자세히 학습해 보도록 하겠습니다. 우선 IGP와 EGP의 차이를 알기 위해서는 Autonomous System(AS)에 대해서 아셔야 합니다.

AS의 표준 정의 : 하나의 관리자 집단이 관리할 수 있는 네트워크 영역

인터넷에는 30만개가 넘는 네트워크가 존재합니다. 이 네트워크들의 모든 경로를 다 관리하기는 힘들겁니다. 예를 들어 인터넷 트래픽 중 Daum과 Naver로 가는 Traffic은 KT회선으로 전송을 하겠다고 결정을 했다고 가정하죠. Daum의 사이트를 보니  222.231.51.0/24 네트워크고, Naver의 사이트를 보니 222.122.195.0/24 군요.

[참고 : 전세계 네트워크 수]



그래서, Static Rouing Protocol을 사용해서 해당 Network에 대해서 KT로 전송을 했습니다.

그런데, 문제가 발생을 했군요. Daum이 네트워크 주소를 바꾼겁니다. 그럼 어느 IP로 바꾸었는지 확인 후에 기존 Static 경로를 지우고 새롭게 Static Route를 구성해야 하겠군요. 이처럼 인터넷 경로는 타회사의 네트워크 정보기이 때문에 우리가 관리할 수가 없습니다.

그래서, 조금이라도 체계적으로 관리를 하기 위해 AS가 생겨나게 되었습니다. 특정 네트워크 정보에 대하여 어느 나라, 어느 ISP, 어느 회사의 정보인지를 확인하기 위한 것이죠. 후에 BGP에서 배우시겠지만, 이 정보를 통해 특정 네트워크가 어느 AS를 거쳐서 우리 회사로 들어왔는지를 확인할 수가 있습니다.

AS가 인터넷을 사용하는데 반드시 필요한 것은 아니지만, 인터넷 서비스를 제공하는 대부분의 회사가 하나씩 가지고 있습니다. BGP라는 것을 배우실 때 자세하게 배우기로 하시죠. ^^

그 전 문제로 돌아가서 Daum 사이트는 AS3784, Naver 사이트는 AS4766을 가지고 있습니다. 그럼 이제 두개의 AS에 대해서 KT로 전송을 하면 되겠군요. 왜냐하면 AS는 한 회사가 하나의 AS를 가지며, 그 수가 65535개(사설은 1024개)로 한정되어 있기 때문에 쉽게 반납하거나 바꾸지를 못합니다. 그러니, IP는 바꾸어도 AS는 그대로 가지고 가겠죠.

위의 경우는 AS를 가지고 할 수 있는 정책적용 중 하나의 예일 뿐입니다.

이렇게 AS는 인터넷을 사용할 때, 우리 회사와 타 회사간에 네트워크 정보를 주고 받을 때 반드시 필요한 정보입니다. 그렇다고 우리 회사 네트워크 정보를 자세하게 다 알려줄 필요가 있을까요?

예를 들어, 우리 회사가 200.0.0.0/24 네트워크을 Subneting해서 사용할 경우, 200.0.0.0/30, 200.0.0.4/30, 200.0.0.64/26...... 다양한 네트워크가 생성되게 될 것입니다. 이 정보를 타사에게 전달해 줄 필요는 없겠죠! 200.0.0.0/24 정보만 전송해 주면 될 것입니다. 다음 그림처럼요.

  

이렇게 타 회사와 정보를 주고 받을 때 사용하는 Routing Protocol, 즉 AS간에 정보를 교환하는 Routing Protocol을 EGP라고 이야기 합니다. 자, 그럼 다음의 경우는 어떨까요? 외부에서 200.0.0.120으로 가는 Packet이 들어왔습니다.



외부에서는 Destination IP addrees가 200.0.0.120인 Packet에 대해서 200.0.0.0/24 정보를 기반으로 우리회사로 Forwarding 했지만, 우리 회사 내에서는 이 Pakcet을 200.0.0.120으로 Routing을 시켜줘야 할 겁니다.

그럼, 외부에는 200.0.0.0/24로 네트워크 정보를 전달했지만, 사내 Router는 모든 자세한 경로를 알고 있어야 하겠네요. 이렇게 AS 내에서 Best-Path를 찾을 수 있도록 네트워크 정보를 전달하는 Routing Protocol을 IGP라고 부릅니다.

즉, IGP는 영어 그대로 AS 내부 목적지로 가기 위해 어느 Gateway(문)로 보내야 하는지를 찾는 Routing Protocol이고, EGP는 AS 외부 목적지로 가기 위해 어느 Gateway로 보내야 하는지를 찾는 Routing Protocol 입니다. 쉬죠? ^^

주말은 하루종일 CCIE 교육이 있어서 쉬시고요, 월요일에 뵙도록 하겠습니다.
장사 안되서 강의가 없으니 메일링 쓸 시간은 많군요. 뚜시궁!!

Dynamic Routing Protocol 개요

네트워크 기초 | 2010.08.19 11:04 | Posted by 승진아빠


자, 오늘은 Dynamic Routing Protocol에 대해서 학습해 보도록 하겠습니다.

네트워크 인프라가 점점 커지면서 Static Routing Protocol로 모든 네트워크를 구성한다는 것은 참 어려운 일이 아닐 수 없습니다. 그럼, 어떻게 해야 할까요? 이것을 해결하기 위해 우리는 Dynamic Routing Protocol을 만들었습니다. 어떻게 동작하냐구요? 밑의 그림을 한번 보세요.



5개의 Router가 있고 네트워크는 A부터 G까지 7개가 있군요. Static Routing Protocol을 사용해서 모두 통신이 가능하도록 하려면 몇개의 설정이 필요할까요? 각 Router는 Direct Connect되어 있는 네트워크를 제외하고 모두 Static으로 구성하여야 할 겁니다.

그럼 이렇게 하면 어떻게 될까요? 각 Router가 자신과 Direct Connect 되어 있는 네트워크를 상대방에게 알려주는 겁니다. 다음과 같이요.



그럼, R1은 D와 E로 가는 Packet을 R2로 보내야 한다는 것을 알게 되겠군요. 물론 R2도 A로 가는 Packet을 R1으로 보내야 한다는걸 알게 될 것이고요. 다음에는 R2가 R3, R4에게 자신의 네트워크 정보를 보내면서 R1에게 받은 정보도 같이 보내면 다음과 같이 되겠군요.



이제 R3는 A, C, E로 가는 Packet을 R2로 전송하게 될 것이고, R4는 A, C, D로 가는 Packet을 R2로 전송하겠군요. 이런식으로 R5까지 R1, R2, R3, R4의 모든 네트워크 정보가 보내어지고, R5의 정보도 R1까지 전달이 되면 모든 네트워크간에 통신이 가능하게 될 것입니다. 우리는 이렇게 자신의 정보를 상대방에게 전송하여 통신이 가능하도록 만들어 주는 Protocol을 Dynamic Routing Protocol이라고 부릅니다.

그럼, 다음의 경우를 생각해 볼까요? 위의 그림에서 네트워크 A가 다음과 같이 전송되었을 경우입니다.



R4는 네트워크 A에 대해서 2개의 Router(R2, R5)로 부터 학습을 했군요. R4가 갈등하기 시작합니다.
'도대체 A로 가는 Packet을 R2와 R5중 누구에게 보내야 하는가?'

그럼 이번에는 R5 입장에서 한번 볼까요? 네트워크 A 경로를 다음처럼 R3와 R4로부터 받았습니다.



R4와 동일한 갈등을 하겠군요. 그럼 위 두개의 그림을 합쳐서 생각해 보세요. R4가 R5로 Packet을 전송하고 R5가 R4로 Packet을 전송하는 경우 어떻게 될까요? 둘 사이에게 Packet은 왔다갔다 하게 될겁니다. 이것을 우리는 'Routing Looping'이라고 합니다. 여기서 우리는 엄청난 규칙이 생겨납니다.

Routing Protocol은 상호간에 서로를 Best-Path로 선출하면 안된다!

이 규칙을 지키기 위해서는 Router간에 Best-Path를 선출하는 동일한 기준이 수립되어야 할겁니다. 그렇지 않으면 Packet Looping이 발생하게 되니까요. 그래서, Router는 가장 가까운 경로로만 Packet을 보내자! 라고 결정을 합니다. 당연한 것 같지만 이 부분은 후에 매우 중요한 부분으로 사용될테니 잘 기억해 주시기 바랍니다.

그래서, Router는 가까운 경로를 선택할 때 'Metric'이라는 것을 비교해서 가장 작은 값을 Best-Path로 결정하게 됩니다. 그리고, 후에 배우시겠지만 Routing Protocol마다 Metric을 생성하는 방법이 모두 다릅니다.

예를 들어, RIP이라는 Routing Protocol을 사용하게 되면 Best-Path가 다음과 같이 결정됩니다.



앞으로 각 Routing Protocol에 대해 자세하게 배우시게 될 겁니다. 어려우실 수도 있고 쉽고 재미있으실 수도 있습니다. 저와 함께 세상에서 가장 재미있는 Routing Rrotocol을 학습해 보도록 하시죠! ^^

'네트워크 기초' 카테고리의 다른 글

Distance-Vector & Link-State Routing Protocol 개요  (0) 2010.08.27
IGP와 EGP  (1) 2010.08.20
Dynamic Routing Protocol 개요  (0) 2010.08.19
Routing Protocol의 종류 (Connect & Static)  (3) 2010.08.10
'Routing Protocol' 개요  (0) 2010.08.02
'RSTP'의 개요  (0) 2010.07.23

Routing Protocol의 종류 (Connect & Static)

네트워크 기초 | 2010.08.10 13:39 | Posted by 승진아빠

2. Routing Protocol의 종류

2.1 Connected Routing Protocol
 

“Direct connected"도 Routing Protocol인가요?”
강의를 하면서 많이 받는 질문 중 하나입니다. 결론부터 말씀드리면 Routing Protocol이 맞습니다. 시스코 Router는 일반적으로 32개의 Routing Protocol을 실행할 수 있습니다. 그 중 'Connected'와 ‘Static'이 기본으로 실행되고 있기 때문에 30개까지 추가 실행이 가능합니다.

Router(config)#router eigrp 1
Router(config-router)#router eigrp 2
Router(config-router)#router eigrp 3
Router(config-router)#router eigrp 4
Router(config-router)#router eigrp 5
Router(config-router)#router eigrp 6
Router(config-router)#router eigrp 7
Router(config-router)#router eigrp 8
Router(config-router)#router eigrp 9
Router(config-router)#router eigrp 10
Router(config-router)#router eigrp 11
Router(config-router)#router eigrp 12
Router(config-router)#router eigrp 13
Router(config-router)#router eigrp 14
Router(config-router)#router eigrp 15
Router(config-router)#router eigrp 16
Router(config-router)#router eigrp 17
Router(config-router)#router eigrp 18
Router(config-router)#router eigrp 19
Router(config-router)#router eigrp 20
Router(config-router)#router eigrp 21
Router(config-router)#router eigrp 22
Router(config-router)#router eigrp 23
Router(config-router)#router eigrp 24
Router(config-router)#router eigrp 25
Router(config-router)#router eigrp 26
Router(config-router)#router eigrp 27
Router(config-router)#router eigrp 28
Router(config-router)#router eigrp 29
Router(config-router)#router eigrp 30
Router(config-router)#router eigrp 31
too many IP routing processes

위의 그림에서 EIGRP Process를 실행시킬 때, 31번째 EIGRP Process는 실행되지 않는 것을 확인하실 수 있습니다. 무슨 Router가 Routing Protocol을 30개나 실행하냐고요? 아직, 학습하지 않으셨지만, MPLS VPN 서비스를 제공하는 ISP의 Router 중 고객과 연결되어 있는 Router(PE Router)는 자신과 연결되어 있는 고객의 수만큼 Routing Protocol이 실행되어야 합니다. 자세한건 MPLS VPN에서 학습하도록 하시죠! 

그럼, 'Connected' 정보가 가지고 있는 내용을 한번 살펴볼까요?

Router(config)#interface fastEthernet 0/0
Router(config-if)#ip address 192.168.1.1 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#end

Router#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route 

Gateway of last resort is not set
 

C 192.168.1.0/24 is directly connected, FastEthernet0/0

Router#show ip route 192.168.1.0
Routing entry for 192.168.1.0/24
Known via "connected", distance 0, metric 0 (connected, via interface)
Routing Descriptor Blocks:
* directly connected, via FastEthernet0/0
Route metric is 0, traffic share count is 1


FastEthernet0/0 interface에 IP address를 할당하고, 'show ip route'를 통하여 Routing table을 보니 ‘192.168.1.0/24가 FastEthernet0/0에 직접 연결되어 있다’라고 친절하게 쓰여 있군요. 그런데, 앞쪽에 'C'라고 표시가 되어 있네요. Routing table은 다양한 Routing Protocol들이 경쟁하여 Best-Path만 기록되는 곳입니다.

그렇기 때문에 어느 Routing Protocol 정보가 Best-Path로 선출되었는지 네트워크 관리자에게 알려주어야 Routing table 상태가 정상인지 여부를 확인할 수 있을 것입니다. 그래서, Routing table에는 해당 Network가 어떠한 Routing Protocol로 학습된 정보인지를 알려줍니다.

예를 들어, 위 그림에 나타난 ‘C'는 Connected Routing Protocol을 의미합니다.
 

그리고, 상세정보를 확인하기 위해 ‘show ip route 192.168.1.0'을 실행해 보면 Connected 정보의 AD는 ’0‘이고, metric도 ’0‘이라는 것을 확인할 수 있습니다. AD와 metric 모두 낮은 값이 우선하기 때문에 Connected Routing Protocol 정보가 항상 Best가 되겠군요.
 

Connected Routing Protocol은 별도의 설정이 없이 ‘ip routing'을 통해 IPv4 Routing 기능을 실행하면 Static Routing Protocol과 함께 자동으로 실행되며, Interface에 IP 주소를 설정함과 동시에 Routing table에 정보가 등록되어 사용됩니다.


2.2 Static Routing Protocol
 

‘Static Routing Protocol’은 네트워크 관리자에 의해 수동(Manual)으로 설정되는 Routing Protocol입니다. 수동으로 설정하는 것은 네트워크 관리자의 업무부담이 가중되는 단점이 있으나, 모든 네트워크 구조를 관리자가 이해할 수 있으며 장비 및 회선의 자원을 최적화할 수 있다는 장점을 가지고 있습니다.

네트워크 구조가 단순하고, 네트워크의 수가 적었던 과거에는 Static Routing Protocol만을 가지고 네트워크 설계가 가능했으나, 현대 네트워크처럼 복잡한 구조에서는 Static Routing Protocol만을 가지고 설계하는 것은 무척 어렵습니다.

한번 예를 들어볼까요? 다음과 같은 네트워크 구조에서 장애가 발생했다고 가정하겠습니다.

 

 

장애가 발생하기 전에 서버와 PC간 통신 시 ‘R1↔R3’ 경로로 통신을 합니다. 그리고, SW1에 장애가 발생했을 경우를 대비하여 ‘R1↔R2↔R3’ 구간을 Backup 경로로 설계하였습니다.

문제없이 설계된 것 같지만, SW1 장비에 문제가 생기는 것이 아니라 R1과 SW1 구간, 또는 R3와 SW1 구간에만 장애가 생기는 경우 문제가 발생합니다. 물론, 요즘 SLA 등을 통해 문제를 해결하기도 하지만, 여타 기술을 사용하지 않는 것을 기준으로 설명드립니다. 



R3는 R1으로 가는 경로가 사라졌다는 것을 인지하고 R2로 Packet을 전송하지만, R1은 R3로 가는 경로가 사라졌다는 것을 인지하지 못하고 SW1에게 Packet을 전송합니다. 하지만, SW1은 R3로 가는 Interface가 Down 상태이기 때문에 전송을 못하는 상황이 발생합니다. 

그럼, 왜 이런 현상이 발생하게 되는 것일까요? 장애를 발생시킨 이후 R1의 Routing table을 통해 확인해 보도록 하겠습니다.
 

Case 1) Static Route에서 Next-hop을 지정하는 경우

R1(config)#ip route 10.10.10.0 255.255.255.0 192.168.1.2

R1#show ip route
10.0.0.0/24 is subnetted, 1 subnets
S 10.10.10.0 [1/0] via 192.168.1.2
C 192.168.1.0/24 is directly connected, FastEthernet0/0

R1#show ip cef
Prefix         Next Hop    Interface
10.10.10.0/24  192.168.1.2 FastEthernet0/0
192.168.1.0/24 attached    FastEthernet0/0

10.10.10.0/24로 가기 위해서는 192.168.1.2로 보내야 하는데, Outgoing Interface 정보가 없군요. 그래서, Routing table에서 192.168.1.2로 가는 경로를 다시 검색합니다. 그런데 192.168.1.2로 가는 경로가 FastEthernet0/0에 직접 연결되어 Connected 정보로 있군요.

Router는 10.10.10.0/24로 가는 경로를 FastEthernet0/0으로 보내면 도달할 수 있다고 판단하여 전송을 하게 되는 것입니다.

Case 2) Static Route에서 Interface를 지정하는 경우

R1(config)#ip route 10.10.10.0 255.255.255.0 FastEthernet0/0

R1#show ip route
10.0.0.0/24 is subnetted, 1 subnets
S 10.10.10.0 is directly connected, FastEthernet0/0
C 192.168.1.0/24 is directly connected, FastEthernet0/0

R1#show ip cef
Prefix        Next Hop Interface
10.10.10.0/24 attached FastEthernet0/0

Interface를 주는 경우 Router는 ‘10.10.10.0/24‘가 설정한 Interface에 직접 연결되어 있다고 판단을 하게 됩니다. 과거에는 이런한 경우 AD를 '0'으로 인식했었지만, 요즘 장비는 Static Routing Protocol의 AD는 모두 ’1‘로 인식을 합니다.

참고) Next-hop과 Interface 설정에 따른 AD 값

R1(config)#ip route 10.10.10.0 255.255.255.0 FastEthernet0/0

R1#show ip route 10.10.10.0
Routing entry for 10.10.10.0/24
Known via "static", distance 1, metric 0 (connected)
Routing Descriptor Blocks:
* directly connected, via FastEthernet0/0
Route metric is 0, traffic share count is 1

R1(config)#ip route 10.10.10.0 255.255.255.0
192.168.1.2 

R1#show ip route 10.10.10.0
Routing entry for 10.10.10.0/24
Known via "static", distance 1, metric 0
Routing Descriptor Blocks:
* 192.168.1.2
Route metric is 0, traffic share count is 1 

R1(config)#do show ip route
10.0.0.0/24 is subnetted, 1 subnets
S 10.10.10.0 [1/0] via 192.168.1.2
is directly connected, FastEthernet0/0
C 192.168.1.0/24 is directly connected, FastEthernet0/0

AD 값이 서로 다르면 Load-Balancing을 하지 않겠죠! 

Case 3) Static Route에서 Interface와 Next-hop을 모두 지정하는 경우

R1(config)#ip route 10.10.10.0 255.255.255.0 FastEthernet0/0 192.168.1.2

R1#show ip route
10.0.0.0/24 is subnetted, 1 subnets
S 10.10.10.0 [1/0] via 192.168.1.2, FastEthernet0/0
C 192.168.1.0/24 is directly connected, FastEthernet0/0

R1#show ip cef
Prefix        Next Hop    Interface
10.10.10.0/24 192.168.1.2 FastEthernet0/0

결과적으로 어떠한 경우도 Routing table에서 사라지지 않는 것을 확인할 수 있습니다. 이런 경우라면 Static Routing Protocol만을 가지고 네트워크를 구성하지 못할 것 같군요.



'네트워크 기초' 카테고리의 다른 글

IGP와 EGP  (1) 2010.08.20
Dynamic Routing Protocol 개요  (0) 2010.08.19
Routing Protocol의 종류 (Connect & Static)  (3) 2010.08.10
'Routing Protocol' 개요  (0) 2010.08.02
'RSTP'의 개요  (0) 2010.07.23
'PVST+'란 무엇인가?  (2) 2010.07.20

'Routing Protocol' 개요

네트워크 기초 | 2010.08.02 16:07 | Posted by 승진아빠

오래 기다리셨죠? ^^ 바빴냐구요? 아니요... 새로운 무언가를 준비했습니다.
그것이 무엇인지 조만간 아시게 될겁니다. 밤세 술먹고도 작성했던 메일링인데, 설마 메일링도 쓰지 못할만큼 바쁠리가 있겠습니까! 저에게도 도움이 되고 여러분에게도 도움이 될만한 것을 준비하고 있었습니다.

오늘은 Routing Protocol에 대해서 학습을 하도록 하겠습니다.

'Routing Protocol'이 먼가요? Route(경로)를 찾는 행위를 하는 Protocol이죠! 즉, 목적지로 가는 경로를 찾아서 Packet을 Forwarding하기 위한 Protocol입니다. 그럼, 'Router'는 무엇인가요? Route하는 주체군요. 뒤에 'ER'이 붙으면 앞의 단어를 수행하는 존재가 되니까요. 가리치는 주체를 'teach + er'라고 하는 것과 같스니다.

그럼, Router는 'Routing Protocol에 의해 학습된 정보를 가지고 Packet을 Forwarding한다.'를 영어로 쓰면 다음과 같이 되겠군요! 안되는 영어로 문장하나 만들어 봅니다.
[Router is forwarding packet by Routing Protocol]

그럼, Router는 무엇을 보고 Routing을 할까요? 그렇죠! Packet의 Destination Address를 보고 처리할겁니다. 그럼 Router is routing 'Destination Address'...가 될 것이고, 주어를 바꾸면 'Destination Address'is routed by Router가 되겠군요. 휴~ 말장난같죠? 다 끝났습니다.

그래서, 우리는 IP나 IPX와 같이 L3 Address를 관리하는 Protocol을 Routed Protocol이라고 부릅니다.

주절주절 적었지만, 정리하면 다음과 같습니다.

- Router : Routing 하는 주체
- Routing Protocol : 경로를 찾는 Protocol (OSPF, EIGRP, RIP 등)
- Routed Protocol : Routing 되는 대상 (IP, IPX 등)


우리는 예전에 네트워크 심화에서 'Static Routing Protocol'에 관한 내용과 'Longest Match'가 무엇인지 학습을 했었습니다. 오늘은 Routing Table에 대해서 학습해 보도록 하겠습니다.

Routing table은 Router가 Best Path라고 생각하는 경로만 들어가 있습니다. 당연하다고 생각하시는 분들이 많으시겠지만, 이것은 굉장히 중요한 이야기입니다. 사람들은 자신이 알고 있는 사실을 상호 연계지어서 생각하지 못하는 경우가 많이 있습니다.

그리고, 하나하나 개별로 분산되어 있는 기억을 떠올리려 하면 Memory에서 순차적으로 검색을 해야 하니 시간이 많이 걸리거나 과부하로 어지러움증이 생기게 되지요.

자! Routing Protocol의 종류는 다음에 배우실텐데, 미리 말씀을 드리면 서로 다른 Routing Protocol은 독립적으로 동작을 하고, Best-Path를 찾는 방법도 다 다릅니다. 예를 들면, 팀을 나누어서 버스를 이용하는 경로와 전철을 이용하는 경로 중 가장 빠른 길을 검색하라고 팀을 나누어서 작업을 시키는 것과 동일합니다.

■ 목적 : 이수역에서 출발하여 인천공항까지 최적의 경로를 검색한다.

- 버스팀 결과 : 총 30개 노드가 존재하며 환승등을 모두 고려하였을 때 이수역에서 공항버스가 가장 빠름
- 전철팀 결과 : 총 10개 노드가 존재하며 [4호선→동작역(9호선)→공항철도]를 이용하는 것이 가장 빠름

문제는 이 다음입니다. 버스팀의 결과와 전철팀의 결과 중 하나를 선택해야 합니다. 버스를 선호하는 사람이라면 버스를 타고 갈 것이고 전철을 선호하는 사람이라면 전철을 타고 갈겁니다.

자, 이번에는 이렇게 생각해보시죠!
Routing Protocol이 2개가 있습니다. 'OSPF'와 'RIP'이라고 가정을 하죠! OSPF는 자신이 아는 경로중 최적의 경로를 찾아서 Best-Path를 뽑을 겁니다. 그리고, RIP도 마찬가지로 자신이 아는 경로중 최적의 경로를 찾아서 Best-Path를 뽑겠죠!

그 다음, Routing table에 Best-Path를 서로 넣으려고 할겁니다. 하지만, 안타깝게도 둘은 Best-Path를 결정하는 방법이 달라서 상호간에 비교가 될 수 없습니다. 그럼 어떻게 해야 할까요? 예... OSPF를 선호하는 회사라면 OSPF를 사용할 것이고, RIP을 선호하는 회사라면 RIP을 선호할 겁니다.

우리는 이것을 Administritive Distance (이하 'AD')라고 이야기 합니다. 그리고, 각각의 Routing Protocol은 각자의 Best-Path를 선출하기 위해 Metric이라는 값을 사용합니다. 그럼, AD와 Metric 중 누가 더 우선할까요?

당연히 AD 값이겠죠... 이해가 잘 안가신다고요? 위의 문제에서 전철을 선호하는 사람이 최적의 경로를 찾으라고 했으면 전철을 탈 것이라고 이미 정해져 있는 겁니다. 전철로 가는 경로가 없어야 버스를 타겠지요. ^^

이렇게 이미 모든게 정해져 있다면 인생은 재미가 없을겁니다. 그래서, 우리는 조금 어렵기는 하지만 Distance를 바꿀 수 있는 기회를 가지고 있답니다. [화이팅] 하셔야죠!! ^^

'네트워크 기초' 카테고리의 다른 글

Dynamic Routing Protocol 개요  (0) 2010.08.19
Routing Protocol의 종류 (Connect & Static)  (3) 2010.08.10
'Routing Protocol' 개요  (0) 2010.08.02
'RSTP'의 개요  (0) 2010.07.23
'PVST+'란 무엇인가?  (2) 2010.07.20
STP(Spanning-Tree Protocol) 동작원리  (2) 2010.07.13

'RSTP'의 개요

네트워크 기초 | 2010.07.23 16:16 | Posted by 승진아빠

오늘은 RSTP에 대해 알아보도록 하겠습니다. RSTP에 대한 동작원리는 향후 '스위치 심화과정'을 진행할 때 자세히 하기로 하고 오늘은 개요 정도를 알아보는 선에서 정리를 해보도록 하시죠!

이번주는 교육센터에 크고 작은 일들이 많이 생긴 한주였습니다.

국내에 'MPLS VPN'에 대해 정확하게 강의하실 수 있는 강사가 거의 없습니다. 그래서인지 국내 최대기업인 S사에서 백본망 관리자 교육에 대한 요청을 하셨더라구요. 갑작스럽게 연락이 와서 조금 당혹스럽기는 했지만, 실타래가 하나씩 풀리는 것 같아 기분이 좋습니다. ^^

대기업 교육, 계좌제, 컨설팅... 이것보다 중요한건 차주에 CCIE 시험을 보시는 분들의 합격이겠죠! CCIE R&S에 'K4' LAB이 추가되었더군요. 이론을 잘 아시기 때문에 크게 걱정을 하지는 않지만, 열심히 공부하신 분들일수록 실수로 시험에 떨어지시면 자괴감에 빠질 위험이 있거든요.

어찌되었건 어제 보내드렸어야 하는 메일링을 오늘 보내드립니다. RSTP죠!

RSTP는 'Rapid Spanning-Tree Protocol'의 약자입니다. 빠르다네요. 그럼 왜 빠른지, 얼마나 빠른지 알아보면 되겠군요. ^^ 쉽게, 아주 쉽게 접근해 보도록 하겠습니다.

STP는 Looping이 발생했다는걸 어떻게 감지하나요? Root BID가 같은 BPDU를 2개 이상의 Port에서 받을 때 Looping이 발생했다고 인지를 합니다. BPDU가 유입된 Port 중 Root와 가장 가깝다고 생각되는 Port를 Root Port로 만들고, 나머지 Port에 대해서 자신이 Block을 해야 하는지 상대방이 Block을 해야하는지 계산을 하게 되는 것이죠!

그럼, 결국 다음을 비교하면 되겠군요.

Step 1. 유입된 BPDU와 자신의 BPDU와 Root BID를 비교함



물론 바로 Root Port로 만드는 것이 아니라 Listening, Learning 단계를 거치게 되겠죠!

Step 2. Root BID가 같은 경우 Root까지 거리, 즉 Cost를 비교함



차트를 하나로 만들어볼까 했는데 화살표가 겹쳐서 힘드실까봐 Step 별로 만들어 보았습니다. 차트를 보시는데 어렵지는 않으시죠? ^^

Step 3. Cost가 동일한 경우 BPDU를 보낸 Switch의 BID와 자신의 BID를 비교함



아까와 동일하네요. 헉! 그런데 My BID와 새로 받은 BPDU의 BID가 어떻게 같을 수가 있나요? 다음과 같은 경우 두개의 BPDU가 같을 겁니다.

1. 두대의 Switch가 2개 이상의 Link로 연결되어 있는 경우
2. 한대의 Switch에 서로 다른 Port간에 Link가 연결된 경우

2번처럼 만드는 사람이 어디 있냐구요? Switch와 Hub를 이중화로 구성했다고 생각해보세요. Hub는 BPDU를 인식할 수 없으므로 자신이 보낸 BPDU를 다른 Port로 전달받게 될겁니다. ^^

Step 4. BID가 동일한 경우 Port ID를 비교함



흠... Port ID까지 같다는군요. 말이 되나요? 말이 됩니다. 이런 경우는 아주 난리가 나는거죠! 이런 경우를 한번 만들어 볼까요? 여러경우가 있겟지만 대표적으로 다음과 같은 상황이 발생할 수 있죠!



다음과 같이 돌아서 자신의 BPDU가 동일 Port로 들어오는 경우는 Looping을 막을 수 없습니다. 저 Switch는 CPU가 100%까지 올라가게 될겁니다. ^^

자, 지금까지 내용은 STP에 대한 요약이나 마찬가지였습니다. 그럼 왜 RSTP는 이야기도 하지고 STP만 이야기를 했을 까요? 잘 보시면 Listening 시간이 별로 필요없다는걸 느끼실 수 있습니다. Listening이란 다른 경로로 BPDU가 들어오는지 기다리는 시간이죠!

왜 기다리죠? 기다리는 이유는 Root하고 연결된 Port가 2개 이상 있을 경우 Looping이 발생하기 때문입니다. 그럼 이렇게 해보면 어떨까요?

정보가 오기를 기다리는 것이 아니라 더 좋은 정보가 있냐고 물어보는거죠!



물론 이것보다는 많이 복잡합니다. 하지만, 오늘은 RSTP 개념만 설명을 드리는 시간이므로 간략하게 설명드립니다. 결국 Root의 BPDU는 한쪽으로만 받으면 되는것이기 때문에 새로운 BPDU를 받으면 일단, Switch와 연결된 Port를 잠시 Block하고 내가 기존에 알고 있는 Root보다 더 좋은 정보면 바로 Root Port로 만들어 버리는 겁니다.

그리고, 나머지에게도 새로운 Root에 대한 정보를 주면서.... '야! 새로운 Root가 생겼다. 나를 Root Port로 삼지 않을래?' 하고 다른 Switch에게 요청을 하는거죠! 즉, 정보를 수집하는 것이 아니라 주위에 새로운 정보를 알려서 Hop-by-Hop으로 전달을 하며 동기화하는 것이 RSTP의 핵심입니다.

번거로운 Delay를 없앴다고 보시면 됩니다. RSTP에 대해서는 할말이 많지만 자세한 내용은 '네트워크 기초'가 끝나면 'Routing 심화', 'Switching 심화'를 지속적으로 할텐데 Switching 심화 메일링에서 풀어드리도록 할께요. ^^

힘들어도 좋은 소식이 있으면 이렇게 힘이 나는데요. 그쵸?
오늘도 넷트레인의 이경태였습니다.

'네트워크 기초' 카테고리의 다른 글

Routing Protocol의 종류 (Connect & Static)  (3) 2010.08.10
'Routing Protocol' 개요  (0) 2010.08.02
'RSTP'의 개요  (0) 2010.07.23
'PVST+'란 무엇인가?  (2) 2010.07.20
STP(Spanning-Tree Protocol) 동작원리  (2) 2010.07.13
TCN BPDU는 왜 필요한가?  (2) 2010.07.05

'PVST+'란 무엇인가?

네트워크 기초 | 2010.07.20 15:18 | Posted by 승진아빠

금주가 진행하고 있는 컨설팅 감리기간이라서 정신이 하나도 없습니다. 더구나 금주가 내년도 교육센터 계좌제 신청기간이에요. 한번도 신청해 보지 않아서 벽에 헤딩하며 작업하고 있습니다. 요즘은 교육센터가 계좌제 등 국가지원과정 아니면 먹고 살기 힘들거든요. 교육센터가 작아서 심의에 통과할지는 미지수지만 모두가 열심히 작업하고 있으니 좋은 결과가 나오겠죠! ^^

항상 매일링 스케줄을 알려드렸는데 요즘은 왜 메일링이 주기적이지도 않고 스케줄도 없냐고 문의를 해 주시더군요. 메일링이 주기적이지 않은 이유는 제가 정신이 하나도 없기 때문입니다. 더구나 날씨가 덥거나 비가 많이 와서 교육 후 컨설팅하고 오면 녹초가 되어 있어요. 나름대로 체력은 자신하고 있는데, 더위를 먹었나 소화도 잘 안되고 마음대로 몸이 움직여주지를 않네요.

금주 메일링 리스트는 다음과 같습니다.
화요일 : 'PVST+'란 무엇인가?
목요일 : RSTP의 개요
토요일 : MSTP의 개요

[CCIE 360]은 어디로 갔냐구요? 저희 카페에 와 보시면 알겠지만, 한분이 [CCIE 360]을 4달에 한 LAB씩 할 경우 35개 LAB을 하는데 너무 오랜 시간이 걸린다고 이의를 제기해 주셨어요. 그래서, 한달에 LAB 하나씩 파일로 만들어서 올려드리기로 했습니다.

그리고, 화목토로 메일링을 잡은건 제가 월수금은 컨설팅하러 가야해서 메일링을 작성할 시간이 없답니다. 이해해 주시기 바랍니다. -_-+;;

자, 그럼 금일 메일링을 시작하도록 하겠습니다.

PVST가 무엇인가요? 'Per VLAN Spanning-Tree'의 약자로 VLAN랑 하나의 Spanning-Tree라는 뜻입니다. 그럼, '+'는 뭐냐구요? 예전에 Cisco에서 ISL이라는 기술을 만들었을 때 Encapsulation을 하면서 해당 Packet이 BPDU인지 아닌지에 대한 정보를 넣을 수 있도록 되어 있었어요.

예를 들어 [VLAN = 100, BPDU = Yes] 이런식으로요. 이렇게 하면 'VLAN 100에 대한 BPDU구나!'라는 것을 Switch들이 알 수 있게 되는거죠! 그럼 VLAN 별로 STP를 돌릴 수 있겠네요. ^^
이것을 'PVST'라고 불렀답니다. 그런데 802.1q에서는 이런 정보를 넣을 수 있는 Field를 만들지 않아서 PVST 기능을 제공할 수 없었지요. 그래서, Cisco에서는 새로운 방법을 생각해 냈습니다. 그것이 'PVST+'랍니다.

흠.... 왜 VLAN 별로 Spanning-Tree를 돌려야 하냐구요?
다음과 같은 구성에서 STP를 돌린다고 가정해 보도록 하겠습니다.



BB1이 Root가 되었으니 BB2와 연결된 Port는 위 그럼과 같이 Block이 되겠군요. 그럼 VLAN1과 VLAN2는 어떻게 통신이 이루어 질까요? 다음과 같이 통신을 하게 될겁니다.



모두 BB1을 통해서 통신을 하는군요. BB2는 BB1이 죽었을 경우에만 사용하겠군요. 얼마나 비효율적입니까? 아마 BB1과 BB2는 비싼돈 주고 산 6500시리즈와 같은 동일 장비일 겁니다. 이처럼 Switch Network에서 Root를 한개만 뽑으면 IT자원을 효율적으로 사용하지 못한다는 단점이 있습니다.

이런 상황을 극복하기 위해 다음과 같이 구성하면 어떨까요?

■ VLAN1 구성



■ VLAN2 구성



자, 이렇게 구성하니까 VLAN1은 BB1을 통해서 통신하고 VLAN2는 BB2를 통해서 통신하는군요. 즉, 각 VLAN 별로 Root를 다르게 설정해서 모든 네트워크 자원을 효율적으로 사용할 수 있도록 한 기술이 'PVST+'입니다.

그럼, 이제 한가지만 더 아시면 되겠군요. 어떻게 하면 VLAN 별로 STP를 돌릴 수 있도록 하느냐는 것입니다.

우리는 Root를 선출할 때 무엇을 기준으로 한다고 학습했나요? 1순위가 Priority가 낮은 Switch, 2순위가 대표 MAC-address가 낮은 Switch였었죠? 즉, Bridge ID가 낮은 Switch가 Root Switch가 되었습니다.

자, 다시한번 Bridge ID를 살펴보시죠!

Bridge ID는 전체 8 byte이며, Priority (2 byte) + MAC-address(6 byte)로 구성되어 있습니다.



그런데, 상식으로 생각해보세요. Priority는 Root Switch를 뽑기 위한 값인데, 65535까지 필요할까요? 모든 Switch를 Priority 32768로 설정하고, Root가 되어야 할 Switch나 Backup Root가 되어야 할 Switch의 Priority만 낮춰주면 되잖아요. Backup이 아무리 많아봐야 10개를 넘겠습니까!

그래서 MAC-address를 건드리는 것보다 Priority를 조정하는 것이 낫겠다고 판단해서 이 부분을 변경해서 VLAN 정보를 추가하기 시작합니다.
VLAN은 Extended VLAN의 경우 최대 1~4094까지 사용할 수 있으므로 12bit를 할당해주고 나머지 부분(4bit)을 Priority로 사용하게 되는 것이지요. 그럼, 다음과 같이 되겠군요.



그럼, BPDU를 던질 때, VLAN 1에 대한 Priority, VLAN 2에 대한 Priority를 다르게 전달할 수 있겠군요.
예를 들어 위의 그림에서 BB1은 VLAN 1에 대해서 Root, BB2는 VLAN 2에 대해서 Root로 구성하려면 다음과 같이 BB1과 BB2가 2개의 BPDU를 던지면 되겠군요.



이렇게 하면 PVST가 완성이군요. ^^

오늘 내용 재미 있으셨는지 모르겠습니다. CCNA 수준의 내용이지만 그리 쉽지만은 안으시죠? 하지만, 하나하나씩 학습하시다보면 네트워크의 재미에 푹 빠져드실겁니다.

오늘도 이경태였습니다. 다음에 뵙겠습니다.

'네트워크 기초' 카테고리의 다른 글

'Routing Protocol' 개요  (0) 2010.08.02
'RSTP'의 개요  (0) 2010.07.23
'PVST+'란 무엇인가?  (2) 2010.07.20
STP(Spanning-Tree Protocol) 동작원리  (2) 2010.07.13
TCN BPDU는 왜 필요한가?  (2) 2010.07.05
Configuration BPDU 동작원리  (1) 2010.06.29

STP(Spanning-Tree Protocol) 동작원리

네트워크 기초 | 2010.07.13 18:47 | Posted by 승진아빠

오늘은 장황한 메일링이 될 것 같습니다. 어제 메일링을 작성하다 어디서 짤라야 하는지 애매해서 오늘까지 메일링을 가지고 왔습니다. 즉, 이틀 분량이 하루에 나가는군요. ^^

글 내용이 많으니까 천천히 읽으시면서 이해를 해 나가시기 바랍니다.

우리는 STP 개요를 학습했습니다. 오늘은 STP의 동작원리를 설명하려고 합니다. 초기 구성이 다음과 같이 되어 있다고 가정하겠습니다. 케이블은 현재 아무것도 연결되어 있지 않다고 가정합니다.



STP를 사용할 때 Switch는 자신의 대표 MAC-address를 VLAN 1의 MAC-address를 사용합니다. 각 3대의 Switch는 모두 자신의 Root라고 생각하고 있을테니 다음과 같은 BPDU를 만들겠군요.

■ SW1의 BPDU
 Root BID  32768.1111.1111.1111
 Cost  0
 SW1 BID  32768.1111.1111.1111

■ SW2의 BPDU
 Root BID  32768.2222.2222.2222
 Cost  0
 SW1 BID  32768.2222.2222.2222

■ SW3의 BPDU
 Root BID  32768.3333.3333.3333
 Cost  0
 SW1 BID  32768.3333.3333.3333

자, 여기서 SW2와 SW3를 연결합니다. 다음과 같이 연결하면 SW2와 SW3는 서로 자신의 BPDU를 상대방에게 전달하게 될겁니다.



자 상대방의 BPDU를 받았으니 자기들끼리 대장을 뽑아야겠군요.

SW2는 상대방의 BPDU를 받아보니 자기보다 안좋은 BID를 가지고 있군요. '내가 그냥 Root하면 되겠군!' 생각하며 SW3와 연결된 Port를 DP로 만들게 됩니다.

그런데, SW3는 이런 상대방이 나보다 더 좋은 BID를 가지고 있군요. 그런데, 다른 Port로 Root에 대하여 더 좋은 정보가 들어올지 모릅니다. 그래서 15초간 다음 단계를 진행하지 않고 기다리게 됩니다. 이것을 우리는 [Forwarding delay]라고 하며 Default로 15초입니다.

왜 기다려야 할까요? 다음과 같이 경우를 2가지로 나누어서 생각해 보죠.
1. 다른 Port로 Root로 가는 더 좋은 정보가 들어오는 경우 : 해당 Port는 [Block Port]가 됩니다.
2. 다른 Port로 Root로 가는 더 좋은 정보가 들어오지 않는 경우 : 해당 Port는 [Root Port]가 됩니다.

이렇게 다른데서 어떤 정보가 들어오냐에 따라 Port의 상태가 달라지기 때문에 타 Port에서 Root에 대한 정보가 들어오는지를 기다리는 것이랍니다. 자! 기다렸으니 SW3는 15초 후에 Root Port로 만들면 되겠군요.
우리는 이렇게 해당 Port로 어떤 Port로 만들어야 할지 정보를 수집하게 되는데 이 단계를 'Listening' 상태라고 이야기를 합니다. BPDU 정보를 듣는 시간이라는 의미인것 같군요.

이제 Packet을 Forwarding 해 볼까요? 흠... 이번에는 다른 문제가 기다리고 있군요. 지난주 마지막 시간에 학습했던 내용 기억하시나요?

만일 SW2에 있는 'PC1'과 SW3에 있는 'PC2'가 통신을 하고 있었다고 가정해 보시죠. SW3는 해당 'PC1'에 대해서 SW2 방향으로, SW2는 'PC2'에 대해서 SW3 방향으로 MAC-address를 등록하고 있었을 겁니다. 그런데, 다음과 같이 SW1과도 연결이 된다면 SW3는 SW2와 연결된 Port가 Block Port로 변경될 겁니다.



자, 이런 경우 지난주에 어떻게 해결을 했었죠? MAC-address aging-time을 300초에서 15초로 줄여서 15초 후에 제대로 경로를 잡을 수 있도록 했었죠? TCN을 통해서요. 처음 BPDU를 받을 때도 마찬가지입니다.

Listening 상태에서 MAC-address를 제대로 학습할 수 있는 상태로 변경이 되는데 이를 'Learning' 상태라고 이야기합니다. 이 상태도 다음 단계로 진행하기 위한 시간이기 때문에 Forwarding delay라고 이야기하고 Listening과 동일한 15초 값을 사용합니다. STP에서 이 Forwarding delay를 변경할 수 있는데, 안타깝게도 두 값은 항상 같이 변합니다.

그리고, 중요한 것은 Listening과 Learning 상태에서는 Frame을 받기는 하지만, 타 Port로 Forwarding을 하지 않기 때문에 통신이 불가능하게 되죠. 많은 분들이 경험을 해 보셨으리라 생각이 되는데, Switch를 사서 PC를 Port에 연결한다고 해서 바로 사용이 가능하지 않죠?

요즘 나오는 Switch들은 거의 대부분은 모든 Port에 STP가 enable되어 있습니다. 그래서, Switch에 PC를 연결하면 다음 단계를 수행하게 되죠!



즉, 30초가 지나야 통신이 가능하겠군요. 시스코 Switch의 경우 STP에 의해 통신이 불가능한 30초 동안 주황색으로 LED가 동작하다 정상적으로 Frame을 전송하는 단계가 되면 초록색 LED로 바뀌는 것을 확인할 수 있습니다.

그럼, 이번에는 Interface가 살아났을 때가 아니라 죽었을 때를 생각해 볼까요? 원래 STP라는 것이 이중화 구조에서 Looping을 막기 위한 것이였잖아요. 정상 경로가 죽었을 때, 백업이 되지 않는다면 아무런 의미가 없는 기술이겠죠? ^^

백업 경로를 사용하는 경우는 2가지로 생각해 볼 수 있습니다.

■ SW3의 Root Port가 죽었을 경우



Root Port가 죽었으니, 다른 Port를 Root Port로 만들어야겠군요. 그러면 SW3는 Listening 단계부터 진행을 하면 되겠군요. Listening → Learning → Forwarding 단계를 거치면 백업으로 넘어가는데 30초의 시간이 걸리게 됩니다. ^^ 쉽죠? 문제는 다음의 경우입니다.

■ SW2의 Root Port가 죽었을 경우



현재 SW2는 Root Port가 사라졌기 때문에 다른 경로를 통해 Root로 가는 BPDU를 받아야 합니다. 그런데, SW3가 현재 Block 상태군요. Block 상태에서는 타 Switch가 보내주는 BPDU를 받기는 하지만, 전송은 하지 않는다고 'STP 개요' 시간에 말씀을 드렸었죠? SW3가 BPDU를 보내줘야 하는데 Block 상태이니 BPDU를 보내주지 않아 SW2는 Root로 가는 다른 경로에 대한 정보를 받을 수 없습니다.

이런 경우 SW2는 Root가 죽었다고 생각을 하고 자기가 Root라고 떠들기 시작합니다. 이제는 SW3에게 자신이 Root라고 BPDU를 전송하겠군요. 하지만, SW3는 Block을 풀지 않습니다. 왜냐구요?

BPDU는 aging-time이 20초라고 말씀 드렸었죠? 20초가 지나야 BPDU는 사라진다는 말입니다. 그런데 SW2의 Root Port가 죽기 바로 전에 Root가 보낸 BPDU가 SW2를 통해 SW3로 전달되었을 겁니다.

SW3 입장에서 생각해 보세요. Root가 던진 BPDU가 두 경로를 통해 들어오면 Looping일 발생하기 때문에 한쪽을 Block Port로 만든것이잖아요. 그러면, Block Port 쪽으로는 Root의 BPDU가 들어오지 않는다는 확신이 있기 전에는 절대로 Block 상태를 풀지 않겠죠?

즉, 마지막 받은 Root의 BPDU가 사라져야 Block을 풀 것이라는 말입니다. 그 시간이 20초나 걸리죠!
그래서, SW3는 Block을 풀기까지 다음과 같은 과정을 거칩니다.



무려 50초가 걸리는군요. 현대 Network에서 백업이 되는데 30 ~ 50초가 걸린다는 것은 너무 큰 문제겠죠?
다음주에는 'PVST+'와 'RSTP'에 대해 학습하도록 하겠습니다.

항상 어떻게 설명을 드리는 것이 조금이라도 쉽게 설명하는 것일까를 연구합니다. 좋은 의견 있으시면 언제든지 편하게 연락주시고요, 저희도 컨설팅과 강의때문에 시간없다고 핑계를 대기는 하지만 최선을 다하겠다고 약속드리겠습니다.

변하지 않는 것만큼 믿음을 주는건 없다고 생각합니다. 저희가 메일링에 대해 점점 신경을 쓰지 않고 있다고 생각하지 말아주세요. 카페와 메일링은 저희의 최대 마케팅 수단입니다. ^^
보다 나은 정보를 위해 노력하고 있다는것만 믿어주시면 됩니다.
감사합니다.

'네트워크 기초' 카테고리의 다른 글

'RSTP'의 개요  (0) 2010.07.23
'PVST+'란 무엇인가?  (2) 2010.07.20
STP(Spanning-Tree Protocol) 동작원리  (2) 2010.07.13
TCN BPDU는 왜 필요한가?  (2) 2010.07.05
Configuration BPDU 동작원리  (1) 2010.06.29
BPDU(Bridge Protocol Data Units) 개요  (3) 2010.06.28

TCN BPDU는 왜 필요한가?

네트워크 기초 | 2010.07.05 14:39 | Posted by 승진아빠

저희가 또 다시 공공기관 인프라 부분 컨설팅을 맡게 되었습니다. '부'급 기관 ISP이며, 기밀을 요하는 프로젝트라 추가 정보는 말씀드릴 수 없군요. 중요한건 오늘부터 다시 저희 직원들이 잠을 2-3시간 자야 하는 상황이  발생했다는 점이죠.

영업사원 하나 없어도 기술력과 인지도 만으로 컨설팅 의뢰가 들어오는 것은 참 좋은 일이지만, '언제까지 이렇게 고생만 하면서 견뎌야 하나...' 생각하면 직원들에게 너무 미안할 따름입니다. 물론, 10개월째 급여를 가져다 주지 못하면서 집에 못들어가는 못난 남편과 아빠를 둔 가족에게도 미안하구요.

'저비용 고품질' 교육을 만들어보자는 의미에게 영업비와 유지비를 최소화한 것이 정말 잘한 것인지 넷트레인 교육센터 운영방식에 대해 뒤돌아 보게 만드는 월요일 아침입니다. 먹고 살만큼만 벌면서 네트웍을 좋아하시는 분들과 어울리며 즐겁게 살고 싶었는데, 생각만큼 안되네요.

솔직히 수강인원은 매달 조금씩 늘고 있는 편입니다. 저희가 수익발생 시점까지 견딜 수 있느냐가 문제겠죠! ^^
시스코에서도 연락이 오더라구요. 공인교육센터로 돌아가라고... 제가 공인교육센터로 돌아가면 똑같은 교육을 4~6 배의 교육비를 내고 들으셔야 해요.

자! 오늘은 TCN BPDU에 대해 학습해 보도록 하겠습니다.

다음과 같이 Topology가 구성되어 있다고 가정해보도록 하겠습니다.



SW3의 'Port 1'이 Block 상태라면 각각의 Switch는 PC들에 대하여 다음과 같이 MAC address를 학습하고 있을 겁니다.

 구분  SW1  SW2  SW3
 0000.0C00.1111  Port 0
Port 0
Port 0
 0000.0C00.2222  Port 1
Port 0
Port 0

이유는 Block Port로는 MAC address를 학습하지 않기 때문에 Frame의 전달방향이 다음과 같이 때문이죠!



이런 상황에서 PC간에 통신을 하고 있었습니다. 그런데 SW1의 'Port 1'이 장애가 발생했습니다. 그 후, 상위 PC에서 하위 PC로 데이터를 전송하려고 하면 Switch들은 어떻게 동작을 할까요?



장애가 발생했으니 SW2를 통해서 Frame을 전달하여야 하는데, 문제는 SW2가 하위 PC의 MAC address (0000.0C00.2222)에 대해서 'Port 0'로 학습한 상태이기 때문에 'Port 1'으로 전송을 하지 않을 것입니다.

언제까지요? MAC address table Aging time 동안에요. Cisco Switch는 300초로 되어 있지요.

아직 학습하지 않으셨지만, SW3이 SW1에 장애가 발생했음을 인지하고 'Block → Forwarding'으로 바뀌는데 시간은 약 50초 가량이 소요됩니다. 이 부분은 향후에 학습하도록 하겠습니다. 그럼, PC간의 통신은 50초간 두절되어야 하는 것이 정상이겠죠? 그런데 MAC address table 문제 때문에 5분동안 통신이 안되게 됩니다.

그럼, 어떻게 해야 할까요? 당연히 장애를 알려서 SW2가 SW3 방향으로 Frame을 전송하도록 만들어야죠!
순서는 다음과 같습니다.



Step 1. SW1이 Root 방향으로 TCN BPDU(①)를 만들어 전송을 합니다.

Step 2. Root Switch가 TCN BPDU를 받고 Config BPDU(②)로 잘 받았다는 신호를 보내줍니다.
          (이 때, BPDU Flag에 TCA라는 Flag가 있는데 그곳을 '1'로 check 해서 전달합니다.)

Step 3. 이제 다른 Switch에게도 Topology가 변경되었다는 것을 알려줘야겠네요.
          Root는 BPDU Flag에 TC라는 Flag가 있는데 그곳을 '1'로 check 해서 Config BPDU를 통해서
          다른 모든 Switch에게 Topology가 변경되었음을 알려줍니다.

그럼, 이제 다른 Switch들이 어떻게 동작하느냐가 중요하겠죠!

TCN BPDU를 받은 Root Switch와 TC bit가 check된 Config BPDU를 받은 Switch들은 MAC address table의 Aging time을 300초에서 15초로 변경합니다. 그렇게 함으로써 빠르게 새로운 MAC address를 학습할 수 있도록 하는 것이죠.

물론, 이것보다 조금 복잡하게 동작을 하지만, 네트워크 기초에서는 이정도 이해하시면 될 것이라 판단해서 쉬운 설명을 위해 간소화 하였습니다. 이해가 좀 되셨나요? CCNA 수준에서는 TCN에 대한 이야기를 하지 않는데 나름대로 필요할 것 같아 주절주절 적었습니다.

내일은 STP에서 Port 상태 및 역할에 대하여 학습해 보도록 하겠습니다.
감사합니다.

Configuration BPDU 동작원리

네트워크 기초 | 2010.06.29 12:04 | Posted by 승진아빠

안녕하세요. 이경태입니다.
어제 BPDU의 Type에 Configuration BPDU와 TCN BPDU가 있다고 말씀 드렸는데, 오늘은 Configuration BPDU의 동작원리에 대해 알아보도록 하겠습니다.

Switch가 처음 가동되면 아무에게도 BPDU를 받은 적이 없기 때문에 자기가 Root라고 생각하고 BPDU를 만들어서 2초마다 모든 Port로 BPDU를 보냅니다. 하지만, Root를 선출한 뒤에는 Root만이 BPDU를 보내게 되죠.

Root가 되지 못한 Switch들은 Root Switch가 던져준 BPDU를 자신의 정보로 변경해서 타 Switch에게 전달을 하게 되구요. 그림으로 보면 다음과 같습니다.

■ Step 1

서로 자기가 Root라고 떠듭니다. 자신이 Root라고 생각하고 있으니 BPDU를 각자 만들겠죠. 그때, Root BID와 OWN BID는 같은 값으로 설정될겁니다. 그리고, Root까지 거리도 당연히 '0'이겠죠. 그 정보를 다음과 같이 상호간 교환을 합니다.




Step 2

상대방으로 부터 받은 BPDU와 자신의 BPDU를 비교합니다. 그때 처음 비교하는 것이 Root BID부분입니다. SW1 입장에서는 SW2로 부터 받은 Root BID가 자신것보다 나쁘군요. BID는 낮은 놈이 우선하니까요. 그러면, SW2와 연결된 Port를 Designated Port로 만듭니다. (물론, 향후에 말씀드리겠지만 Listening, Learning의 Forwarding delay 시간동안 기다려야하지요)

그런가 하면 SW2 입장에서는 SW1에게서 받은 Root BID가 자신의 Root BID보다 좋군요. 해당 Port를 Root Port로 만듭니다. 그 다음에는 SW2는 BPDU를 만들지 않습니다. Root Port에서 유입되는 BPDU를 기다리게 됩니다. 그리고, SW1이 Desigated Port를 이용해서 자신의 BPDU를 전달하면 SW2는 Root Port로 정보를 받아서 자신의 BPDU로 재생산하게 됩니다.

그런데, 문제가 있군요. Cost를 알수가 없습니다. Root까지 가는데 거리가 얼마인지 알아야 자신의 BPDU 정보를 채워 넣을텐데 큰일입니다. 그래서, IEEE에서는 속도에 따라 Cost 값을 미리 만들어 놓았습니다.

 Bandwidth STP Cost
 4 Mbps 250
 10 Mbps  100
 16 Mbps  62
 45 Mbps  39
 100 Mbps  19
 155 Mbps  14
 622 Mbps  6
 1 Gbps  4
 10 Gbps
 2

위의 Cost 값을 기준으로 유입된 BPDU에 유입된 Port의 Bandwidth에 맞는 Cost 값을 추가합니다.

SW1과 SW2 사이에 Bandwidth가 100Mbps라면 다음과 같이 되겠군요.




Step 3

이제 SW2도 자신의 BPDU를 완성했으니 다른 Switch에게 뿌려야죠! SW2도 Designated Port로 구성된 모든 Port에 해당 BPDU를 전달합니다. 그러면, 그 다음 Switch도 SW2의 BPDU를 Root Port로 전달받아 자신의 BPDU로 만들게 되는 것입니다.

이것을 우리는 Configuration BPDU라고 합니다. 별거 없죠? 너무 깊게 들어갈 생각은 없지만, 메일링을 쓰다보니 이놈의 STP는 오랜 기간동안 작성될 기미가 보이는군요. 처음 공부하실때 정확하게 배우셔야 나중에 고생하지 않으시니까 열심히 따라와주세요. ^^

Switch 기술은 변화가 심하지 않기 때문에 기초를 잘 잡으시면 학습할 것이 별로 없답니다. 화이팅!

저희 카페에 오시면 8월에 이상한 과정이 오픈되죠? 홈페이지에는 과정을 올리지 않았습니다. 요즘 배움과나눔이나 네버스탑, ITwill에 다니셨던 분들이 저희 교육센터에 많이 찾아오세요. 실제로 저희 학원에 CCIE 과정을 등록하시는 분들의 60%가 타 학원에서 이미 수강을 하셨던 분들입니다.

너무 안타깝지 않을 수 없습니다. 교육 한번이면 시험을 한번 볼 가격인데 2중, 3중으로 교육비를 지불하시다니요. 그래서, LAB이 없는 이론 과정을 만들어 봤습니다. 대상은 타 학원에서 기 수강하신 분들이구요. 짧은 기간에 모든 것을 다 할 수 없이니, 어느정도 아신다는 가정하에 시작합니다.

CCIE Troubleshooting 이론위주이며, 저희 교육센터 정규과정 수강생이 아니므로, 강의 후 시험합격시까지 지원 등은 없습니다. 제대로 아는 것과 대충 아는 것의 차이를 느끼시고 열공하시기를 바라는 마음에 과정을 만들어 봤습니다.

그럼, 내일 뵙도록 하겠습니다. ^^

BPDU(Bridge Protocol Data Units) 개요

네트워크 기초 | 2010.06.28 23:14 | Posted by 승진아빠

지난주 '목요일 ~ 일요일'은 개인적으로 최악의 기간이였습니다.
아버지 자동차가 급발진해서 옆집을 들이박아 반지하로 차가 들어가는 사고가 났었습니다. 그 때문에 오늘까지 정신이 하나도 없었지요. 아버지는 많이 놀라신거 외에는 외상을 입지 않으셨지만, '급발진' 엄청나게 무섭더군요.
50년을 운전하신 분인데... 얼마나 놀라셨던지 한시간 후에 도착한 제 앞에서도 손을 부들부들 떨고 계셨습니다. 코란도가 6m 거리에서 시속 100Km 이상이 나올 수 있다는 사실... 타이어가 다 타서 미끈미끈하고 타이어 탄 자국이 선명하게 바닥에 나타나 있더군요. 주위에 계셨던 분들은 얼마나 소리가 크던지 비행기 지나가는줄 알았답니다.
여러분도 급발진같은 사고를 미리 미리 예방할 수 있도록 차량 점검 잘 하세요.
사람이 아무도 다치지 않았다는 사실에 너무 감사하며, 이제야 숨을 좀 돌리고 글을 씁니다.

그리고, 저희 교육센터에서 CCIE 시험을 보신 2분이 모두 낙방을 하셨습니다. R&S 시험을 보신 분은 제가 양해를 구하고 간단한 후기를 올려놨으며, SP 시험은 올리지 않았습니다. SP는 정말 작은 실수로 불합격 하신 것으로 보입니다.

두분 모두 자신감을 가지고 바로 시험을 등록하겠다고 하시니, 다음에는 좋은 결과가 나오리라 확신합니다.

오늘은 BPDU에 대해서 학습해 보도록 하겠습니다. 저번 시간에 Root를 뽑기위해 BridgeID를 비교한다고 말씀드렸는데, 상대방의 BridgeID를 어떻게 알 수 있을까요? 그 역할을 수행하는 것이 BPDU라는 놈입니다.

BPDU는 Switch가 2초마다 전송하며 다음과 같은 구조로 되어 있습니다.



하나씩 살펴보도록 할까요?

■ Protocol ID

처음 만들때 많은 용도로 사용하려고 했었나 봅니다. 하지만, 아직까지 다른 것들은 사용되지 않고 모두 '0'으로 설정된 값만 사용합니다.

■ Version

Spanning-Tree Protocol의 Version을 나타냅니다. 값은 다음과 같으며 희안하게 0X01은 없군요.
- 0X00 = STP
- 0X02 = RSTP
- 0X03 = MSTP
상대방의 Version 정보를 받고 상대방과 어떻게 통신을 해야하는지를 판단합니다. 당연히 낮은 Version을 사용한다면 동작을 낮은 Version으로 맞추어야 겠지요. RSTP를 돌리고 있는 장비에서 'show spanning-tree'를 하면 직접 연결된 Switch중 STP가 동작하고 있는 Switch를 표시하여 줍니다. 이 부분은 나중에 학습하도록 하겠습니다.

■ Message type

BPDU의 두가지 Type을 정의합니다.
- 0X00 = Configuration BPDU
- 0X80 = TCN(Topology Change Notification) BPDU
이 두가지 Type은 반드시 아셔야 하는 거죠! 하루 날잡아서 학습해 보도록 하겠습니다. ^^

■ Flags

Topology가 변할 때, 상태 정보를 전달하기 위한 값들이 표시됩니다. 휴~ STP는 알아야 하는 것도 많군요. 이 부분은 RSTP를 할 때 자세하게 알아보도록 하겠습니다.

■ Root BridgeID

Root의 BridgeID 정보를 담아서 보냅니다. 이 정보가 있어야 Root의 BridgeID 보다 더 좋은 놈이 나와야 덤비지 않겠습니까? 그렇지 않으면 개나소나 싸워보려할테니 문제가 되겠죠!

■ Root Path Cost

누가 Root와 더 가까운지 싸울때 사용합니다. 자기가 짱이 못되면 짱하고 친한척이라도 해야죠. ^^

■ Sender BridgeID

짱하고 한명은 고딩친구고, 한명은 대딩친구면 고딩친구가 이기겠지만, 둘다 고딩친구군요. 그러면 이제는 할 수 없습니다. 둘이 싸워야지요. 자기들만의 대장을 뽑습니다. 화해하면 Looping 돌아요. 큰일납니다.

■ Port ID

왜 Port ID를 전달하는 걸까요? 쉽게 생각하시면 됩니다. 두대의 Switch간에 Cable을 2개 연결할 경우에도 작은 Looping이 발생하겠죠? 그때 낮은 Port ID를 선택하라고 정보를 보내주는 것입니다.

■ Message Age

Root가 해당 BPDU를 만든지 얼마나 지났는지 표시를 합니다. 이 시간이 Max age와 동일해지면 이 BPDU는 사라지게 됩니다. 생명주기 카운트다운이군요.

■ MAX age

BPDU의 생명시간입니다. Default로는 20초로 되어 있습니다.

■ Hello Time

얼마에 한번씩 BPDU를 보낼것인지 Root가 결정을 해서 보내줍니다. Default는 2초로 되어 있습니다.

■ Forwarding Delay

나중에 배우시겠지만, STP는 Block 상태에서 Forwarding이 되는데 Listening, Learning 단계를 거치게 됩니다. 그때, Listening, Learning 단계를 얼마동안 수행하고 다음 단계로 전달될 것인지를 결정하는 시간입니다.

휴~ BPDU 내용을 대충 설명했는데도 내용이 꽤 되는군요. 각각의 역할과 세부내용을 내일부터 공부해 보도록 하시죠. 오늘은 여기서 줄여야 되겠습니다. 퇴근하자고 난리네요. ^^


'네트워크 기초' 카테고리의 다른 글

TCN BPDU는 왜 필요한가?  (2) 2010.07.05
Configuration BPDU 동작원리  (1) 2010.06.29
BPDU(Bridge Protocol Data Units) 개요  (3) 2010.06.28
STP는 기준점이 있어야 한다!  (1) 2010.06.23
Spanning-Tree Protocol은 왜 필요한가?  (1) 2010.06.22
VTP mode의 이해  (0) 2010.05.20

STP는 기준점이 있어야 한다!

네트워크 기초 | 2010.06.23 18:42 | Posted by 승진아빠

STP는 어제 말씀드린 것처럼 Switching Looping을 차단시키기 위한 Protocol입니다.
Looping이 발생하는 구조에서 한놈이 Frame을 전송하지 않도록 하는 기술이죠! 그럼, 어느 Switch가 Frame을 전송시키지 않아야 하는지를 결정해야 할겁니다. 그럼, Switch는 어떻게 결정을 할까요?

방법은 간단합니다. 다음과 같이 Switch Network이 구성되어 있다고 가정해 보죠.
엄청나게 Looping이 발생하는 구조군요.



여기서 'Root'라고 하는 기준점을 하나 선출해서 줄세우기를 합니다. 선출하는 방법은 차주에 자세하게 다루기 로하고 Switch들은 서로간에 BridgeID를 비교해서 BridgeID가 가장 낮은 Switch를 Root로 선출합니다.

저희는 'SW1'이 Root가 되었다고 가정을 하고 줄세우기를 하면 다음과 같이 그림이 바뀌겠군요.



다음으로는 Root Switch가 되지 못한 Switch는 Root로 가는 가장 가까운 경로를 선택하여 해당 Port를 Root Port로 선출합니다. SW2, SW4, SW3 입장에서는 직접 연결된 경로가 다른 Switch를 거쳐서 가는 경로보다 가까울 테니 다음과 같이 Root Port를 선택하겠군요.



다음에 SW5, SW6, SW7도 Root Port를 선출해야 합니다. SW7은 SW4로 가는 경로가 더 가까우니 Root Port를 선출하는데 별 문제가 없겠지만, SW5와 SW6은 최단 경로가 두개씩 있군요. 이런 경우에는 자신과 직접 연결되어 있는 Switch의 BridgeID를 비교해서 낮은 BridgeID를 가진 Switch와 연결된 Port를 Root Port로 선출합니다. Root 뽑을 때도 BridgeID를 비교하더니 소대장 뽑을 때도 비교하는군요.

이때부터는 라인 잘타야죠. 언제 짤릴지 모를 Switch를 Root Port로 선출하면 나중에 다른 라인으로 바꿔탈 때 시간이 걸립니다. 회사에서 라인 잘타세요!

우리는 각 Switch의 BridgeID 값이 'SW1< SW2 < SW3 < SW4 < SW5 < SW6 <SW7' 라고 가정합니다. 그럼 작은 BridgeID가 우선하니 다음과 같이 Root Port가 선출되겠군요.



휴~ Root Port를 다 뽑았습니다. 이제 Looping을 막아야죠.
한번 검은 Line으로 연결된 곳을 붉은 Line으로 바꿔보세요. 어디를 연결해도 붉은 Line은 Looping 구조로 바뀝니다. 예를 들어 SW5와 SW7을 붉은 Line으로 바꾸면 다음과 같이 Looping일 발생하게 되겠죠!



그래서 Root Port가 아닌 곳은 하나의 Switch만이 Frame을 전송해야겠다고 결정합니다. 그리고, 다음과 같이 두개의 Port Type을 만듭니다.

1. Designated Port : Frame 전송하고 Port
2. Block Port : Frame을 전송하지 못하는 Port

※ Block Port의 특징
    - Frame을 전송하지 않지만, Designated Port에서 전송된 Frame을 받기는 함
    - Block Port로 유입된 Frame을 타 Port로 전송하지 않으며, MAC-address-table에 Learning하지 않음

그럼, 우리는 Desinated Port와 Block Port를 선출해야겠군요. 선출하는 순서는 다음과 같습니다.

1. 누가 더 Root Switch와 가까운가?
2. 누구의 BridgeID가 낮은가?
오늘은 개념만 설명드리는 시간이기 때문에 향후에 자세히 다루기로 하겠습니다.

■ SW2 ↔ SW4, SW3 ↔ SW4, SW5 ↔SW7, SW6 ↔ SW7

1. 누가 더 Root Switch와 가까운가? 동일함
2. 누구의 BridgeID가 낮은가? SW2, SW3, SW5, SW6

■ SW4 ↔ SW5, SW4 ↔ SW6

1. 누가 더 Root Switch와 가까운가? SW4

결국 다음과 같이 되겠군요.



이제 이걸 펼쳐볼까요? 이 이야기를 하려고 지금까지 떠 주절주절 적었군요.



위의 그림처럼 Looping일 발생하지 않는 Tree 구조가 되었습니다. 그래서 Spanning-Tee Protocol이라고 부르는 것입니다. 쉽죠? ^^

다음주부터 10회 정도에 거쳐 STP에 대해 자세하게 알아보도록 하겠습니다.

월드컵 8강을 지나 우승까지...!! 대한민국 파이팅!!

'네트워크 기초' 카테고리의 다른 글

Configuration BPDU 동작원리  (1) 2010.06.29
BPDU(Bridge Protocol Data Units) 개요  (3) 2010.06.28
STP는 기준점이 있어야 한다!  (1) 2010.06.23
Spanning-Tree Protocol은 왜 필요한가?  (1) 2010.06.22
VTP mode의 이해  (0) 2010.05.20
VTP의 이해  (0) 2010.05.18

Spanning-Tree Protocol은 왜 필요한가?

네트워크 기초 | 2010.06.22 17:21 | Posted by 승진아빠

요즘은 CCIE를 준비하시는 수강생 분들을 도와드리느라 정신이 없습니다.
6월 25일에 SP CCIE 한분, R&S CCIE 한분이 시험보시거든요. 첫술에 배부를 수는 없겠지만, 저희가 정식으로 교육센터를 오픈하고 처음 시험보시는 분들이죠. 수업이 다 끝나지도 않았는데 시험을 신청하셔서 놀랍기도 했지만, 자신감으로 도전하시는 모습도 참 보기 좋더군요.
이론을 아시는데 시험이 문제겠습니까? 몇날 며칠 저와 하루종일 준비를 하셨는데 좋은 결과가 나오리라 생각됩니다. 이 메일링을 시험보시는 분들도 보고 계시지만, 현재 시험보시는 분들의 준비율로 봤을 때 주관적인 판단으로는 합격율이 다음과 같습니다.

○ SP CCIE : Open-Ended - 70%, LAB - 90%이상(LAB이 변형되었어도 풀수 있는 수준임)
○ R&S CCIE : Troubleshooting - 50%(변형된 문제를 10분안에 해결할 수준은 아님), LAB - 70%~80%

25일에 합격하시면 금상첨화겠지만, 시험운이라는 것이 존재하기 때문에 장담할 수는 없겠지요.
9월 전에는 100%에 가까운 수준이 될 것으로 보이며, 취득할 때까지 저와 매일 만나서 이론을 점검하고 준비해야지요. 절 보기 싫으면 빨리 취득하시면 되구요. ^^

잠도 못자고 시험준비 서포터를 하고 있지만, 열심히 하시는 분들과 함께 있으니 너무 행복합니다. ^^

자~ 어제는 3주간 메일링을 쓰지 않았더니, 솔직히 깜빡했습니다. 역시 쉰다고 좋은 것은 아닌가 봅니다. 그리고, 동영상 강의는 편집중에 있습니다. 생각보다 시간이 많이 걸리는군요.

아! 의견란에 다음과 같은 의견이 있었습니다.
1. 그냥 메일링으로 했으면 좋겠다. 동영상 강의로 점점 치우치는것 같아 안타깝다.
2. 동영상 강의까지 무료라니, 너무 좋다.
3. 동영상 강의든 메일링이든 뭐든지 좋다. 한가지라도 더 알게만 해달라.

여러분의 소중한 의견을 고려해서 메일링 서비스를 발전시켜 나가도록 하겠습니다.

서론이 무지하게 길었군요. 오늘은 Spanning-Tree Protocol에서 알아보도록 하겠습니다.

우리는 장비 및 회선장애 시, 정상적인 서비스를 위해 장비 이중화, 회선 이중화를 합니다. 그런데 가끔은 이러한 이중화 때문에 문제가 발생하기도 하지요. 그 중 하나가 Switch Looping 문제 입니다.
그럼, 다음과 같은 구조에서 어떤 문제가 발생하는지 한번 볼까요?



1. Broadcast Stom
PC 10.10.10.1이 10.10.10.2하고 통신을 하려고 한다고 가정을 해보죠. 상대방의 IP address는 알고 있지만, 상대방의 MAC address를 모르기 때문에 ARP packet을 전달하려고 할겁니다.
그런데, ARP packet은 어떻게 되어 있죠? Destination MAC address를 FFFF.FFFF.FFFF, 즉 broadcast로 전달을 하죠! 이 Broadcast Packet은 10.10.10.2에게 전달이 되기는 하겠지만, 두대의 Switch에도 전달이 될겁니다. 그런데, Switch는 항상 Source MAC address만 가지고 Mac-address-table을 만들고, Mac-address-table에 존재하는 MAC address에 대해서만 Forwarding을 하기 때문에 이 Packet은 유입된 Port를 제외하고, 나머지 Port로 Flooding하게 될겁니다. 다음과 같이요.



흠... 문제는 이제부터 시작일것 같군요. Fa0/2로 나간 ARP Packet은 다른 Switch로 전달되걸 것이고, 그 Packet은 여전히 Broadcast MAC address를 가지고 있기 때 또 들어온 Port를 제외하고 나머지 Port로 Flooding할 것입니다. 그럼, 이 Packet은 계속 두대의 Swich 사이에서 빙빙 돌겠군요.

우리는 이것을 Broadcast Stom이라고 합니다. 결국 다음과 같이 된다는 말입니다.




2. Multiple Frame Copy


자, 이 부분은 쉽게 생각하시면 됩니다. 위의 그림에서 처럼 Frame 이 돌게 되면 PC2(10.10.10.2)는 동일한 Frame을 계속 받게 되죠? Unicast Packet을 보내는 경우에도 Switch가 MAC-address-table에 PC2의 정보를 등록하기 전까지는 마찬가지로 동일한 Packet을 여러번 받게 될겁니다.

이것을 Multiple Frame Copy라고 부릅니다. ^^


3. MAC Database Instability

Switching Looping이 발생했을 때 가장 문제가 큰 부분이죠! 어떤 문제인지 한번 볼까요?
각 Switch의 MAC address table을 밑에 그려보겠습니다.



Source MAC address를 가지고 MAC-address-table을 만들기 때문에 ARP Packet의 Source를 보고 두대의 Switch는 0000.0000.0001이 Fa0/1에 있다고 등록을 할겁니다. 그런데, 다음과 같이 되면 어떻게 될까요?



위의 그림처럼 다른 Switch로 부터 받은 ARP 정보에 의해 Fa0/1에서 Fa0/2로 0000.0000.0001의 MAC address 위치가 변경될 것입니다. 그리고, 다시 그 Packet이 돌아오면 다시 Fa0/1로 바뀌게 되겠지요. 엄청난 속도로 Packet은 Looping이 발생하게 되고 MAC-address-table은 계속 Fa0/1과 Fa0/2를 왔다갔다하게 되겠죠. CPU가 감당하기 힘들겠군요.

우리는 이것을 MAC Database Instability이라고 합니다.

자, 장비/회선 이중화를 했을때 다 좋은건 아니죠? 어쨌든 우리는 이러한 문제를 해결해야 합니다. 알고도 해결하지 않는다면 발전은 없을 겁니다. 어떻게 해결하면 될까요?
그렇습니다. 간단하게 Switch중 한놈이 Packet을 전달하지 않으면 될겁니다. ^^

그럼 어느 Switch가 안보내야 할까요? 그것을 결정하는 것이 STP(Spanning-Tree Protocol)이랍니다. 별거 없죠? 내일부터는 STP에 대해 하나씩 하나씩 알아가 보도록 하겠습니다. 어제 메일링을 못 보내드렸으니까 금주는 '화수목'에 보내드리도록 하겠습니다.

저희 교육센터로 상당하러 오시는 분들이 다음과 같은 3가지를 가장 많이 질문합니다.

1. 타 학원에는 CCIE 솔루션이 없어서 문제라는데, 솔루션을 가지고 계신가요?

문제를 아는데 솔루션이 없다는건 말이 안되죠. 솔루션이 많은데 그 중 CCIE 수준에 맞는 솔루션이 무엇이냐 하는 것이 문제겠죠! ^^ 그리고, 이론을 알면 가서 풀면되죠. 푸는 재미가 있어야 하지 않을까요?

2. 학원 수강하면 언제까지 지원해 주시나요? 재수강에 비용이 드나요?

CCIE 취득을 목적으로 오신 분들이시고, CCIE 취득을 목표로 하는 과정입니다. 당연히, CCIE 취득시까지 평생 지원해 드리는 것이 맞지 않나 생각이 드는군요. 계속 무료 지원하면 교육센터가 손해겠지요. 그래서, 빨리 취득하게 해 드려야지요. 취득하실 때까지만 지원입니다.^^

3. 깍아주세요. 안되나요?

가장 어려운 질문입니다. 깍아 드리지 않아도 교육센터 운영이 힘든 상태랍니다. 운영잘되면 교육비 낮춰 드릴께요. 저희는 타학원과 비슷한 교육비용에 '이론+LAB'해서 2달 과정이잖아요.
먹고는 살아야 하는데 이제 겨우 직원 급여 50% 지급하고 있답니다. 전 무보수구요. ^^ 그래도, 매달 500만원 이상 적자에요. 이해를 해주셨으면 합니다.

내일은 STP의 기본 개념에 대해서 설명드리도록 하겠습니다. 내일 뵙겠습니다. ^^

'네트워크 기초' 카테고리의 다른 글

BPDU(Bridge Protocol Data Units) 개요  (3) 2010.06.28
STP는 기준점이 있어야 한다!  (1) 2010.06.23
Spanning-Tree Protocol은 왜 필요한가?  (1) 2010.06.22
VTP mode의 이해  (0) 2010.05.20
VTP의 이해  (0) 2010.05.18
'switchport mode'의 이해  (2) 2010.05.14

VTP mode의 이해

네트워크 기초 | 2010.05.20 12:29 | Posted by 승진아빠


드디어 저희 메일링으로 신입사원 교육을 실시하는 곳이 생겼습니다. 반가운 소식이죠! ^^
신입사원을 저희 학원으로 보내면 더 좋겠지만, 최소한 신입사원 분들은 저희 교육센터를 기억하실 테니까요. 앞으로도 더 좋은 자료를 가지고 신입사원 뿐만 아니라, 경력사원 교육도 실시할 수 있도록 노력하겠습니다.

자 오늘은 VTP mode에 관련된 이야기를 하려고 합니다. VTP mode는 Server, Client, Transparent mode 3가지가 있습니다. Switch의 default mode는 Server mode입니다. 그럼 각 mode의 특징에 대해 알아보기로 하겠습니다.

■ Server mode

○ VLAN을 추가/변경/삭제 할 수 있음

VLAN을 동기화하려면 누군가는 VLAN 정보를 변경해야겠죠? 그 기능을 Server mode가 가지고 있습니다. 그리고, Server mode로 구성된 Switch는 Trunk port를 이용해 VTP 정보를 5분에 한번씩 주기적으로 전달을 합니다. 물론, VLAN 정보가 변경되었을 때도 전달을 하겠지요.
주기적으로 전달하는 이유는 새로운 Client가 접속했을 시, 정보를 공유하기 위함입니다. Client가 먼저 VTP 정보를 달라고 요청하지 않거든요. ^^

○ VTP 정보를 Send & Forward 함

여기서 Send와 Foward를 잘 구분하셔야 합니다. Send는 자신의 VLAN 정보를 타 Switch에게 보내는 것을 의미하고 Froward는 타 Switch에게 받은 정보를 다른 Switch에게 전달하는 것을 의미합니다.
즉, Server mode는 자신의 VLAN 정보를 다른 Switch에게 보내기도 하고, 다른 Server Switch가 보내준 VLAN 정보를 다른 Switch에게 전달도 해주는군요. 착한 놈이군요. ^^

○ VLAN 정보를 동기화함

Server mode는 타 Switch가 보내준 VLAN 정보로 VLAN database를 동기화하고, 자신의 VLAN 정보를 타 Switch에게 보내 동기화도 합니다. 그럼, 어떤 놈이 최신 정보인지 알아야겠군요. VTP는 VLAN 정보가 바뀔 때마다 Revision Number를 하나씩 증가시킵니다.
그럼, Revision Nubmer가 큰 놈으로 동기화를 하면 되겠군요!

■ Transparent mode

○ VLAN을 추가/변경/삭제 할 수 있음 (Local 내에서만 생성됨)

Transparent mode도 VLAN 정보를 변경할 수 있습니다. 하지만, 이 정보를 타 Switch에게 보내지를 않습니다. 즉, VLAN 정보를 자신만 알고 있는 것이지요. 참 치사한 놈이 아닐 수 없습니다. ^^

○ VTP 정보를 Forward하나 Send는 하지 않음

위에서 설명드렸듯이 자신의 정보를 보내는 Send는 실시하지 않습니다. 하지만, Transparent mode는 다른 Server Switch가 보내준 VLAN 정보를 다른 Switch에게 전달은 해줍니다. VTP version 2가 되면 좀 더 치사해 집니다. VTP domain name이 다르면 전달해주지 않거든요.

○ VLAN 정보를 동기화하지 않음

Transparent mode는 독불장군입니다. 다른 Switch에서 보내준 정보를 Forward는 해주지만, 그 정보를 가지고 동기화하지는 않습니다. 또한, 자신의 VLAN 정보를 보내지 않으니 그 역시 동기화하지 않죠. 남의 정보 무시하고 자기정보 공유하지 않는 mode지요.
타 Switch와 동기화를 하지 않는데 Revision Number가 무슨 소용 있겠습니까... 항상 '0'입니다.

■ Client mode

○ VLAN을 추가/변경/삭제 할 수 없음

아무짓도 못합니다. 그냥 주는데로 받아야 합니다. 더구나 NVRAM에 VLAN 정보를 저장도 하지 않습니다. 껐다키면 VLAN 정보 다 사라져요. 그러니, Network 상에 모든 Switch를 Server mode가 죽으면 어떻게 되겠습니까? Client mode Switch 죽었다 살아나면 VLAN 정보를 받을 곳이 없게 되죠.
그래서, CCNA 책에 멋지게 써 있습니다. VTPf를 사용하려면 Server mode가 Network 상에 최소한 한대가 있어야 한다. ^^

○ VTP 정보를 Send & Forward 함

Forward를 한다는건 알겠는데 Send도 한다는군요. VLAN 정보를 수정하지 못하니, 언제 할까요? Client Switch가 VTP 정보를 전달하는 경우는 Server에게 VLAN 정보를 받았는데, 나보다 더 낮은 Revision Number를 받았을 때 입니다.
그련 경우, 상대에게 자신의 VLAN 정보를 보내줍니다. 자기가 더 최신 정보라고 자랑하는거죠. 이 때 말고 언제 자기가 Server를 이겨보겠습니까? ^^

○ VLAN 정보를 동기화함

Server mode는 타 Switch가 보내준 VLAN 정보로 VLAN database를 동기화하고, 받은 정보가 자신보다 더 Revision Number가 작은 경우 자신의 VLAN 정보를 타 Switch에게 보내 동기화도 합니다.

오늘은 Switch mode에 대해 간략하게 살펴보았습니다.

정치도 여당, 야당, 국민이 있는거 같아요. Server mode가 여당이고 Transparent mode가 야당이고, 국민이 Client 겠지요.
여당은 지 맘대로 법/제도/정책 바꾸고, 야당은 지들 할 소리만 떠들고, 국민은 현실을 받아들이기만 하죠. 하지만, Client mode 처럼 내가 가지고 있는 생각보다 더 안좋은 정책을 만들면 Server에게 알려서 바꿔야 하지 않을까요? (우리나라는 VTP가 돌기나 하는지 모르겠군요.)

이상 이경태였습니다.

'네트워크 기초' 카테고리의 다른 글

STP는 기준점이 있어야 한다!  (1) 2010.06.23
Spanning-Tree Protocol은 왜 필요한가?  (1) 2010.06.22
VTP mode의 이해  (0) 2010.05.20
VTP의 이해  (0) 2010.05.18
'switchport mode'의 이해  (2) 2010.05.14
Native VLAN의 이해  (2) 2010.05.13

VTP의 이해

네트워크 기초 | 2010.05.18 12:30 | Posted by 승진아빠



토요일과 월요일에는 개인적인 사정과 교육센터 사정으로 메일링을 작성하지 못했습니다.
토요일 : 새벽작업하고 14시간 강의후에 메일링을 적으려고 했더니, 몸도 마음도 지쳐서... 뚜시궁!
            (실은 토요일 저녁에 수강생 분들과 소주한잔했더니 몸이 너무 나른해져서...)
월요일 : VUE 본사에서 시험센터 감독하러 온다고 해서 하루종일 정신이 없었지요... 무사통과!!

자! 금주 메일링 계획입니다. 지난주 토요일에 하기로 했던 LAB 실습은 동영상으로 만들고 있습니다. 완성되는데로 카페에 올리도록 하겠습니다. '주임' 등급 이상 보실 수 있는거 아시죠? ^^

- 화요일 : VTP의 이해
- 수요일 : VTP mode의 이해
- 목요일 : Prune 기능의 이해
- 금요일 : VTP Packet 해부하기
- 토요일과 일요일은 장인어른 생신이라 고향(원주)에 내려가야 해서 쉽니다.

■ 메일링에 앞서 선거에 대한 '경태의 생각'

누가 당선되도 마찬가지겠지만, 이번에는 국민의 파워를 보여주는 투표가 되어야 할 겁니다.
지인 중 한분이 말씀하시더군요. 뽑을 사람이 없으면 없음이라고 체크해서 기권(무효)표를 만들어야 한다고요. 투표율이 높다는건 국민의 의식수준이 높다는걸 의미하고, 그 중 기권(무효)이 많다는건 '국민이 여·야 모두 신뢰하지 않는다'는 표현이라고 말씀하시던데 맞는말 같습니다.

멋있겠죠? 투표율 100% - X당 (20%), Y당(15%), Z당(14%)... 무효 (45%) : 무효 당선!! ^^

저는 기권표를 던지지는 않을겁니다. 하지만, 투표를 하지 않으실 분들은 기권이라도 던져야 국민의 파워를 보여줄 수 있지 않을까요? 간만의 '경태의 생각'을 적어보았습니다.
(선거법 위반에 조금이라도 연관된 내용을 삭제했더니 좀 횡하군요. ^^;;)

자! 오늘은 VTP에 대해 배워보도록 하겠습니다.

우리는 각기 다른 Switch에 연결된 사용자들이 마치 하나의 Switch에 연결되어 있는것 처럼 구성하기 위해 VLAN과 Trunk를 사용했습니다. 그런데, 한가지 문제가 있었죠? 3대의 Switch가 연결되어 있을 때, 중간 Switch에 VLAN X가 없는 경우 양 끝단에 연결되어 있는 VLAN X 사용자들은 상호간에 통신을 할 수가 없었습니다.

상호간에 통신을 할 수 있도록 하려면 경로상에 있는 모든 스위치에 해당 VLAN이 active되어 있어야 합니다. 여기서 active란 실 Port에 사용중이어야 한다는 말이 아니라, 만들어져서 운영중이어야 한다는 말입니다. 그럼 만들어서 운영하지 않는 경우도 있나요? 물론이죠.

전에 VLAN 상태정보 배우셨잖아요. 다음과 같이 설정해보세요.

DSW1(config)#vlan 2
DSW1(config-vlan)#shutdown
DSW1(config-vlan)#end
DSW1#show vlan

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Fa0/1, Fa0/2, Fa0/3, Fa0/4
                                                Fa0/5, Fa0/6, Fa0/7, Fa0/8
                                                Fa0/9, Fa0/10, Fa0/11, Fa0/12
                                                Fa0/13, Fa0/14, Fa0/15, Fa0/16
                                                Fa0/17, Fa0/18
00:03:43: %SYS-5-CONFIG_I: Configured from console by console, Fa0/19, Fa0/20
                                                Fa0/21, Fa0/22, Fa0/23, Fa0/24
                                                Gi0/1, Gi0/2
2    VLAN0002                         act/lshut
1002 fddi-default                     act/unsup
1003 token-ring-default               act/unsup
1004 fddinet-default                  act/unsup
1005 trnet-default                    act/unsup

VLAN Type  SAID       MTU   Parent RingNo BridgeNo Stp  BrdgMode Trans1 Trans2
---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------
1    enet  100001     1500  -      -      -        -    -        0      0
2    enet  100002     1500  -      -      -        -    -        0      0
1002 fddi  101002     1500  -      -      -        -    -        0      0
1003 tr    101003     1500  -      -      -        -    -        0      0
1004 fdnet 101004     1500  -      -      -        ieee -        0      0

위와 같이 shutdown 상태이거나 Inactive 상태면 통신이 불가능하다는 말이죠!

그럼, 방법은 모든 Switch에 사용하는 모든 VLAN을 만들어주면 큰 문제없이 동작하겠군요. 에휴~ 작은 회사는 문제없겠지만, 많은 스위치들로 구성된 회사는 어떻게 하라는 말인가요...

그래서, 기발한 생각을 하게 됩니다. 한놈이 VLAN을 변경하면 다른 놈들도 그 정보를 받아서 동기화를 하면 되지 않을까? 그래서 VTP가 나오게 되었습니다. 문제는 이놈의 VTP는 시스코 Only 기술이라는 점입니다. 타 장비가 있으면 할 수 없이 일일히 만들어주셔야 합니다.
또한, 보안 이슈때문에 대부분의 회사는 VTP를 사용하고 있지 않죠! 이 문제는 향후에 다루기로 하겠습니다.

VTP를 구성하기 위해서는 Switch간에 Trunk port로 구성되어 있어야 합니다. 상식으로 생각해보세요. 내 VLAN 정보를 상대에게 알려줘서 동기화를 하려고 하는데, 둘 사이에 Access port로 구성되어 있다면 무슨 의미가 있을까요? 어차피 VLAN 정보는 떼어 버리고 가는데요. ^^

그리고, VTP는 domain이라는 것이 있어서 동일한 domain 내에서만 VLAN 정보를 교환합니다. 그런데, 이놈이 문제랍니다. 한번 보실까요? 다음과 같이 Switch가 구성되어 있습니다.



SW1만 VTP가 enable되어 있군요. Domain 이름은 ICND 입니다. 그리고, 다른 Switch는 VTP를 설정하지 않은 상태에서 VLAN을 1, 2, 20, 21을 사용하고 있었습니다. 당연히 Switch간에는 동일 VLAN 간에 통신이 가능하도록 하기 위해서 Trunk port로 설정했겠지요.
시간이 지나면 어떻게 변할까요? 다음과 같이 변합니다.



VTP를 enable하지 않았던 Switch 들은 VTP가 enable되어 있는 SW1으로 부터 VTP 정보를 받은 후에 VTP domain 이름이 ICND로 동기화되며, VLAN 정보도 동기화되어 버립니다. VLAN 20, 21번을 사용하던 사용자들은 자신의 VLAN 정보가 사라졌으니 inactive 상태가 되어 통신이 불가능하겠군요.

망일 VTP 이름을 다른 것으로 사용하고 있다면 상호간에 동기화가 되지 않지만, VTP가 enable되지 않은 Switch는 VTP domain name이 Null 상태를 유지하게 됩니다. 그 상태에서 어느 Switch 하나라도 VTP domain을 설정하게 되면 모두 해당 VTP domain 이름으로 동기화되며 VLAN 정보도 동기화를 하게 되죠!

물론, VTP mode 등이 Default 상태인 경우에 해당합니다. 이처럼 VTP는 통신상에 문제를 많이 야기시킬 수 있습니다. 그러니까 사용하지 않겠죠? 그런데, 위의 그림을 보니 사용하지 않아도 문제가 발생할 수 있겠군요. 보다 더 자세한 내용은 VTP mode를 학습하신 후에 설명드리도록 하겠습니다.

오늘 정부에서 5.18 주제곡인 '임을 위한 행진곡'을 부르지 못하도록 막았다는군요. 길거리에서 체포될지 모르니 조심해서 부르시고요.... 서울시에서 서울시 광장은 문화행사를 해야 한다고 5.18 추모식을 못하게 했답니다. 행사때문에 전 대통령 1주기 추모제도 못하게 했는데 5.18 정도야 우습겠죠! ^^

그렇다고 5.18 추모식에 경기도민요 방아타령을 연주한건 좀.... 아니라고 생각하지 않습니까? 정치적 성향이 그다지 특색없는 저도 상식과 비상식은 구분할줄 아는데요. 5.18 추모식에 유족들을 못들어오게 하다니..... 비도 오는데 기분이 아주 꿀꿀한 날입니다.

'사~랑도 명~예~도.... 이~름도 남김~없이...'

'네트워크 기초' 카테고리의 다른 글

Spanning-Tree Protocol은 왜 필요한가?  (1) 2010.06.22
VTP mode의 이해  (0) 2010.05.20
VTP의 이해  (0) 2010.05.18
'switchport mode'의 이해  (2) 2010.05.14
Native VLAN의 이해  (2) 2010.05.13
802.1Q Trunk의 이해  (0) 2010.05.12

'switchport mode'의 이해

네트워크 기초 | 2010.05.14 16:06 | Posted by 승진아빠


오늘은 OOO사에서 야간에 장애점검 테스트를 하는데, 같이 점검해 줄 수 있느냐고 부탁을 하셔서 밤샘 작업을 하러 가야 합니다. 무료로 하냐구요? 당연히 무료죠... 미래 고객을 만들기 위한 투자라고 할까요? ^^

여러분들도 회사에 어떤 장애가 있거나 큰 네트워크 작업이 있으시면 편하게 연락주세요. 시간이 되는한 언제든지 도우미가 되어 드리겠습니다. 돈벌이가 시원잖아서 직원은 별로 없지만, 이름만 말씀드려도 다 아실만한 놀고 있는 프리랜서, 유명한 백수 분들이 저희 회사에 많이 등록되어 있거든요. ^^

오늘 밤세고 내일 14시간 강의해야 하니.... 오늘 메일링은 간단하게 정리하고, 좀 낮잠 한시간 자면서 쉬도록 할께요. 간단하다고 해서 대충 설명하겠다는건 아니랍니다.

자 오늘은 'switchport mode'라는 명령어에 대해 학습해 보도록 하겠습니다.
일단, switchport mode 명령어 뒤에 어떤 옵션이 있는지부터 확인해봐야겠죠?

■ 'switchport mode' option
    - access : 해당 Port를 특정 VLAN 전용으로 사용함
    - dynamic : Switch간에 상호 Negotiation 하여 Access/Trunk 여부를 결정함
    - trunk : 해당 Port를 항상 Trunking Port로 사용함
    ※ dot1q-tunnel : dot1q-tunnel은 향후 '네트워크 심화'에서 설명드리도록 하겠습니다.

Dynamic port로 설정하면 상호간에 Nego를 통하여 access port로 설정할지 trunk port로 설정할지를 결정하게 되는데, 그때 사용하는 Protocol이 DTP(Dynamic Trunk Protocol) 입니다. Dynamic port는 항상 access port 상태를 유지하다 상대방에게 DTP를 받게 되면 trunk 상태로 바뀌도록 되어 있습니다.

그런데, DTP를 주고 받는 특성때문에 문제랍니다. dynamic mode는 2가지 mode(auto/desirable)로 구분되는데, 2가지 mode가 특성이 다르거든요. 어떻게 다른지 한번 보도록 하시죠.

■ Mode의 특성
    - access : DTP를 전송하지 않으며, 상대방이 보낸 DTP를 무시함
    - dynamic (auto) : DTP를 먼저 전송하지 않으며, 상대방에게 DTP를 받은 경우 DTP를 전송함
    - dynamic (desirable) : DTP를 먼저 전송함
    - trunk : DTP를 먼저 전송하며, 상대방이 보낸 DTP를 무시함

위의 특징을 가지고 Trunk가 되는 경우를 정리하면 다음과 같이 요약됩니다.

1. access port와 연결된 dynamic port는 DTP를 받지 못하기 때문에 access port를 유지함
2. trunk port나 dynamic(desirable) port와 연결된 dynamic port는 DTP를 받으므로 trunk port로 변경됨
3. access port와 trunk port는 상호간에 Nego를 하지 않으므로 서로간에 통신이 불가능함
4. dynamic(auto) 끼리 연결된 경우는 둘다 DTP를 기다리기만 하므로 access port를 유지함


어렵지 않으시죠? 결국 DTP라는 놈이 어떻게 날아가는지만 확인하면 되는군요.
두가지만 더 알아보도록 하시죠.

※ 'switchport nonegotiate'의 이해
'switchport nonegotiate'라고 DTP를 전달하지 않도록 설정하는 명령어가 있습니다. 어떤 경우에 사용해야 할까요? 당연히 Trunk port와 Trunk port가 연결되어 있는 경우에만 사용을 해야겠죠? 결국 나머지는 DTP를 전달받아야 Trunk port로 변경될테니까요. ^^

※ 'switchport access vlan #'을 주는 경우, 'switchport mode access'로 해줘야 하는가?
'switchport access vlan' 명령어와 'switchport mode' 명령어는 아무런 상관관계가 없습니다. 'swtichport access vlan #' 명령어는 단순히 해당 port가 'access port'가 되었을 때, 어떤 vlan으로 사용할 것인가를 결정하는 것입니다. trunk port로 설정되면 무용지물이 되는거죠!
예를 들어 'switchport mode dynamic auto'로 두대의 switch를 설정하면 DTP가 전달되지 않으니 당연히 access port가 되겠지요. 이렇게 'access port'가 되었을 경우 port에 어떤 vlan을 할당해야 하는지 확인을 하는데 그 때 필요한 정보가 'switchport access vlan #' 입니다.

시간이 많지 않아서 그림을 그리지 않았네요. 이해가 잘 되지 않으시면 의견란을 통해 말씀해주세요. 일요일쯤 추가 그림을 몇개 그려서 수정한 내용을 카페에 올려놓도록 하겠습니다. ^^

행복한 주말 보내세요. 감사합니다.

'네트워크 기초' 카테고리의 다른 글

VTP mode의 이해  (0) 2010.05.20
VTP의 이해  (0) 2010.05.18
'switchport mode'의 이해  (2) 2010.05.14
Native VLAN의 이해  (2) 2010.05.13
802.1Q Trunk의 이해  (0) 2010.05.12
ISL Trunk의 이해  (0) 2010.05.11

Native VLAN의 이해

네트워크 기초 | 2010.05.13 14:32 | Posted by 승진아빠



일교차가 심하군요. 저도 감기에 걸려 킁킁거리며 강의를 하고 있습니다. 감기 조심하세요!
오늘은 Native VLAN에 대해서 설명을 드리려고 합니다. Native.... 이상한 상상하지 마시구요.

Native VLAN은 Global Native VLAN이 있고, Port Native VLAN이 있습니다.
무슨 말이냐구요? 어제 Native VLAN은 Hub에 연결된 사용자에게 VLAN을 할당하기 위해서 최초로 만들어 졌다고 말씀을 드렸었죠? 그런데, 다음 상황이면 어떻게 될까요?



Switch간에는 모두 Trunk로 되어 있고 VLAN이 3개가 있습니다.
- VLAN 1 : 초록색 VLAN
- VLAN 2 : 파란색 VLAN
- VLAN 3 : 노란색 VLAN

문제는 가운데 Switch는 2개의 Hub에 연결되어 있는데, 각 Hub에 연결되어 있는 사용자의 VLAN이 다르다는 겁니다. 만일 Native VLAN을 하나만 사용할 수 있다면 난감하지 않을 수 없습니다. Hub에 연결된 사용자는 모두 VLAN 정보없이 Frame을 보낼 테니까요.

방법이 없을까 고민하다 Port마다 Native VLAN을 다르게 설정하면 되겠다고 생각을 합니다.
예를 들어 왼쪽 Port에는 Native VLAN을 2번으로, 오른쪽에는 Native VLAN을 3번으로 설정하는거죠!

그리고, 나머지 Port는 Global Native VLAN을 사용하는 겁니다. 모든 Switch는 Default로 VLAN 1을 Global Native VLAN으로 사용하고 있습니다. 그럼 다음과 같이 되겠군요.



그럼, 가운데 Switch가 어떻게 동작하는지 내부 구조를 살펴보도록 하시죠.

현재 상태는 다음과 같습니다.
- Port 1 : Native VLAN 2
- Port 2 : Native VLAN 3
- Global : Native VLAN 1



위의 그림을 봤을 때, 이해가 되시나요? 이해를 돕기 위해 그림을 그렸는데, 오히려 헷갈리실까봐 걱정이 되는군요. Port 1에서 들어오는 Frame을 보시죠. Port 1은 Native VLAN이 VLAN 2번이기 때문에 VLAN 정보가 없는 Frame이 들어오면 VLAN 2번이라고 생각할 겁니다.

또한, Frame을 내보낼 때도 VLAN 2번으로 보내는 Frame이면 VLAN 정보를 달지 않고 보내겠죠.

그런데, Port 1번에서 VLAN 1, 2, 3 Frame이 모두 들어온다고 생각해 보세요.
가운데 Switch는 Port 1번만 Native VLAN이 VLAN 2번이지 Switch 자체에서는 VLAN 1번으로 Native VLAN이 설정되어 있거든요. 그럼, Port 1에서 무엇을 해줘야 하나요?

VLAN 1번 정보를 달고 들오어는 Frame은 VLAN 정보를 떼어 버린 후 Switch 안으로 보내고, VLAN 정보가 없는 Frame에는 VLAN 2번 정보를 달아서 Switch 안으로 보내면 되겠군요.

이렇게 동작하는 것이 Native VLAN 입니다. 그럼 마지막으로 Switch간에 Native VLAN 정보가 다르면 어떻게 될까요? 예를 들어, Switch 1과 Switch 2가 연결되어 있는데 Switch 1은 Native VLAN을 VLAN 1으로 설정하고, Switch 2는 Native VLAN을 VLAN 2라고 설정하는거죠.

그럼, Switch 1은 VLAN 1 Frame을 보내기 위해 Frame에 VLAN 정보를 달지 않고 전송할 것이고, Switch 2는 VLAN 정보가 없으니 Native VLAN인 VLAN 2번이구나 생각하고 VLAN 2번으로 전송을 하게 될 것입니다. 서로 다른 VLAN 간에 통신이 되어 버리겠군요.

그 외에도 Native VLAN이 다르면 Switching Looping이 발생할 수 있습니다. 이건 STP에서 설명드리도록 하고 여기서 오늘의 메일링을 마치도록 하겠습니다. ^^

'네트워크 기초' 카테고리의 다른 글

VTP의 이해  (0) 2010.05.18
'switchport mode'의 이해  (2) 2010.05.14
Native VLAN의 이해  (2) 2010.05.13
802.1Q Trunk의 이해  (0) 2010.05.12
ISL Trunk의 이해  (0) 2010.05.11
Trunk에 대한 잘못된 상식을 깨자!  (1) 2010.05.04

802.1Q Trunk의 이해

네트워크 기초 | 2010.05.12 16:17 | Posted by 승진아빠


오늘은 802.1Q에 대해 알아보기로 하겠습니다. 오늘날 Cisco에서도 ISL을 거의 사용하지 않고 표준방식인 802.1Q를 많이 사용하고 있습니다. 아마도 Wrokgroup Switch가 ISL을 지원하지 않기 때문이겠죠!

어제 말씀드린 방식 중 802.1Q는 Tagging 방식을 사용하는 기술입니다. 그럼 중간에 Header가 변경되겠군요. 어떻게 변경되고 Switch는 변경된 Header를 어떻게 인식하는지 한번 살펴 보도록 하시죠!



중간에 붉은색 부분(TAG)이 Header에 추가되는 영역이며 Header의 값이 변경되었기 때문에 기본 Data의 FCS checksum 값이 재계산되어 변경되는 것을 확인하실 수 있습니다.

추가되는 TAG 값은 다음과 같습니다.

No. of bits

16

3

1

12

Frame field

TPID

PRIORITY

CFI

VID


○ TPID 

본래 Frame에서 Source MAC address 다음에 무엇이 나오나요? 상위 Protocol Type이 나오죠. 당연히 Switch는 기계이기 때문에 Source MAC address 다음에 Protocol Type이 나올 것으로 기대할 겁니다. 그렇다면, Header를 추가했을 경우에도 '다음 정보는 VLAN 정보야' 라는 것을 알려줘야 할 겁니다. 그래서, Protocol Type Field를 넣게 되는거죠. 값은 0x8100을 넣습니다.

○ Priority

L2 Switch에서 QoS를 적용할 수 있도록 Data의 우선순위를 넣는 Field로 Default로는 IP Header ToS field 값과 연동되어 사용되나 별도로 구성할 수도 있습니다. 3bit이기 때문에 0 ~ 7까지 표현할 수 있고 숫자가 높을 수록 우선순위를 갖게 됩니다.

○ CFI

본래 Frame의 MAC address가 Canonical Format인지 아닌지 확인하기 위한 Field 입니다. '1'로 설정되어 있으면 Non-Canonical Format, '0'이면 Canonical Format을 의미합니다. 우리가 알고 있는 MAC address는 Canonical Format이고 Token-Ring에서는 Non-Canonical Format을 사용합니다.
즉, Token-Ring인지 아닌지 확인하는 Field군요. Non-Canonical Format에 대해서는 추후에 Multicast를 설명드릴 때 자세하게 하도록 하겠습니다.

○ VID

VLAN ID로 VLAN 정보를 넣는 Field 입니다. 12bit로 구성되어 있으니 '0 ~ 4095'까지 표현이 가능하겠군요.

ISL에 비해 무척 간단하죠? 그 외에도 ISL은 Native VLAN이라는 것이 있습니다. Native VLAN을 오늘은 개념만 설명드리고 다음주에 좀 더 깊숙히 다뤄보도록 할께요.

100명이 시험을 보고 있습니다. 그런데, 한명이 답안지에 이름을 쓰지 않았네요. 누군지 알 수 있을까요? 당연히 알 수 있겠죠. VLAN도 마찬가지입니다. 100개의 VLAN이 있는데 한놈만 VLAN 정보가 없어요. 그러면 그 VLAN이 어느 VLAN인지 알 수 있을겁니다.

이렇게 VLAN 정보를 달지 않아도 되는 VLAN을 만들게 되는데 그것을 우리는 'Native VLAN'이라고 부릅니다. 그럼, 왜 만들어졌을까요? 이 부분만 간단히 살펴보고 오늘 메일링을 마치도록 하겠습니다.

다음과 같이 2대의 Switch 사이에 Hub를 연결하고 두 Switch간에 Trunking을 설정하였습니다.



중간에 Hub는 당연히 모든 전기 신호를 Flooding 하기 때문에 두 Switch 간에는 Trunking이 될 겁니다. 그 다음에 Hub에 사용자를 연결하여 통신을 시도합니다. 그런데, PC는 자신의 VLAN 정보를 모르기 때문에 일반 Frame을 전송할 겁니다.

Frame이 Hub를 거쳐 Switch에 도착하면, Switch는 이 Frame의 VLAN을 알아야 해당 VLAN으로 전송을 할텐데 VLAN 정보가 없으니 참 난감할겁니다. 난감하면 어떻게 합니까? 우리도 난감하면 못들은척 하죠? 조용히 Discard 시키면 되겠군요. ^^

이때, VLAN 정보가 없는 Frame에 대해서 몇번 VLAN을 할당할 것인가를 결정하는 것이 Native VLAN 입니다. 쉽죠? 모든 기술은 생겨난 이유가 있고 알고보면 별거 아니라니까요.

오늘 메일링은 여기까지 진행하도록 하겠습니다.
오늘도 역시.... 또 다시.... 이경태였습니다.

'네트워크 기초' 카테고리의 다른 글

'switchport mode'의 이해  (2) 2010.05.14
Native VLAN의 이해  (2) 2010.05.13
802.1Q Trunk의 이해  (0) 2010.05.12
ISL Trunk의 이해  (0) 2010.05.11
Trunk에 대한 잘못된 상식을 깨자!  (1) 2010.05.04
VLAN의 한계와 Trunk  (0) 2010.05.01

ISL Trunk의 이해

네트워크 기초 | 2010.05.11 12:04 | Posted by 승진아빠


오늘은 Trunk 기술 중 ISL에 대해 설명드리도록 하겠습니다. ISL은 Cisco Only Protocol입니다. 타 벤더와 Trunking을 하려면 사용할 수 없는 기술이겠죠! 자, 하나씩 알아보도록 하시죠.....

■ ISL은 Encapsulation 방식을 사용합니다.

Network에 새로운 기술이 생기면 자신의 정보를 넣기 위해서 항상 Header를 이용합니다. L2 기술은 Layer 2 Header를 이용하고 L3 기술은 Layer 3 Header를 이용하게 되죠.

또한, Header를 이용하는 기술은 2 분야로 나누어지게 되는데, 하나는 Encapsulation 방식이고, 다른 하나는 Tagging 방식입니다. Encapsulation 방식이란 기존 Data를 변경하지 않고 새로운 Header를 추가하는 방식을 이야기하며, Tagging 방식은 기존 Header에 자신의 정보를 추가하여 기존 Data를 변경하는 방식을 이야기 합니다.

ISL은 L2 기술이기 때문에 당연히 Layer 2 Header를 이용하게 될 것이고, Encapsulation 방식을 채택하여 VLAN 정보를 전달하기 위해 기존 Data를 변경하지 않고 새로운 Header를 추가하는 방식으로 동작합니다. 그럼 어떤 정보가 추가되는지 확인해 보도록 하시죠.

■ ISL Header 구조의 이해

ISL은 다음과 같이 기존 Data를 Encapsulation Frame 부분이 넣습니다. Encapsulation Frame에는 Destination MAC address부터 FCS 값까지 모두 들어있는 완벽한 Frame 입니다.

ISL Header

Encapsulation Frame

FCS

그리고, 추가되는 Header는 다음과 같은 정보가 들어가 있습니다.

No. of bits

40

4

4

48

16

24

24

Frame field

DA

TYPE

USER

SA

LEN

AAAA03(SNAP)

HSA

No. of bits

15

1

16

16

8 to 196,600 bits (1 to 24,575 bytes)

32

Frame field

VLAN

BPDU

INDEX

RES

ENCAP FRAME (기존 Data)

FCS

 

하나씩 살펴보도록 하겠습니다.
○ DA : 40 bit의 ISL address 입니다. ISL은 48bit의 Destination MAC address를 사용하여 전송하는 것이 아니라, 40 bit로 구성된 '0x01-00-0C-00-00'이나 '0x03-00-0C-00-00'과 같은 L2 multicast address를 사용합니다.

○ Type : Frame의 type을 나타내는 필드로 경우는 다음과 같습니다.

TYPE Code

Meaning

0000

Ethernet

0001

Token Ring

0010

FDDI

0011

ATM


○ User : QoS 등을 위해서 정의된 Field로 거의 사용되지 않고 있습니다.

USER Code

Meaning

XX00

Normal Priority

XX01

Priority 1

XX10

Priority 2

XX11

Highest Priority


○ SA - Source Address : ISL Frame을 전송한 Switch의 Port MAC address 정보입니다.

○ Length : Original Frame의 크기가 등록되어 있습니다. 즉, ENCAP FRAME의 크기겠죠!

○ AAAA03(SNAP) : 802.3에서 SNAP Protocol 정보와 LLC 정보를 넣는 Field로 항상 AAAA03으로 설정되어 있습니다. 요즘에는 별로 관심없는 부분이지만, 추후에 시간이 되면 정리해 드리도록 하겠습니다.

○ HSA : Source MAC address에서 벤더 코드 부분인 상위 24 bit가 들어 있습니다. 이것도 마찬가지로 802.3에서 정의를 내린 것이죠. ISL은 Cisco Only Protocol 이기 때문에 Cisco가 최초로 받았던 MAC address 번호인 '0x00-00-0C'가 항상 세팅되어 있습니다.

○ VLAN : 드디어 VLAN 정보를 담는 Field가 나오는군요. 15bit로 되어 있고 실제로는 10bit만 사용되어 오다가 Extended VLAN 정보를 담기 위해 12bit를 사용하기도 합니다.

○ BPDU : ENCAP FRAME이 BPDU인지 아닌지를 나타내는 bit로 이 기능을 가지고 VLAN 별로 STP를 돌리는 PVST(Per VLAN Spanning Tree) 기능을 만들게 되었습니다. 추후에 설명드리겠지만, 표준 Trunking 방식인 802.1q는 이 bit를 만들지 않아서 PVST가 불가능하게 되죠. 물론 Cisco에서 PVST+를 만들어 극복하기는 하지만요. BPDU 뿐만 아니라 CDP와 VTP Frame에도 Check가 되죠. 모두 Cisco Only Protocol 이네요. ^^

○ INDX - Index : ISL을 전송한 Switch의 Port ID가 정보가 들어갑니다.

○ RES : Token Ring이나 FDDI를 사용하는 경우 AC, FC, LSB 값이 들어간다고 되어 있는데, 잘 모르는 분야 아는척 하지는 않을께요. 그냥 Ethernet을 사용할 경우에는 모두 '0'으로 설정되어 있습니다. ^^

○ FCS : L2 Header 이기 때문에 Error Detection을 위해 뒤에 CRC에 의한 FCS값을 붙여 줍니다. 물론 기존 FCS는 ENCAP FRAME 안에 붙어 있는 상태고요. 또 하나를 추가한다고 보시면 됩니다.

VLAN 정보를 보내기 위해 무지하게 많은 노력을 기울였군요. VLAN 12 bit 정보를 전달하기 위해 30 byte를 추가하다니... 정신 나간 것이 틀림없습니다. 그러니 Server 만들겠다고, IT 시장에서 지켜오던 Rule을 깨려는거 아니겠습니까?

Network은 점점 오픈, 공유, 협업 등을 위해서 발전해 나가고 있는데, 전세계 최대 Network 장비회사가 돈을 조금 더 벌어보겠다고 독점을 선택하다니요.............. 개인적으로 문제가 있다고 생각합니다.
오늘 메일링은 여기서 마치겠습니다.

이경태였습니다. ^^

'네트워크 기초' 카테고리의 다른 글

Native VLAN의 이해  (2) 2010.05.13
802.1Q Trunk의 이해  (0) 2010.05.12
ISL Trunk의 이해  (0) 2010.05.11
Trunk에 대한 잘못된 상식을 깨자!  (1) 2010.05.04
VLAN의 한계와 Trunk  (0) 2010.05.01
'VLAN'이 뭐지?  (1) 2010.04.30