본문 바로가기

서버운영 (TA, ADMIN)/네트워크

[네트워크] 라우팅 개요

라우터(router)는 패킷(packet)의 목적지 주소를 확인하고, 목적지와 연결되는 인터페이스로 전송하는 역할을 합니다. 이와 같은 라우터의 기능을 라우팅(routing)이라고 합니다. 특히, IP 라우팅이란 패킷의 목적지 IP 주소를 참조하여 길을 찾아주는 것입니다.



라우터의 기본 기능


라우터의 기본 기능에 대해 좀 더 자세히 살펴보겠습니다. 라우터는 방화벽, 가상 사설망(VPN) 등의 기능도 제공하지만 가장 기본적이고 중요한 두가지 역할은 경로를 결정하는 것과 결정된 경로에 따라 패킷을 전송하는 것입니다.


일반적으로 네트워크는 다음 그림과 같이 수많은 라우터로 연결되어 있습니다. 라우터들은 서버로부터 수신한 패킷을 PC까지 전송하기 위해 다수의 경로 중 특정한 것을 선택하며, 이것이 경로 결정 기능입니다. 라우팅을 위한 경로가 결정된 다음, 수신한 패킷을 목적지와 연결되는 인터페이스로 전송시키는데 이것을 패킷 전송 또는 스위칭 기능이라고 합니다.



라우팅 경로 결정

라우팅 경로는 동적 경로(dynamic route)와 정적 겅로(static route)가 있습니다. 동적 경로는 라우팅 프로토콜(routing protocol)을 사용하여 동적으로 알아낸 경로를 의미합니다. 현재 사용되는 주요 라우팅 프로토콜은 EIGRP, OSPF 및 BGP 등이 있습니다. 정적 경로는 특정 목적지로 가는 경로를 네트워크 관리지가 직접 지정한 것을 말합니다.


정적 경로와 동적 경로 모두 나름대로 장단점을 가지고 있습니다. 일반적인 소규모 네트워크에서는 정적인 라우팅 방식을 주로 사용하고, 중규모 이상의 네트워크에서는 동적인 라우팅 방식을 사용하면서 보조 수단으로 정적인 라우팅을 사용합니다.


라우팅 프로토콜의 목적은 각 라우터가 자신이 알고있는 목적지 네트워크 관련 정보를 다른 라우터에게 알려주기 위한 것입니다. 라우터는 다른 라우터들로부터 라우팅 정보를 수신한 다음, 그 중에서 최적의 경로를 선택하여 라우팅 테이블에 저장합니다. 라우팅 테이블(routing table)이란 목적지 네트워크 및 목적지 네트워크와 연결되는 인터페이스를 기록한 데이터베이스입니다. 


라우팅 프로토콜은 특정 경로가 다운(down)되면 또 다른 경로를 찾습니다. 더 좋은 경로를 찾으면 현재의 경로를 새로운 것으로 대체합니다. 라우터의 경로 결정 기준과 경로 유지 방식은 라우팅 프로토콜마다 다릅니다.



패킷 전송

이렇게 라우팅 테이블이 만들어지면 해당 라우터는 특정 목적지 네트워크로 가는 패킷을 라우팅시킬 수 있습니다. 라우터가 패킷을 수신하고, 라우팅 테이블에 따라 정해진 목적지 인터페이스로 해당 패킷을 전송하게 됩니다.


1) 수신한 패킷의 레이어 2 정보를 확인한다.

패킷을 감싸고 있는 레이어 2 헤더(header) 정보까지를 포함한 데이터의 꾸러미를 프레임(frame)이라고 합니다. 레이어 2 헤더의 구성은 사용하는 레이어 2 프로토콜에 따라 다릅니다. 주로 많이 사용하는 레이어 2 프로토콜은 이더넷, PPP(Point-to-Point Protocol), 프레임 릴레이 등이 있습니다.

라우터는 수신한 프레임의 에러 발생 여부를 확인하고, 만약 이상이 발생한 프레임이면 폐기합니다. 다음에는 각 프레임 헤더에 있는 레이어 2 목적지 주소(예를 들어, 이더넷 프레임의 목적지 MAC주소)가 라우터 자신의 것인지 확인합니다. 프레임의 목적지 주소가 라우터 자신의 것이 아니면 해당 프레임을 폐기합니다. 프레임의 목적지 주소가 라우터 자신의 것이면 레이어 2 헤더를 제거하고, 내부의 패킷을 상위 계층 프로세스로 전달합니다.


