라우터의 핵심 기능은 패킷이 이동할 최적의 경로를 설정한 뒤 해당 경로로 패킷을 이동시키는 것입니다. 이를 라우팅이라고 합니다. 라우팅 테이블이 만들어지는 방법과 프로토콜에 따라 라우팅을 분류하면 아래 그림과 같이 표현할 수 있습니다.
라우터와 라우팅 테이블
라우터
네트워크 계층의 장비로 라우터만 알아도 큰 무리가 없을 정도로, 라우터는 네트워크 계층의 핵심 기능을 담당합니다. 사실 L3 스위치라고 부르는 장치도 네트워크 계층의 대표 장치이기는 하지만, 오늘날 라우터와 L3 스위치는 기능상 상당 부분 유사하므로 엄밀히 구분하지 않는 경우가 많습니다. 라우터는 허브나 스위치보다 높은 계층에 속하는 장치이므로 기능적으로는 사실상 여러 분이 사용하는 컴퓨터와 매우 유사합니다.
일반적으로 가정 환경에서는 공유기가 라우터의 역할을 대신합니다. 이런 점에서 공유기를 홈 라우터(home router)라고 부르기도 합니다. 사실 공유기는 라우터 기능뿐만 아니라 NAT 기능, DHCP 서버 기능, 보안을 위한 방화벽 기능 등 다양한 장치의 기능이 합축된 네트워크 장비라고 볼 수 있습니다.
멀리 떨어져 있는 호스트 간의 통신 과정에서 패킷은 서로에게 도달하기까지 여러 라우터를 거쳐서 다양한 경로로 이동할 수 있습니다. 전송한 패킷은 여러 대의 라우터를 깡충깡충 거치듯이 수신지까지 이동하는 셈입니다. 이처럼 라우팅 도중 패킷이 호스트와 라우터 간에, 혹은 라우터와 라우터 간에 이동하는 하나의 과정을 홉(hop)이라고 부릅니다. 즉, 패킷은 ‘여러 홉을 거쳐’ 라우팅될 수 있는 것입니다.
라우팅 테이블
라우팅의 핵심은 라우터가 저장하고 관리하는 라우팅 테이블입니다. 라우팅 테이블은 특정 수신지까지 도달하기 위한 정보를 명시한 일종의 표와 같은 정보입니다. 라우터는 라우팅 테이블을 참고하여 수신지까지의 도달 경로를 판단합니다. 라우팅 테이블에 포함된 정보는 라우팅 방식에 따라, 호스트의 환경에 따라 달라질 수 있습니다. 하지만 공통적인 정보이자 핵심적인 정보로는 수신지 IP 주소와 서브넷 마스크, 다음 홉이 있고, 이외에도 라우팅 테이블에 명시되는 대표적인 정보로 네트워크 인터페이스와 메트릭이 있습니다.
-
수신지 IP 주소와 서브넷 마스크: 최종적으로 패킷을 전달할 대상을 의미합니다.
-
다음 홉: 최종 수신지까지 가기 위해 다음으로 거쳐야 할 호스트의 IP 주소나 인터페이스를 의미합니다. 게이트웨이라고 명시되기도 합니다.
-
네트워크 인터페이스: 패킷을 내보낼 통로입니다.
-
인터페이스(NIC) 이름이 직접적으로 명시되거나, 인터페이스에 대응하는 IP 주소가 명시되기도 합니다.
-
메트릭: 해당 경로로 이동하는 데에 드는 비용을 의미합니다. 흔히 매장에서 같은 류의 물건을 살 때 더 저렴한 물건을 선택하는 것과 같습니다. 일상에서 가성비가 좋은 물품이 선호되듯, 라우터가 라우팅 테이블에 있는 경로 중 패킷을 내보낼 경로를 선택할 때도 메트릭이 낮은 경로를 선호합니다.
-
예를 들어, 192.168.2.0/24 (호스트 IP 주소 범위 192.168.2.1~192.168.2.254)인 패킷은 eth0(인터페이스)를 통해 192.168.2.1(게이트웨이)로 전송하라는 것을 의미합니다.
디폴트 라우트 패킷 내의 수신지 IP 주소가 라우팅 테이블에 있는 수신지 IP 주소, 서브넷 마스크 항목과 완벽하게 합치되는 경우가 있지만, 그렇지 않은 경우도 있습니다. 다시 말해 라우팅 테이블에 없는 경로로 패킷을 전송해야 할 때가 있습니다. 이 경우 기본적으로 패킷을 내보낼 경로를 설정하여 해당 경로로 패킷을 내보낼 수 있습니다. 이 기본 경로를 디폴트 라우트라고 합니다. 디폴트 라우트는 모든 IP 주소를 의미하는 0.0.0.0/0로 명시합니다. 예를 들어 수신지 IP 주소가 1.2.3.4인 패킷의 경우, 다음 라우팅 테이블에서 다른 어떤 항목과도 합치되지 않으므로 설정된 디폴트 라우트, 즉 eth2를 통해 192.168.0.1로 전송됩니다.
기본 게이트웨이는 호스트가 속한 네트워크 외부로 나아가기 위한 첫 번째 경로이고, 일반적으로 라우터 주소를 의미하는 경우가 많습니다. 여기서 기본 게이트웨이로 나아가기 위한 경로가 디폴트 라우트인 셈입니다.
가령 네트워크 내부 호스트 A가 네트워크 외부 호스트 B에게 패킷을 전달해야 합니다고 가정해봅시다.
- A의 라우팅 테이블에 B에 이르는 경로가 따로 없을 경우, A는 우선 패킷을 라우터(기본 게이트웨이)에 전달해야 할 것입니다.
- 이를 위해 A는 라우터 주소인 기본 게이트웨이를 디폴트 라우트로 삼습니다.
- 그럼 A는 라우팅 테이블에 따로 수신지 경로가 등록되어 있지 않은 패킷들은 기본적으로 라우터에게 전달하게 되는 것입니다.
핵심은 라우팅을 해 주는 네트워크 장비인 라우터는 라우팅 테이블을 통해 패킷을 수신지까지 전달할 수 잇다는 점이고, 라우팅 테이블 안에는 네트워크상의 특정 수신지까지 도달하기 위한 정보들이 담겨있습니다는 점입니다.
정적 라우팅과 동적 라우팅
라우팅 테이블을 만드는 방법은 크게 두 가지 방법이 있습니다.
정적 라우팅
정적 라우팅은 사용자가 수동으로 직접 채워 넣은 라우팅 테이블의 항목을 토대로 라우팅되는 방식입니다. 예를 들어 다음과 같이 라우팅 테이블 항목을 다루는 명령어가 있습니다. 이처럼 수동으로 구성된 라우팅 테이블 항목을 통해 수행되는 라우팅을 정적 라우팅이라 표현합니다.
동적 라우팅
네트워크의 규모가 커지고 관리해야 할 라우터가 늘어나면 정적 라우팅만으로는 관리가 버겁다. 수동으로 라우팅 테이블 항목을 입력해야 하는 정적 라우팅의 특성상 입력 실수가 발생할 수도 있습니다. 또한 설령 실수 없이 입력했다고 할지라도 라우팅되는 경로상에 예상치 못한 문제가 생길 수 있습니다. 이때 사용할 수 있는 방식이 바로 동적 라우팅입니다. 동적 라우팅은 자동으로 라우팅 테이블 항목을 만들고, 이를 이용하여 라우팅하는 방식을 의미합니다. 이러한 이유로 동적 라우팅을 하면 라우팅 테이블 항목이 수시로 변할 수 있습니다. 그렇다면 동적 라우팅은 어떻게 자동으로 라우팅 테이블 항목을 만드는 것일까? 모든 라우터는 특정 수신지까지 도달하기 위한 최적의 경로를 찾아 라우팅 테이블에 추가하려 노력합니다. 이를 위해 라우터끼리 서로 자신의 정보를 교환하게 되는데, 이 과정에서 사용되는 프로토콜이 바로 동적 라우팅 프로토콜입니다.
AS(Autonomous System)
동일한 라우팅 정책으로 운용되는 라우터들의 집단 네트워크인 AS(Autonomous System)가 있습니다. 한 회사나 단체에서 관리하는 라우터 집단을 AS라고 생각해도 좋습니다. AS마다 인터넷상에서 고유한 AS 번호(ASN; Autonomous System Number)가 할당됩니다. AS 번호는 사설 IP 주소처럼 사설 AS 번호도 있지만, 일반적으로 AS 번호를 칭할 때는 고유한 번호를 일컫는 경우가 많습니다. 한 AS 내에는 다수의 라우터가 있습니다. 라우터들은 AS 내부에서만 통신할 수도 있고, AS 외부와 통신할 수도 있습니다. AS 외부와 통신할 경우, AS 경계에서 AS 내부로 통신을 주고받을 수 있는 AS 경계 라우터(ASBR; Autonomous System Boundary Router)라는 특별한 라우터를 이용합니다.
라우팅 프로토콜
라우팅 프로토콜은 라우터끼리 자신들의 정보를 교환하며 패킷이 이동할 최적의 경로를 찾기 위한 프로토콜입니다.
라우팅 프로토콜은 크게 AS 내부에서 수행되느냐, AS 외부에서 수행되느냐에 따라 종류를 나눌 수 있습니다.
- IGP(Interior Gateway Protocol) : AS 내부에서 라우팅하는 프로토콜
- EGP(Exterior Gateway Protocol) : AS 외부에서 라우팅 하는 프로토콜
IGP
대표적인 IGP로는 RIP(Routing Information Protocol)과 OSPF(Open Shortest Path First)가 있습니다. 이 프로토콜들은 최적의 경로를 선정하는 과정에서 거리 벡터가 사용되느냐, 링크 상태가 사용되느냐로 구분할 수 있습니다. RIP는 거리 벡터를, OSPF는 링크 상태를 사용하는 라우팅 프로토콜입니다.
RIP
RIP는 거리 벡터 기반의 라우팅 프로토콜입니다. 여기서 거리 벡터 라우팅 프로토콜이란 이름 그대로 거리를 기반으로 최적의 경로를 찾는 라우팅 프로토콜을 의미합니다. 그리고 여기서 말하는 거리는 패킷이 경유한 라우터의 수(=홉의 수)를 의미합니다.
RIP는 인접한 라우터끼리 경로 정보를 주기적으로 교환하며 라우팅 테이블을 갱신합니다. 이를 통해 라우터는 특정 수신지에 도달하기까지의 홉 수를 알 수 있습니다. 그리고 특정 수신지까지 도달하기 위해 '홉 수가 가장 적은 경로'를 최적의 경로라고 판단합니다. 그렇기에 홉 수가 적을수록 라우팅 테이블 상의 메트릭 값도 작아진다.
OSPF
OSPF는 링크 상태 라우팅 프로토콜입니다. 네트워크는 그래프의 형태를 띠며, 노드와 간선(링크)으로 이루어져 있습니다.
OSPF는 이러한 링크 정보를 비롯한 현재 네트워크의 상태를 그래프의 형태로, 링크 상태 데이터베이스(LSDB; Link State DataBase)에 저장합니다. 링크 상태 데이터베이스에는 라우터들의 연결 관계, 연결 비용 등 현재 네트워크의 상태를 그래프로 표현하기 위한 데이터가 저장되어 있습니다. 라우터는 이 링크 상태 데이터베이스를 기반으로 현재 네트워크 구성을 마치 지도처럼 그린 뒤에 최적의 경로를 선택합니다. 즉, 라우터를 노드라 생각하고 그래프 자료구조를 만들어서 최단거리 알고리즘을 통해서 최적의 경로를 구하는 것입니다.
- OSPF에서는 최적의 경로를 결정하기 위해 대역폭을 기반으로 메트릭을 계산합니다.
- 대역폭이 높은 링크일수록 메트릭이 낮은 경로로 인식합니다.
- 라우터 간에 경로 정보를 주기적으로 교환하며 라우팅 테이블을 갱신하는 RIP과 달리, OSPF는 네트워크의 구성이 변경되었을 때 라우팅 테이블이 갱신됩니다.
네트워크 구성이 변경될 때마다 라우팅 테이블이 갱신됩니다면, 네트워크의 규모가 매우 커졌을 때는 링크 상태 데이터베이스에 모든 정보를 저장하기가 어렵습니다. 최적의 경로를 갱신하는 연산 부담도 커질 수 있습니다. 이에 OSPF에서는 AS를 에어리어(area)라는 단위로 나누고, 분된 에어리어 내에서만 링크 상태를 공유합니다. 에어리어에는 위 그림처럼 번호가 부여되어 있으며, 에어리어 경계에 있는 ABR(Area Border Router)이라는 라우터가 에어리어 간의 연결을 담당합니다.
EGP:BGP
대표적인 EGP로는 BGP(Border Gateway Protocol)가 있습니다. BGP는 AS 간의 통신에서 사용되는 대표적인 프로토콜로, 엄밀하게는 AS 간의 통신이 ‘가능한’ 프로토콜입니다. 따라서 BGP로 AS 내부의 라우터 간 통신도 가능합니다.
- eBGP(external BGP) : AS 간의 통신을 위한 BGP
- iBGP(internal BGP) : AS 내부의 통신을 위한 BGP
AS 간에 정보를 주고받기 위해서는 AS 내에서 eBGP를 사용하는 라우터(이하 BGP 라우터)가 하나 이상 있어야 하고, 또 다른 AS의 BGP 라우터와 연결되어야 합니다. 이 연결은 BGP 라우터 간에 BGP 메시지를 주고받음으로써 이루어지는데, BGP 메시지를 주고받을 수 있도록 연결된 BGP 라우터를 피어(peer)라고 정의합니다. 즉, 다른 AS와의 BGP 연결을 유지하기 위해서는 BGP 라우터끼리 연결되어 피어가 되어야 합니다. 이렇게 피어 관계가 되도록 연결되는 과정을 피어링(peering)이라 합니다.