네트워크 계층 개요

  • 네트워크 계층의 역할 - 송신 호스트에서 수신 호스트로 패킷을 전달하는 것

  • 네트워크 계층의 중요한 기능

    • 포워딩(전달) : 패킷이 라우터의 입력 링크에 도달했을 때 라우터는 그 패킷을 적절한 출력 링크로 이동시킨다.

    • 라우팅 : 송신자가 수신자에게 패킷을 전송할 때 네트워크 계층은 패킷 경로를 결정해야한다. 이때, 경로를 계산하는 알고리즘을 라우팅 알고리즘이라고 한다.

  • 네트워크 서비스 모델

    • 송수신 호스트 간 패킷 전송 특성을 정의한다.

    • 보장된 전달 : 패킷이 출발지 호스트에서부터 목적지 호스트까지 도착하는 것을 보장한다.

    • 지연 제한 이내의 보장된 전달 : 패킷의 전달을 보장할 뿐만 아니라 호스트 간의 특정 지연 제한 안에 전달한다.

    • 순서화 패킷 전달 : 패킷이 목적지에 송신된 순서대로 도착하는 것을 보장한다.

    • 최소 대역 폭 보장 : 송신과 수신 호스트 사이에 특정한 비트율의 전송 링크를 에뮬레이트 한다.

    • 보안 서비스 : 네트워크 계층은 모든 데이터 그램을 출발지 호스트에서는 암호화, 목적지 호스트에서는 해독을 할 수 있게 하여 트랜스포트 계층의 모든 세그먼트에 대해 기밀성을 유지해야한다.


라우터 내부 구조

image-20231008-050136

  • 라우터의 네 가지 요소

    • 입력 포트 : 들어오는 링크의 반대 편에 있는 링크 계층과 상호 운용하기 위해 핑요한 링크 계층 기능을 수행한다. 또한 검색 기능을 수행하는데 포워딩 테이블을 참조하여 도착된 패킷이 스위치 구조를 통해 라우터 출력 포트를 결정한다. 제어 패킷은 입력 포트에서 라우팅 프로세서로 전달된다.

    • 스위치 구조 : 라우터의 입력 포트와 출력 포트를 연결한다. 라우터 내부에 포함되어있다.

    • 출력 포트 : 스위치 구조에서 수신한 패킷을 저장하고 필요한 링크 계층 및 물리 계층 기능을 수행하여 출력 링크로 패킷을 전송한다.

    • 라우팅 프로세서 : 제어 평면 기능을 수행한다. SDN 라우터에서 라우팅 프로세서는 원격 컨트롤러와 통신하여 원격 컨트롤러에서 계산된 포워딩 테이블 엔트리를 수신하고 라우터의 입력 포트에 이러한 엔트리를 설치한다.

  • 데이터 평면이 나노초 단위로 작동하는 동안 라우터의 제어 기능은 밀리초 또는 2초 단위로 작동한다. 따라서 제어 평면 기능은 일반적으로 소프트웨어로 구현되며 라우팅 프로세서에서 실행된다.


입력 포트 처리 및 목적지 기반 전송

  • 입력 포트의 라인 종단 기능과 링크 계층 처리는 라우터의 개별 입력 링크와 관련된 물리 계층 및 데이터 링크 계층을 구현한다.

  • 라우터는 포워딩 테이블을 사용하여 도착 패킷이 스위치 구조를 통해 전달되는 출력 포트를 검색한다.

  • 포워딩 테이블은 라우팅 프로세서에서 계산되거나 갱신되거나 원결 SDN 컨트롤러에서 수신된다.

  • 입력 패킷을 스위칭할 출력 포트가 각 패킷의 목적지 주소를 기반으로 하는 경우 목적지 주소마다 하나의 엔트리가 필요하게 되는데 이는 매우 많은 주소를 필요로 하여 불가능한다. 따라서 프리픽스를 이용하여 포워딩 테이블에서 라우터는 패킷의 목적지 주소의 프리픽스를 링크 테이블의 링크 인터페이스와 매치한다.