2) 수신한 패킷의 목적지 IP 주소를 확인한다.


3) 라우팅 테이블을 참조하여 목적지 IP 주소와 연결되는 인터페이스를 찾는다. 실제로는 라우팅 테이블을 이용하여 미리 만들어 놓은 캐시 정보를 참조하여 출력 인터페이스를 결정한다. 만약, 라우팅 테이블에 해당 패킷의 목적지에 대한 정보가 없으면 패킷을 폐기한다.


4) 넥스트 홉 장비(next hop, 목적지로 가는 경로의 다음 장비)의 레이어 2 주소를 알아내고, 이를 이용하여 넥스트 홉으로 전송할 프레임을 만든다. 넥스트 홉 장비가 이더넷으로 연결되어 있는 경우, 넥스트 홉 장비의 이더넷 MAC 주소를 이더넷 프레임의 목적지 MAC 주소로 설정한다.


5) 목적지와 연결되는 인터페이스로 패킷(프레임)을 전송한다.

결과적으로 패킷이 출발지에서 목적지까지 가는 동안 라우터를 거칠 때마다 레이어 2 헤더(프레임 헤더)는 계속 변경된다. 그러나, IP 주소를 변환시키는 NAT(Network Address Translation)나 가상 사설망(VPN, Virtual Private Network) 등을 사용하지 않는다면 IP 주소는 변화가 없다. 앞서 설명한 1)에서 5)까지의 과정을 수행하는 것을 라우터의 스위칭 기능이라고 한다. 라우터의 경로 결정 동작은 주기적 또는 한번만 일어나는 반면, 스위칭은 패킷이 송,수신되는 동안 끊임없이 일어난다. 요즘 사용되는 대부분의 라우터는 라우팅 테이블을 직접 확인하지 않고, 라우팅 테이블을 이용하여 미리 만들어 놓은 캐시 정보만으로 스위칭 한다.

라우터의 스위칭 방식은 라우팅 테이블을 참조하느냐 또는 캐시 정보만을 참조하냐에 따라 프로세스(process) 스위칭, CEF(Cisco Express Forwarding) 등으로 구분합니다. 라우터의 스위칭은 이더넷 스위치의 스위칭과는 동작 방식이 다릅니다. 이더넷 스위치와 라우터의 스위칭 기능의 차이를 표로 나타내면 다음과 같습니다.


 비교 항목

 이더넷 스위치

 라우터

 참조 테이블

 MAC 주소 테이블 

 라우팅 테이블

 참조 PDU

 이더넷 프레임

 IP 패킷

 참조 필드

 목적지 MAC 주소

 목적지 IP 주소

 사용 프레임

 이더넷

 이더넷, 프레임 릴레이, PPP 등

 레이어 2 헤더

 변동 없음

 새로운 헤더로 교체


두가지 스위칭 방식 모두 수신한 프레임을 목적지와 연결되는 인터페이스로 전송하는 동작은 같습니다. 그러나, 이 기능을 수행할 때 이더넷 스위치는 MAC 주소 테이블을 참조하고, 라우터는 라우팅 테이블을 참조합니다. 또, 이더넷 스위치는 수신한 프레임의 목적지 MAC 주소와 MAC 주소 테이블을 참조하여 출력 인터페이스를 결정하지만 라우터는 목적지 IP 주소와 라우팅 테이블을 참조하여 출력 인터페이스를 결정합니다.


이더넷 스위치는 이더넷 프레임만 스위칭시키지만 라우터는 지원 가능한 모든 레이어 2 프레임에 대해서 다 적용됩니다. 프레임이 이더넷 스위치를 통과해도 프레임 헤더 정보는 변함없지만, 라우터를 통과하면 헤더 정보가 변경됩니다.



테스트 네트워크 구성


네트워크의 구성 형태를 토폴로지(topology)라고 합니다. 실제 네트워크는 버스(bus), 링(ring), 스타(star) 형태 등 다양한 형태의 토폴로지로 구성되어 있습니다. 라우팅은 토폴로지에 따라서 동작하는 방식이 다른 경우가 있습니다.


