4.1 Introduction
Network layer
전송 호스트로부터 수신 호스트로 세그먼트 전송
- 전송측에서 세그먼트를 데이터그램으로 캡슐화
- 수신측에서 세그먼트를 transport layer로 전달
모든 호스트, 라우터에 네트워크 계층 프로토콜 구현
라우터를 통과하는 모든 IP 데이터그램의 헤더 필드를 조사
핵심 Network-Layer 기능
forwarding: 라우터의 입력 링크에서 라우터의 적절한 출력 링크로 패킷을 이동
routing: 소스로부터 목적지까지 패킷의 경로를 결정
Data plane
- 지역적이고 라우터당 기능
- 라우터 입력 포트에 도착한 데이터그램이 어떻게 라우터 출력포트로 forwarding 되는지 결정
- forwarding function
Control plane
- network-wide logic
- 데이터그램이 소스 호스트로 부터 목적지 호스트까지 종단간 경로를 따라 라우터들 사이에서 어떻게 라우팅 되는지 결정
two control-plane approaches
- 전통적인 라우팅 알고리즘: 라우팅에서 시행됨
- software-defined networking (SDN): 원격의 서버에서 시행됨
Per-router control plane
모든 각각의 라우터들에 있는 라우팅 알고리즘은 서로 상호작용을 해서 포워딩 테이블을 만든다.
SDN control plane: 논리적으로 중앙화된 컨트롤 플레인
원격의 컨트롤러가 로컬 컨트롤 에이전트(라우터에 있음)와 상호작용해서 포워딩 테이블을 만든다.
Network service model
개별 데이터그램에 대한 서비스의 예
데이터그램 흐름에 대한 서비스의 예
- 순서화 데이터그램 전달
- 보장된 최소 대역폭
- 보장된 최대 jitter(패킷들의 지연의 분산값)
Internet은 “best effort” service model
- 목적지까지 성공적인 데이터그램 전달이라는 보장이 없다
- 순서와 지연에 대한 보장 없다
- 종단간 흐름에서 보장된 대역폭도 없다
Vitrual circuits
데이터그램 네트워크는 네트워크 계층 connectionless 서비스를 제공한다.
가상회선은 네트워크계층에 연결 서비스를 제공
source-dest 경로상의 모든 라우터는 각 연결을 위한 state를 유지
링크, 라우터 자원(대역폭, 버퍼 등)이 VC에 할당됨
Datagram networks: the Internet model
- 네트워크 계층에서 호 설정이 없음
- 라우터: 종단간 연결에 관한 state를 유지하지 않음
- 목적지 호스트 주소를 사용하여 패킷을 전달
- 같은 source-dest 쌍 사이에 전달되는 패킷들이 다른 경로를 통해 전달될 수 있음
Datagram Forwarding table
주소가 많으면 주소의 리스트 범위가 커지므로 줄여야함
Longest prefix matching
주어진 목적지에 대한 포워딩 테이블에서 찾을때 목적지 주소와 맞는 prefix중에 가장 긴걸 선택
4.2 What’s inside a router
라우터의 2가지 핵심 기능
- 라우팅 알고리즘/프로토콜 수행(RIP, OSPF, BGP)
- 데이터그램을 입력 링크로부터 출력 링크로 교환(switching)
decentralized switching
- 중앙 라우팅 프로세서 호출 없이 각 입력 포트에서 결정
- 데이터그램 목적지가 주어지면, 입력 포트 메모리의 라우팅 테이블을 사용하여 출력 포트를 검색
- goal: line speed로 완전히 입력 포트 처리
- queuing: 스위치 구조로 전달 속도보다 더 빠르게 데이터그램이 도착하는 경우
Switching fabrics
입력 버퍼에서 적절한 출력 버퍼로 패킷을 전송
스위칭 속도
- 다수의 라인 속도로 측정됨
- N inputs: switching rate N times line rate desirable
Switching Via Memory
1세대 라우터
- 패킷이 도착하면 입력 포트는 CPU에게 인터럽트를 보내어 메모리에 복사
- 속도는 메모리 대역폭에 의해 제한
Switching Via a Bus
입력 포트 메모리로부터의 데이터그램이 공유버스를 통해 출력포트 메모리로 직접 전달됨
버스 경쟁: 스위칭 속도는 버스 대역폭에 의해 제한됨
Switching Via An Interconnection Network
버스 대역폭 제한을 극복
멀티프로세서 컴퓨터 구조에서 프로세스 연결을 위해 Interconnection nets 개발
Output Ports
데이터그램이 전송 속도보다 더 빠르게 스위치 구조로부터 도착할 때 Buffering 요구
scheduling discipline이 전송을 위해 큐된 데이터그램들 중에서 선택
출력 포트가 결정되면 스위치 구조에 전달되지만, 임시적으로 블로킹될 수 있음 → queueing은 입력 큐에서 발생할 수 있음
Head-of-the-line(HOL) blocking: 큐의 앞쪽에 큐된 데이터그램은 큐에서 다른 데이터그램들이 전달되는 것을 방해
queueing delay와 loss는 입력 버퍼 오버플로우 때문임
Output port queueing
스위치를 통한 도착 속도가 출력 링크 속도를 초과하면 buffering 발생
queueing (delay) and loss는 출력 포트 버퍼 오버플로우로 인해 발생
4.3 IP: Internet Protocol
IP Fragmentation & Reassembly
네트워크 링크는 MTU를 가짐(Maximum Transfer unit)
- MTU: 링크 계층 프레임이 전달할 수 있는 최대 크기
- 다른 링크 계층 유형은 다른 MTU를 가짐
큰 IP datagram은 네트워크 내에서 분할됨 (fragmentation, 단편화)
- 한 데이터그램이 여러 개의 데이터그램으로 분할
- 최종 목적지에서만 재조립됨
- 단편(fragment)을 식별하고 순서를 맞추기 위해 IP header 비트들이 사용됨
IPv4 addressing
IP address: 호스트, 라우터 인터페이스에 대한 32-bit 식별자
interface: 호스트/라우터와 물리 링크 사이의 연결
- 라우터는 보통 여러 개의 인터페이스들을 가짐
- 호스트도 여러개의 인터페이스를 가질 수도 있음
IP 주소는 각 인터페이스에 관련됨
Subnets
IP address
- subnet part(high order bits)
- host part(low order bits)
subnet
- IP 주소의 subnet 부분이 동일한 값을 가지는 장치 인터페이스들
- 라우터의 개입없이 서로 물리적으로 도달 가능
subnet 결정
- 호스트나 라우터에서 각 인터페이스 분리
- 고립된 네트워크의 섬 생성
- 고립된 네트워크 각각을 subnet이라고 부름
subnet mask: /24 → 상위 24비트가 서브넷파트
IP Addresses
class-full addressing
class D는 멀티캐스트 용도
interface 개수: A>B>C → 호스트의 크기에 따라서 다름
IP addressing: CIDR
classfull addressing: 주소 공간의 비효율적 사용
CIDR: Classless InterDomain Routing
- 주소에서 네트워크 부분이 8, 16, 24로 제한되지 않고 임의의 길이 비트 선택가능
- 주소 포맷: a.b.c.d./x
IP addresses: how to get one?
시스템 관리자에 의한 수동 구성
DHCP(Dynamic Host Configuration Protocol)
IP 주소의 subnet 부분은 어떻게 얻는가?
- ISP의 주소 공간에서 할당된 부분을 얻는다.
Hierarchical addressing: 경로 집약(route aggregation)
계층적 주소화는 라우팅 정보의 효율적인 광고를 허용
내부의 네트워크 구조를 외부에 알릴 필요 없이, 하나의 네트워크 접두사(subnet)를 사용
ICANN(Internet Corporation for Assigned Names and Numbers)
DHCP: Dynamic Host Configuration Protocol
goal: 호스트가 네트워크에 참여할 때 네트워크 서버로부터 동적으로 IP 주소를 획득
- 사용중인 주소의 임대 기간을 갱신할 수 있음
- 네트워크에 참여하기 원하는 모바일 사용자에 대해서도 지원
- UDP 사용
순서
- 호스트가 DHCP discover 메시지를 브로드캐스트
- DHCP 서버는 DHCP offer 메시지로 응답
- 호스트는 IP 주소 요청: DHCP request 메시지
- DHCP 서버는 주소 전송: DHCP ack 메시지
DHCP는 서브넷 위의 IP주소 외에 first-hop router의 주소 이름과 DNS 서버의 IP 주소 네트워크 마스크등을 리턴할 수 있음
NAT: Network Address Translation
동기: 로컬 네트워크는 외부 네트워크가 관심을 가지는 단 하나의 IP 주소만을 사용
- ISP로부터 주소 범위가 할당될 필요 없음
- 외부에 알리지 않고 로컬 네트워크에서 장치들의 주소를 변경 가능
- 로컬 네트워크의 주소 변경 없이 ISP 변경 가능
- 로컬 네트워크 내의 장치들은 외부에서 명시적으로 주소 지정이 되지 않으며, 보여지지 않음
요소
- 발신 데이터그램: 모든 발신 데이터그램의 (source IP 주소, port 번호)를 (NAT IP 주소, 새로운 port 번호)로 변경
- NAT 해석 테이블에 모든 (source IP 주소, port 번호)와 (NAT IP 주소, 새로운 port 번호)의 해석 쌍을 기억
- 수신 데이터그램: 모든 수신 데이터그램의 목적지 필드에서 (NAT IP 주소, 새로운 port 번호)를 NAT 테이블에 저장된 대응하는 (source IP주소, port 번호)로 변경
16-bit port-number field
NAT은 논쟁 중
- 라우터는 계층 3까지만 처리 → port number 다뤄야함 즉, 전송계층도 다루어야함
- 종단 간 논의에 어긋남
- 호스트가 중계 노드의 IP 주소와 port 번호 변경 없이 직접 통신할 수 있어야 함
- 주소 부족은 IPv6에 의해 해결되어야함
ICMP: Internet Control Message Protocol
네트워크 레벨에서의 정보를 통신하기 위해 호스트, 라우터, 게이트웨이에 의해 사용됨
- 오류 보고
- 동작중인지 확인하기 위한 request/reply를 echo 함
IP 위에서 동작하는 네트워크 계층
ICMP 메시지: type과 code 필드가 있고 메시지 type에 의존하는 8바이트로 구성
Traceroute and ICMP
source가 연속적인 TTL을 가진 UDP 세그먼트를 보냄 → n번째 데이터그램이 n번째 라우터에 도착하면 데이터그램을 폐기 → source에게 ICMP: expired 메시지를 보냄(router의 이름과 IP주소를 포함) → ICMP 메시지가 도착하면 source는 RTT를 계산 → 3번 반복
종료 조건: destination host 도착 → dest port unreachable이라는 메시지를 source로 보냄 → source에 도착하면 stop
IPv6
동기: 32-bit 주소 공간은 조만간 완전히 고갈될 것으로 예상
추가적인 동기
- 헤더 포맷이 빠른 처리와 전달에 도움을 줌
- QoS 보장이 용이하도록 헤더 변경 → 품질 보장
IPv6 datagram format
- 고정 길이 40 바이트 헤더
- 단편화가 허용되지 않음 → 출발지에서 미리 적절한 크기로 보냄
- no checksum (to speed processing at routers)
header
- priority: flow에서 데이터그램의 우선순위를 식별(QoS 위함)
- flow label: 같은 flow에서 데이터그램 식별
- Next header: mandatory header 다음 어떤 header가 오는지
IPv4에 비해 달라진 점
checksum: 각 홉에서 처리 시간을 줄이기 위해 완전히 제거
options: 허용되지만 표준 IP 헤더 필드가 아님. Next Header 필드에 의해 지시됨
ICMPv6: ICMP의 새로운 버전
- 추가적인 메시지 유형 정의
- 멀티캐스트 그룹 관리 기능
어떻게 IPv4에서 IPv6로 전환할 것인가?
- 모든 라우터들이 동시에 업그레이드 될 수 없음
- 두가지 기법
- Dual stack: dual stack(v6, v4)을 가진 라우터는 포맷들 간의 전환을 할 수 있음
- Tunneling: IPv4 라우터들 간에는 IPv6가 IPv4 데이터그램에서 payload로 전달됨