image-20231008-053516

  • 매치되는 엔트리가 존재하면 라우터는 패킷을 그 매치와 연관된 링크로 보낸다.

  • 하드웨어 로직은 포워딩 테이블을 검색하여 가장 긴 프리픽스와 매치되는 것을 찾고, 출력 포트가 결정되면 패킷을 스위치 구조로 보낸다.


스위칭

  • 패킷이 입력 포트에서 출력 포트로 실제로 스위칭 되는 구조

  • 메모리를 통한 교환 : 메모리를 통해 스위칭한다. 목적지 주소를 검색하고 해당 메모리 위치에 패킷을 저장하는 것이 입력 라인 카드에서 처리한다.

  • 버스를 통한 교환 : 입력포트는 라우팅 프로세서의 개입 없이 공유 버스를 통해 직접 출력 포트로 패킷을 전송한다. 모든 패킷이 하나의 버스를 건너가야 하므로, 라우터의 교환 속도는 버스 속도에 의해 제한된다. 그럼에도 불구하고 버스를 통한 스위칭은 종종 작은 지역 및 기업 네트워크에서 작동하는 라우터에서 사용하기에 충분하다.

  • 상호연결 네트워크를 통한 교환 : 공유 버스의 대역폭 제한을 극복하기 위해서 좀 더 복잡한 상호연결 네트워크를 사용한다. N개의 입력 포트를 N개의 출력 포트에 연결하는 2N 버스로 구성된다. 각 수직 버스는 교차점에서 각 수평 버스와 교차하며 수위치 구조 컨트롤러에 의해 언제든지 열거나 닫을 수 있다. 현대의 스위칭 방식은 크로스바 스위치는 여러 패킷을 병렬로 전달할 수 있도록 한다.


출력 포트 처리

  • 출력 포트의 메모리에 저장된 패킷을 가져와서 출력 링크를 통해 전송한다.


큐잉 발생 위치

  • 패킷 큐는 입력 포트와 출력 포트 모두에서 형성될 수 있다. 큐의 위치와 범위는 트래픽 로드, 스위치 구조의 상대 속도 및 라인 속도에 따라서 달라진다.

  • 큐가 커지면 라우터의 메모리가 소모될 수 있고 도착하는 패킷을 저장할 수 있는 메모리가 없을 때 패킷 손실이 발생한다.

  • 입력 큐잉

    • 입력라인 속도에 비해 스위치 구조가 충분히 빠르지 않다면 패킷이 스위치 구조를 통해 출력 포트로 전송되기 위해 차례를 기다려야한다.

    • 스위치 구조에선 경쟁이 없는 상태이지만 라인의 앞쪽에서 다른 패킷이 막고 있을 때 다음 패킷이 입력 대기를 해야하는 상황을 스위치에서의 HOL 블로킹이라고 한다.

  • 출력 큐잉

    • 스위치가 출력 포트에 비해 속도가 빠르게 되면 시간 단위에 단일 패킷만을 전송할 수 있는 출력 포트에 계속해서 패킷 큐에 패킷이 쌓이게 되어 도착 패킷들을 출력 링크를 통한 전송 큐에서 대기해야한다.

    • 대기 중인 패킷의 수가 출력 포트에서 사용 가능한 메모리를 다 소모할 만큼 충분히 많아질 수 있다.


패킷 스케줄링

  • 큐에 있는 패킷이 출력 링크를 통해 전송되는 순서를 결정하기 위해서 사용되는 큐잉 처리 방법

  • FIFO

    • 출력 링크 큐에 도착한 순서와 동일한 순서로 출력 링크에서 전송할 패킷을 선택한다.

    • 패킷은 도착한 순서와 동일한 순서로 나가게 된다.

  • 우선순위 큐잉

    • 출력 링크에 도착한 패킷이 큐에 도착하면 우선순위 클래스로 분류된다.

    • 우선순위가 낮은 패킷이 먼저 큐에서 대기했더라도 우선순위가 높은 패킷이 도착하면 우선순위가 높은 패킷이 먼저 전송된다.

  • 라운도 로빈과 WFQ

    • 패킷을 클래스로 분류하지만 우선순위가 존재하지 않으며 라운드 로빈 스케줄러가 클래스 간에 서비스를 번갈아가며 제공한다. 라운드 로빈 스케줄링은 클래스를 돌아가며 패킷을 차례대로 전송한다.

    • 작업 보존 큐잉(work-conserving queuing) 규칙의 경우, 전송을 위해 큐에서 기다리는 패킷이 있다면 링크는 유휴 상태가 되는 것을 허용하지 않는다. 만약 크래스에서 패킷을 찾지 못하면 시퀀스의 다음 클래스를 즉시 검사한다.


