본문 바로가기
네트워크/컴퓨터 네트워크 수업

4-2. What's inside a router(1)

by dustnn 2024. 11. 12.

- Overview of Network Layer
- What's inside a router
- IP(Internet Protocol) : forwarding을 위해 사용
- Generalized Forwarding, SDN(Software-Defined Network)
- Middleboxes : 새롭게 생겨나는 기능들을 router의 핵심 계층으로 실을 수 없어 만드는 별도의 box


 
switch는 data plane의 역할만 수행하지만
router은 control plane과 data plane의 역할 모두 수행한다.
 
두 가지 plane의 역할을 수행하기 위해서 어떤 것을 가지고 있는지 알아보자.
 
 
 
1. Control plane
: in/out되는 packet 정보는 routing 정보
routing 정보를 통해 네트워크 전체의 상황 파악 => network logic이 적용돼야 하는 routing algorithm 통해서 RIB 계산
=> RIB로부터 FIB 구축해서 data plane에게 보내줌

 
2. Data plane
: in/out되는 packet 정보는 user의 정보

 
 
그럼 이제 구체적으로 어디서 무슨 작업이 발생하는지, 어떤 과정을 거치는지 알아보자.
 
- Control Module: routing protocol(사진에서는 OSPF process) 이용해 RIB table 구축(Control plane이 속함?)
- Switch Module: 들어온 line card로부터 나가야 할 line card로 switching 해줌()
- Line card: link들마다 각자의 line card 존재(Data plane이 속함?)
 
(참고)
* FIB table: output link로 내보냄
* ARP table: mac주소와 ip주소 매칭(output port로 내보내려면 link를 통해 내보내는데 이때 그 link가 해당하는 frame에 실려야 함. 그 frame에 실리려면 mac 주소가 들어가야해요)
* Physical Port: 하드웨어(Network Interface Card) => 여기에 link들이 물려있음

 
 
 
 

router 4가지 구성요소

 
- Routing processor
- Input port
- High-speed switching fabric
- Output port
 
 

1. (Control plane/Routing processor/Control Module) Routing protocol 수행해서 정보 모은 다음
routing algorithm 적용해 FIB 계산해 input port로 내려보내줌
2. (Data plane/Input ports/Line Card) Input port (phy layer->Link layer->NW layer)
3. (Data plane/High-speed switching fabric/Switch Module) Input port에서 어느 output port로 보낼지 결정 "switching"
4. (Data plane/Output ports/Line Card) Output port
 
Control plane(software)에서는 millisecond time frame
Data plane(hardware)에서는 forwarding이 빨리 일어나야 하기 때문에 nanosecond time frame

라우터 대략 구조

 

Input port의 구조

 
- Physical layer: bit단위로 line을 받음
- Link layer: link의 protocol 실행해서 처리, IP datagram을 벗겨내 NW layer로 보내줌
- NW layer: output port로 갈 수 있도록 switch fabric으로 밀어넣어줌
* NW layer에서 queueing은 나가는 속도보다 들어오는 속도가 빠를 때 일어남(output port의 queue와 비교)
 
=> input port processing은 "line speed"로 일어난다.
 

input port

 
 
Switch fabrics의 구조
 
input buffer에서 output buffer로 packet 전송
- switching rate: input port에서 output port로 전송되는 속도(switching을 빨리 해주지 않으면 input port의 queue가 길어지므로 중요!!)
=> N개의 input port가 있고 line rate가 R이라면, switching rate=NR
 
** input/output port를 구분해서 표현하지만, 실제로 각 port는 input port 역할을 할 수도, output port 역할을 할 수도 있다.
그래서 연결된 line은 2R개가 아니라 R개!

 
 
 
- Memory 방식: input 들어오면 memory bus를 통해 들어와 memory에 저장됨
=> output port에서 memory bus를 통해 memory로부터 가져감
=> memory bus 2번 지나는 셈..

 
- Bus 방식: input port가 전용 bus에 밀어넣고 bus를 통해 output port로 전달됨
 

 
=> memory와 bus 방식은 output port가 같건 다르건 병렬적 진행이 불가
 
- Interconnection Network 방식: 한 번에 여러 개의 packet이 동시에 output port로 가도록 가능
=> 한 번에 한 쌍의 input-output port 만 전달 가능(여러 개면 충돌)
=> ex. Crossbar 형식: 서로 다른 input port가 각각 다른 output port로 연결될 때 병렬적 forwarding 가능(output port가 다르면 동시에 가능)
 

 
*속도: Memory < Bus < Interconnection Network
 
- multistage switch
같은 output port로 나가는 서로 다른 input packet들이 병렬적으로 내보내질 수 있음(같은 output port로 나가는 packet들은 병렬적 처리가 안 된다는 interconnection network의 한계 보완)

 
 
"N개의 switching fabric에 연결"
 
다음과 같이 N개의 plane으로 나눔(datagram이 조각조각 나뉘어 정해진 크기의 plane들에 나눠 담김)
=> 나갈 때는 조각들을 다 합쳐
 

 
Cisco CRS router
- basic unit: 8 switching planes
- each plane: 3-stage interconnection network
- 100 Tbps까지 용량 지원 가능
 
 
HOL blocking
 
