CS/컴퓨터망

Ch_4_v8

טוֹבָה 2023. 10. 31. 20:55

Network Layer : Data Plane

Network layer : our goals

Network layer  : "data plane" roadmap

 

  • Network Layer
    • data plane 
    • control plane
  • 트래스포트 계층의 패킷 단위 = segment
  • 네트워크 계층의 패킷 단위 = datagram
  • host to host -> sending side -> segment를 datagram으로 encapsulate
  • host to host -> receving side -> datagram 을 segment로 decapsulate

google image

  • Router내부에서는 무슨 일이 일어날까?
    • 출발지/도착지 포트 번호, 스위칭
    • 버퍼 관리, 스케줄링
  • IP : The internet Protocol
    • Datagram format
    • addressing : IP address를 만드는 것
    • Network address translation
    • IPv6
  • Forwarding, SDN : Software Defined Network
    • Match+action
    • OpenFlow : match + action in action
    • Forwarding
      • Packet -> Router -> Forwarding process -> Another Router
      • 라우터로 들어온  패킷을 다른 라우터로 보내는 과정
    • Routing
      • Source -> Destination까지 어떤 경로로 갈지 결정하는 과정
  • Middleboxes

Network-layer services and protocols

- 목적지 주소를 통해 누구에게 배달을 해야할지 정한다.

  • 보내는 이 : 인캡슐링, datagrams로 만들고, link layer로 전달
  • 받는 이 : trasport layer프로토콜로 segment를 전달한다.

- network layer protocol은 인터넷 device에 존재한다. : hosts, routers

- Routers : 패킷이 들어오면, packet의 header를 보고, 어디로 보낼지 결정한다. routing table을 참고한다.

  • 통과하는 모든 IP 데이터그램의 헤더 필드를 검사한다.
  • 데이터그램을 입력 포트에서 출력 포트로 이동하여 종단 경로를 따라 데이터그램을 전송한다.

Two Key Network-Layer Functions

  • Network-layer functions
    • forwarding : 라우터의 입력 링크에서 적절한 라우터 출력 링크로 패킷을 이동한다. data plane의 영역이다.
    • routing : source에서 대상으로 패킷이 취하는 경로를 결정한다. contorl plane의 영역이다.
  • Analogy : taking a trip
    • forwarding : 단일 교환을 통과하는 프로세스
    • routing : source부터 도착지까지 가는 것에 대한 planning의 process
  • Data plane vs Contorl plane
    • Data Plane 
      • Input port로 들어온 datagram을 어떤 Output port로 보낼지 결정하는 과정이다. 
      • local, 개별 라우터 함수
      • datagram이 라우터 상에서 어떻게 input port에서 output port로 forwarded가 되는지 기술한다.
  • (아래 두 그림을 통해 비교) 
    • Contorl Plane
      • Datagram이 호스트로부터 다른 호스트까지 전송될 때, 어떻게 라우팅할지 결정한다. 
      • Network-wide logic
      • ddatagra이 source host부터 desdtination host까지 end-end path를 통해 라우터를 따라 라우팅이 되는지 기술한다.
    • Two Control plane approaches(Control plane의 라우팅 테이블 구현 방식(2))
      • traditional routing algorithm : router 구현
        • 모든 라우터에 control plane과 data plane이 존재하며, 각 라우터에는 라우팅 알고리즘이 있어서 라우터들끼리 통신하여 라우팅 테이블을 만든다.
      • software-defined networking(SDN) : (원격)서버 구현
        • Remote controller server에서 각각의 라우터에 대해 control agent(CAs)를 두어 라우터들과 통신하며 라우팅 테이블을 내려보낸다.

Data Plane
SDN

 

Network-Service model

Q. 송신자에서 수신자로 데이터그램을 전송하는 "채널"을 위한 서비스 모델은 무엇일까?

 

라우터의 구조

1. Input port

2. Switching fabric

3. Output port

-------- Functionaly 

1. Buffer Managementing

2. Scheduling

 

