4. Network Layer (App[5] – Transport[4] – Network[3] Layer)
Chapter goals :
- Understanding network layer service models
- Understanding Forwarding VS routing
- Understanding how a router works
- Understanding routing (path selection)
- Understanding broadcast, multicast vs unicast(1 : 1 = sender : receiver)
4.1 Introduction
- Virtual circuit 은 connection orientation 개념=>TCP 와 비슷, datagram 은 UDP 와 비슷
- Network Layer 개요
Sending host 와 receiving host 간에 segment 를 transport 하는 레이어다.
Sending side 에선 segments 를 datagrams 로 encapsulate 한다.
라우터의 incoming 으론 encapsulation, out going 으론 decapsulation 이 일어난다.
모든 IP datagrams 안의 ‘Router examines header fields’ 는 network layer 를 통해 패싱된다. ex) router examines : 1.1.1.1 (IPv4) IP 를 검사하고 맞으면, 특정 port 로 forwarding 한다. 이 예시를 더 깊게 알아보자.
Two key network-layer functions
- Forwarding : 라우터를 통해 들어오는 패킷을 특정 output 포트로 보내는 작업
- Routing : 패킷의 시작지점부터 라우터들을 통해 목적지로 이동시키는 작업
Interplay between routing and forwarding
Connection Setup
- Network 와 Transport Layer 의 Connection 기준 가장 중요한 차이
n Network 는 두 호스트 간 연결, Transport 는 두 프로세스 간 연결
Network service model
- guaranteed delivery = IP 를 사용하기에 가능
4.2 Virtual circuit and datagram networks
Connection, Connection-less service
- network 레이어는 connection, connection-less 2 개의 서비스를 제공한다.
- Connection-less 는 datagram 을 이용하며, udp-like 하다.
- Connection 은 virtual-circuit 을 사용하며, tcp-like 하다.
- Transport 레이어와 차이
이전에도 말했듯, service 의 대상이 다르다.
Network layer 는 network-core 에서 구현된다. (TCP 는 end-host)
Virtual circuits
- Virtual circuits 의 메인구성
Data 를 flow 에 담기 전, call setup -> teardown
각 패킷은 VC identifier 을 갖는다. ( 도착지의 host 주소는 없음)
모든 라우터는 connection 에 데이터를 넘기기 위해 ‘state’ 를 유지한다.
라우터는 VC 의 ID Number 즉, link 를 구성할 수 있어, 라우터와 라우터 간 여러 개의 VC 를 관리할 수 있다.
VC implementation
VC forwarding table
Virtual circuits: signaling protocols
Datagram networks
- in-order 네트워크가 아니기에, 다양한 경로를 통해 datagrams 이 전송되며, 이에 따라 속도가 일정하지 않을 수 있다.
Datagram forwarding table
=> A : 특정 링크 인터페이스를 찾기 위해 수 많은 address 를 뒤적거려야 한다.
Longest prefix matching(Datagram forwarding table 탐색 알고리즘)
Datagram or VC network: why? ( 왜 두 개의 service 로 나누는가?)
4.3 What’s inside a router
Router architecture overview
- 라우터의 두 기능
Routing algorithms/protocol : RIP, OSRF, BGP
RIP : 내 다음 이웃이 누구인지를 이용
OSRF : 모든 노드간 연결 중 가장 빠른 경로 이용
Forwarding datagrams from incoming to outgoing link
Input port functions
Switching fabrics
- Memory : 메모리의 입출력 속도에 영향을 크게 받는다.
- Bus : 하나의 패킷이 버스를 사용 중 이면, 나머지를 전달할 수 없다. 대신 Memory 보다 빠름
- Crossbar : 쨩쨩맨 Generation 기법
Switching via memory
- Input port 에서 output port 로 스위칭하기 위해 메모리에 데이터를 복사해 옮기는 방법
- 하나의 데이터그램을 크로싱하는데, 메모리를 두 번 참조 => 메모리의 bandwidth 가 제한사항이 된다.
Switching via bus
- Shared bus 를 통해 datagram 을 input port->output port 로 크로싱하는 기법
- Bus contention : 스위칭 스피드가 shared bus 의 bandwidth 에 의존한다.
- 그러나 하나의 shared bus 가 사용되면 다른 incoming datagram 은 사용 완료까지 기다려야 한다는 단점이 있다.
Switching via interconnection network (Crossbar Design)
Output ports
Output port queuing
How much Buffering?
- RFC 3439 rule of thumb : 평균 버퍼링 delay 는 ‘typical’ RTT(250msec) * C(link capacity) 와 같다. ex) C=10Gbps => 2.5Gbit Buffer
- 현재는 N 개의 플로우를 활용해 아래와 같은 연산을 사용해 Buffer 을 구한다.
Input port queueing