라우팅 테스트를 위해서는 여러 대의 라우터를 이용하여 이와 같은 다양한 토폴로지들을 손쉽게 구성할 수 있어야 합니다. 테스트 환경은 실제 라우터를 사용하거나 에뮬레이션(emulation) 프로그램을 사용하여 구성할 수 있습니다.


실제 라우터를 사용하려면 장비들이 고가일 뿐만 아니라 유지 비용도 만만치 않습니다. 따라서, GNS3, IOL(IOS on Linux), CML(Cisco Modeling Labs)과 같은 프로그램을 사용하면 편리하게 테스트 환경을 구성할 수 있습니다.



물리적인 네트워크 구성

테스트 환경은 6대의 라우터와 1대의 이더넷 스위치로 구성되어 있습니다. 스위치와 연결되는 라우터의 이더넷 포트 번호는 모두 F0/0입니다. 스위치에서 사용한 포트 번호는 라우터 번호와 같습니다. 즉, 라우터 R1과 연결된 스위치 포트 번호는 F1/1이며, R2와 연결된 스위치 포트번호는 F1/2, R3와 연결된 스위치 포트번호는 F1/3 입니다.


또, 각 라우터를 시리얼 인터페이스로도 연결하였습니다. 이때, 앞 라우터의 S1/1 포트와 뒤 라우터의 S1/2 포트가 연결됩니다. 즉, 라우터 R1의 S1/1과 R2의 S1/2가 연결되고, R2의 1/1과 R3의 S1/2가 연결됩니다.


라우터는 시스코 7200 모델을 사용하였고, IOS 버전은 15.2입니다. 스위치는 시스코 3660 모델을 사용하였으며 IOS 버전은 12.4입니다. 모델 및 버전이 조금 달라도 대부분의 경우 별 문제가 되진 않습니다. 그러나, PfR(Performance Routing) 3은 라우터의 IOS 버전 15.5 이상이어야 하고, 현재 GNS3에서는 이 버전이 지원되지 않습니다.  


IOL(IOS on Linux)와 GNS3과의 차이점은 이더넷 포트 이름과 번호입니다. 모든 이더넷 포트는 FastEthernet이 아닌 Ethernet이고, 스위치의 포트 번호는 E0/0-3, E1/0-3입니다. 시리얼 인터페이스는 GNS3과 동일합니다.



논리적인 네트워크 구성

실제 현업에서 구축된 네트워크와 달리 라우팅을 연습할 때에는 물리적인 네트워크는 변경하지 않습니다.


R2, R3의 경우 인터페이스가 3개씩 있어야 하지만, 우리가 앞서 만든 물리적인 네트워크에서는 각 라우터에서 F0/0 포트만 사용하였기 때문에 이와 같은 토폴로지를 만들 수 없습니다. 뿐만 아니라, 앞으로 연습할 여러 가지 토폴로지 마다케이블링(cabling) 등 물리적인 구성을 다시 해야 한다면 어려움이 많습니다.


그러나, 이더넷의 트렁킹(trunking) 기능과 논리적인 인터페이스인 서브 인터페이스(sub-interface)를 사용하면 각 라우터에 F0/0 인터페이스 하나만 있어도 앞의 그림과 같은 토폴로지를 쉽게 만들 수 있습니다. 즉, 다음과 같이 서브 인터페이스를 사용하면 됩니다.


서브 인터페이스는 물리적인 인터페이스 이름 다음에 점(.)을 찍고 적당한 인터페이스 번호를 사용하여 만듭니다. 인접한 두 라우터의 번호를 사용하여 서브 인터페이스 번호를 정하는 것도 좋은 방법입니다. 예를 들어, R1과 R2 사이의 서브 인터페이스 번호는 F0/0.12이고, R2와 R3 사이의 서브 인터페이스 번호는 F0/0.23입니다. 앞의 그림과 같이 두 개 만들어야 하는 경우, 두 번째는 F0/0.32와 같이 뒤 라우터 번호를 먼저 사용합니다. 이처럼 서브 인터페이스를 사용하면 물리적인 구성을 변경하지 않고 자유자재로 토폴로지를 만들 수 있습니다.



루프백 인터페이스

루프백 인터페이스(loopback interface)란 라우터나 스위치에 설정하는 가상의 인터페이스입니다. 루프백 인터페이스를 사용하는 이유는 여러가지가 있습니다. 예를 들어, 실제 네트워크에서는 각 라우터의 이더넷 인터페이스와 스위치를 연결한 후에 PC나 서버 등을 접속합니다.