high-level view of generic router architecture

 

 

1. Input port 

- Decentralized switching

- Forwading table -> 어떤 outputport 로 나갈지 결정한다.

- Lookup : forwarding Table을 확인한 후, 어떤 outputport 로 갈지 확인하는 단계

- Forwarding : 들어온 패킷이 정해진 Outputport 로 Switching하는 단계

- Queueing : switching rate보다 더 빠르게 input buffer에 패킷 도착시 queueing이 발생한다.

 

Two ways of Forwading

1. Destination-based forwarding

forwarding table을 참조해서 목적지 주소의 범위에 따라 어떤 link를 타고 output-port로 갈지 결정한다.

2. Longest prefix matching

Destination Address Range중 match가 되는 것들중에 가장 길게 매치되는 것들을 기준으로 output-port를 정한다.

 

 

Switching fabircs

What is the switching fabircs? input buffer에 있는 패킷들을 적절한 output buffer로 이동시키는 역할을 한다.

What is the switch rate ? Input -> output port 로 나가는 시간은 switch rate에 의해 결정되는데, switch rate는 패킷이 input->output으로 나가는 속도로 output port까지 나가는 경우, N개의 인풋에 대해 N x swithcing rate의 시간이 걸린다.

 

Types of switching fabrics(3)

(1) Switching via memory

- packet을 복사해서 memory에 싣고 output으로 이동

- 속도가 느리다.

 

(2) Switching via a bus

- Bus bandwidth를 갖고 있어서, Switching speed에 제한이 있다.

- Input port & Output port 는 Bus를 공유한다.

 

(3) Switching via interconncetion network

- Bus의 bandwidth limitation을 극복한 방법 -> 동시에 여러개의 패킷처리가 가능하기 때문에 속도가 빠르다.

 

Input port queuing

datagram이 스위칭되는 속도보다 더 빠르게 인풋버퍼에 도착하면 버퍼에는 데이터가 쌓이게 되고, 패킷들은 queuing 상태가 된다.

Queuing이 된 상태에서 input buffer가 overflow가 되면 queuing delay와 packet loss가 발생할 수 있다.

HOL blocking(head-of -the-line blocking) : 인풋에서 아웃풋 버퍼로 데이터를 전송하고자 하지만 아웃풋 버퍼가 사용중일 경우, 인풋에 있는 버퍼의 데이터가 이동되지 못 하고 막혀있는 상황

 

Output ports

- Buffering : 전송 속도보다 빠르게 datagram이 버퍼에 도착했을 때 buffering이 발생한다.

이 때, 버퍼에서 congestion상태가 되면 packet들이 loss가 될 우려가 있다.

- Scheduling dicipline  : queuing중에 있는 datagram중에 미리 정해진 스케줄링 규칙에 따라 datagram의 전송 방식을 정한다.

 

스케줄링 방식(4)

(1) FIFO(first-in-first-out) scheduling : Queue에 도착하는 순서대로 보낸다.

(2) Priority scheduling : 가장 우선순위가 높은 패킷 먼저 보낸다.

(3) Round Robin(RR) scheduling : 패킷들을 일정 데이터 단위로 끊어서 번갈아가며 packet들을 전송한다.

(4) WFQ(weighter fair queuing) : RR을 Generalization한 경우로, 각각의 class들에게 다른 weight을 줘서 weight에 따라 번갈아가면서 보낸다.

 

discard policy

packet이 full queue에 도달하는 경우, 어떤 패킷을 우선적으로 버릴지 결정한다.

1. tail drop : 가장 나중에 도착한 패킷을 버린다.

2. priority : 우선순위가 가장 낮은 패킷을 버린다.

3. random : 랜덤하게 버린다.

 

IP : the Internet Protocol

  • datagram format
  • addressing
  • network address translation
  • IPv6

Network layer에서 사용하는 프로토콜 3가지

1. Routing Protocol

2. IP Protocol

3. ICMP Protocol

