태터데스크 관리자

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

태터데스크 메시지

저장하였습니다.
 

 
블로그 이미지
[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분 정도에 간단히 설명이 가능할텐데 안타깝군요.

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

티스토리 툴바