IP : Internet Protocol : 데이터그램 형식, addressing, 네트워크 주소 번역 과정, IPv6
일반화된 Forwarding, SDN : Match+action in action
middleboxes
Network layer outline
네트워크 계층은 세그먼트를 송신 호스트에서 수신호스트로 전달하는 역할을 담당.
Sender: 세그먼트를 데이터그램으로 캡슐화하여 링크 계층으로 전달
Receiver : 세그먼트를 트랜스포트 계층으로 전달
네트워크 레이어 프로토콜(호스트, 라우터)은 모든 인터넷 장치에 존재,
특히 라우터는 IP datagram의 모든 헤더필드를 확인 후 적절한 곳으로 전달.
네트워크 계층의 두가지 핵심기능
Forwarding : 패킷을 라우터의 입력 링크에서 올바른 출력링크로 보내는 것
Routing : 출발지로 부터 도착지까지 패킷이 갈 경로를 결정하는 것
(Routing은 부산에서 서울까지 가는 경로고, Forwarding은 외대(buffer) 정문에서 후문까지 가는 것이라고 이해하면 쉬울 듯 하다)
Data Plane vs Control Plane
Data Plane
라우터 단위의 동작(local),데이터 그램이 라우터의 입력포트로 도착하면, 그 패킷이 어디로 나갈지를 결정하는 것
Control Plane
네트워크 단위 동작(network-wide), 데이터그램의 전체 경로를 결정
SDN : Software defined Networking -> 중앙의 리모트 컨트롤러가 경로를 계산하여 라우터의 CA(Control Agent)로 내려주고, 라우터는 내려받은 내용을 포워딩 테이블에 기록
=> 전통적인 라우터는 Data, Control Plane 모두 다 갖고 있으나,
새로운 라우터는 Data Plane만 가질 수 있음(Control은 원격지의 컴퓨터가 담당)
Network service model
best-effort : 도착 성공, 도착 순서, 대역폭 보장 불가
Intserv Guarantedd : 대역폭, 도착 성공, 도착 순서 보장
Diffserv : 트래픽별 차별화 된 서비스
Router
크게 입력포트 - fabric(데이터 날아다니는 라우터 내부공간) - 출력포트 와 라우팅 프로세서로 구분가능
input Port
line termination (Physical layer): 들어온 아날로그 신호를 디지털화
link layer : 보통 이더넷
buffer
Queueing : 스위칭 속도보다 들어오는 속도가 빠르면 버퍼링해서 좀 늦게 받음
decentralized Forwarding
destiantion-based Forwarding : IP주소만 보고 출력 포트를 결정
generalized forwarding : 헤더 필드값 다 까보고 출력 포트 결정
Switching Fabrics
입력 포트로 들어온 패킷을 실제로 출력 포트로 보내는 동작을 수행
Switching Rate : 성능 지표, (Input/Output 포트 라인 개수) * (fabric 으로 들어오는 속도)
ex> 인풋포트 N, 아웃풋포트 N, 패브릭으로 들어오는 속도 R bps => 이상적이라면 ER
Fabrics 종류
memory: 그냥 전통적 컴퓨터 기능, 입력 포트로 들어온 패킷 내용을 메모리에 복사, 내보낼때는 메모리에 안에 있는 내용 빼서 출력 포트로 보냄
bus : 입/출력 포트가 하나의 버스를 공유, 자연스럽게 버스의 대역폭만큼 스위칭 속도가 제한
interconnection Network : 이게 제일 기깔난다.
multiple Switch : 입력포트에서 분할해서 출력포트서 재조립
Queuing
Input Port Queuing
패브릭 처리 속도 << 입력포트 속도 면 발생
HOL Blocking(Head-Of-Line) : Queue의 맨 앞 데이터 그램이 뒤에 오는 데이터그램의 처리 지연시키는 것
Output Port Queuing
패브릭 처리 속도 >>> 출력포트가 내보내는 속도 면 발생
어떤 패킷을 먼저 보낼 것인가 결정하는 것은 망 중립성과 관련됨
버퍼 크기 결정
버퍼크기를 겁나게 키워놓으면, 너무 많은 버퍼링 발생 -> 지연증가
크기 결정 방식
RFC 3439 방식 : 전형적 RTT(=250msec) * link Capacity
최근에는 NRTT∗C 방식을 사용( C: link Capacity, N: number of flows)
버퍼 관리
drop : 버퍼가 꽉 찼음에도 페킷이 더해질 경우, 어떤 패킷을 버릴지 결정
tail drop : 마지막에 온거 버림
priority : 우선순위에 따라 버림
marking: 혼잡 신호(ECN,RED) 주기 위해 특정 패킷에 마킹
Packet Scheduling
FCFS : first come first serve(선착순)
Priority
high pq, low pq 두개의 큐를 만들어서 높은 우선순위는 high로, 낮은 우선순위는 Low로 보냄
그 각각의 큐 안에선 또 FCFS 처럼 별도의 스케쥴링 가능
RR(Round Robin)
패킷의 종류를 나누어 종류만큼 큐를 만듬, 종류별로 맞는 큐로 집어넣고, 각 큐별로 돌아가면서 골고루 보냄