Process : 라우팅 프로토콜을 통해서 packet의 경로를 선택하고 IP프로토콜을 통해 packet을 datagram의 형태로 만들며, ICMP프로토콜을 통해 여러가지 에러를 잡는다.

- 트랜스포트 계층에서 만들어진 segment에 IP header가 붙어서 datagram의 형태로 패킷을 주고받는다.

 

<IPv4>

- IP header : 4bytes * 5 + (TCP/IP) segment = 40bytes

- Time to live : datagram의 수명이 있고, Router를 순회할 때 마다 datagram의 수명이 줄어든다.

(수명이 줄어들지 않는다면 ? 무한 순회)

- Length : 총 데이터그램의 길이

- Fragment offset : IP data를 분할해서 보내기 위한 부분

 

<IP fragmentation, reassembly>

 

- 네트워크 링크는 MTU(max transfer size_를 가진다. 이는 링크 레벨에서 프레임이 가질 수 있는 최대길이를 나타낸다.

- 서로 다른 링크 타입에 따라 서로 다른 MTUs가 정해진다.

- IP datagram은 net상에서 "fragmented" 단위로 쪼개진다.

- 하나의 데이터그램은 여러개의 데이터그램들이 된다.

- "reassembled"과정은 오로지 도착지점에서만 이루어 질 수 있다.

- IP header bits는 식별하기 위해 사용된다.(fragments와 관련된..)

 

fragmetation process

1) Length

4000 bytes Datagram = 3980 bytes + 20bytes(header)

MTU -> 각각 1480 bytes 

So, 1480 + 1480 + 1020 = 3980 -> 각각의 fragmentation은 이 수치에 각각 20씩 더한 값 = Length

 

3. IP Addressing

- Subnet

Router은 여러개의 Interface를 가지고 있고, interface마다 각각 고유의 IP주소 대역이 있어 나누어진다.

Subnet

IP Address가 비슷한 대역끼리 묶어놓은 부분을 파란색 부분인데 이 부분이 Subnet이다.

Subnet이 가지는 가장 큰 특징으로는 서브넷이 동일한 호스트들은 라우터 개입 없이 정보를 주고 받을 수 있다.

그림에서 xxx.x.x.y 가 있을 때, x부분들을 subnet part(high order bits), y을 host part(low order bits)로 사용한다.

그리고 이를 구분하기 위해 서브넷 마스크를 이용한다.

▶호스트의 인터페이스는 몇 개 일까?

호스트는 라우터와 연결되기 위해 한 개 혹은 두 개의 인터페이스를 가지고 있다.

 

IP Addressing : CIDR

CIDR : Classless InterDomain Routing(pronounced "cider")

  • arbitary length의 주소의 서브넷 부분
  • Address format : a.b.c.d/x , wehre x is #bits in subnet portion of address

 

IP Addressing : How to get one? 

Q1. Host는 네트워크(주소의 호스트 부분) 내에서 IP주소를 어떻게 얻을까

- Hard-coded by sysadmin in config file

- DHCP : Dynamic Host Configuration Protocol -> "plug-and-play"

Q2. Network어떻게 자체적으로 IP주소를 얻을까?(주소의 네트워크 부분)

 

DHCP : Dynamic Host Configuration Protocol

Goal :Host는 네트워크에 joins하고자 하는 이에서 서버로부터 동적으로 IP를 할당한다.

- Can renew its lease on address in use

- Address 재사용 가능(오직 connected/on 상태일 때 주소를 붙잡고 있는다.)

-네트워크에  join/leave 하려는 유저들에게 Dynamic IP를 제공한다.

 

DHCP Overview : 

- host broadcasts DHCP discover msg[optional] : client가 subnet에 도착하면 broadcast방식으로 DHCP 서버가 있는지 물어본다.

- DHCP server response with DHCP offer msg[optioanl] : DHCP server는 client에게 IP Address를 제공한다.

- Host requests IP address : DHCP request msg : client는 server에게 IP Address를 사용하겠다고 전달한다.

