오래 못 할 짓 하지 않기
[ 네트워크 ] 17. Network layer : Router 내부 동작 본문
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
(출처)
한동대학교 - 컴퓨터 네트워크
'3학년 2학기 > 네트워크 (Network)' 카테고리의 다른 글
[ 네트워크 ] 19. Network layer : IPv6 / Routing Protocol (0) | 2024.11.21 |
---|---|
[ 네트워크 ] 18. Network layer : IP Addressing / NAT(Network Address Translation) (0) | 2024.11.18 |
[ 네트워크 ] 중간 2 준비 ( Socket Programming ) (0) | 2024.11.10 |
[ 네트워크 ] 16. Network layer : Data Plane (0) | 2024.11.07 |
[ ( 자습 ) 네트워크 ] 13. 라우팅 테이블 (0) | 2024.08.25 |