[Network] Network Layer - Control Plane& Data Plane
Dbswnstjd
2022. 6. 17. 16:14
Network layer은 모든 host, router에서 재설정된다.
Forwarding VS Routing
Forwarding
router의 input 부터 output까지 packet이 옮겨지는 것
data plane영역
Routing
source 부터 destination까지의 경로를 구축하는 것
control plane영역
과거에는 router내에서 forwarding , routing을 둘다 했었으나, forwarding은 hardware영역에서 발생하여 nanosecond단위가 소모되는 반면, routing은 software영역에서 발생하므로 millisecond가 소모된다.
따라서 이토록 오버헤드가 큰 routing을 따로 분리하여 remote server에서 관리하는 것을 SDN(Software-defined network)라고 하며, 이게 현재 대세이다.
참고로 forwarding은 hardware에 의해 발생하므로 fabric, 즉 선의 종류에 router의 성능이 달려있다.
SDN에서는 remote server에서 routing을 통해 경로를 설정하면(control plane), 이에 맞게 각 router에서는 forwarding을 수행하게 된다. (data plane) 지금부터는 forwarding을 수행하는 data plane영역을 공부해보도록 한다.
input port / output port
우리가 생각하던 queueing delay에서 queue가 쌓이는 buffer은 input port, output port에 실제로 존재한다. 즉 router 의 port에서 queueing delay 나 data loss가 발생하는 것이다.
input port
HOL(Head-of-the-Line) : 앞에 있는 packet이 뒤에 있는 packet의 forwarding을 막는 현상
그림3을 보자. 왼쪽 그림에서 보면 위 쪽의 붉은 packet이 붉은 output port로 가기 때문에 아래의 붉은 packet이 가지 못하고 기다리고 있다. 그로 인해 그 뒤에 있는 초록색 packet은 현재 지나갈 수 있는 상황임에도 불구하고 wait을 하게 된다
output port
그림4는 switching하는 속도보다 output line speed가 느리면 queueing이 일어난다.
Scheduling mechnism
어떤 패킷을 link로 보낼지에 대한 스케줄링이 필요하다.
priority queue, Round Robin, Weighted Fair Queueing(WFQ)(일종의 라운드 로빈인데, port에 weight가 존재해서 각자 다른 시간씩 packet을 보내게 된다.)
각 packet은 1500bytes까지 가질 수 있으므로, 20bytes의 datagram header을 생각하면, 각 packet은 1480bytes까지의 data를 가질 수 있다. 따라서 3980bytes의 기존 data는 1480, 1480, 1020bytes로 잘리게 되고, 따라서 마지막 datagram의 size는 1020bytes + 20bytes = 1040bytes가 되는 것이다.
잘린 packet에 주렁주렁 달린 ID, fragflag, offset은 나중에 reassemble할 때 사용된다.
IP addressing
기본적으로 IP는 router의 locality에 맞게 hierarchy한 구조로 할당되게 되있음.
그림8 IP addressing
그림을 보면 알 수 있듯, 인접한 host들의 IP는 왼쪽 bit들이 서로 유사하다.
이는 longest prefix matching을 가능케 하는 부분.
참고: Router는 port마다 IP를 가지고 있다.
Subnet
Isolated network
router을 거치지 않고 도달할 수 있는 네트워크
=LAN
그림8에 subnet개수는 3개이다.
그림9에서 200.23.16.0/23 에서 23은 subnet part의 bit수를 의미한다. subnet 내에서의 각 host는 IP의 host part로 구분된다. 그림9에서 host part는 9bit이므로 512개의 host를 할당할 수 있다.
그림9 CIDR
Hierarchical addressing
IP addressing의 할당 방식은 local 에 대해 hierarchical하다. 즉, 더 가까운 host일수록 IP의 왼쪽 bit가 더 많이 유사해지고, subnet일때 최고로 유사하다.
이로 인해 Longest Prefix Matching이 가능하다.
Longest Prefix Matching
forwarding 은 어떤 방식으로 해야하냐의 문제를 고민해보자.
초기 방식은 Destination-based forwarding으로 그림10과 같이 software단에서 if문을 이용하여 하나하나 비교해주는 방식이었다. 이는 매우 느렸다.
따라서 그림 11과 같이 hardware단에서 동작하는 longest prefix matching방식의 forwarding table을 고안하게 되었다.
IP과 테이블 내에서 가장 길게 매칭되는 destination address range의 link interface를 찾아간다.
*는 don't care을 의미함. 어떤 수가 되어도 상관없다.
예를 들어, 11001000 00010111 00010110 10100001는 0에, 11001000000101110001100010101010 은 1에 matching될 것이다.
기존의 IPv4는 32 bit의 주소를 할당하는데, 사물인터넷 시대가 도래하면서 host의 갯수가 기하급수적으로 늘고, 32bit의 주소가 부족해지기 시작했다. 이를 해결하기 위해 두가지 방식이 등장했는데 하나는 IPv6, 하나는 NAT이다.
NAT은 IP address가 부족한 문제를 해결하며, 보안을 향상 시킨다.
NAT은 subnet의 router에 NAT translation table이 존재하는데, 이는 라우터의 ip와 port를 host의 IP, port로 맵핑해준다. 따라서 라우터 내 모든 host의 ip는 외부에 보이지 않게되며, 외부에서는 맵핑되는 router의 IP, port를 destination으로 생각한다.
그에따라 router은 portnum의 크기인 16bit, 즉 65536개까지의 host를 하나의 IP만으로 맵핑할 수 있어, IP부족의 문제가 크게 해소된다.