[네트워크] 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

  • IPv6
    • 32bit의 기존 IP address는 너무 작기때문에, 128bit로 늘렸다. 따라서 IPv6의 datagram헤더크기는 기존 20bytes에서 40bytes로 늘었다.
      • checksum이 사라졌다. -> each hop에서의 processing 을 줄이고자.
그림14 IPv6 datagram format
    • Tunneling
      • IPv6에 맞게 router을 일괄적으로 바꾸는건 사실상 불가능하기 때문에, tunneling기법을 사용해서 차근차근 router을 바꾸는 방법을 택했다.
      • IPv6format자체를 IPv4 format으로 encapsulation한다.
그림15 Tunneling
그림16 Tunneling














댓글

가장 많이 본 글