상세 컨텐츠

본문 제목

네트워크 프로그래밍 - Delivery and Forwarding of IP Packets[Delivery, Forwarding, Next-hop, Default routing], Address aggregation, Longest mask matching

Computer Science/Network

by 2021. 11. 15. 16:00

본문

반응형

Delivery

delivery에는 direct delivery, indirect delivery가 있다.

Direct delivery

TCP와 마찬가지로 IP에도 보내는 주소와 목적지 주소가 있다. direct delivery에는 두 가지가 있는데,

목적지가 발신주소와 같은 네트워크 상일 경우 A가 B에게 직접 전달하는 방법이 있고, 

A에서 라우터를 거쳐서 B로 전달하는 방법이 있다. 

 

그림에서 라우터에 연결되어 A와 B를 잇는 네모가 switch이다. MAC주소를 통해 switch에서 filtering을 하여, B의 MAC주소가 있는 경우 다른 컴퓨터들에 전달하지 않는다.

 

direct delivery는 같은 네트워크 내에서 switch를 통해 전달하는 것과

다른 네트워크에서 라우터를 통해 전달하는 방법이 direct delivery이다.

 

Indirect delivery

A에서 다른 네트워크에 있는 B로 전달하기 위해서 라우터를 거쳐 전달하는데, A에서 라우터, 라우터에서 라우터로 전달하는 것을 indirect delivery라고 한다. 

라우터에서 B로 전달하는 것은 direct delivery이다.

 

 

Forwarding

routing table을 보고 next hop으로 packet을 전달하는것을 forwarding이라고 한다. 

목적지 주소를 기반으로한 forwarding과 label에 기반한 forwarding에 대해서 알아보자.

 

Next-hop method

routing table안에 목적지까지의 경로를 모두 router에서 알 수 있지만,

현재 인터넷은 경로 중 next hop만을 routing table에 적어놓는다. 

 

Network-specific method

N2 네트워크 안에 주소의 개수는 class A라고 해도 1600만개이다. 모든 주소를 table에 저장할 순 없으므로 목적지 주소가 포함된 네트워크의 대표주소만 destination에 저장해놓고 네트워크 주소로 찾아가기 위한 next hop을 구한다. 

 

Host-specific routing

특정 목적지에 대해서는 destination으로 네트워크 주소가 아니라 상세하게 host 주소를 적는 경우가 있는데, 이를 host-specific routing이라고 한다. 

사용하는 이유는 다른 요소들을 배우고 나서 보기로 하자.

 

Default routing

목적지로 해당되는 네트워크가 없는 경우 다른 많은 internet 네트워크를 고려하지 않고 default router로 보낸다.

 

Simplified forwarding module in classful address without subnetting

패킷을 보내기위해 목적지 주소를 추출하고, 네트워크 주소를 알아내야한다.

네트워크 주소를 알아내기 위한 mask를 구하려면 먼저 class를 알아야한다. 

class별로 routing table이 따로 있으므로 class을 구하고 routing table을 결정한다. 

ARP는 MAC주소를 알아오는 프로토콜이다. 

hop to hop으로 전달하기 위한 MAC주소를 ARP를 통해 알아온다.

 

 

example

R1 router에 170.14.0.0/16, 145.80.0.0/16, 111.0.0.0/8 세 네트워크가 direct로 연결되어있고 다른 인터넷 네트워크로는 R2, 192.16.7.0/24로는 R3를 거쳐가야한다. 

 

170.14.0.0/16, 145.80.0.0/16은 class A, 111.0.0.0/8은 class B이므로 다음과 같이 next hop을 구할 수 있다.

R1에서 170.14.0.0/16, 145.80.0.0/16, 111.0.0.0/8 세 주소는 같은 네트워크이므로 next hop이 필요없고, Interface만이 존재한다. 

R1에서 192.16.7.0으로 가기 위해서는 R3를 거쳐야한다.

router는 각 네트워크마다 할당된 IP주소가 있는데, R3에게 할당된 111.0.0.0에서의 주소가 111.15.17.32이므로

R1에서 R3로 전달하기 위한 next hop 주소로 설정한다. 

 

그 외에 다른 네트워크로 보낼 때는 R2 라우터가 111.0.0.8에서 할당받은 주소, 즉 default 주소인 111.30.31.18로 보내진다.  

 

 

example

위 그림에서 목적지 주소가 192.16.7.14일 때 패킷이 forwarded되는 과정을 알아보자.

192.16.7.14는 class C이므로 네트워크 주소는 192.16.7.0이다.

 

class table에서 해당 주소를 찾아보면 

next-hop address가 111.15.17.32 이다. 해당 주소로 hop-to-hop으로 전달하기 위해 MAC주소가 필요하고, ARP를 통해 MAC주소를 알아내서 frame에 포함시킨다.

 

 

example

위 예제와 같은 그림에서 목적지 주소가 167.24.160.5이라고 하자. 

첫 byte가 128~191사이이므로 class B이고, 주소는 167.24.0.0이다.

class table에서 167.24.0.0에 해당하는 네트워크 주소가 없으므로 default router로 보낸다. 

default router의 주소는 111.30.31.18이므로 hop-to-hop을 위한 MAC주소를 알아내기 위해 ARP를 통해 알아낸다.

 

 

 

Simplified forwarding module in classful address with subnetting

이전까지는 subnet이 없는 경우에 대해서 알아보았다. 이번에는 subnet이 있는 경우를 알아보자.

 