그러나, 라우팅 연습시에는 테스트할 때 마다 라우터의 이더넷 인터페이스와 이더넷 스위치를 연결하려면 귀찮습니다. 이 경우, 각 라우터에서 이더넷과 같은 물리적인 인터페이스를 사용하는 대신 가상의 인터페이스인 루프백 인터페이스를 만들고, 여기에 할당된 네트워크간에 라우팅을 구현하면 라우팅 연습이 편리합니다.


루프백 인터페이스를 사용하면 원하는 만큼 네트워크를 만들 수 있어, 다수개의 네트워크에 대한 라우팅을 구현하는 환경도 쉽게 구성할 수 있습니다. 루프백 인터페이스는 논리적인 것이어서 튼튼합니다.


즉, 장애로 인하여 다운될 수 있는 이더넷, 시리얼 등과 같은 물리적인 인터페이스에 비하여 루프백 인터페이스는 네트워크 관리자가 다운시키거나 라우터가 다운되지 않는 한 동작합니다.


루프백 인터페이스는 동적인 라우팅 프로토콜인 OSPF, BGP 등에서 라우터 ID로 사용됩니다. 루프백 인터페이스는 interface loopback 명령어를 사용하여 만드는 순간 자동으로 활성화됩니다. 따라서, 별도로 no shutdown 명령어를 사용할 필요가 없습니다. 루프백 인터페이스를 제거하려면 no interface loopback 명령어를 사용하면 됩니다.



라우팅을 위한 네트워크 구성 절차

실제 네트워크에서는 통신 장비간의 연결을 위하여 이더넷, 시리얼, ATM, POS 등 다양한 라우터 인터페이스가 사용됩니다. 그러나, 편의상 라우터의 이더넷 인터페이스와 스위치의 트렁킹 기능을 사용하여 테스트 네트워크를 구성합니다. 테스트 네트워크를 구성할 때, 각 네트워크의 토폴로지는 다르지만 설정하는 순서는 항상 다음과 같습니다.


1) 스위치에서 VLAN과 트렁킹 설정

라우터에서 서브 인터페이스를 사용하려면 스위치에서도 필요한 VLAN을 만들고, 라우터와 연결되는 포트에 트렁킹을 설정해야 한다.


2) 라우터 서브 인터페이스 설정 및 IP 주소 할당

각 라우터에서 서브 인터페이스를 만들고, VLAN 번호 및 IP 주소를 할당한다.


3) 넥스트 홉(next hop) IP 주소까지의 통신 확인

IP 주소 할당이 끝나면, 인터페이스의 상태를 확인하고, 인접한 넥스트 홉 IP 주소까지의 통신을 핑으로 확인한다.


4) 라우팅 프로토콜 설정

넥스트 홉 IP 주소까지 통신이 되면 토폴로지에 따라 라우팅 프로토콜을 설정한다.


5) 원격 네트워크까지의 통신 확인

라우팅 프로토콜 설정이 끝나면 라우팅 테이블을 확인하고, 원격 네트워크까지 통신이 되는지 확인한다.


이제, 앞서 설명한 절차에 따라 다음과 같은 토폴로지를 만들고 라우팅을 설정하여 전체 망에서 서로 통신이 되도록 해보겠습니다. 예를 들어, R1의 Lo0 인터페이스에 설정된 IP 주소 1.1.1.1이 본사 내부의 서버 주소이고 R4의 1.1.4.4가 지사의 PC 주소라고 가정합니다. 우리의 목적은 각 라우터를 설정하여 지사의 PC와 본사의 서버가 서로 통신이 되게 하는 것입니다.


별도의 언급이 없으면 본서에서 사용하는 IP 주소의 서브넷 마스크(subnet mask)는 24비트로 설정합니다. 또, 서브 인터페이스 번호, 서브넷 번호 및 스위치의 VLAN 번호를 모두 동일하게 사용합니다. 앞의 그림에서 R1, R2를 연결하는 서브 인터페이스 번호가 F0/0.12이며, 서브넷 번호는 1.1.12.0/24이고, 스위치의 VLAN 번호는 12입니다.


IP 주소의 호스트 번호는 라우터 번호와 동일합니다.