switching fabric 안에서의 속도 < input port의 속도
=> input queue가 발생 => HOL blocking
 
빨간색 패킷은 빨간색 output port로, 파란색 패킷은 파란색 port로, 초록색 패킷은 초록색 port로 간다고 할 때

첫 번째 전송에서 파란색 패킷은 한 개이므로 문제 없지만..
빨간색 패킷은 두 개이므로 충돌이 일어나 밑의 빨간색이 blocked됨
그러면 다음 패킷인 초록색은 초록색 port 열려있어도 한 packet time 밀려나게 됨
 
 

Output port 구조

 
input port와 반대로 구성된다고 보면 된다.
Input port가 Phy layer->Link layer->NW layer 순서로 구성된다면,
Output port는 NW layer->Link layer->Phy layer 순서로 구성된다.
 
Q: Input port에서 이미 목적지가 정해졌는데 왜 output port의 NW layer에도 queue가 존재할까?
A: Output port에 들어오는 switching rate는 NR, 나가는 속도는 R이기 때문에
즉, 들어오는 속도가 나가는 속도보다 빠르기 때문에 나가기를 기다릴 곳이 필요하다.

 Input portOutput port
queue 존재 이유ingoing link와 switching fabric
속도 차이 때문에
switching fabric과 outgoing link
속도 차이 때문에

 
하지만 queue가 존재한다면 buffer overflow로 인한 delay와 loss는 필연적으로 존재한다.
그래서 drop policy와 scheduling discipline이 필요하다.
- drop policy: queue가 꽉 차있는 상태에서 또 다른 packet이 들어올 경우 어느 것을 drop시킬 것인가 기준 정의
- scheduling discipline: scheduling의 우선순위 정의 => 어떤 packet이 우선적으로 outgoing link를 사용할 수 있게 해줄건지 정의
ex. 더 많은 비용을 지불한 사용자가 보낸 packet을 먼저 처리하도록 해줌
<-> 최근에 미국에서는 network neutrality
 

 
RFC 3439 rule of thumb
 
경험적인 기준을 통해 buffering의 크기 결정
 
1. link가 두꺼울수록, 길수록 더 큰 크기의 buffer 지정해준다. => buffer가 꽉 차도록 최대한 밀어넣음
결국 두껍고 큰 core부분의 link에 큰 buffer를 할당해주는 것.

Buffer의 capacity = C*R (C: link capacity, R: RTT)

 
2. 여러 source-destination pair가 공유할수록 multiplixing 때문에 traffic이 drop될 확률 있음
 
1과 2를 고려하여 다음과 같은 공식

Buffer Management
 
 
drop: 패킷 만석일 때,, 뭘 버릴 건지 정함
 
1. tail drop: 선착순으로 들어와 꽉 찼을 때 들어오는 packet drop
2. priority: 우선순위가 적은 packet drop
 
 
marking: drop 되기 전에(queue가 꽉 차기 전에) 미리 congestion detection해서 알려줌
 
지나가는 packet의 ip header의 특정 비트(TCP의 ECN 매커니즘의 경우 ToS field)를 검사
-> TCP 계층에 ToS 값 알려줌
-> sender쪽 TCP segment header에 적어 보냄
-> sender가 drop되기 전에 congestion 알게됨
-> 보내는 속도 줄임
-> loss 방지
 
* ECN: congestion notify
* RED(Random Early Detection): congestion level에 비례해 random
 
Packet Scheduling
 
packet scheduling: queue에 들어와있는 packet들 중 어떤 것을 link로 내보낼 것인가 결정
 
- first come, first served: 선착순

 
- priority: header field 사용해 우선순위 식별해 classify
* 높은 priority class가 모두 끝나면 그 다음 priority class 시작
* 다음과 같이 high priority queue와 low priority queue가 나뉘어 있고 high priority queue가 비어있다면 low priority queue 처리
=> arrivial 순서와 시점이 다음과 같을 때 deparature은 1->3->2->4->5
* low priority queue의 packet이 처리 중일 때 들어온다면 하던 거 마저 하고 high 처리

 
 
- round robin(RR): priority처럼 header 참고해 traffic을 classify하되, 각 class들이 동일한 기회를 가질 수 있도록 함
class들 순차적으로 돌아가며 기회 제공
 

- weighted fair queueing: round robin을 일반화
RR 처럼 모든 class에 동일한 기회 제공하는 것이 아니라,,, 각 class의 weight별로 차등 제공
 

R * w1/(w1+w2+w3)
(R=link의 service rate)

 
=> 자신의 무게만큼 service rate 할당받음
 
Network Neutrality
 
위와 같이 Packet scheduling을 할 때 차등 분배를 하지 말고 똑같은 기회를 부여하자는 것
ISP들이 사용자, 내용, 웹사이트, 플랫폼, 앱 등등의 이유로 요금을 다르게 하는 것을 불법으로 여긴다.
(막거나 느리게 하거나 지불한 비용에 따른 차등 지불xxx)
- no blocking
- no throttling
- no paid prioritization