Network layer
- IP(Internet protocol)가 제일 중요
- 세그먼트를 데이터그램으로 캡슐화
- Router 동작
두 가지 중요한 기능
- forwarding : input포트로 받은 후 output으로 보낼 경로가 많다 -> 적절한 router로 내보내는 과정을 의미(단일 교환)
- routing : 어떻게 보낼 것인지 정하는 과정 -> 어느쪽으로 보내야하는지 전체적인 흐름을 봐야함(출발지에서 목적지까지의 계획과정)
Data plane
- 데이터를 받으면 address를 보고 어느 곳으로 보낼 것인지 결정하는 것 -> 라우터마다 해야 할 일(forwarding)
Control plane
- routing알고리즘이나 SDN(소프트웨어 정의 네트워킹)을 이용 -> 복잡함
- 라우터들이 추가되면 알고리즘 수정을 해야함 -> software - defined networking을 사용(규칙을 부여)
Per-router control plane
- 각각의 라우터들은 rocal forwarding table을 가지고 있음 - Routing Algorithm(control plane)에 의한 것
- 헤더의 값에 따라서 어느 링크로 전송할지를 정함 - data plane
- 현재는 Remote controller로 모든 라우터를 관리하고 각각의 라우터들에게 명령을 내려 라우터들이 simple해졌으며 추가적인 processing이 필요없게 되었음
Network sevice model
- 정확한 전달
- 40msec 이하의 딜레이 보장
- 순차적인 데이터그램 전송
- 최소 대역폭 보장
- 패킷과 패킷 사이의 시간 변화의 제약
Network layer sevice models
- 서비스 모델, 대역폭 보장, 무손실 보장, 순서, 타이밍, 혼잡 피드백의 기준이 있음
- 우리가 사용하는 인터넷의 경우 최선을 다하는 서비스모델에 아무런 보장과 피드백이 없음
- CBR, VBR, ABR, UBR 등의 서비스 모델이 존재
- 그러나 이러한 모델들은 공유하기가 어렵고 실제로 보장하기가 어려움
Router architecture
- Swiching를 통해 전달
- routing processor 소프트웨어로 연산하여 rule을 보냄 -> 어느 output port로 전달할 것인지
- Input port functions
- line termination : physical layer - 비트 레벨 수신
- link layer protocol(receive) : data link layer - 이더넷 같은 것들
- lookup, forwarding - queue존재, decentralized switching(분산형 스위칭)
- 헤더 값과 테이블을 비교하여 어느 출력 포트로 보낼 것인지 정함
- 입력 속도면에서 완벽한 입력처리
- 큐잉 : switch fabric에서 전달하는 속도보다 빨리 보낼 수 없으므로 대기열에 저장해둠
- 대상 IP주소에만 기반한 전달
- 일반화 된 전달 : 모든 헤더 필드 값 집합을 기반으로 한 전달
-
범위들 중 겹치는 범위만 기억하면 쉽다 -> 앞 부분만 비교하고 해당하는 링크에 전달하기만 하면 되기 때문
-
prefix matching
-
Longest prefix matching : 대상 주소와 일치하는 가장 긴 주소 접두어를 사용
-
AND연산자로 확인
-
TCAM (Ternary Content Addressable Memories) : 테이블 크기에 상관없이 한 클럭 주기로 주소 검색
-
Switching fabrics
- 입력 버퍼에서 적절한 출력 버퍼로 패킷 전송
- switching rate : 패킷이 입력에서 출력으로 전송 될 수있는 속도
- 3종류의 switching fabrics
- memoy : CPU를 직접 제어하는 전통적인 컴퓨터, 패킷이 시스템의 메모리에 복사 됨 -> 메모리 대역폭에 의해 제한되는 속도
- 개선 방법 : hardware 사용
-
Bus 공유 : 여러 곳에서 동시에 접속시 버스를 사용하는 하나의 연결때문에 여러 연결들이 대기 -> 비어있는 공간이 존재하게 됨
-
interconnection network : 버스를 cross하여 연결 -> 대기시간이 없어짐 -> 제한을 줄일 수 있음 -> 두 개가 동시에 동일한 목적지로 전송되는 경우 하나의 패킷(input port) 전달 될 수 있기 때문에 입력을 기다려야한다.
-
Input port queuing
- 매우 빨라진 input들 때문에 queuing delay가 생기게 됨
- fabric의 전송 속도보다 input의 전송속도가 빠르면 drop도 발생
- HOL (Head-of-the-Line) blocking : 대기열 앞에있는 데이터 그램은 대기열에있는 다른 패킷들이 앞으로 이동하는 것을 방지합니다.
- 위 그림처럼 같은 output port로 이동하는 패킷이 동시에 전송 되고 있다고 생각해보자
- 여기서 첫 번째 input port가 선택 되었다면 세 번째 input port는 대기해야 할 수 밖에 없음
- 초록색 패킷의 경우 빨간색 패킷이 모두 output port로 이동할 때까지 대기해야하는 문제가 생김(빨간색 패킷에 의해 blocking)
- Output ports
- output에서 queuing이 발생 -> output에서는 혼잡 발생
- 데이터 그램이 전송 속도보다 빠르게 패브릭에서 도착할 때 버퍼링 필요 -> 큐잉(fabric에서 빨리 들어오면 저장시켜 놓음)
- 스케쥴링 분야는 전송을 위해 대기중인 데이터 그램 중에서 선택
- priority scheduling : 우선순위 스케줄링 -> 망중립성 유지
- output port의 queueing
- 스위치를 통한 도착율이 출력 회선 속도를 초과 할 때 버퍼링
- 큐잉(지연)과 출력 포트 버퍼 오버 플로우로 인한 손실
버퍼링 계산
-
10Gbps의 링크 C, RTT가 250msec라면 2.5Gbit의 buffer가 존재
-
N은 TCP흐름(flow의 수)인데 작은 양의 동적인 큐잉 분석에 기반을 둔다면 무시해도 상관은 없음
Scheduling mechanisms
-
scheduling : 링크에 보낼 다음 패킷 선택
-
FIFO(first in first out) 스케줄링 : 대기열에 도착한 순서대로 전송
-
discard policy : 큐가 꽉차서 버리는 경우에 어떻게 버릴 것 인가?
-
tail drop : 도착 패킷 버리기
-
priority : 우선 순위 기준으로 삭제 / 제거
-
random : 무작위로 드롭 / 제거
-
Scheduling policies
-
priority : 우선 순위가 가장 높은 대기열에있는 패킷을 보냄
-
순위에 따라 que를 두어 각각에 저장
-
순위에 따라 순서를 정하여 처리
-
Round Robin (RR) scheduling : 여러개를 접하더라도 우선순위 없이 순서대로 번갈아가며 처리(순차적)
-
Weighted Fair Queuing(WFQ) : 데이터가 많이 쌓인 que를 먼저 처리
-
그러나 위 세가지 방식은 공정성에 어긋나기 때문에 아직까지도 사용되지 않고 순차적으로 처리하고 있음
'네트워크 설계' 카테고리의 다른 글
[11월21일]IP addressing (0) | 2018.11.25 |
---|---|
[11월19일]IP:Internet Peotocol (0) | 2018.11.23 |
[11월12일]TCP congestion control (0) | 2018.11.17 |
[11월07일]Chapter 3 - transport: TCP (0) | 2018.11.16 |
[11월5일]GBN과 SR (0) | 2018.11.14 |