[ Network Layer 01] Data Plane

    Transport Layer는 Process to Process communication 서비스를 제공하듯이, Network Layer는 Computer to Computer Service를 제공한다. 이번 글에서는 IP라는 핵심 네트워크 계층의 프로토콜은 어떤 서비스 모델을 채택하고 있는지를 구체적으로 살펴볼 계정이다. 

     

    Network-layer services and protocols

    이전에 tranport layer에서는 end-system 의 process부터 다른 end-system의 process를 다루었다. 이 Process to Process communication 이 가능하기 위해서는 Process가 실행되는 컴퓨터에서 상대 컴퓨터까지의 통신이 가능해야한다. 이 서비스를 제공하는 것이 바로 Network-Layer이다. 

     

    sender입장에서는 상위계층의 TCP가 network-layer에게 data를 내려보내주면, 이 data를 IP packet으로 만들어서 Data link Layer로 내려보내준다. receiver입장에서는 Data link Layer에서 Network-Layer로 올려보내준 데이터의 header를 보고 나에게 도착한 것이 맞는지 확인하고 data part를 Transport Layer로 전달해준다. 

     

    Network Layer는 모든 인터넷 디바이스에 구현되어있다. 호스트 뿐만 아니라 라우터에도 구현되어있다. 라우터에서 IP header를 참조하여 IP Packet을 다른 목적지로 전송하는 역할을 해야하기때문이다. packet이 router에 도착하는 지점을 input port라고 하고, 이 패킷이 router를 떠날때 output port를 통해서 떠난다. 

     

    Network Layer는 forwarding과 routing 2가지 주요 기능을 한다. 

    forwarding이란, 패킷의 input port에서 output port로 빠르게 패킷을 전달하는 과정이다. 

    routing이란, 경로설정으로 forwarding을 위해서 source부터 destination까지 길을 찾는 과정이다. 

     

    Network layer: data plane, control plane

    Data plane

    router에서 router로의 행위를 말한다. 

    router의 input port에 도착한 datagram이 어떤 output port으로 나가서 다음 router로 forwarding할 것인지를 결정한다. 

    Control plane

    Network Wide의 범위이다. 

    datagram이 source host부터 destination host까지 end to end path로 모든 라우터가 동일한 길로 결정한다. 

    routing 알고리즘이 특별한 것은, 분산된 모든 라우터가 서로 정보를 교환하면서 각각 알고리즘을 돌려서 최적의 길을 결정한다. 

    Traditional routing algorithm과 SDN(새로운 라우팅알고리즘을 즉각적으로 만들어 실행시킬 수 있는 네트워킹), 2가지 접근방식이 있다. 

     

    => Control plane으로 만들어진 local forwading table을 가지고 data plane이 실행된다. 

    네트워크 서비스 모델

    IP 프로토콜은 Best Effort 모델이다. 따라서 보장하는 것이 없다.

    하지만 만약 채널에서 datagram을 sender에서 receiver로 전달하는데 어떤 서비스 모델이 구현되면 좋을까? 생각이라도 해보자. 

     

    1. 개별적인 datagram을 위한 서비스

       ex. a 컴퓨터에서 b 컴퓨터로 도착하는 것을 보장 /  delay가 40 msec 내로 생기는 것을 보장

     

    2. datagram의 흐름을 위한 서비스 

       ex. 영화가 play되는 순서대로 내게 도착 /  내 device로 도착하는 최소 대역폭을 보장/ 여러 패킷끼리 연달아 전송할때 패킷과 패킷간의 간격이 균일함을 보장

     

    하지만 이러한 것들(QoS_Quality of Service: Bandwidth, loss, order, timing)을 보장해주려면 오버헤드가 생기므로 보장해주지 못한다. Best Effort를 Sevice Model로 사용하는 Internet은 이러한 것들을 다 보장 못해주지만, 다른 Service Model(Intserv, Diffserv)을 사용하는 Internet이나 ATM과 같은 것들이 존재는 한다. 기술 발전에 따른 Bandwidth의 확장과 사용자와의 가까운 거리에서 콘텐츠를 제공하는 CDN의 등장때문에 보장에 대한 니즈가 사라지면서 이러한 연구도 사라졌다. 

     

    Router Archtiecture 

    router는 컴퓨터이다보니 OS가 들어간다. 

    router는 여러 네트워크와 연결되다보니 여러개의 컴퓨팅보드가 존재한다. 

    routing service를 총괄하는 CPU와 같은 역할을 routing processor가 한다. 

     

    Input port functions

    input port 구성은 다음과 같다.

     

    1. line termination : physical layer에서 비트 수준의 데이터를 처리한다.

    2. link layer protocol : link layer에서 이더넷등의 프로토콜을 처리한다. 

    3. lookup, forwarding, queueing : 분산형 스위칭을 이용해 패킷을 수신한 후 목적지 포트를 찾아 전달하며 대기열에 패킷을 저장하는 과정을 처리한다. 

     

    분산형 스위칭은 헤더 필드 값을 사용해서 포트 메모리에 있는 포워딩 테이블을 참조하여 출력 포트를 찾는다.

    이를 match plus action이라 한다.

    분산형 스위칭은 입력 포트에서 line speed로 처리과정을 완료하는 것을 목표로 한다. 이때, 입력 포트 큐잉이라는 것이 있는데, 이는 데이터그램이 input port 3가지를 거쳐 스위치 패브릭(switch fabric)으로 전달되는 속도보다 더 빠르게 도착하면 대기열에 저장하는 것을 말한다. 전달 방식으로는 목적지 IP주소를 기반으로 전송하는 전통적인 포워딩 방법도 있고, 헤더 필드 값의 집합을 기반으로 전송하는 Generalized Forwarding 방법도 있다.

     

     

    전통적인 목적지 기반 forwarding 방법

    패킷의 목적지 IP 주소를 사용하여 해당 패킷이 전달될 경로를 결정하는 방식이다. 

    라우터는 각 패킷의 목적지 IP 주소를 보고, 라우팅 테이블을 참조하여 다음 홉(next hop)으로 패킷을 전달한다.

     

    Longest Prefix Matching

    Longest prefix matching은 라우터가 목적지 IP 주소를 기반으로 라우팅 테이블에서 가장 구체적인 경로를 찾는 방법이다. 

    앞에서부터 매칭하여 가장 긴 접두사를 선택하여 이 경로를 통해 패킷을 전달한다. 가장 길게 매칭되는 것이 목적지 컴퓨터와 더 가까이에 존재한다는 의미이다. 

    Longest prefix matching의 구현은 tenary content addressable memories(TCAM)를 사용하여 수행된다. TCAM을 사용하면 주소를 TCAM에게 제시하고, 테이블의 크기와 상관없이 한 클락 사이클 내에 주소를 검색할 수 있다. 이를 통해 고속 라우팅을 가능하게 하며 라우터가 많은 수의 라우팅 테이블 엔트리를 효율적으로 처리할 수 있게 한다. 

     

    두 개념으로 패킷을 적절한 경로로 전달할 수 있다. 

     

    Switching Fabric

    switching fabric의 이상적인 속도는 LR이다. switching fabric type에는 3가지가 있다. 

    memory는 연결하여 copy하는 거다. bus는 shared bus를 가지고 switch가 이루어진다. mother board와 dauther board가 있어서 선으로 하나의 bus 를 공유하면서 꽉차면 speed limit이 걸린다. interconnection network를 요즘에 많이 사용하는데 여러 processor들로 병렬처리된다. 자체의 network가 들어간다. 

     

    Input port queuing

    input port에 도착하는 패킷의 속도가 switch fabric의 속도보다 빠르면 Queueing 발생

    경로가 겹치면 HOL blocking이 발생한다.

    Output port queuing

    하나의 출력 포트로 패킷이 몰려들어 큐잉이 발생하는 상황이 발생할 수 있다. 이렇게 큐잉이 심하게 발생하면 손실이 발생할 수 있다. 스위칭 패브릭을 통해 나가는 속도가 출력 포트의 라인 속도를 초과한다면 버퍼링이 발생한다. 

     

    Buffer management

    1. tail drop : 마지막에 온 패킷을 버린다.

    2. priority drop : 우선순위가 낮은 패킷들을 버린다. 이 과정에서 오버헤드가 발생할 수 있다. 

    3. marking : 혼잡이 발생하기 이전에 나타나는 징후들을 통해 패킷들을 마킹하고, 이를 기반으로 적절한 방식으로 패킷을 버린다.

    (*징후 : 버퍼의 크기가 급격히 커진다)

     

    Packet Scheduling

    1. FCFS : 선입선출

    2. Priority : 우선순위 적용

    3. Round Robin : 턴을 바꿔가면서 처리해준다.

    4. Weighted fair queueing (WFQ) : Round Robin과 우선순위를 모두 적용

     

    Network Layer : Internet

    Path-selection algorithms

    - 경로 선택 알고리즘은 라우팅 프로토콜에 구현된다.

    IP Protocol

    - 데이터그램 포멧, 주소 지정, 패킷 처리 규칙을 정의한다. 

     

    IP Datagram format : IPv4

    IP protocol version number: IP 버전 번호 (ex. IPv4이므로 4를 적는다.)

    Header length: 헤더의 길이 (4바이트 단위)

    Type of service (ToS): 서비스의 유형을 나타내며, 주로 QoS(Quality of Service)를 위해 사용되며, BestEffort를 가장 많이 사용한다. 

    Total datagram length: 데이터그램의 총 길이 (바이트 단위)

    16-bit identifier, flags, fragmentation offset: 데이터그램이 분할되는 경우, 각 조각을 식별하고 순서를 매기기 위해 사용됩니다. 

    Time to live (TTL): 데이터그램이 네트워크를 통해 얼마나 오래 전송될 수 있는지를 나타내며, 홉 기준이므로 각 라우터를 통과할 때마다 감소된다. 

    Upper layer protocol: 이 데이터가 어떤 종류의 데이터인지 상위 계층 프로토콜 (예: TCP, UDP)를 나타낸다. 

    Header checksum: 헤더의 오류를 검출하기 위한 값으로 의미없다. 

    Source IP address: 데이터그램의 출발지 IP 주소로 32bit. 

    Destination IP address: 데이터그램의 목적지 IP 주소로 32bit. 

    Options: 추가 옵션 필드 (있을 경우).

     

    IP addressing : introduction

    IP 주소는 각각의 host나 router interface에 부여된 고유한 식별자이다. interface는 장치가 네트워크와 연결된 지점으로 하나의 장치당 여러개가 있을 수 있다. IP 주소는 점으로 구분된 4byte 숫자이다. 

    IP 주소는 서브넷 part 와 host part 두 부분으로 구성된다. 서브넷은 IP 주소 앞부분에 해당하는 것으로 중간에 라우터를 거치지 않고 연결될 수 있는 인터페이스의 모음이다. 서브넷 part는 같은 서브넷에 있는 Device들끼리 같은 순서의 bit를 가진다. host part는 특정 네트워크를 가지는 각각의 호스트 인터페이스를 구별하기 위해 부여되어 다른 값을 가진다. 이때 서브넷의 길이를 subnet mask라고 부른다. 

    예를 들어 subnet mask가 24라고 가정하면 host part의 bit수는 8이다. 

     

    CIDR : Classless Inter Domain Routing

    원래 IP 주소는 subnet mask의 길이가 8bit인 Class A, subnet mask의 길이가 16bit인 Class B, subnet mask의 길이가 24bit인 Class C 3가지 종류로 고정적인 subnet mask를 가진 IP주소를 사용했다. 이러한 Class 개념이 없어진 것이 바로 CIDR이고 사이더라고 발음한다.

    고정적인 서브넷 마스크를 가지고 있을때 host interface를 구별할 수 있는 host part가 낭비되기때문에 이러한 class 개념을 무시하자고 제안되었다. 

     

    IP 주소는 어떻게 얻을까?

    host는 host의 네트워크 내에서 IP 주소를 어떻게 얻을 수 있을까?

    network는 스스로 IP 주소를 어떻게 얻을 수 있을까?

     

    회사나 학교의 경우 고정된(=hard-coded) IP 를 사용한다. 반면 일반 가정에서는 DHCP 솔루션를 사용한다. 이를 plug-and-play방식이라고 한다. Dynamic Hosst Configuration Protocol (DHCP)는 IP 주소를 자동으로 할당하고 관리하는 네트워크 프로토콜이다. 

     

    DHCP

    공공장소나 가정에서는 서버를 운영하지 않기 때문에 동적인 IP 주소를 사용해도 된다. 이러한 IP 주소는 대여하는 개념이며, 재사용이 가능하다. 즉, 이전에 사용했던 IP 주소를 다시 할당할 수 있다. DHCP는 이동이 잦은 모바일 사용자에게 특히 유용한 솔루션이다.

     

    DHCP의 작동 과정

    1. DHCP discover : 클라이언트가 DHCP 서버를 찾아야하는데, 서버의 정보를 모르니까 네트워크에 브로드캐스트로 DHCP 있나요? 라는 메세지를 보낸다. (option)

    2. DHCP offer : DHCP 서버가 자신이 있음을 client의 맥주소를 통해 전달하여 알리고 client가 쓸 수 있는 IP 주소를 제안하는 응답 메세지를 보낸다. (option)

    3. DCHP Request : 호스트가 특정 IP 주소를 요청하는 메세지를 보낸다. 

    4. DHCP ACK : DHCP 서버가 요청된 IP 주소를 할당하는 확인 메세지를 보낸다. 

     

    DHCP는 할당된 IP 주소 뿐만 아니라 first-hop router의 주소, DNS 의 name과 주소, network mask에 대한 정보도 제공한다. 

     

    IP 주소에서 subnet부분이 어떻게 할당될까?

    ISP가 자사 고객의 요구사항을 보고 맞게 할당해준다. 예를 들어 ISP's block이 200.23.16.0/20 이라고 가정하면 host의 인터페이스를 32-20=12, 4096개를 가질 수 있는 것인데 이를 8개의 기관에 200.23.16.0/23, 200.23.18.0/23, 200.23.20.0/23, ... 200.23.30.0/23과 같이 쪼개어 할당할 수 있다. 

     

    하나의 회사가 예를 들어 200.23.16.0/23 이라는 ISP address를 할당받았다고 하자. 

    subnet mask는 23개이지만 하나의 회사 내에서도 24번째 bit를 가지고 0을 연구 개발팀에 할당하고 1을 영업팀에 할당할 수 있다. 그런 가정일 경우 32bit 중 남은 8bit를 가지고 host의 인터페이스(총 2의 8승, 256개)를 구분할 수 있다. 

     

    계층적 주소 : route aggregation

    route aggregation은 route 경로를 서로 교환하는 것이다. 

    회사 8개가 있다고 가정하고 이 모든 회사들이 SKT라는 ISP에 의해 각각 200.23.16.0/23, 200.23.18.0/23, 200.23.20.0/23, ... 200.23.30.0/23와 같은 ISP 주소를 할당받았다고 가정하자. 각 회사들은 SKT를 통해서 Internet에게  200.23.16.0/20으로 시작하는 주소를 내게 줘라. 라고 광고를 한다. 앞에 있는 20bit만 보면 되니까 빠르게 찾을 수도 있는 등 이점이 커진다. 앞에서부터 가장 길게 매치되는 것을 찾아가는 것은 Longest match이다. 

     

    그런데 만약 200.23.20.0/23를 쓰고있던 회사가 ISP를 SKT에서 LG U+로 변경했다고 가정해보자. 200.23.16.0/23, 200.23.18.0/23, 200.23.20.0/23, ... 200.23.30.0/23의 ISP 주소는 SKT 소유이기때문에 ISP가 할당한 주소  200.23.20.0/23를 회수하고 LG U+에서 할당한 새로운 주소를 부여받을 수도 있지만 LG U+ 와 1개의 주소를 deal하여 사용하던 주소를 그대로 가지고 있는 방법도 있다고 한다. 

     

     

    ISP는 주소 block을 어떻게 얻을까?

    ICANN(도메인 name과 숫자와 관련된 것을 총괄하는 기관)에게서 IP 주소를 할당받는다. 

    32bit IP 주소는 충분한가? 아니다. 그래서 NAT라는 꼼수를 부리는 방법과 IPv6라는 방법이 등장하였다. 

    IPv6는 사용가능한 IP 주소가 2의 128승으로 엄청 크다. 

    NAT는 다음 장에서 설명하겠다. 

    댓글