위의 경우 네트워크 주소는 16bit까지 고정이지만 4개의 subnet으로 분리하면서 2bit를 사용하므로 18bit가 subnet mask임을 router는 알고 있어야한다. 

라우터로 패킷이 전달되면 subnet mask를 통해 어떤 subnet 주소에 해당하는지 구분한다. 만약 어떤 subnet에도 해당되지 않을 경우 다른 default router로 전달한다. 

 

forwarding을 할 때 패킷 안에 주소를 확인하고 mask를 통해 subnet 주소를 구한다. 

구한 subnet 주소에 해당하는 주소를 table에서 찾아 ARP를 통해 MAC주소를 구하여 hop-to-hop으로 패킷을 전달한다. 

 

 

example

위 그림의 상황에서 router가 받은 packet의 목적지 주소가 145.14.32.78이라고 하자.

subnet mask (/18)를 통해 어떤 subnet에 속하는 주소인지를 알아낸다. subnet 주소는 145.14.0.0이다. 

table에 145.14.0.0 subnet 주소는 m0 interface에 해당하고, 목적지의 MAC 주소를 알아내서 전달하면 된다. 

 

example

같은 그림에서 목적지 주소가 7.22.67.91이라고 하자.

subnet mask(/18)로 subnet 주소를 알아내면 7.22.64.0인데, table에 해당하는 주소가 없으므로 default router로 전달한다. (그림에서는 생략됨)

 

 

Classless Addressing Forwarding

이번에는 classless 주소에서의 forwarding을 알아보자. classless에서는 table에 network address, next-hop address, interface 외에 mask(/n) 한 컬럼이 추가로 있다.

Simplified forwarding module in classless address

class가 없으므로 table하나로 관리한다. 

 

 

위와 같은 네트워크가 있을 때 mask(/n)에 따른 주소는 다음 표와 같다.

 

4개의 네트워크가 direct 연결되고 direct이므로 각각 next hop이 없다. 

4개의 mask중 어떤 것에도 해당되지 않으면 default router로 전달한다. 

 

example

위 그림의 네트워크 토폴로지와 같은 상황에서, R1 라우터가 받은 패킷의 목적지 주소가 180.70.65.140 이라고 하자.

180.70.65.10001100에 mask (/26)를 적용하면 180.70.65.128이된다. 

table 6.1에서 180.70.65.128이 (/26)에 없으므로 목적지 주소는 해당 네트워크에 없는 것이다.

mask (/25)를 적용하면 180.70.65.128으로 table에서 (/25)의 네트워크 주소에 해당하므로 목적지 주소는 해당 네트워크에 있다는 것이다. 

 

이와 같이 table에 mask를 순차적으로 목적지 주소에 적용시켜보아 해당 네트워크 주소에 목적지 주소가 포함되는지 알아낸다. 

 

example

이번에는 목적지 주소가 201.4.22.35 라고 하자.

mask (/26)을 적용한 결과는 201.4.22.0으로 네트워크 주소가 일치하지 않는다.

mask (/25)를 적용한 결과는 201.4.22.0으로 네트워크 주소가 일치하지 않는다.

mask (/24)를 적용한 결과는 201.4.22.0으로 네트워크 주소가 일치하므로 목적지 주소가 네트워크 주소에 포함된다. 

 

example

이번에는 목적지 주소가 18.24.32.78 이라고 하자.

모든 mask를 적용해도 일치하는 네트워크 주소가 없으므로 default router로 보낸다. 

 

 

classfull classless 상관없이 packet에 들어가는 source IP address, destination IP address에는 일반적인 IP주소가 들어가고, router에서 network address과 관련된 처리를 진행한다. 

 

example

위 table을 기반으로 router와 network topology를 표현해보자.

 

먼저 direct하게 router에 연결된 네트워크를 먼저보자. mask (/16)인 세 개의 row는 next hop address가 없음 즉 direct한 네트워크라는 의미이다.

 

Address aggregation

 

 

Longest mask matching

 

 

Multiprotocol label switching (MPLS)

고정된 길이의 label을 이용한 빠른 IP forwarding

이더넷 header와 IP header 중간에 MPSL 헤더를 추가한다.

 

붉은 색으로 칠해진 router들은 MPLS가 가능한 router들이고 나머지는 그렇지 않다.

MPLS가 가능한 router에서 가능하지 않은 router로 패킷을 보낼 때는 MPLS를 제외한 기본 형태의 header로 변경하여 전송한다. 

 

A에 대한 정보를 추가하는 과정을 보자.

R1는 A에 바로 연결되었으므로 in label 6, out label이 없는 컬럼을 table에 추가한다. 

R1이 A로 가는 것은 label 6으로하여 R1에게 보내는 것으로 R2,R3에 요청한다. 

요청을 받은 R3는 out label을 6으로하고, R4에게 A로 보내는 것은 label 10으로 지정할 것을 R4에게 요청한다. 

R3 table에 목적지가 A일 때 in label 10, out label 6인 컬럼을 추가한다. 

 

D에 대한 정보를 추가하는 상황을 보자.

R3는 D로 가는 out label을 9로 잡고, in label 12로 R4에게 알려준다.

 

R4에서는 목적지가 A일 경우 out label을 10으로 R3로부터 전달받았고, 

목적지가 D인 경우 out label 12, interface 0으로 R3로부터 전달받았고,

목적지가 A인 경우 추가로 out label 8, interface 1로 R2로부터 전달받았다.

반응형

관련글 더보기