이 게시물은 <킹 오브 네트워킹 (피터전)>을 공부한 내용을 바탕으로 작성됨.
라우터
라우터(Router)는 수신한 패킷의 목적지 IP 주소 (L3주소)를 참조하여 목적지로 전송시키는 장비이다. 라우터의 역할을 스위치와 비교하면 다음과 같다.
항목 | 스위치 | 라우터 |
동작 계층 | L2 | L3 |
주 용도 | LAN | WAN |
패킷 전송영역 | 동일한 Subnet | 다른 Subnet 간 |
전송 시 참조 DB | MAC address table | Routing table |
DB 생성/유지 | Transparent bridging | Routing protocol |
패킷의 루핑방지 | STP / RSTP / MSTP | Routing protocol |
전송시 참조 필드 | MAC address | IPv4 or IPv6 address |
Broadcast packet | flooding | 차단 |
Multicast packet | flooding | 차단 |
목적지를 모를 때 | flooding | 차단 |
패킷 처리속도 | 빠름 | 느림 |
- 스위치는 프레임 전송시 L2주소 (MAC address)를 사용하는 L2 장비 ⇿ 라우터는 패킷 전송시 L3주소 (IP address)를 사용하는 L3장비
- 이더넷 스위치는 주로 LAN 장비를 연결 ⇿ 라우터는 주로 WAN 장비를 연결 / 하지만 이는 반드시 따라야하는 규칙은 아니다. 스위치로 WAN을 구성하거나 라우터로 LAN을 구성하는 경우도 많다.
- L2 스위치는 동일한 네트워크(=동일 VLAN)을 연결하는 데 사용하지만, 라우터는 서로 다른 네트워크를 연결할 때 사용됨. 따라서 동일한 서브넷을 사용하는 장비들 간 통신에는 라우터가 불필요하며, 장비간 네트워크가 다르면 라우터가 반드시 필요하다.
- 스위치는 frame 전송 시 MAC address table 참조 ⇿ 라우터는 packet 전송 시 routing table 참조
- 스위치는 transparent bridging을 이용하여 MAC address table을 생성, 유지 ⇿ 라우터는 여러 routing protocol을 이용하여 routing table을 생성, 유지함
- 스위치는 frame의 루핑을 방지하기 위해 STP, RSTP, MSTP를 사용 ⇿ 라우터는 routing protocol을 통해 IP or IPv6 패킷의 루핑을 방지
- 스위치는 목적지 MAC address가 Broadcast, multicast 그리고 모르는 목적지일 경우 모든 port로 flooding을 해버리는데, 라우터는 해당 경우의 패킷을 전부 차단해버린다.
라우터는 "브로드캐스트를 차단"하기 때문에 Broadcast domain을 분할할 수 있는 것이다.
또한, 일반적으로 스위치는 LAN이라는 고속환경에서 사용되므로 frame 처리속도가 빠른 반면, 라우터는 비교적 저속 환경인 WAN에서 사용되므로 packet의 처리속도가 느리다.
라우터에서 패킷 전송과정
위 그림은 라우터가 패킷을 목적지까지 전송하는 과정을 나타낸다. 예를들어 PC1의 IP주소는 1.1.1.1/24이고, MAC은 0001이라고 설정하였다.
패킷 전송에서 중요한 점은, 패킷이 목적지로 전송되는 과정에서 MAC address는 라우터를 통과할 때마다 인접한 장비의 MAC address로 계속 변하지만 IP 주소는 항상 일정하다는 것. (MAC address는 네트워크 장비마다의 고유 주소이기 때문에 라우터라는 장비를 거쳐갈 때마다 바뀌는 것이 어쩌면 당연해 보인다.)
이제 PC1에서 PC2로 패킷을 전송하는 과정에서 어떤 일이 발생하는 지 자세히 들여다보록 하자.
① PC1 ➜ PC2로 패킷을 전송할 때 목적지 IP 주소 (PC2의 IP 주소 1.1.4.2)는 사용자가 직접 지정해주거나 DNS(Domain name system, Domain 이름과 IP 주소 간 매핑을 담당)을 통해 1.1.4.2라는 것을 PC1이 알고있다. 하지만 MAC address는 알 수 없다. 패킷을 전송하기 위해서는 목적지의 IP 주소 뿐만 아니라 MAC address 또한 알고있어야 하므로, PC1은 Gateway 1.1.1.2의 MAC address 주소를 찾는 ARP 패킷을 전송한다.
또한, 위 그림에서 스위치는 아예 존재하지 않는 것처럼 보이는데 일반적으로 라우팅 구성도에서는 L2 스위치를 표시하지 않는다. 하지만 L2 switch가 실제로는 존재하며, ARP broadcast frame을 R1으로 flooding한다. ARP를 수신한 R1은 자신의 MAC 0002를 PC1에게 알려준다.
PC1은 출발지 MAC 0001 / 출발지 IP 1.1.1.1 / 목적지 MAC 0002 / 목적지 IP 1.1.4.2로 설정한 패킷을 R1에 전송한다.
프레임과 패킷을 헷갈리지 않기 위해 여기서 한 번 짚고간다. 캡슐화에서 배웠던 내용 중 (전송과정에서) 상위계층으로 올라갈 수록 데이터에 헤더를 하나씩 부착한다고 했었다. L3 header까지 부착된 형태가 Packet이고, 거기에 L2 header가 더해진 형태가 Frame이다. 즉, 데이터 전송과정에서는 L2 header, L3 header가 전부 존재하므로 L2 header의 정보인 출발지, 목적지 MAC address / L3 header의 정보인 출발지, 목적지 IP address를 전부 담고있다.
② 해당 frame을 수신한 R1은 목적지 MAC이 자신의 주소임을 확인하고, 자신이 처리해야 하는 frame임을 인지한다. 이때 R1은 L2 header를 통해 목적지 MAC address가 자신임을 확인한 것이므로, 이제 목적을 다한 L2 herder는 제거한다. 그 후 L3 header인 IP address를 보니 목적지 IP가 1.1.4.2이다. 라우팅 테이블을 참조하여 1.1.4.2에 도달하기 위해서는 next hop 장비인 IP 1.1.2.2로 전송해야 함을 알게 된다.
만약 R1의 ARP cache에 1.1.2.2에 대한 MAC address가 없으면, R1은 1.1.2.2의 MAC address를 찾는 ARP packet을 F0/1 interface로 전송한다. 그러면 R2는 자신의 MAC이 0004라는 ARP 응답을 R1에게 보내게 된다.
이제 R1은 출발지 MAC 0003 (자신의 F0/1 interface MAC) / 출발지 IP 1.1.1.1 / 목적지 MAC 0004 / 목적지 IP 1.1.4.2로 설정한 패킷을 R2로 전송한다.
③ 해당 프레임을 수신한 R2는 프레임에 담긴 목적지 MAC address를 확인하고, 자신에게 온 frame임을 알게된다. 또한, 목적지 IP address인 1.1.4.2에 도달하기 위해서는 next hop인 IP 1.1.3.2에 이 data를 전송해야 함을 알게된다.
만약 R2의 ARP cache에 1.1.3.2 장비에 대한 MAC address가 없다면 이것을 요구하는 ARP packet을 F0/1 interface로 전송한다. R3로부터 자신의 MAC이 0006 이라는 ARP response를 수신하고나면, R2는 출발지 MAC 0005 (자신의 F0/1 interface MAC) / 출발지 IP 1.1.1.1 / 목적지 MAC 0006 / 목적지 IP 1.1.4.2로 설정된 패킷을 R3에 전송한다.
④ 해당 frame을 받은 출발지, 목적지 MAC address를 제거(L2 header 제거)하고 목적지 IP address가 1.1.4.2임을 확인한다. 라우팅 테이블을 확인하여 1.1.4.2는 자신의 F0/1 interface에 연결되어있다는 것을 알게된다.
만약 R3의 ARP cache에 1.1.4.2 PC2에 대한 MAC address가 없다면 이것을 요구하는 ARP packet을 F0/1 interface로 전송한다. 그후 R3는 PC2로부터 자신의 MAC address가 0008이라는 ARP response를 받게된다. R3은 출발지 MAC 0007 / 출발지 IP 1.1.1.1 / 목적지 MAC 0008 / 목적지 IP 1.1.4.2로 설정한 패킷을 최종 목적지인 PC2에 전달한다.
위 예제는 라우터들을 서로 이더넷 스위치로 연결한 간단한 예제였다. 만약 이더넷 스위치가 아닌 frame relay로 연결된 구간이 있다면, ethernet frame이 아닌 frame relay frame을 사용하며, 상대와 연결되는 frame relay DLCI 번호를 설정하여 전송한다. 또한 라우터 간 HDLC 또는 PPP로 연결했다면 해당 특정 프로토콜에서 사용하는 L2 header로 변경하여 전송한다는 것을 고려해야 한다.
라우팅 프로토콜 비교
항목 | 종류 | RIP1 | RIP2 | EIGRP | OSPF | IS-IS | BGP |
라우팅 정보 | Distance vector | O | O | O | O | ||
Link state | O | O | |||||
Subnet 정보 | Classful | O | |||||
Classless | O | O | O | O | O | ||
사용범위 | IGP | O | O | O | O | O | |
EGP | O |
Distance vector / Link state
1. Distance vector
Distance vector routing protocol은 라우팅 정보 전송 시 목적지 네트워크와 해당 네트워크의 metric 값을 알려준다. 이때 metric이란 최적경로 선택 기준을 의미하여, 라우팅 프로토콜의 종류마다 사용하는 metric이 다르다.
위 같은 네트워크 구성이 있다고 하자. R3이 '네트워크 1.1.30.3/24에 도달하기 위한 내 metric은 1이다' 라고 R2에게 알린다. R3과 1.1.30.3/24이라는 네트워크 간 거리는 1이라는 의미이다. 이때 R2는 R3보다 한 홉 떨어진 거리에 위치하므로, R2는 목적지 네트워크 1.1.30.3/24가 자신으로부터 2 metric 떨어진 거리에 위치해있다는 것을 안다. (라우팅 정보에는 방향도 포함되어 있다.)
그리하여 R2는 R3에게 '네트워크 1.1.30.3/24에 도달하기 위한 내 metric은 2이다'라고 알린다.
이처럼 Distance vector 라우팅 프로토콜은 라우팅 정보에 목적지 network까지의 metric (distance)와 방향을 포함한다. Distance vector를 사용하여 라우팅을 진행할 때, 라우팅 프로토콜들은 인접 라우터들에게서 받은 metric 값에 자신의 상황을 반영하여 또 다른 인접 라우터에게 광고한다.
Distance vector 라우팅 프로토콜들은 최종 목적지 network가 어느 라우터에 연결되어 있는지에 대한 정보는 모른다. 오로지 목적지 network가 어느 방향으로 몇 metric 떨어진 거리에 위치하는지만 알고 있다.
RIP, EIGRP, BGP가 여기에 속한다.
Distance vector / Link state
2. Link state
Link state 라우팅 프로토콜은 Distance vector와는 다르게 정보를 더 추가한다. Link state 방식은 라우팅 정보 전송 시 목적지 network와 현재 network의 metric 값은 물론, 현재 network가 접속되어 있는 라우터, 그 라우터와 인접한 라우터 등에 대한 정보를 광고한다. 즉 Link state 라우팅 프로토콜은 단순히 metric만 제공하는 것이 아니라, 다른 라우터들이 전체 네트워크 구성을 파악하기 위해 필요한 모든 정보를 제공한다.
예를들어 위 그림에서 R3는 '자신에게 연결된 네트워크가 1.1.30.3/24이며, 그 네트워크까지의 거리 (metric)은 1이다. 또한 나 자신의 ID는 1.1.3.3이며 인접한 라우터는 1.1.2.2이다.'라는 내용을 R2에게 광고하면, R2는 그 정보를 확인한 후 R1에게 그대로 알려준다.
Distance vector 라우팅 프로토콜은 인접 라우터에게서 받은 라우팅 정보에 자신의 상황을 고려하여 metric을 조정한 후, 이를 다시 인접 라우터에게 광고했었다.
반면 Link state 라우팅 프로토콜에서는 인접 라우터에게서 받은 라우팅 정보를 '그대로 전달'한다. 이 정보들을 받은 라우터 프로토콜들은 동일한 area 내부의 네트워크 구성을 전부 파악하게 되고, 그 후 특정한 목적지 network로 향하는 최적 경로를 계산할 수 있게 된다.
OSPF, IS-IS가 여기에 속한다.
IGP / EGP
AS(Autonomous System)은 동일한 라우팅 정책이 적용되는 하나의 라우터 집단을 말하며, IANA에서 16biy 길이의 AS 번호를 부여한다. 이때 서로 다른 AS 간 사용되는 프로토콜을 EGP(Exterior Gateway Protocol)이라고 하며, BGP(Border Gateway Protocol)이 여기에 속한다.
BGP는 통신회사 간 혹은 두 개 이상의 서로다른 통신회사와 접속된 네트워크에서 사용한다. (서로 다른 통신회사는 서로 다른 AS이다.) 예를 들어 KS는 4766, LG U+는 3786, SKBB는 9318등으로 AS number가 할당되어 있다.
동일한 AS 내부에서 사용되는 라우팅 프로토콜을 IGP(Interior Gateway Protocol)이라고 하며, RIP, EIGRP, OSPF, IS-IS가 여기에 속한다.
Classful / Classless
- Classful - 라우팅 정보 전송 시 subnet mask 정보가 없는 라우팅 프로토콜. subnet mask 개념이 존재하지 않던 시절에 개발된 라우팅 프로토콜들으로, RIPv1, IGRP가 여기에 해당하며 오늘날에는 거의 사용하지 않는다.
- Classless - 라우팅 정보 전송 시 subnet mask 정보가 포함되는 라우팅 프로토콜. RIPv2, EIGRP, OSPF, IS-IS, BGP 등 오늘날 사용되는 대부분의 라우팅 프로토콜들이 classless에 속한다.
Classful Routing은 Class A,B,C 등의 정보를 함께 전송한다. (IP 주소에 class 개념이 없었던지라 라우팅할 때 class 정보를 함께 전송해야 했기에 Classful이다.) 현재는 네트워크 Class에 구분없이 그 네트워크를 여러 개 subnet으로 분할할 수 있지만, 예전에는 그렇지 못했다. 따라서 Classful은 subnet mask가 존재하지 않아서 Class로만 구분하던 시절에 사용하던 것이라고 이해하면 된다.
Metric
라우팅 프로토콜들의 best route 선택 기준을 metric이라고 한다. 라우팅 프로토콜마다의 metric은 다음과 같다.
라우팅 프로토콜 | Metric |
RIP | hop count |
EIGRP | BW, 지연, 신뢰도, 부하, MTU |
OSPF | cost (BW) |
IS-IS | cost |
BGP | attribute |
- RIP ➱ 아주 단순하게 현재 위치에서부터 목적지 network까지 가는 데 거치는 라우터의 수 = hop count를 metric으로 사용한다.
- EIGRP ➱ BW이 크고, delay가 작은 네트워크를 선호한다.
- OSPF ➱ BW를 이용하여 cost를 계산
- IS-IS ➱ Hop count와 유사한 개념을 사용하여 cost를 계산
- BGP ➱ attribute는 10가지가 넘기 때문에 나중에 알아보자..
엄밀히 따지면 BW는 전송속도와 다르다. 어떤 장비의 interface의 BW는 해당 장비가 단위 시간당 전송할 수 있는 데이터의 양을 나타낸다. 따라서 일반적으로 높은 BW를 갖는 장비는 더 많은 양의 데이터를 동시에 처리할 수 있다.
하지만 실제 데이터 전송속도는 BW와 같지 않다. 실제 환경에서는 서버, PC등의 장비에 부하가 걸리기 때문에 BW만큼의 속도를 낼 수 없다. 따라서 A장비가 B장비보다 BW가 높다고 할지라도, 실제 전송속도는 B장비가 더 우수할 수 있는 것이다.
라우팅 프로토콜 간의 우선순위
위 그림처럼 한 네트워크에서 두 개의 라우팅 프로토콜 (여기서는 RIP, EIGRP)을 동시에 사용한다고 가정한다. RIP는 출발지에서 목적지 network까지 향하는 경로의 hop count만을 고려하기 때문에 위쪽 경로를 최적 경로로 선택하였다. 반면 EIGRP는 대역폭, 지연, 신뢰도, 부하 등의 여러 요소를 고려하기 때문에 아래쪽 경로를 최적 경로로 선택하였다. 둘 중 하나만을 선택하여 routing table에 저장하여야 하는데, 우선순위 (administrative distance, AD)가 높은(수가 작은) 프로토콜의 결과를 선택한다.
경로 | AD |
직접 접속된 network | 0 |
정적 경로 (사람이 직접설정) | 1 |
외부 BGP | 20 |
내부 EIGRP | 90 |
OSPF | 110 |
IS-IS | 115 |
RIP | 120 |
외부 EIGRP | 170 |
내부 BGP | 200 |
라우팅 프로토콜 간 우선순위를 AD로 표기한다. 하나의 라우터에서 2개 이상의 라우팅 프로토콜을 사용하는 경우에 AD가 더 낮은 값을 갖는 라우팅 프로토콜이 계산한 경로를 라우팅 테이블에 저장한다.
Longest match rule
위 같은 상황에서 R2이 목적지 IP주소가 1.1.10.1로 설정돼있는 패킷을 수신했다고 해보자. 이때 R2의 라우팅 테이블에는 1.1.10.0/24와 1.1.0.0/16이 담겨있는데, 두 네트워크 모두 1.1.10.1이 속할 수 있다.
이때 첫 번째 네트워크 1.1.10.1/24는 1.1.10.1와 24bit가 일치하고, 두 번째 네트워크 1.1.0.0/16은 16bit가 일치하므로, longest match rule에 따라 일치하는 bit 수가 더 많은 첫 번째 네트워크 방향으로 패킷을 전송한다.
경로 결정 방법
하나의 라우터에서 두 개 이상의 라우팅 프로토콜이 설정되어있을 때 특정 목적지로 가는 경로를 선택하는 절차는 다음과 같다.
- 하나의 라우팅 프로토콜 내에서 특정 목적지로 가는 경로가 복수 개이면, metric 값이 가장 낮은 것으로 선택한다.
- 여러 개의 라우팅 프로토콜들이 계산한 경로가 존재할 때는, 그 중 AD값이 가장 낮은 것의 경로로 선택한다.
- 그 이후 패킷을 전송할 때는 Longest match rule에 따라 패킷의 목적지 주소와 라우팅 테이블에 존재하는 네트워크 주소가 가장 길게 일치하는 경로로 패킷을 전송한다.
'네트워크' 카테고리의 다른 글
[네트워크] 33. RIPv2, EIGRP (0) | 2024.01.14 |
---|---|
[네트워크] 32. 정적 경로 라우팅, 루프백 인터페이스, 디폴트 루트 (1) | 2024.01.14 |
[네트워크] 30. 네트워크 토폴로지 Topology (0) | 2024.01.12 |
[네트워크] 29. VLAN, 트렁킹, VTP (0) | 2024.01.11 |
[네트워크] 28. ARP, 트랜스패런트 브리징 (1) | 2024.01.11 |