[Network] Layer3
네트워크 계층
역할
네트워크 상에서 end-to-end
로 패킷을 전달하는 역할을 한다.
포워딩 (Forwarding)
입력 포트로 들어오는 패킷을 다른 출력 포트로 전송하는 동작을 수행한다.
포워딩 테이블을 기반으로 동작한다.
Data plane
에서 수행된다.
라우팅 (Routing)
경로를 파악하기 위한 제어 동작을 한다.
라우팅 알고리즘을 통해서 포워딩 테이블을 생성한다.
Control plane
에서 수행된다.
데이터, 제어 평면
데이터 평면 (data plane)
IP 헤더 분석 및 포워딩을 수행한다.
Fragmentation
을 수행한다.
제어 평면 (control plane)
라우팅 알고리즘을 사용하여 포워딩 테이블을 생성한다.
ICMP
도 제어 평면에 속한다.
네트워크 서비스 모델
인터넷 네트워크 계층은 최선형 서비스(best-effort-service)를 제공한다.
- 최선을 다하지만 결과는 보장하지 않는다.
라우터의 구성요소
입력 포트
-
수신된 전기 신호를 L1 프로세서가 Bit화 한다.
-
생성된 Bit를 L2 프로세서가 Frame으로 만들어 입력 큐에 넣는다.
- Decapsulation 과정 중, 탐지된 오류는 적절한 방법으로 처리된다.
출력 포트
-
라우터로부터 출력된 IP-Datagram은 L2의 ARP 프로토콜을 통해 물리 주소로 변환된다.
-
라우터로부터 출력된 패킷을 우선적으로 큐에 저장한 다음, 패킷들을 순차적으로 Encapsulation한다.
스위치
위에서 설명한 입출력 포트를 연결하는 역할을 수행한다.
큐잉
도착하는 모든 패킷을 전송하기에 스위치가 충분히 빠른 속도로 이뤄지지 않을 때 발생한다.
입력포트
, 출력포트
에서 발생한다.
큐잉 버퍼가 가득찬 상태에서 패킷이 도착하면 패킷을 버리게 된다.
- 버퍼를 크게하면 패킷을 버리는 경우가 줄어들어서 좋을까?
-> 패킷 손실이 줄어드는 것보다 버퍼가 클수록 큐잉 지연이 길어진다고 생각하는 게 옳다.
패킷 스케줄링
FCFS, FIFO
먼저 도착한 패킷을 먼저 서비스한다.
우선순위 큐잉
클래스마다 우선순위가 있고 높은 우선순위의 클래스가 먼저 서비스된다.
동일한 우선순위라면 FIFO
방식으로 서비스한다.
라운드 로빈
클래스로 큐를 분리한다.
하지만 큐 사이의 우선순위가 존재하지 않고 스케줄러가 번갈아가면서 서비스한다.
동일한 큐에 있는 클래스는 FIFO 방식으로 서비스된다.
인터넷 프로토콜 (IP)
3계층 프로토콜 중 하나이다.
비연결형 서비스
이다.
상대방 엔티티와 연결을 맺는 개념이 없고, 그때그때 도달하는 패킷을 기준으로 동작한다.
유연하고 동작 측면에서 오버헤드가 적다.
IPv4
데이터그램
주소 체계
IP에서 사용하는 32bit (4 byte) 주소이다.
Dotted-decimal notation
을 사용한다.
- x.y.z.w 형태이며, 각 숫자는 8bit, 0 ~255 이다.
일반적으로 인터넷내에서 globally unique
하다.
NAT
영역은locally unique
하다.
인터넷 주소와 서브넷
빨간색으로 묶인 부분이 서브넷이다.
물리적으로 비슷한 위치에 존재하고 L1/L2 수준에서 같은 영역에 존재한다.
서브넷
IP 주소 앞부분(prefix)
로 지칭된다.
- 223.1.1.0/24 : 앞부분 24bit의 IP가 서브넷 주소이다.
prefix
를 제외한 나머지 IP 주소 bit가 한 서브넷 안에 포함될 수 있는 호스트의 수이다.
호스트 주소 획득
기관 담당자에게 직접 신청해서 수동으로 설정하는 방법과 DHCP 프로토콜을 사용하여 자동으로 할당하는 방법이 존재한다.
DHCP 프로토콜
클라이언트-서버
프로토콜이다.
주소 할당 과정
- DHCP server discover
- DHCP 서버를 찾는 메시지 (UDP port 67)를 보낸다.
- IP : 255.255.255.255는 브로드캐스트를 의미한다.
- 브로드캐스팅을 하는 이유는 현재 호스트와 가장 가까운 곳에서 주소를 얻기 위해서이다.
- DHCP server offer
- server가 자신의 존재를 알리는 것을 말한다. (브로드캐스팅)
- DHCP request - DHCP ACK
NAT
하나의 IP를 할당 받아 내부의 서브넷의 여러 호스트에게 공통으로 서비스하는 방식을 말한다.
내부적으로는 IP를 따로 주면서 외부로 나갈 때 할당된 하나의 IP를 사용한다.
외부 IP/Port
와 내부 IP/Port
를 매핑한다.
NAT의 역할
외부IP 하나로 여러 호스트를 네트워킹할 수 있다.
부족한 IP address 수에 대한 보완책이다.
인터넷 네트워크내의 호스트를 감추는 역할을 한다.
- 외부에서는 하나의 IP로 밖에 보이지 않는다.
IPv6
데이터그램
기존 IPv4에서는 IP 주소가 32bit 이었는데 IPv6에서는 128bit으로 확장됐다.
40bit 고정 크기의 헤더를 정의했다.
새로운 옵션 인코딩으로 유연한 옵션 처리가 가능해졌다.
흐름제어를 할 수 있는 Flow label 이 추가됐다.
라우팅 알고리즘
정의
송신자부터 수신자까지 라우터의 네트워크를 통과하는 좋은 경로를 결정하는 알고리즘을 말한다.
특징
라우팅 알고리즘을 통해 포워딩 테이블을 생성한다.
포워딩 테이블
: 입력 데이터그램에 대한 출력 포트를 정의하기 위해 각 라우터가 보유한 표를 의미한다.
제어 평면에서 수행된다.
데이터 평면에서는 포워딩 테이블을 이용해서 패킷 포워딩을 수행한다.
라우팅 알고리즘의 종류
중앙 집중형 라우팅 알고리즘
네트워크 전체에 대한 완전한 정보를 가지고 출발지와 목적지 사이의 최소 비용 경로 계산한다.
모든 노드 사이의 연결 상태와 링크 비용을 사전에 알아야 한다.
링크-상태 알고리즘 (Linked-state algorithm)
- OSPF (AS 내)
분산 라우팅 알고리즘
라우터들에 의해 반복적이고 분산적으로 수행된다.
각 노드가 모든 링크에 대한 정보를 완벽하게 가지지 않고, 자신과 연결된 링크에 대한 정보만 가지고 단계적으로 동작한다.
거리 백터 알고리즘 (Distance vector algorithm)
- BGP (AS 간)
정적, 동적 라우팅 알고리즘
정적 라우팅 알고리즘
포워딩 테이블이 시간에 따라 변하지 않거나 거의 안 변한다.
사람에 의한 조작에 의해서 변한다.
동적 라우팅 알고리즘
traffic load 및 topology 변화에 의해서 자동으로 포워딩 테이블이 갱신된다.
Routing loop 나 oscillation 문제가 발생할 수 있다.
링크 상태 알고리즘
링크 상태 브로드캐스트 알고리즘을 먼저 수행한다.
각자의 식별자와 링크 별 비용 정보를 이웃에게 전달하여 모든 링크에 대한 정보를 획득한다.
다익스트라(Dijkstra)
알고리즘을 사용한다.
트래픽 상태에 따라서 라우팅 경로가 안정적이지 못하고 진동할 수 있다. → oscillation
거리 벡터 알고리즘
링크 상태 알고리즘과 다르게 비동기적이고 분산적으로 동작한다.
이웃 노드끼리만 정보를 주고 받으면서 라우팅 알고리즘을 수행한다.
벨만 포트 (Bellman-Ford)
알고리즘을 사용한다.
자율 시스템 (autonomous system)
한 기관이 관리하는 라우터 및 네트워크 모음을 말한다.
동일한 라우팅 프로토콜에 의해서 제어, 동작된다.
인터넷은 서브넷과 gateway 라우터 형태로 계층적인 네트워크를 형성한다.
즉 서브넷간 패킷 라우팅은 반드시 gateway 라우터를 거친다.
OSPF (AS 내부)
중앙 집중형 라우팅 알고리즘 중 하나이다.
AS 내부에서 사용되는 프로토콜이다.
과정
-
모든 링크 정보를 가진 상태에서 경로를 찾는 작업을 수행한다. 이는
flooding
을 통해서 수행된다. -
Dijkstra
알고리즘을 통해 경로를 계산한다.
BGP (AS 간)
분산 라우팅 알고리즘 중 하나이다.
AS 간 라우팅을 위한 프로토콜이다.
과정
-
인접 AS 간 서브넷 도달 정보를 교환한다.
-
도달 정보에 대해 AS내 라우터에게 전달한다.
-
서브넷에 대한 라우팅 경로를 결정한다.
라우터의 종류
게이트웨이 라우터
AS의 경계에 있는 라우터로 다른 AS들에 있는 하나 또는 여러 개의 라우터와 직접 연결된다.
AS내에 있는 호스트 및 라우터와만 연결된다.
포워드 테이블을 생성할 때, AS 외부의 라우터가 포함되면 BGP, OSPF 알고리즘 둘 다 사용된다.
- AS 내부에서 경로를 찾을 때, OSPF가 사용되고 AS간 경로를 찾을 때, BGP 가 사용됨.
ICMP 프로토콜
호스트, 라우터간 메시지를 주고받게 하는 프로토콜
데이터 전송 목적이 아닌 네트워크 관리를 위해서 주로 사용된다.
IP연결 상태를 확인하기 위해서 사용된다.
ICMP를 이용해서 IP 단에서 패킷이 송수신 되는 지 확인한다.
- ICMP 메시지가 IP 데이터그램에 담겨 전송되므로 IP 바로 위에 존재한다.
- TCP/UDP 와 같이 ICMP 도 역다중화한다.
- ex) ping
참고
-
https://dad-rock.tistory.com/241
-
컴퓨터네트워크 하향식 접근