네트워크

인터넷에서 웹브라우저까지 (5) - Routing Protocol, RIP, OSPF

예 찬 2021. 12. 22. 19:39

 

 

 

송신 호스트와 수신 호스트가 같은 네트워크에 존재한다면 송신 호스트는 수신 호스트에게 바로 데이터를 전송할 수 있습니다.

 

하지만 다른 네트워크에 존재한다면 송신 호스트는 라우터에게 데이터를 전송해야 합니다.

 

라우터는 다른 네트워크로 데이터를 전송할 때 최적의 경로로 데이터를 전송해 주는 장치입니다.

 

 

 

 

여기서 최적의 경로를 정하는 과정을 라우팅이라고 합니다.

 

라우팅은 정적 라우팅(Static Routing)동적 라우팅(Dynamic Routing)으로 나뉩니다.

 

정적 라우팅은 관리자가 수동으로 라우팅 정보를 등록합니다.

 

그렇기 때문에 네트워크 트래픽 변화나 구성의 변화와 같은 네트워크 상황을 반영하기 어렵습니다.

 

 

네트워크 상황을 반영하지 못해 다운된 네트워크를 알아차리지 못한다.

 

 

그래서 대부분의 네트워크에서는 동적 라우팅을 사용합니다.

 

동적 라우팅은 라우터끼리 정보 교환을 통해 얻은 라우팅 정보를 바탕으로 최적의 경로를 계산하여 라우팅 테이블에 등록합니다.

 

정보 교환을 통해 네트워크의 상황을 동적으로 반영하기 때문에 동적 라우팅이라고 불립니다.

 

동적 라우팅에서 라우터끼리 정보 교환은 라우팅 프로토콜에 따라 이루어집니다.

 

라우팅 프로토콜에서 사용하는 알고리즘에는 대표적으로 거리 벡터(Distance Vector) 알고리즘링크 상태(Link State) 알고리즘이 있습니다.

 

거리 벡터 알고리즘은 자신과 직접 연결된 이웃 라우터와 라우팅 정보를 주기적으로 교환하는 방식으로 거리에 기반하여 최적의 경로를 결정합니다.

 

그럼 거리 벡터 알고리즘을 사용하는 라우팅 프로토콜인 RIP(Routing Information Protocol)에 대해 알아보겠습니다.

 

RIP는 목적지까지 도달하는데 필요한 비용을 거리(Hop Count)로 판단하여 최적의 경로를 결정합니다.

 

그렇기 때문에 대역폭이 더 우수한 경로가 있더라도 경유하는 라우터 수 (Hop Count)가 더 많다면 최적의 경로로 선택되지 않습니다.

 

 

 

 

RIP는 30초마다 직접 연결된 이웃 라우터들에게 자신이 가지고 있는 라우팅 테이블 전체를 업데이트 패킷으로 전달합니다.

 

라우터들은 이웃 라우터들로부터 수신된 라우팅 정보를 바탕으로 라우팅 테이블을 작성하게 됩니다

 

그림으로 RIP의 라우팅 테이블 업데이트를 알아보겠습니다.

 

 

 

 

전체 네트워크의 구성과 라우터들의 초기 라우팅 테이블입니다. 

 

30초 후 라우터는 이웃 라우터로부터 업데이트 패킷을 받아 라우팅 테이블을 작성합니다.

 

 

 

 

직접 연결된 이웃 라우터로부터 거리(Hop)와 방향이 포함된 업데이트 패킷을 받아 라우팅 테이블이 업데이트되었습니다.

 

라우터들은 30초 뒤 다시 업데이트 패킷을 받게 됩니다.

 

 

 

 

다음 30초 뒤 업데이트된 라우팅 테이블도 확인해 보겠습니다.

 

 

 

 

RIP는 주기적으로 업데이트 패킷을 교환합니다. 

 

따라서 라우터가 다운되거나 추가되는 상황이 오면 라우팅 테이블에 변경된 상황을 반영할 수 있습니다.

 

하지만 30초마다 업데이트 패킷을 교환하기 때문에 변경 사항을 즉시 반영하지는 못합니다.

 

RIP에서 일정 시간 동안 주기적으로 전달되지 않은 라우팅 정보는 라우팅 테이블에서 삭제됩니다.

 

 


 

링크 상태 알고리즘을 사용하는 대표적인 프로토콜은 OSPF(Open Shortest Path First) 프로토콜입니다.

 

