Distance Vector 라우팅 프로토콜은 이름 그대로 목적지 네트워크에 대하여 거리(Distance = Metric)와 방향(Vector = Next-hop)만을 알고 있는 라우팅 프로토콜이다. 예를 들어 다음과 같은 토폴로지가 있다고 가정해 보자.

  R1은 2.2.2.2/32, 10.10.23.0/24, 3.3.3.3/32 네트워크를 R2로부터 업데이트를 받아 학습하게 될 것이다. 그리고, 4.4.4.4/32, 10.10.45.0/24, 5.5.5.5/32 네트워크를 R4로부터 업데이트를 받아 학습하게 될 것이다. R1의 데이터베이스를 통해 각각의 네트워크에 대해 R1이 어떻게 학습했는지 확인해 보면 다음과 같다.

  R1의 데이터베이스를 살펴보면 2.2.2.2/32, 10.10.12.0/24 네트워크는 Hop이 [1]만큼 떨어져 있고, 10.10.12.2로 보내면 된다는 정보만 가지고 있고, 3.3.3.3/32 네트워크는 Hop이 [2]만큼 떨어져 있고, 10.10.12.2로 보내면 된다는 정보만 가지고 있는 것을 확인할 수 있다.

  그리고, 4.4.4.4/32, 10.10.45.0/24 네트워크는 Hop이 [1]만큼 떨어져 있고, 10.10.14.4로 보내면 된다고 알고 있고, 5.5.5.5/32 네트워크는 Hop이 [2]만큼 떨어져 있고, 10.10.14.4로 보내면 된다는 알고 있다.

  즉, R2 뒤에 R3가 있는지 알 수 없으며, R4 뒤에 R5가 있는지 알 수가 없다. 단지, 목적지까지 거리(Hop)가 얼마나 떨어져 있는지, 어느 방향(Next-hop)으로 보내면 되는지 정보만 알고 있는 것이다. 만일, 다음과 같이 R2가 R1에게 업데이트 할 때 3.3.3.3/32 네트워크에 대해 Hop을 5만큼 추가하라고 설정하면, R1은 3.3.3.3/32 네트워크에 대해서 어떻게 학습하는지 확인해 보자.

  3.3.3.3/32 네트워크에 대해 Hop 수를 2에서 5만큼 추가된 7로 학습한 것을 확인할 수 있다. 이처럼 Distance Vector 라우팅 프로토콜은 토폴로지의 구조를 알지 못하고 인접해 있는 장비가 업데이트 해주는 정보를 기반으로 거리(Metric)만을 비교하여 Best-Path를 선출하게 된다. 그래서, 인접한 장비가 잘못된 정보를 전달하더라도 그대로 믿고 학습하게 되는데 이것을 ‘Routing by Rumer’라고 한다.

  그리고, Distance Vector 라우팅 프로토콜이 만들어질 때 업데이트 정보에 대한 응답 Packet을 만들지 않았다. 그래서, Distance Vector 라우팅 프로토콜은 인접한 장비에게 보낸 업데이트를 해당 장비가 받았는지 못 받았는지 확인을 할 수 있는 방법이 없다. 이 문제를 해결하기 위해 네트워크 정보에 변화가 없어도 주기적으로 업데이트를 보내는 방법을 사용하였다. 예를 들어 RIP 라우팅 프로토콜은 30초에 한번씩 주기적으로 업데이트를 수행한다.

  또한, 업데이트를 보낼 정보가 많을 때 어떤 정보를 받았고, 어떤 정보를 받지 못했는지 확인할 수가 없기 때문에 자신이 가지고 있는 전체 데이터베이스를 모두 보내는 ‘Full Routing Update’ 방법을 사용한다. 그러다 보니, 자신이 Best-Path로 선출한 장비에게도 업데이트를 보내게 되어 라우팅 Loop이 발생하게 되었다. 이 부분에 대해서는 이 책에서는 자세히 다루지 않겠다.

  네트워크에서 라우팅 Loop은 반드시 막아야 하는 문제이다. 그래서, Distance Vector 라우팅 프로토콜은 Split Horizon, Poison Reverse, Hold down Time 등의 기술을 통해 Loop이 발생하는 것을 차단한다.

  그러나, 시스코에서 만든 EIGRP 라우팅 프로토콜은 Distance Vector 계열이지만, 업데이트 정보를 받으면 응답 Packet을 보내도록 만들었다. 그래서, 주기적으로 업데이트를 던질 필요가 없이 네트워크 정보가 변경되었을 때만 업데이트를 수행하면 되고, 업데이트 전송 시 응답을 받지 못한 정보만 다시 업데이트하면 되므로 부분적인 정보만 업데이트 하는 ‘Partial Update’ 방법을 사용한다.

  우리는 OSPF 라우팅 프로토콜을 학습하기 위해 Distance Vector 라우팅 프로토콜을 학습하는 것이니, 다음 내용은 반드시 기억하기로 하자.

  Distance Vector 라우팅 프로토콜은 인접한 장비가 던져주는 정보만을 그대로 믿고 학습하게 되는데, 잘못된 정보가 들어오게 되면 라우팅 Loop이 발생할 수 있다. 그래서, Distance Vector 라우팅 프로토콜은 이것을 막는 기술들을 알고리즘에 작용하였다.

  OSPF 라우팅 프로토콜은 Distance Vector 라우팅 프로토콜의 특성을 일부 가지고 있어서 라우팅 Loop이 발생할 수 있는데, 안타깝게도 Split Horizon, Poison Reverse, Hold down Time 등의 알고리즘을 가지고 있지 않다. 그래서, 라우팅 Loop을 막기 위해 조금은 무식한 방법을 사용했는데 그 부분은 뒤에서 살펴보기로 하겠다.