IPv4 주소체계

  • 각 IP 주소는 32비트 길이로 2^32개의 주소를 사용할 수 있다. 이 주소는 일반 적으로 주소의 각 바이트를 십진수로 표현하고 주소의 다른 바이트와 점으로 구분하는 십진 표기법을 사용한다. (예)193.32.216.9 → 11000001 00100000 11011000 00001001)

  • 전 세계 인터넷에서 모든 호스트와 라우터의 각 인터페이스는 고유한 IP 주소를 갖고, 이러한 주소는 인터페이스의 IP 주소 일부를 연결된 서브넷이 결정한다.

  • IP 용어로 세 호스트들의 인터페이스들과 하나의 라우터 인터페이스로 연결된 네트워크는 서브넷을 구성한다고 말한다.

  • 서브넷 : 서브넷을 결정하려면 먼저 호스트나 라우터에서 각 인터페이스를 분리하고 고립된 네트워크를 만든다. 이 고립된 네트워크의 종단점은 인터페이스의 끝이 된다. 이렇게 고립된 네트워크 각각을 서브넷이라고 부른다.

image-20231008-091115

  • CIDR

    • 인터넷 주소 할당 방식 중 하나로 서브넷 주소체계 표기를 일반화한다. 서브넷 주소체계로서, 32비트 IP 주소는 두 부분으로 나누고, 이것은 다시 점으로 된 십진수 형태의 a.b.c.d/x를 가지며, 여기서 x는 주소 첫 부분의 비트 수이고 최상위 비트를 의미한다. 또한, 이것을 프리픽스 또는 네트워크 프리픽스라고 부른다.

    • 주소의 나머지 32-x 비트들은 기관 내부에 같은 네트워크 프리픽스를 갖는 모든 장비를 구변한다. 이 비트들은 기관 내부의 라우터에서 패킷을 전달할 때 사용되는 것이다.

  • IP 주소의 또 다른 형태인 브로드캐스트 주소는 255.255.255.255가 있는데 호스트가 목적지 주소가 이 주소인 데이터그램을 보내면 이 메시지는 같은 서브넷에 있는 모든 호스트에게 전달된다.

  • 주소 블록 획득

    • 기관의 서브넷에서 사용하기 위한 IP 주소 블록을 얻기 위해, 네트워크 관리자는 먼저 이미 할당받은 주소의 큰 블록에서 주소를 제공하는 ISP와 접촉해야한다. 예를 들어 ISP가 주소 블록 200.23.16.0/20을 할당 받았다고 한다면 200.23.16+x.0/23의 주소 블록을 사용하는 8개 조직을 지원할 수 있다.
  • 호스트 주소 획득: 동적 호스트 구성 프로토콜

    • 한 기관은 ISP로부터 주소 블록을 획득하여, 개별 IP 주소를 기관 내부의 호스트와 라우터 인터페이스에 할당한다.

    • 일반적으로 동적 호스트 구성 프로토콜(DHCP)을 사용하여 호스트에 IP 주소를 자동으로 할당받는다.

    • 네트워크 관리자는 해당 호스트가 네트워크에 접속하고자 할 때마다 동일한 IP 주소를 받도록 하거나, 다른 임시 IP 주소를 할당하도록 DHCP를 설정한다.

    • DHCP는 호스트 IP 주소의 할당뿐만 아니라, 서브넷 마스크, 첫 번째 홈 라우터 주소나 로컬 DNS 서버 주소같은 추가 정보를 얻게 해준다.

    • 네트워크에서 자동으로 호스트와 연결해주는 DHCP의 능력으로 플러그 앤 플레이 프로토콜이라고 한다.

    • DHCP 프로토콜 4단계 과정

      • DHCP 서버 발견 : 새롭게 도착한 호스트는 상호작용할 DHCP를 발견한다. DHCP 클라이언트는 해당 네트워크의 DHCP 서버 주소를 모르기 때문에 DHCP 발견 메시지를 포함하는 IP 데이터그램을 생성하여 목적지 주소를 브로드캐스트 주소로 하고, 출발지 주소를 0.0.0.0으로 설정하여 서브넷에 연결된 모든 노드로 브로드캐스트한다.

      • DHCP 서버 제공 : DHCP 발견 메시지를 받은 DHCP서버는 DHCP 제공 메시지를 클라이언트로 응답한다. 브로드캐스트 주소를 사용하여 서브넷의 모든 노드로 메시지를 보내어 가장 최적의 위치에 있는 DHCP 서버를 선택한다.

      • DHCP 요청 : 새롭게 도착한 클라이언트는 하나 또는 그 이상의 서버 제공자 중에서 선택할 것이고, 선택된 제공자에게 파라미터 설정으로 되돌아오는 DHCP 요청 메시지로 응답한다.

      • DHCP ACK : 서버는 DHCP 요청 메시지에 대해 요청된 파라미터를 확인하는 DHCP ACK메시지로 응답한다. 클라이언트가 DHCP ACK 메시지를 받으면 상호작용은 종료되고 클라이언트는 DHCP 할당 IP 주소를 임대기간동안 사용할 수 있다.


