Network Layer (1)
Network Layer
- 송신자로부터 수신자로 segment를 전송
- 송신자 측에서는 segment를 datagram으로 캡슐화
- 수신자 측에서는 segment를 transport layer로 전송
- router는 header field의 모든 IP datagram을 검사하여 넘김
Two key network-layer function
-
forwarding
- router의 input에서 적절한 output의 router로 패킷을 전송
-
routing
- 소스로부터 목적지까지 패킷이 전송되어야 할 경로 결정
- Routing algorithm
Connection setup
- datagrams flow 이전에 두 종단 시스템과 router는 가상의 연결을 맺어야 함
- network: 두 호스트 간의 연결
- transport: 두 프로세스 간의 연결
Connection, connection-less service
- datagram 네트워크는 네트워크 계층의 connection-less service 제공
- virtual-circuit 네트워크는 네트워크 게층의 connection service 제공
- TCP/UDP의 connection-oriented/connectionless와 같음
- 그러나 host 간 제공되는 서비스이며,
- 네트워크가 제공하는 circuit 외에는 선택지가 없으며,
- 네트워크 코어 간 수행된다는 차이 존재
Virtual circuits
- "source-to-dest path behaves much like telephone circuit"
- performance-wise
- src-to-dest path와 함께 네트워크적 action이 취해짐
- 각각의 패킷은 Virtual circuit Identifer를 지님(dest host의 주소가 아님)
- VC consists of
-
path from src to dest
-
VC numbers
- entries in forwarding tables
- VC는 현대 인터넷에 사용되지 않음
Datagram networks
- router는 종단 간 연결에 대한 상태를 지니지 않음
- Packet는 단순히 dest host address를 참조해 전송됨
Longest prefix matching
- forwarding table을 참조할 때, 가장 긴 접두부를 공유하는 범위의 Link inferface를 참조하게 되는 것
Router architecture overview
- Input ports
- datagram의 dest를 보고, forwarding table을 참조하여 output port를 검색
- forwarding 속도보다 datagram이 빨리 들어올 수 있기 때문에 Queue를 사용하여 Queueing
- Output ports
- 배출 속도보다 빠른 도착 속도를 고려해 buffer를 두어 buffering
- datagram Scheduling
Switching fabrics
- 3 types of switching fabrics
Switching via memory
- 1세대 Router
- CPU에 의해 직접적으로 switching
- memory의 bandwidth에 switching 속도 제한됨
Switching via a bus
- 공용 bus를 통해 input port memory에서 output port memory로 datagram switching
- bus의 bandwidth에 의해 switching 속도 제한
Switching via interconnection network
- bus bandwidth의 한계 극복
- 멀티프로세서에 여러 개의 프로세서 연결하기 위해 고안됨
- 이제는 보다 더 발전되어 datagram을 일정 길이로 쪼갠 후, 해당 cell들을 fabric을 통해 switching
The Internet network layer
IP fragmentation, reassembly
- network link에는 MTU(max transfer size) 존재
- 때문에 큰 크기의 IP datagram은 분할되어 전송
- 최종 목적지에서 재조립됨
IP addressing
- IP 주소: host와 router interface를 위한 32bit의 식별자
- interface: host/router와 physical link 간 연결 장치
- subnet: router의 간섭 없이 물리적으로 접근 가능한 장치들의 집합(위 그림에는 3개의 subnet 존재)
- subnetmask가 해당 subnet을 구성할 수 있는 host들의 수 정의
CIDR(Classless Inter-Domain Routing)
- 최신의 IP 주소 할당 방법
- 네트워크 클래스를 대체하고, 기존 방식에 비해 유연성을 더해줌
- 급격히 부족해지는 IPv4 주소를 보다 효율적으로 사용하게 해줌
DHCP(Dynamic Host Configuration Protocol)
- 서버로부터 동적으로 IP 주소를 얻음
- 임대하여 사용 중인 주소 갱신 가능
- 서버와 연결되었을 때만 사용하므로, 해당 주소 재사용 가능
NAT: Network Address Translation
- local network를 하나의 IP로 구성 가능
- local 내의 장치들은 보안성도 얻을 수 있음
- 외부 세계에 의해 addressable, visible 하지 않기 때문
- NAT router가 알아야 할 것
- outgoing datagram: 어느 장치에서 출발했는지
- incoming datagram: 어느 장치로 보내야 할 지
- NAT translation table
- NAT는 router의 기능을 초과하여 end-to-end system에 간섭하게 되는 단점 존재
- IPv6를 통해 더 많은 주소 사용 가능해질 것
NAT traversal problem
- client는 10.0.0.1의 특정 server와 연결하고 싶음
- 그러나 공개된 외부 IP 주소는 단 하나이기 때문에 direct 연결이 불가
- solution 1
- 외부 IP의 특정 port로 접근 요청 시, 바로 10.0.0.1로 forwarding 하게 설정
- e.g., (123.76.29.7, port 2500) always forwarded to 10.0.0.1 port 25000
- solution 2
- 10.0.0.1의 host에게 공개 IP 주소를 알림
- 직접 Port 번호와 Mapping(지정 시간을 두고)
- solution 3
- relay 서버를 활용
- relay 서버가 client와 NATed client의 패킷 교환을 중개
ICMP: Internet Control Message Protocol
- host와 router들이 network level의 정보를 교환하기 위해 사용
- error reporting
- echo request/reply
- ICMP message는 IP datagram에 들어감
Transition from IPv4 to IPv6
- 모든 router들이 동시에 업그레이드될 수는 없음
- 어떻게 network는 IPv4와 IPv6 router를 혼합해서 사용할 수 있을 것인가?
-
Tunneling
- IPv6 datagram이 IPv4의 payload로 실려다님