CS/Computer network

Delivery and Forwarding of IP Packets

ys_cs17 2022. 5. 14. 20:45
반응형

Direct delivery

Direct delivery는 최종 목적지가 보내는 쪽과 같은 네트워크에 있는 경우이다. 다른 컴퓨터도 만약 연결이 되어 있다면 가운데 육면체인 스위치는 연결되어 있는 모든 컴퓨터에게 데이터를 전송한다. 아니면 테이블을 확인하여 보낸다.

라우터가 같은 네트워크에 있는 컴퓨터에게 바로 보내는 것도 direct delivery이다.

 

 

Indirect delivery

위 그림과 같이 라우터를 거쳐서 다른 네트워크로 가는 것을 indirect delivery라고 한다.

라우터에는 실질적인 모든 경로를 알고 있다. 위 그림 R1처럼 테이블에 경로를 저장한다.

(a) 같은 방식을 경로 중심 경로라고 하고, Route table에 모든 경로를 저장한다. 하지만 미국에 데이터를 보내는 경우와 같이 path가 매우 길어지게 되는 경우가 빈번해서 (b)와 같은 방식인 next hop 방식을 사용한다.

이를 통해 모든 경로 대신 Next Hop에 다음 network의 대표 주소인 network address를 적는다.

 

Host-specific routing

위 그림에서 tabel에 Destination이 host 번호가 있는데, 이는 어떠한 구체적인 경로로 가라고 지정할 때 사용하고, 이를  Host-specific routing이라고 한다. 이를 통해 host 주소도 테이블에 있을 수 있다는 점을 알 수 있다.

 

Defualt routing

Routing 테이블은 주변에 있는 네트워크에 대한 정보만 가지고 있고, 전 세계에 있는 정보들을 저장하지는 않는다. 따라서 테이블에 없는 정보들은 모두 Default router로 보낸다.

 

모든 패킷들은 목적지 주소를 가지고 있다. 우선 패킷의 도착지 주소를 꺼내고, 이를 class를 분류하여 mask를 씌운 후 네트워크 주소를 찾는다. 그러고 나서 테이블에서 해당 네트워크가 있는지 확인한다.

이때 테이블은 위 그림과 같이 class 별로 관리한다. 이를 통해 테이블에서 해당 클래스에 해당하는 주소를 찾는다. 또한 ARP를 통해 MAC 주소도 가지고 온다.

 

예시

첫 번째 그림과 같이 네트워크가 구성되어 있다고 가정할 때 R1 라우터의 테이블은 아래 그림과 같이 구성되어 있는 것을 확인 할 수 있다.

Class A, B에 속하는 주소들은 direct delivery인 것을 확인할 수 있고, Class C는 m0는 R3를 거쳐서 가는 indirect delivery인 것을 확인할 수 있다.

만약 도착 주소가 다음과 같이 주어졌다고 가정하자.

192.16.7.14

해당 주소를 보면 우선 Class C인 것을 확인 할 수 있고, mask를 통해 이에 해당하는 network address인 192.16.7.0을 구할 수 있다. Class C table을 통해 해당 주소가 존재하는 것을 확인하고, 이를 m0 router로 전송해준다.

만약 주소가 테이블에 존재하지 않는다면 default router로 전송한다.

 

이번에는 subnet mask가 있는 상태라고 가정하자. 네트워크 밖에서는 subnet mask를 몰라도 된다.

위 그림을 통해 subnet mask가 18인 것을 확인할 수 있고, router도 이에 대해 알 고 있어야 한다. router는 mask를 통해 테이블에서 searching을 진행한다.

만약 도착지 주소가 145.14.32.78인 패킷이 들어왔다고 가정하자.

그러면 일단 /18에 대해 mask를 씌우고 확인한다. 그러면 145.14.0.0이 나오게 되고, 이 값을 테이블에서 찾으면 m0에 속하는 주소인 것을 알 수 있다.

 

이번에는 classless addressing에 대해 살펴보자.

우리는 지금까지 목적지 주소, next-hop, interface를 보면서 했는데, class가 없으면 mask까지 추가해야 한다.

여기서 packet 안에 있는 IP 주소는 바뀌지 않는다. router만 일을 하면 되고, 일반 사용자는 도착 ip만 알면 된다.

위 그림과 같이 테이블이 구성되어 있고, 도착 주소가 180.70.65.140인 패킷이 들어왔다고 가정하자.

우선은 맨 위에 있는 26 마스크를 씌운다. 없으면 25를 씌운다. 25를 씌워서 network address를 찾게 되었고, m0으로 보낸다.

여기서 만약 없으면 24 마스크를 씌운다.

 

테이블만 주어져있고, 이를 도식화 하려면 우선 direct delivery를 먼저 그리 고난 후 테이블 맨 위에 해당되는 애들을 순차적으로 그리면 된다. 이에 대한 정답은 아래 그림과 같다.

R2의 테이블은 원래 R1 처럼 모든 주소에 대한 테이블을 가지고 있어야 하지만, 이는 비효율적이라 앞자리와 마스크가 같은 애들의 대표 주소만 가지고 있는다.

테이블을 저장할 때는 mask가 가장 긴 주소부터 저장한다.

 

MPLS

MPLS를 통해 고정된 라벨을 가지고 IP forwarding의 속도를 높인다.

위 그림과 같이 이더넷 헤더와 IP 헤더 사이에 MPLS 헤더를 추가 시키면 된다.

위 그림을 보며 예를 들어보자.

 MPLS를 할 수 있는 라우터들을 빨간색이라고 하자. 빨간 라우터끼리는 각자 수정을 해서 패킷을 전달한다. 만약 MPLS를 벗어나면 MPLS 헤더를 때고 원래 형태로 패킷을 전달한다.

이를 실생활에서 예시를 들면, 우리 아파트만 오는 택배 아저씨가 본인이 보기 편하게 송장에 있는 주소 대신 호수만 보고 전달하는 원리와 같다.

오른쪽 아래 라우터를 R1의 테이블을 보면 A로 가는 패킷들을 본인한테 보내라는 의미이다. in Label는 sync를 맞추기 힘들어서 R2와 R3 사이에 존재하는 unique한 번호면 된다. out label이 없는 것은 나갈 곳이 없는 것이라고 생각하면 된다.

R3를 보면 D에 대한 정보가 추가된 상태이다. D로 보내는 애들은 모두 12로 해서 보내라는 의미이고, A로 가는 애들을 10번으로 해서 보내면 6번으로 나간 다고 생각하면 된다.

R4의 경우에는 A로 가는 길이 2가지가 있는 것이다. 이때는 우선 테이블 위에 있는 경로를 선택하고, 만약 경로가 지연이 된다면 아래 있는 다른 경로로 가게 된다.

 

반응형