컴퓨터통신#7

LeeMir, 27 April 2021

4장 - Network Layer


Two Key Network-Layer Functions
  • Network-Layer에는 두가지 Function만이 존재
    • Forwarding
    • Routing
Network Layer : Data Plane, Control Plane
  • Data Plane
    • Local, Router 각각(Per-Router)의 관점에서 기능
    • Fowarding Function 수행
    • nanosecond 단위의 속도로 처리
  • Control Plane
    • Network-Wide Logic
      • Source host에서 Destination host로 가는 길에 대한 기능
    • 원래 Control Plane이 하는 일이 Router에 포함되어있어서 크게 구분짓지 않았으나, SDN이 나오면서 구분지어짐
    • Software-Defined Networking
      • Router가 아닌 별도의 Controller(Server)에서 수행
      • Data Plane이 하는 기능 이외의 기능들을 Software적으로 수행
      • 원래는 Router마다 Algorithm을 갖고 서로 공유를 해야하는데, SDN에서는 Controller가 계산해서 각 Router로 뿌려줌
    • millisecond 단위의 속도로 처리
Network Service Model
  • Internet은 Service Model이 Best Effort나 막상 보장해주는 것은 아무 것도 없음
    • Congestion FeedBack은 ECN으로 함
  • ATM
    • Asynchronous Transfer Mode
    • 2계층까지 포함
    • Virtual Circuit 방식
      • Packet Switching 방식의 일종
      • Packet을 Cell이라고 부름(크기가 매우 작음)
    • 전화망 사업자들이 영상, 문자 등 일반 Data까지 전송하려고 해서 만든 기술
    • Internet에 비해 보장해주는 것이 많음
Destination-Based Forwarding
  • Longest Prefix Matching
    • Router에서 IP 앞부분을 보고 몇 번 Link로 내보낼 지 정함
    • 몇 번 Link로 내보낼지 정해지는 IP 앞부분을 Prefix라고 부름
    • TCAM(Ternary Content Addressable Memories)
      • Table Size와 관계 없이 병렬로 탐색하기 때문에 한 Clock Cycle에 찾을 수 있음
      • 비용이 큼
Switching Fabrics
  • Three types of switching fabrics
    • memory / bus / crossbar
  • Switching 속도는 Input / Output Line rate의 N배(Input 개수)만큼 빨라야 함
  • Memory
    • Packet이 System의 Memory에 기록(Input)했다가 읽어나가는(Output) 방식
  • Bus
    • Input이 Broadcast되어 퍼져서 목적지로 감
    • 작은 규모에서 사용할 수 있는 Router 구조
    • Link의 Data Rate에 영향을 받음
  • Crossbar
    • ??
Input Port Queuing
  • Input Port로 들어오는 속도(Line Rate)보다 Switching 속도가 느리면 Queue에서 Delay + Loss되는 문제 발생
Output Port
  • Buffering
    • Switching 속도가 Output Port로 나가는 속도(Transmission Time)보다 빠르면 Buffer(Queue)가 필요
    • Buffer 공간이 부족하면 Datagram이 Loss될 수 있음
  • Scheduling Discipline
    • Queue에 보관하는 순서는 기본 FIFO(Internet에서는 FIFO를 사용함)지만, 우선순위를 부여하기도 함
      • 네트워크 중립성에 어긋날 수 있음
    • FIFO Scheduling
      • 가득찬 Queue에 Packet이 도착해서 Discard 해야하는 상황
        • Tail Drop : 새로 들어온 Packet을 버림(무시)
        • Priority : 우선순위에 따라 버림
        • Random : 임의로 버림
    • Priority Scheduling
      • Priority를 정하는 규칙은 Datagram의 Header를 보고 결정
        • 경우에 따라 Transport Layer의 Header를 볼 수도, Application Layer의 Header를 볼 수도 있음
The Internet Network Layer
  • IP Datagram Format
    • 1 word = 4 bytes
    • ver : IPv4(0100)인지 IPv6(0110)인지 구분해줌
    • header len : 고정 헤더 20 bytes + 가변 헤더(option) 크기를 명시해 data가 어디서부터인지 알려줌
      • data에는 상위 Layer인 TCP, UDP segment가 올 수도 있으나, IP나 ICMP 같은 Network Layer Message가 다시 올 수도 있음(Internet은 Layer 개념을 고려하지 않고 설계되었기 때문)
    • type of service : 다양한 종류의 Datagram들을 구분지어줌
      • 잘 쓰지 않음
      • Multimedia에서 QoS(Quality of Service)로 사용하기도 함
    • length : 헤더 + data field까지 총 몇 bytes인지 알려줌
    • 16-bit identifier : Fragmentation에서 필요
      • 한 Datagram으로부터 나눠진 Fragment들은 모두 원본 Datagram과 같은 ID를 가짐
      • 재조립할 때 사용
    • frag flag : Fragment를 재조립할 때, 마지막 부분의 Fragment임을 명시(0이면 마지막)
    • fragment offset : Fragment가 첫 Fragment로부터 얼마나 떨어져 있는지 Datagram 내 순서 명시
      • 이 때, data field의 size를 8로 나누어서 offset을 계산하는데, 그 이유는 Datagram의 최대 Size는 65536 bytes인데 offset은 13-bit로, 2^13개밖에 가리킬 수 없음. 따라서 2^13개로 65536의 범위를 표현하려면 대략 8 bytes씩 나눠줘야함.
    • time to live(TTL) : 홉수(hop count)를 이용해 datagram의 수명을 명시함
      • 해당 router가 목적지가 아니면 hop count를 하나씩 줄임
      • algorithm이 잘못되어 router들 사이에서 loop에 빠진 datagram을 없애줌
      • 하나씩 늘리면서 보내서 가장 가까운 Server를 찾을 때 사용할 수도 있음
    • upper layer(protocol) : data field에 있는 message가 어떤 protocol에 의해 작성되었는지 명시
      • TCP = 6, UDP = 7
    • header checksum : checksum
    • source IP address : source IP address
    • destination IP address : destination IP address
    • option : 가변
      • 특정 router를 지나쳐가야한다고 명시할 수도 있음
IP Fragmentation, Reassembly
  • Network link는 MTU(Max Transmission Unit)라는 개념이 존재
    • 2계층 Frame의 Data에 포함될 수 있는 최대 바이트 수
  • 크기가 큰 IP Datagram은 여러개의 Datagram으로 나뉨(Fragmentation)
    • 나뉜 Datagram은 Fragment라고 하고, 각각은 독립적으로 목적지에 전달
    • 목적지에서 재조립(Reassemble)
      • 재조립하기 위해 IP header에 있는 field를 사용
    • 한 번 Fragmentation되었으면, 다시 Fragmentation이 일어나면 안됨
    • Reassembly Buffer
      • 목적지에 존재
      • Fragment가 순서대로 오지 않아 Reassemble할 때 순서를 맞춰야할 필요가 있음
      • 만약 Fragment가 오다가 Reassemble 과정에서 중간에 비어서 올 때까지 기다려야하더라도 Reassembly Timer가 존재해 그 시간 내에 오지 않으면 버림