오래 못 할 짓 하지 않기

[ 네트워크 ] 17. Network layer : Router 내부 동작 본문

3학년 2학기/네트워크 (Network)

[ 네트워크 ] 17. Network layer : Router 내부 동작

쫑알bot 2024. 11. 14. 17:23
728x90

Network Layer 역할 3가지

- Path Selection Algorithm

- IP Protocol

- ICMP Protocol

 

 

라우터의 전체적인 내부 구조를 보자

 

 

Router Input port를 통해서 패킷을 받는다.

그리고 해당 router안에서는 switching fabric을 통해
올바른 output port로 routing된다.

 

세부적으로 알아보자


Input Port Functions
( Start Point of Router )

초록색은 Physical Layer에 필요한 정보들

파란색은 Link Layer에 필요한 정보들

 

우리가 이번에 보려고 하는 곳은 빨간색 상자다.

 

우리는 해당 Datagram에  Lookup, Forwarding 와 관련된 헤더를 보고

Forwarding table을 참고하여 Output port를 정해준다.

- Datagram이 Forwarding 해서 보내는 속도보다 빠르게 들어오는 경우에는 Queue에 넣는다.

 

[ Forwarding 방식 ]

1. Destination-based Forwarding

   : 목적지 IP만을 참고하여 Forward한다.

 

주소를 범위마다 나누어서 , 해당 범위가 Destination이면 그에 맞는 Link Interface로 보낸다.

 

Q. 만약 이쁘게 범위를 안 나누고 좀 겹치거나, 어디 안에 속하는 부분이 있다면?

더보기

 

 

Longest Prefix Match를 따라, 가장 많은 prefix가 일치하는 곳의 Interface를 취한다.

따라서 아래와 같은 경우에는 0번, 1번 Interface를 취한다.

 

마지막 주소는 3번째 덩어리에서 00011까지만 보면 1,2 다 되지만

그 중에서도 00011000까지 해당하는 곳만 1번으로 보낸다.

 

 

Longest prefix matching 방법은 

TCAMs(Ternary Content Addressable Memoris) 를 활용하여 작동시키기 때문에

메모리에 있는 주소를 One Clock Cycle만에 확인하여 크기에 상관없이 한 번에 볼 수 있다.

 

 


 

 

2. Generalized Forwarding

   : header field value를 참고하여 Forward한다.

 


Inside Router

 

[ Switching Fabrics ]

: Packet을 Input Link 에서 Output Link로 전송시켜준다.

 

 

Type은 3개가 있다.

 

- Memory

- Bus

- Interconnetion Network

 

 

 

 

Input에 있는 패킷을 메모리에 복사 

> Memory에 복사되어있는 패킷을 Output Link로 보낸다.

 

- 한계점

Memory의 Bandwidth가 속도 상한선이 된다.

 


 Bus Contention 을 통해 Switching 을 만든다.

 

- 한계점

 Bus의 Bandwidth가 속도 상한선이 된다.

 


 

 

Interconnection Network를 사용해서 보낸다.

 

n 개의 Input Port와

m 개의 Output Port가 있을 때 n x m switch를 만든다. 

 

[ 병렬 처리 방법 ]

1. datagram을 정해진 수로 쪼갠다.

2. 작은 cells들로 쪼개진 datagram을 fabric으로 전송한다.

3. 마지막에 합친다.

 

 


Input port Queuing / HOL

- Queueing 

Switch Fabric이 옮기는 속도 < Input port 로 들어오는 속도 

--> Queuing Delay,Loss 가 Input buffer overflow로 발생한다.

 

- Head of the Line (HOL) Blocking

앞에 애가 못 가면 뒤에 애들도 못 가고 기다리는 상태

 



 

Output Port Queuing

 

 

Output 과정에서는 Datagram이 Fabric으로부터 오는 속도 > 밖으로 보내는 속도일 때

Buffering이 필요하다.

 

만약 Buffer에 공간이 없는데도 계속 넘어온다면 어떻게 Drop할까?

Scheduling Displine에 따라  어떤 Datagram을 보낼지 정한다.

 

 

Buffer Management

 

버퍼에 대한 관리는 2개가 있다.

 

1) Drop : 버퍼가 꽉차있을 때 어떤 Packet을 받을지 정하기

               - Tail drop : 들어오는 packet을 drop시킴 (새로 더 안 받음)

               - Prioirty : 우선 순위에 따라 drop/remove (새로 더 안 받음)

 

 

2) Marking : Congestion 이 발생했을 때, 어떤 Packet에 어떻게 Marking 할지

  패킷에 Congestion 이 발생했다고 체크해서 보낸다. 

*ECN : Explicit Congestion Notification

*RED : Random Early Detection (sender가 보내는 패킷은 랜덤하게 drop한다)

 

 

 

[ 스케쥴링 ] 

 

1) FIFO

 

2) Priority

 

우선 순위를 갖는 Pakcet이 있고, 후순위로 밀려나는 Packet이 있다.

들어올 때 서로 다른 Queue에 들어간다.

Priority queue에 있는 애들 먼저 다 비우고

그 뒤에 Low priority queue 를 비우기 시작한다.

 

화장실이라고 생각해보자.

High Priority packet은 엄청 급한 사람..

Low는 그냥 적당한 사람...

1이 먼저 들어간 시간에 2,3이 온다. 

1이 나왔을 때 3이 더 급하다고 해서 3먼저 들어감

 

 

 

 

 


 

IP 관련

 

 

- IP version : IPv4,6

- header len : 4bytes 단위다. 따라서 [ Header len *4 ] 를 해야 함

- Length : Datagram의 총 크기 = Payload + header( 기본적으로 20bytes )

- Upper Layer : TCP를 위한 IP인지, UDP를 위한 IP인지

 

* Dest IP까지가 Default고, 20Bytes

* TCP라면 20Bytes, IP 20bytes라서, TCP로 통신하면 Overhead가 좀 있다. 

 

 

📌 Fragment 

 

 

 

네트워크 Link는 최대 Transfer할 수 있는 크기가 있다.

= MTU

 

IP Datagram은 fragmented되어 전송된다.

 

1. 하나의 Datagram → 여러 쪼가리의 Datagram으로 쪼갠다 

2. Destination 에서 다시 합친다.

 

 

예제)

 

 

하나의 4000Bytes Length 로 전송을 한다고 하자.

> 해당 파일의 ID는 x이다.

> 이 파일은 Header를 제외하여 3980 Bytes 의 Payload를 가지고 있다.

 

일단 이걸 따로 3개의 Fragmentation 으로 나누자

MTU = 1500 Bytes

 

1. 1500 = Header (20) + Payload (1480)

2. 1500 = Header (20) + Payload (1480) + offset(1480/8) 

3. 1040 = Header (20) + Payload (1020) + offset(2960/8) + Last Fragment Flag

 

 

 

 

 

 

(출처)

한동대학교 - 컴퓨터 네트워크