Count to Infinity in Distance Vector Routing Protocol (DVRP)
Distance Vector 알고리즘은 다른 라우터로 가는 최적 경로를 forwarding table에 저장해놓는다. 위와 같은 상황에서 Y에서 X로 가는 비용이 60으로 증가한다면 어떻게 될까?
Y라우터는 인접 라우터들에 자신이 X로 가는 비용이 60으로 증가했음을 알리고, 최적 경로를 다신 계산하게 된다. 이때 Y라우터는 Z로부터 Z는 X라우터 까지 가는데 5의 비용이 든다는 정보를 얻게 된다. 오직 주변 노드의 정보로만 경로를 판단하기에 Y는 Z 노드까지만 가면 어떻게든 Z에서 X까지 5의 비용으로 갈 수 있다고 생각해 Y에서 Z를 가는 비용 1을 더해 X노드까지 6의 비용으로 갈 수 있다고 생각하게 된다. 즉 X로 가는 비용을 6으로 변경한다.
이후 Z노드는 Y노드까지만 가면 Y에서 알아서 X까지 6의 비용으로 간다고 판단한다. 따라서 Z에서 Y노드 가는 비용 1을 더해 7의 비용이면 X노드까지 갈 수 있을 거라고 생각하게 되어 X로 가는 비용을 7로 변경한다.
이후 Y는 Z로 가는 비용을 8로 변경, Z는 X로 가는 비용을 9로 변경한다. 이러한 연산을 44번 반복하고 나면 Y에서 X를 가는데 50이 든다는 것을 알게 되며, 이때 드디어 Z는 Y를 통해 가면 50 + 1 = 51의 비용이 들고 Y를 통해서가 아닌 바로 X로 가는 비용이 더 적은것을 알게 된다.
Poisoned Reverse
Poison Reverse is a loop avoidance method used in Routing Information Protocol (RIP) in Distance Vector Routing Protocol (DVRP) which allows a RIP enabled interface setting the cost of the route (i.e. setting hop count which generally ranges from 0 to 15) that it gets from its neighboring routers to 16 (here 16 will be considered as infinity) which shows that given route is unreachable so send the route back. When the neighboring route receives this route with cost 16, it deletes the useless routes from its routing table which further prevents the looping.
Poison Reverse is used to tackle the count-to-Infinity problems and one can imagine it as a reverse of the Split Horizon method. With the help of poison reverse, we can advertise the route advertisement which would be suppressed by a split-horizon with a distance of infinity.
위와 같은 Count to Infinity problem을 해결할 수 있는 방법은 여러가지가 있지만 그 중 하나인 Posioned Reversed에 대해 알아보자
만약 Z노드에서 Y를 통해 X를 가는게 최적의 경로라면, Z노드가 Y노드에게 자신은 X로 가는 비용이 무한대라고 전하는 방식이 Posioned Reverse이다(위에서는 forwarding table을 하나로 표현했지만 사실은 모든 라우터마다 forwarding table을 갖고 있다). 이렇게 하면 2번의 iteration 이면 최적 경로를 제대로 갱신할 수 있다.
예를들어 Y에서 X로 가는 비용이 60으로 늘어났다고 하자.
Y노드는 Z노드를 통해 X를 가면 무한대의 비용이 든다고 생각해 바로 X노드로 가는 60이 최적 경로라로 판단하고 갱신한다. Z노드는 Y를 통해 X를 가면 61의 비용이 드는 것을 알 수 있다.
댓글