iBetter Books
수정

거리벡터와 링크상태

라우터들이 서로 경로 정보를 교환하는 방식에는 크게 두 가지 철학이 있습니다. 거리벡터와 링크상태입니다. 어느 쪽이 더 낫다기보다, 각각 다른 상황에 어울리는 장단점이 있습니다.

거리벡터 — 소문으로 길을 찾다

거리벡터 방식에서 라우터는 이웃에게만 자신의 라우팅 테이블을 주기적으로 알립니다. '나는 A까지 2홉, B까지 3홉으로 갈 수 있어'라고 이웃에게 말하는 것입니다. 이웃 라우터는 이 정보를 받아 자기 테이블을 갱신하고, 다시 자기 이웃에게 전달합니다. 소문이 퍼지듯 경로 정보가 퍼져나갑니다.

RIP이 대표적인 거리벡터 프로토콜입니다. 구현이 단순하고 설정이 쉽습니다. 그러나 두 가지 약점이 있습니다. 먼저 홉 수로 거리를 측정하는데, 느린 링크가 빠른 링크보다 홉이 적으면 느린 쪽으로 경로가 잡혀버립니다. 또 카운트 투 인피니티 문제가 있습니다. 어느 링크가 끊겼을 때 라우터들이 잘못된 경로를 서로 주고받으며 홉 수가 끝없이 올라가는 현상입니다. RIP은 15홉을 최대 거리로 설정해 이 문제를 제한하지만, 그래서 대규모 네트워크에는 쓸 수 없습니다.

링크상태 — 지도를 직접 그리다

링크상태 방식의 라우터는 자신에게 연결된 링크 정보를 네트워크 전체에 알립니다. '나는 A 라우터와 10Mbps로, B 라우터와 100Mbps로 연결되어 있어'라는 식입니다. 모든 라우터가 이 정보를 수집하면, 결국 전체 네트워크 지도를 각자 가지게 됩니다. 그 지도를 바탕으로 다익스트라 알고리즘을 실행해 가장 빠른 경로를 직접 계산합니다.

OSPF가 대표적인 링크상태 프로토콜이며, 기업 내부 네트워크에서 가장 많이 쓰입니다. 링크의 대역폭, 지연, 신뢰도 등을 비용으로 계산하므로 실제 성능을 반영한 경로를 찾아냅니다. 변화가 생기면 즉시 전파되어 빠르게 수렴합니다. 단점은 네트워크 전체 지도를 유지하므로 메모리와 연산량이 많다는 점입니다.

BGP — 인터넷 그 자체

기업 내부(AS 내부)에서는 OSPF나 RIP을 씁니다. 그런데 KT, SK브로드밴드, 아마존 AWS처럼 서로 다른 거대 네트워크 사이에서는 어떻게 경로를 교환할까요. 이 역할을 하는 것이 BGP입니다.

BGP는 거리벡터 계열이지만 단순한 홉 수가 아니라 경로 속성, 정책, 협상을 모두 고려합니다. 사실상 인터넷의 뼈대를 이루는 프로토콜입니다. '내 네트워크(AS)를 거치면 이 주소까지 갈 수 있어'라고 이웃 AS에 광고하고, 각 AS는 비용, 계약, 우선순위에 따라 어느 경로를 택할지 결정합니다. BGP 없이는 서로 다른 ISP의 네트워크가 연결될 수 없습니다.

이론으로 배운 경로를 실제로 눈으로 보고 싶다면 다음 절을 보면 됩니다. traceroute 명령 하나로 내 패킷이 어떤 라우터들을 거쳐 목적지에 닿는지 추적할 수 있습니다.