지금까지 application layer, transport layer에 대해서 배웠다.
이제 Network layer에 대해서 공부할 차례이다.
Network layer의 역할은 다음과 같다.
- transport segment를 보낸다.
- segment를 encapsulate하여 datagram으로 만든다.
- 모든 host, router에 존재한다. (transport layer는 router에 없음)
transport layer | network layer | |
주체 | process끼리 | host (end system)끼리 |
선택 | TCP(connection), UDP(connectionless) | connectionless |
적용 대상 | host (end system)만 | host (end system) + nework core(router, switch) |
Forwarding과 Routing
network layer에서 길을 찾을 때 forwarding과 routing을 사용하는데 있는데 둘의 역할은 살짝 다르다.
- forwarding : router의 input에 들어온 패킷을 적절한 output으로 보낸다.
- routing : source에서 destination까지 적절한 길을 결정한다.
Routing table
라우터가 패킷의 header를 보고 이 header(destination address)를 라우팅 테이블에서 찾는다.
라우팅 테이블에는 특정 header가 향할 곳이 저장되어있기 때문에 라우팅 테이블을 보면 어디로 향할지 알 수 있다.
그런데 IP 주소의 개수는 40억개 가까이 되기 때문에 모든 destination address마다 output link를 지정한다면 라우팅 테이블의 크기가 굉장히 커질 것이다.
그래서 보통 IP 주소의 범위를 바탕으로 output link를 지정한다.
Destination Address Range | link interface |
11001000 00010111 00010* * * * * * * * * * * | 0 |
11001000 00010111 00011000 * * * * * * * * | 1 |
prefix만 일치하면 해당 link로 보내는 것이다.
위 테이블에서 0번 link로 향하는 Range는 *의 개수가 11개이므로 IP 주소 2의 11승개만큼 0번 link로 보낸다.
이렇게 테이블의 크기가 너무 커지는 것을 방지할 수 있다.
Router architecture
아래와 같이 software 성격을 띄는 부분과 hardware 성격을 띄는 부분으로 나뉘면 관리가 편하다.
실질적인 routing의 경우 processor에서 진행하고 이 결과값을 switching fabric에게 넘겨주는 형식으로 진행된다.
input port를 자세히 보면 아래와 같다.
physical layer, data link layer를 거쳐 큐에 도착한다.
만약 데이터 그램이 큐에 들어오는 속도가 switch fabric에 들어오는 속도보다 빠르면 큐에 데이터그램이 저장된다.
output port의 경우 이 반대로 생각하면 된다. queue -> data link layer -> physical layer
switching fabric의 종류는 3가지가 존재한다.
HOL(Head Of the Line) problem
input port의 경우 큐로 이루어져 있다보니 HOL block 문제가 발생한다.
자세히보면 가장 아래의 빨간색 데이터 그램이 빨간색 출구(큐)로 나가야하는데 다른 데이터 그램이 선점하는 바람에 나가지 못하고 delay되고 있다.
그런데 그 뒤의 초록색 데이터 그램은 초록색 출구(큐)가 비어있음에도 빨간색 데이터 그램이 나가지 못해서 delay되고 있다.
이러한 문제를 HOL blocking problem이라고 한다.
'공부 > Network' 카테고리의 다른 글
[Network] IP addressing (0) | 2023.06.04 |
---|---|
[Network] IP fragmentation (0) | 2023.05.31 |
[Network] TCP RDT (0) | 2023.04.27 |
[Network] RDT (Reliable Data Transfer protocol) (0) | 2023.04.22 |
[Network] pipelined protocol (0) | 2023.04.18 |
댓글