[네트워크] Network layer - Data plane
Network layer
- network layer은 모든 host, router에서 재설정된다.
- transport layer까지는 sender, receiver에서만 재설정되는 것과 대조된다.
그림1 network layer |
- Forwarding VS Routing
- forwarding
- router의 input 부터 output까지 packet이 옮겨지는 것
- data plane영역
- routing
- source 부터 destination까지의 경로를 구축하는 것
- control plane영역
- 과거에는 router내에서 forwarding , routing을 둘다 했었으나, forwarding은 hardware영역에서 발생하여 nanosecond단위가 소모되는 반면, routing은 software영역에서 발생하므로 millisecond가 소모된다. 따라서 이토록 오버헤드가 큰 routing을 따로 분리하여 remote server에서 관리하는 것을 SDN(Software-defined network)라고 하며, 이게 현재 대세임.
- 참고로 forwarding은 hardware에 의해 발생하므로 fabric, 즉 선의 종류에 router의 성능이 달려있음
그림2 forwarding, routing |
SDN에서는 remote server에서 routing을 통해 경로를 설정하면(control plane), 이에 맞게 각 router에서는 forwarding을 수행하게 된다.(data plane) 지금부터는 forwarding을 수행하는 data plane영역을 공부해보도록 한다.
- input port / output port
- 우리가 생각하던 queueing delay에서 queue가 쌓이는 buffer은 input port, output port에 실제로 존재한다. 즉 router 의 port에서 queueing delay 나 data loss가 발생하는 것이다.
- input port
- HOL(Head-of-the-Line) : 앞에 있는 packet이 뒤에 있는 packet의 forwarding을 막는 현상
- 그림3을 보자. 왼쪽 그림에서 보면 위 쪽의 붉은 packet이 붉은 output port로 가기 때문에 아래의 붉은 packet이 가지 못하고 기다리고 있다. 그로 인해 그 뒤에 있는 초록색 packet은 현재 지나갈 수 있는 상황임에도 불구하고 wait을 하게 된다.
그림3 input port queueing |
- output port
- switching하는 속도보다 output line speed가 느리면 queueing이 일어난다.
그림4 output port queueing |
- Scheduling mechanism
- 어떤 패킷을 link로 보낼지에 대한 스케줄링이 필요하다.
- priority queue, Round Robin, Weighted Fair Queueing(WFQ)(일종의 라운드 로빈인데, port에 weight가 존재해서 각자 다른 시간씩 packet을 보내게 된다.)
- IP datagram Format
- datagram 의 크기 = 20bytes(datagram header) + 20bytes(TCP headers) + application overhead
그림5 IP datagram format |
- IP fragmentation
- network link은 MTU(Max transfer size)를 가지기 때문에, 이를 능가하는 데이터가 지나가면 패킷을 잘라줘야 한다. 여기서 잘린 packet은 각각 offset을 갖고, destination에 도착하면 reassemble 된다.
그림6 IP fragmentation |
그림7 IP fragementation |
- 그림 7 을 보자. 여기서 datagram의 크기는 4000bytes이고, link의 MTU는 1500 bytes이다.
- datagram = 20bytes(datagram header) + 3980bytes(data = segment size)
- 각 packet은 1500bytes까지 가질 수 있으므로, 20bytes의 datagram header을 생각하면, 각 packet은 1480bytes까지의 data를 가질 수 있다. 따라서 3980bytes의 기존 data는 1480, 1480, 1020bytes로 잘리게 되고, 따라서 마지막 datagram의 size는 1020bytes + 20bytes = 1040bytes가 되는 것이다.
- 잘린 packet에 주렁주렁 달린 ID, fragflag, offset은 나중에 reassemble할 때 사용된다.
- IP addressing
- 기본적으로 IP는 router의 locality에 맞게 hierarchy한 구조로 할당되게 되있음.
그림8 IP addressing |
- 그림을 보면 알 수 있듯, 인접한 host들의 IP는 왼쪽 bit들이 서로 유사하다. 이는 longest prefix matching을 가능케 하는 부분.
- 참고: router은 port마다 IP를 가지고 있다.
- Subnet
- Isolated network
- router을 거치지 않고 도달할 수 있는 네트워크
- =LAN
- 그림8에 subnet개수는 3개이다.
- 그림9에서 200.23.16.0/23 에서 23은 subnet part의 bit수를 의미한다. subnet 내에서의 각 host는 IP의 host part로 구분된다. 그림9에서 host part는 9bit이므로 512개의 host를 할당할 수 있다.
그림9 CIDR |
- Hierarchical addressing
- IP addressing의 할당 방식은 local 에 대해 hierarchical하다. 즉, 더 가까운 host일수록 IP의 왼쪽 bit가 더 많이 유사해지고, subnet일때 최고로 유사하다.
- 이로 인해 Longest Prefix Matching이 가능하다.
- Longest Prefix Matching
- forwarding 은 어떤 방식으로 해야하냐의 문제를 고민해보자.
- 초기 방식은 Destination-based forwarding으로 그림10과 같이 software단에서 if문을 이용하여 하나하나 비교해주는 방식이었다. 이는 더럽게 느렸다.
그림10 Destination-based forwarding |
- 따라서 그림 11과 같이 hardware단에서 동작하는 longest prefix matching방식의 forwarding table을 고안하게 되었다.
- IP과 테이블 내에서 가장 길게 매칭되는 destination address range의 link interface를 찾아간다.
- *는 don't care을 의미함. 어떤 수가 되어도 상관없다.
- 예를 들어, 11001000 00010111 00010110 10100001는 0에, 11001000 00010111 00011000 10101010 은 1에 matching될 것이다.
그림11 Longest Prefix Matching |
- DHCP
- host에게 network를 일정시간 임대해주는 server임. 즉 subnet의 host들을 관리한다고 볼 수 있음.
- host에게 IP를 dynamic하게 할당하며 network에 join시킨다.
- LAN내에서 DHCP가 IP를 할당하는 것으로 보인다. cf)https://www.synology.com/ko-kr/knowledgebase/SRM/help/SRM/RouterApp/localnetwork
- 즉, LAN에서 subnet이 아닌 host구간 내에 비트를 정해주는 듯.
- DHCP는 IP주소 외에도 client에게 다음 정보를 전달한다.
- DNS server 의 IP주소와 name
- client의 first-hop router의 주소
- DHCP는 application layer에 속한다. -> 당연한 일.
**DHCP 참고자료 : http://www.ktword.co.kr/abbr_view.php?m_temp1=5236
그림12 DHCP |
- NAT
- 기존의 IPv4는 32 bit의 주소를 할당하는데, 사물인터넷 시대가 도래하면서 host의 갯수가 기하급수적으로 늘고, 32bit의 주소가 부족해지기 시작했다. 이를 해결하기 위해 두가지 방식이 등장했는데 하나는 IPv6, 하나는 NAT이다.
- NAT은 IP address가 부족한 문제를 해결하며, 보안을 향상 시킨다.
- NAT은 subnet의 router에 NAT translation table이 존재하는데, 이는 라우터의 ip와 port를 host의 IP, port로 맵핑해준다. 따라서 라우터 내 모든 host의 ip는 외부에 보이지 않게되며, 외부에서는 맵핑되는 router의 IP, port를 destination으로 생각한다.
- 그에따라 router은 portnum의 크기인 16bit, 즉 65536개까지의 host를 하나의 IP만으로 맵핑할 수 있어, IP부족의 문제가 크게 해소된다.
NAT참고 : https://msdn.microsoft.com/ko-kr/library/ms731948(v=vs.110).aspx
그림13 NAT |
댓글
댓글 쓰기