- DHCP server sends address : DHCP ack msg : server는 client에게 ACK를 보내 확인메시지를 보낸다.

 

DHCP client-server scenario

-일반적으로 DHCP 서버는 라우터에 공동 위치하여 라우터가 연결된 모든 서브넷에 서비스를 제공한다.

 

 

IP address 에서 subnet part나누기

- 3bits -> 2^3 개의 spatial생김 -> ISP로부터 IP를 받는다. 상위 21번째 비트부터 23번째 비트까지를 subnet으로 만든다.

 

NAT(network address translation)

IP주소는 다 다르므로, Unique한 특성이 있다. 그래야만, 식별이 가능하다.

그러나 IP주소를 모든 컴퓨터에 할당하기에는 부족하기 때문에 private IP를 이용한다.

내부 네트워크 -> 외부 네트워크 : Public address 

위와 같은 방식을 NAT이라고 한다.

 

EX. Host 10.0.01 <- Host 138.76.29.7 어떤 정보를 받아오고자 할 때, 

1. 호스트는 128.119.40.186으로 패킷을 보내는데 포트번호 3345를 지정해서 (10.0.0.1, 3345) NAT라우터로 보낸다.

2.라우터는 NAT table을 이용해서 IP주소를 138.76.29.7, 5001로 바꾸어서 128.119.40.186, 80로 패킷을 전송하다.

3. 패킷을 받은 서버(128.119.40.186, 80) 는 source router(138.76.29.7, 5001)로 패킷을 보낸다.

4. 패킷을 받은 라우터는 NAT translation table 의 기록된 LAN side address로 translation-> HOST(10.0.0.1, 3345)로 패킷을 보낸다.

 

IPv6

IPv4를 통해 IP주소 할당 방식의 한계로 등장한 방식이다.

IP address(32bits)*4 = 128bits address

- Header size = 40 bytes size

- Next head를 달아서 data의 상위 레이어 프로토콜을 알 수 있게 했다.

- ICMPv6 : 기존의 IPv4에서는 fragmentation해서 packet을 보냈다면, IPv6는 패킷을 fragmentation하지 않고, "Packet too Big" message를 보내고, 이를 수신측에서 받으면 sender가 패킷을 줄여서 보내게 된다.

 

다만, IPv4와 IPv6가 같이 사용되기에 라우터 호환성 문제가 생긴다.

이를 보완하기 위해 등장한 개념이 "Tunneling"이다.

 

Tunneling

기존의 네트워크 중 IPv4를 사용하는 곳이 많기 때문에 IPv6를 IPv4에 pay load형태로 담아서 보내는 것을 의미한다.

 

라우팅을 효율적으로 하기 위해 라우팅 프로토콜이 어떤식으로 구성되는지 본다.

 

Generalized Forwarding and SDN

aka. flow table

- SDN : control plane의 remote controller에서 flow table을 만들고, 각각의 라우터들에게 flow table을 내린다.

 

OpenFlow data plane abstraction(flow table creation condition)

1. Pattern : header fields의 패턴과 받은 패턴을 match시킨다.

2. Action : 받은 패턴에 따라 drop, forward, modify등의 동작을 수행한다.

3. Priority : 패턴이 여러개라면 어떤것들이 우선순위가 높은 순으로 처리

4. Counters : 지금까지 받은 패킷의 바이트 갯수는 몇개인지 기록한다.

 

위 그림에서처럼, 각각의 라우터들은 들어온 패턴에 대해 어떻게 처리할지(match+action) flow table을 가지고 있다.

 

위의 조건들을 충족하는 Flow table을 만들면 다음과 같은 역할을 할 수 있다.

  • Router
    • match : longest destination IP prefix
    • action : forward out a link
  • Switch 
    • match : destination MAC address
    • action : forward or flood
  • Firewall
    • match : IP Address and TCP/UDP port numbers
    • action : permit or deny
  • NAT 
    • match : IP address and port
    • action : rewrite address and port

하나의 SDN Router은 다양한 기능을 수행할 수 있다.