4장 네트워크 계층 : 데이터 평면
4.1 네트워크 계층 개요
데이터 평면 역할 : 입력 링크에서 출력 링크로 데이터그램을 전달하는 것
네트워크 제어 평면 역할 : 데이터그램이 송신 호스트에서 목적지 호스트까지 달 전달되게끔 로컬(local), 퍼 라우터(per-router)포워딩을 조정하는 것
4.1.1 포워딩과 라우팅: 데이터 평면과 제어 평면
네트워크 계층의 근본적인 역할 : 송신 호스트에서 수신 호스트로 패킷을 전달하는 것
포워딩(전달) : 패킷이 라우터의 입력 링크에 도달했을 때 라우터는 그 패킷을 적절한 출력 링크로 이동시켜야 한다. 포워딩은 데이터 평면에 구현된 하나의 기능
라우팅 : 송신자가 수신자에게 패킷을 전송할 때 네트워크 계층은 패킷 경로를 결정해야 한다. 이러한 경로를 계산하는 알고리즘을 라우팅 알고리즘(routing algorithm)이라 한다. 제어 평면에 구현된 기능
+ 포워딩 데이블(forwarding table) : 라우팅 알고리즘을 통해 선택한 경로를 저장한 테이블
제어 평면 : 전통적인 접근
제어평면 (SDN : software defined networking)
4.1.2 네트워크 서비스 모델
네트워크 서비스 모델은 송수신 호스트 간 패킷 전송 특성을 정의한다.
-> 어떤 서비스 모델이냐에 따라서 서비스 정도가 정해짐
네트워크 계층에서 제공할 수 있는 서비스 종류
- 보장된 전달 : 패킷이 소스 호스트에서부터 목적지 호스트까지 도착하는 것을 보장
- 지연 제한 이내의 보장된 전달 : 패킷의 전달 보장뿐만 아니라 호스트 간의 특정 지연 제한(ex 100 msec 이내) 안에 전달한다.
- 순서화(in-order) 패킷 전달 : 패킷이 목적지에 송신된 순서로 도착하는 것을 보장
- 최소 대역폭 보장 : 송신과 수신 호스트 사이에 특정한 비트 속도(ex 1Mbps)의 전송 링크를 에뮬레이트 한다. 송신 호스트가 비트들을 특정한 비트 속도 이하로 전송하는 한, 모든 패킷이 목적지 호스트까지 전달된다.
- 보안 서비스
네트워크 서비스 모델 종류 (예시)
1. 최선형 서비스(best-effort-service)
- 순서화 패킷 지원 x
- 보장된 전달 x
- 최소 대역폭 보장 x
- 지연 제한 이내의 보장된 전달 x
2. ATM 네트워크 구조
- 순서화 패킷 지원
- 최소 대역폭 보장
- 지연 제한 이내의 보장된 전달
4.2 라우터 내부에는 무엇이 있을까?
- 입력 포트 : 위 그림을 에서 입력 포트의 초록색 상자와 출력 포트의 초록색 상자는 라우터로 들어오는 입력링크로 물리계층 기능을 수행한다. 또한 입력 포트는 들어오는 링크의 반대편에 있는 링크 계층과 상호 운용하기 위해 필요한 링크 계층 기능을 수행한다. 이는 입력 포트와 출력 포트에서 파란색 상자에 해당한다. 마지막으로 가장 중요한 빨간색 상자는 입력 포트에서 검색 기능을 수행한다.
- 스위칭 구조 : 스위칭 구조는 라우터의 입력 포트와 출력 포트를 연결한다. 스위칭 구조는 라우터 내부에 포함되어 있다.
- 출력 포트 : 출력 포트는 스위칭 구조에서 수신한 패킷을 저장하고 필요한 링크 계층 및 물리적 계층 기능을 수행하여 출력 링크로 패킷을 전송한다. 링크가 양방향 일 때(즉, 양방향으로 트래픽을 전달)인 경우, 출력 포트는 일반적으로 동일한 링크의 입력 포트와 한 쌍을 이룬다.
- 라우팅 프로세서 : 라우팅 프로세서는 제어 평면 영역 기능을 수행한다. 기존의 라우터에서는 라우팅 프로토콜을 실행하고 라우팅 테이블과 연결된 링크 상태 정보를 유지 관리하며 라우터의 포워딩 테이블을 계산한다.
4.2.1 입력 포트 처리 및 목적지 기반 전달
32bit IP주소
- 가용 주소 약 40억개 이상
- 포워딩 테이블이 목적지 주소마다 하나의 엔트리를 가지면 매우 큰 테이블이 필요 -> 한계가 존재
제한된 링크 수에 맞게 주소를 범위 단위로 나눔
최장 프리픽스 대응 규칙(Longest Prefix matching rule)
- 가장 긴 프리픽스 엔트리를 찾아서 해당 링크 인터페이스로 패킷을 전달
ex) address : 11001000 00010111 00011000 10110011의 경우
1, 2 link interface 모두 match 그러나 최장 프리픽스 대응 규칙에 따라 1 link interface로 전달
4.2.2 변환기
메모리를 통한 교환
1세대 라우터
- cpu 제어 하에 스위칭하는 전통적인 컴퓨터
- 패킷은 시스템의 메모리에 복사
- 메모리 대역폭에 따라 속도가 제한 -> 하나의 패킷을 전달하는데 필요한 처리량은 2*packetSize
버스를 통한 교환
- 공유 버스를 통해 입력 포트 메모리의 데이터그램이 출력 포트 메모리로 이동
- 버스 충돌으로 버스의 대역폭에 따라 스위칭 속도 제한 (하나의 포트가 패킷을 전송하고 있다면 다른 포트는 기다려야 함)
인터커넥션 네트워크를 통한 교환
- 버스의 대역폭 한계를 극복
- 크로스바 스위치 (crossbar switch) : n개의 입력 포트와 n개의 출력 포트로 연결된 2n개의 버스로 구성
4.2.3 출력 포트 프로세싱
출력 포트의 메모리에 저장된 패킷을 가져와서 출력 링크를 통해 전송한다. 여기에는 전송을 위한 패킷 선택 및 대기열 제거, 필요한 링크 계층 및 물리계층 전송 기능을 수행하는 것이 포함된다.
4.2.4 어디에서 큐잉이 일어날까?
입력 큐잉
HOL(head-of-the-line) 차단 : 회선의 앞쪽에서 다른 패킷이 막고 있으므로 입력 큐에서 대기 중인 패킷은 사용할 출력 포트가 사용 중이지 않아도 스위칭 구조를 통해 전송되기 위해서 기다려하는 현상
출력 큐잉
스위치를 통해서 전송되는 패킷이 출력 회선이 처리하는 양보다 많으면 큐잉이 발생
4.2.5 패킷 스케줄링
FIFO [FCFS] : 출력 링크 큐에 도착한 순서와 동일한 순서로 전송할 패킷을 선택
우선순위 큐잉 : 도착한 패킷은 우선순위 클래스로 분류되어 가장 높은 우선순위 클래스에서부터 패킷을 전송
RR(round-robin) : 패킷을 우선순위 큐잉과 같이 클래스로 분류하나, 클래스들 간에 엄격한 우선순위가 존재하는 것이 아니고 각 클래스를 번갈아가며 패킷을 전송
WFQ(Weighted Fair Queueing) : 라우터에서 구현되는 라운드 로빈의 일반적인 형태, 라운드 로빈과는 다르게 각 클래스마다 가중치에 따라 다른 양의 서비스 시간을 부여받는다.
+작업 보존(Work-conserving) 큐잉 법칙 : 전송을 위해 큐에서 기다리는 패킷이 있다면, 링크는 유휴 상태가 되는 것을 허용하지 않는다.
4.3 인터넷 프로토콜(IP): IPv4, 주소 지정, IPv6 등
4.3.1 IPv4 데이터그램 형식
- 버전 번호 : 4bit, IP 프로토콜의 버전을 명시
- 헤더 길이
- 서비스 타입 : 서로 다른 유형의 IP 다이어그램을 구별, 예를 들어 실시간 데이터그램(음성)과 비실시간 트래픽(FTP)을 구분하는데 유용
- 데이터그램 길이
- 식별자, 플래그, 단편화 오프셋 : 세 필드는 IP 단편화와 관계가 있다.
- TTL (Time-to-live)
- 프로토콜 : 이 필드는 일반적으로 IP 데이터그램이 최종 목적지에 도착했을 때만 사용된다. IP 데이터그램에서 데이터 부분이 전달될 목적지의 전송 계층의 특정 프로토콜을 명시한다.
- 헤더 체크섬 : 비트 오류를 탐지, IP 헤더만 IP 계층에서 체크섬을 수행
- 출발지와 목적지 IP 주소 : IP 옵션은 IPv6에 포함되지 않는다.
- 데이터(페이로드)
4.3.2 IPv4 데이터그램 단편화
+ 모든 링크 계층 프로토콜이 같은 크기 네트워크 계층 패킷을 전달할 수 없다.
+ 링크 계층이 전달할 수 있는 최대 데이터 양 = MTU (maximum transmission unit)
+ 각 링크가 다른 링크 계층 프로토콜을 사용할 수 있고 각 프로토콜이 서로 다른 MTU를 가질 수 있음
과도한 용량의 데이터그램은 링크 계층에서 MTU를 초과해서 전달이 불가능하다.
--> 단편화(조각 fragment) 작업이 필요
각 단편(조각)은 목적지 전송 계층에 전달되기 전에 재결합되어야 한다.
그러나 라우터에서 결합하기에는 라우터 성능에 문제가 가능성 증가하기 때문에
네트워크 코어를 간단하게 유지하는 원칙을 고수하기 위해 종단 시스템에서 데이터그램 재결합 실행한다.
4.3.3 IPv4 주소체계
+ 인터페이스 : 호스트와 물리적 링크 사이의 경계
+ 서브넷 : 서브넷을 결정하려면 먼저 호스트나 라우터에서 각 인터페이스를 분리하고 고립된 네트워크를 만든다. 이 고립된 네트워크의 종단점은 인터페이스의 끝이 된다. 이렇게 고립된 네트워크 각각을 서브넷이라고 부른다.
+ 서브넷 마스크 : IP 주소에 대한 네트워크 아이디와 호스트 아이디를 구분하기 위해서 사용된다.
인터넷 주소 할당 방식
클래스 주소체계 (classful addressing)
class A SubnetMask : 255.000.000.000 or /8
class B SubnetMask : 255.255.000.000 or /16
class C SubnetMask : 255.255.255.000 or /24
- 중소형 크기의 망으로 급속히 증가하는 기관의 수를 지원하기에 문제
CIDR (Classless Interdomain Routing)
a.b.c.d/x-> x는 주소 첫 부분의 비트 수(네트워크 부분[prefix, network prefix]을 구성)
- 유동적으로 조직의 크기에 맞게 주소를 할당하는 주소 체계
주소 블록 획득
ISP와 접촉하여 각 조직(네트워크 관리자)은 주소 블록을 획득한다.
ISP는 ICANN (Internet Corporation for Assigned Names and Numbers)라는 국제기관에서 주소 블록을 획득한다.
호스트 주소 획득 : 동적 호스트 구성 프로토콜
DHCP (Dynamic Host Configuration Protocol)
네트워크 관리자가 해당 호스트가 네트워크에 접속하고자 할 때마다 동일한 IP주소를 받도록 하거나, 다른 임시 IP주소를 할당하는 프로토콜 "IP 주소 할당" 기능 수행
- DHCP 클라이언트 서버 상호동작
1. discover 서버 발견 (발품 팔기)
DHCP 서버를 찾는 과정으로써 DHCP 발견 메시지를 브로드 캐스팅 하여 서버에 DHCP 발견 메시지를 전송한다.
2. offer 클라이언트 요청 인식 (상품제시 )
서버는 클라이언트의 요청을 받아 제공할 수 있는 ip 주소와 서버 자신의 ip주소, ip 주소의 사용기한 등에 대한 정보를 DHCP 제공 메시지로 응답하는 과정이다.
3. request 재요청 ( 계약 확정 요청 )
1번 과정에서 브로드 캐스팅 하면 존재하는 DHCP에게 응답이 오기 때문에 하나이상의 서버에게 offer를 받는다. 이 중에서 주소를 임대받을 서버에게 해당 주소를 사용하겠다는 응답 메시지를 제공하는 과정이다. DHCP Request 메시지를 사용한다.
4. ack ( 계약 확정 )
클라이언트에게 해당 request 요청이 잘 수행되었다는 것을 알리는 과정이다. DHCP Ack 메시지를 사용한다.
4.3.4 네트워크 주소 변환(NAT)
사설 주소를 갖는 권역(realm)이란?
네트워크 주소들이 그 네트워크 내부에 있는 장비에게만 의미가 있는 그런 네트워크를 의미한다.
다시 말해서 private ip adderss 만이 사용하는 ip 주소의 블록을 말한다.
NAT란?
NAT는 Subnet의 각 End System들에게 IP를 할당하는 것이 아니라, Subnet 자체에게 하나의 IP를 주는 것이다. Subnet에 속한 End System들은 Private IP를 사용하지만, 외부 Subnet과 Datagram을 주고 받을 때에는 모두 하나의 NAT IP 주소를 통해 소통한다. 다만 End System별로 포트 번호가 다르다.
NAT의 결점
포트 번호가 프로세스 주소 지정에 사용되지 않고 호스트 주소를 지정하는 사용된다.
-> 기술적인 해결책으로는 NAT 순회 도구와 호스트가 가까운 NAT를 발견하고 구성하게 해주는 프로토콜인 범용 플러그 앤 플레이(UPnP)이 있다.
4.3.5 IPv6
- ipv4와 차별화된 변화
1. 확장된 주소 기능(128bit)
2. 간소화된 헤더길이 (40byte)
3. 흐름 라벨링 (오디오/비디오 -> 흐름으로 처리, 파일/전자메일 -> 흐름으로 처리 x)
4. 단편화/재결합 : IPv6에서는 단편화와 재결합을 출발지와 목적지에서만 수행한다.
5. 헤더 체크섬의 제거 : 트랜스포트 계층의 체크섬으로 충분하므로 ipv6에서는 체크섬 과정을 제거하여 라우팅 속도를 향상시킴
6. 옵션 : 옵션 필드는 더 이상 표준 IP 헤더필드가 아니다. 옵션 필드는 다음 헤더 중 하나가 될 수 있는 형태로 사용한다.
표준에서는 고정된 40byte의 IP헤더를 가진다.
- IPv6 데이터그램 포맷
- 트래픽 클래스 (Traffic class) : IPv4의 TOS 필드와 비슷한 의미로 만든 필드는 흐름 내의 smtp 이메일 같은 애플리케이션의 데이터그램보다 voice-over-IP 같은 특정 응용 데이터그램에 우선 순위를 부여하는데 사용
- 흐름 라벨 (flow label) : 데이터 그램의 흐름을 인식하는 길이
- 다음 헤더 (next header) : 데이터그램의 내용이 전달된 프로토콜을 구분하는 필드
IPv4에서 IPv6로의 전환
IPv4를 지원하는 네트워크 기기를 한순간에 바꾸는 것은 매우 어려운 일이다. 그러므로 터널링을 사용하여 ipv6를 도입한다.
원리는 이렇다. 기존에 IPv4를 사용하는 라우터는 그냥 하던데로 패킷을 처리한다. IPv6를 지원하는 라우터는 IPv4 패킷을 캡슐화하여 새로운 데이터그램을 만들어 IPv6를 지원한다.
4,4 일반적인 포워딩 및 소프트웨어 기반 네트워크 (SDN)
4.4.1 매치 (Match)
해당 필드에 일치하는 패킷의 정보에 따라서 매칭을 하고 해당 Actions 으로 작업을 수행한다.
- 진입 포트(Ingress port)는 패킷이 수신되는 패킷 스위치의 입력 포트를 나타낸다.
- 플로우 테이블 항목에는 와일드 카드도 있을 수 있다. (ex) 128.1.*.*)
- 각 플로우 테이블 항목에는 관련 우선 순위가 있어 여러 플로우 테이블 항목과 일치하면 우선순위를 따져 패킷의 액션이 정해진다.
- IP 헤더의 모든 필드가 일치 할 수 있는 것은 아니다. ex) TTL 필드
4.4.2 액션 (Action)
포워딩 (Forwarding) : 특정 필드로 전달, 브로드캐스트, 멀티 케스트의 동작
드롭핑 (Dropping) : 아무 동작이 없는 플로우 테이블 항목은 일치된 패킷을 삭제
수정필드 (Modify-field) : 패킷이 선택된 출력 포트로 전달되기 전에 패킷 헤더 필드의 값을 수정할 수 있음
4.4.3 매칭-플러스-액션 작업의 OpenFlow 예
- first example : simple forwarding
header field에 매칭된 패킷을 forword 액션을 통해 패킷을 전달
- second example : load balancing
ingress port가 다르지만 목적지 ip는 동일한 패킷에 대해서 출력 포트가 다른 액션을 취함으로써 부하를 조절
- third example : firewall
header field의 내용을 제한적으로 관리하여 해당 필드의 내용에 해당하지 않은(허락되지 않은) 패킷을 드롭
'network' 카테고리의 다른 글
[컴퓨터 네트워킹] 5장 네트워크 계층 : 제어 평면 (0) | 2021.11.05 |
---|---|
[네트워크 - 용어] 유니캐스트, 멀티캐스트, 브로드캐스트, 애니캐스트 (0) | 2021.11.03 |
[컴퓨터 네트워킹]3장 트랜스포트 계층 - 3 (0) | 2021.09.24 |
[컴퓨터 네트워킹]3장 트랜스포트 계층 - 2 (0) | 2021.09.22 |
[컴퓨터 네트워킹]3장 트랜스포트 계층 - 1 (0) | 2021.09.17 |