네트워크 주소 변환 (NAT)

image-20231008-095257

  • SOHO(small office, home office)의 확산으로 ISP는 모든 SOHO에 IP 장치를 수용할 수 있는 주소 범위를 할당해야하는데 네트워크가 현저하게 커진다면 큰 주소 블록이 할당되어야한다. 하지만 ISP 이미 SOHO 네트워크의 해당 주소 범위에 인접한 부분을 할당해 버렸다면 네트워크 주소 변환 (NAT)로 주소를 할당할 수 있다.

  • NAT 기능 라우터는 외부 세계로는 라우터처럼 보이지 않고 하나의 IP 주소를 갖는 하나의 장비로 동작한다. 따라서 NAT 기능 라우터는 외부에서 들어오는 홈 네트워크의 상세한 사항을 숨긴다. 이때, 라우터가 한 IP 주소를 DHCP를 통해서 얻는다.

  • WAN에서 같은 목적지 IP 주소를 갖는 NAT 라우터에 모든 데이터그램이 도착하면, 라우터는 NAT 변환테이블을 통해 주어진 데이터그램을 전달하는 내부 호스트를 알 수 있다.

IPv6

  • IPv4 주소 공간의 고갈에 대한 주소 공간의 수명을 연장하기 위해 세로운 프로토콜인 IPv6가 개발되었다.

  • 중요한 변화

    • 확장된 주소 기능 : IP 주소 크기를 32비트에서 12비트로 확장

    • 간소화된 40바이트 헤더 : IPv4의 많은 필드가 생략되거나 옵션으로 남겨져 라우터가 IP 데이터그램을 더 빨리 처리하게 해준다.

  • IPv4에서 IPv6로의 전환

image-20231008-112546

  • 터널링

    • 두 IPv6 노드가 IPv6 데이터 그램을 사용해서 작동하고 IPv4 라우터를 통해 연결되어있다고 가정한다. 이때, 연결된 IPv4 라우터들을 터널이라고 한다.

    • 터널의 첫번째 노드는 IPv6데이터 그램을 IPv4형식으로 캡슐화한다.

    • 터널 내부에 있는 IPv4라우터는 IPv4 데이터그램이 IPv6데이터그램을 갖고 있다는 사실을 모른채 다른 데이터 그램을 처리하는 방식으로 IPv4데이터그램을 처리한다.