각 호스트들의 통신 경로를 링크라고 부르고 이 링크의 대역폭을 바탕으로 목적지까지 도달하는데 판단되는 비용을 링크 비용이라고 합니다.

 

OSPF 프로토콜은 링크 비용을 계산해서 링크 비용이 더 적은 경로를 최적의 경로를 판단합니다.

 

링크 비용의 계산은 기준 대역폭에 실제 링크의 대역폭을 나눈 값입니다. 

 

기준 대역폭은 Cisco 기준 100Mbps입니다.

 

 

 

 

OSPF 프로토콜은 인접 라우터와 헬로 패킷을 주기적으로 교환하여 네이버(Neighbor) 테이블을 만들고 네이버 테이블에 올라온 라우터와 정보 교환을 통해 LSDB(Link State Database)를 구축합니다. 라우터는 LSDB를 보고 최적의 경로를 계산하여 라우팅 테이블에 등록합니다.

 

 

 

 

OSPF 프로토콜에서 교환하는 헬로 패킷에는 헬로 인터벌과 데드 인터벌, Area ID 등이 포함됩니다.

 

헬로 인터벌은 헬로 패킷을 송신하는 주기로 대부분의 네트워크에서 디폴트 값은 10초입니다.

 

일정 시간 동안 헬로 패킷이 도착하지 않으면 해당 라우터를 네이버 테이블에서 삭제하고 관련된 라우팅 정보를 LSDB와 라우팅 테이블에서도 삭제합니다. 

 

이 시간을 데드 인터벌이라고 하고 디폴트 값은 40초입니다.

 

인접 라우터와 인터벌이 일치하고 Area ID가 같다면 인접 라우터는 이웃 라우터로 네이버 테이블에 등록됩니다.

 

 

 

 

각 라우터는 네이버 테이블에 등록된 라우터들에게 LSA(Link State Advertisement) 패킷을 플러딩합니다.

 

LSA 패킷에는 자신의 라우터 ID, 이웃 라우터 ID, 이웃 라우터와 링크의 상태, 링크 비용 등과 같은 정보들이 포함되어 있습니다.

 

 

 

 

LSA 패킷을 받은 라우터는 LSA 패킷을 보낸 라우터를 제외한 이웃 라우터들에게  다시 LSA 패킷을 플러딩 합니다.

 

라우터들은 LSA 패킷의 내용을 보고 LSDB를 업데이트합니다.

 

LSA 패킷이 플러딩되기 때문에 점차적으로 라우터들은 같은 LSDB를 구축하게 됩니다.

 

 

LSA 패킷을 통해 전체 네트워크의 맵을 알 수 있게 된다.

 

완성된 LSDB

 

 

라우터는 LSDB를 보고 최적의 경로를 Dijkstra's의 최단 경로 알고리즘으로 계산하여 라우팅 테이블에 등록합니다.

 

OSPF 프로토콜에서는 네트워크를 계층적으로 분할하여 라우팅합니다.

 

분할된 네트워크는  Area ID를 가집니다.

 

 

 

 

Backbone Area는 중심 Area로 각 Area에 트래픽을 분배합니다.

 

각 Area들은 Backbone Area에 물리적으로 직접 연결되어 있어야 합니다.

 

ABR(Area Border Router)은 Area 경계에 위치한 라우터로 Backbone Area와 Standard Area 사이에서 라우팅 정보를 전달합니다.

 

각 Area로부터 플러딩된 LSA 패킷에서 거리와 방향을 제외한 정보는 ABR에 의해 차단되기 때문에 다른 Area로 나갈 수 없습니다.

 

결과적으로 같은 Area의 라우터들은 같은 LSDB를 가지게 되고 다른 Area에 대해서는 거리와 방향 정보만 알게 됩니다.

 

이로 인하여 라우터의 자원을 절약하고 부하를 줄일 수 있습니다.

 

 


 

 

라우팅 프로토콜을 통해 만들어진 라우팅 테이블을 보고 라우터들은 최적의 경로로 데이터를 전송할 수 있게 됩니다.

 

 


 

인터넷 프로토콜은 패킷을 목적지로 전송하지만 목적지까지 제대로 전송이 완료되었는지 보장하지 않습니다.

 

신뢰할 수 있는 전송을 책임지는 것은 Transport Layer의 프로토콜에서 이루어집니다.