4. Network Layer (Data Plane) (1)

728x90
반응형

(1) Network Layer 개요

이번 챕터에서 가장 중요한 것은 Data Plane이 어떻게 작동하는지를 아는 것이다.

네트워크는 기본적으로 엣지 파트에서 복잡한 것을 하고 코어 파트에서는 간단하게 동작하게 만든다.

엣지 파트에서는 5개의 layer로 동작하지만 코어에서는 network layer까지만 동작한다.

forwarding은 라우터의 한 홉에서 input 포트로 패킷을 받으면 이 패킷을 몇 번째 output 링크로 보내줄까를 결정하는 것이다. 즉, 한 홉만 생각하는 것. forwarding은 fuction으로 하고, hardware로 한다.

routing은 출발지(source)에서 목적지(destination)까지 어떤 경로로 패킷들을 보낼지를 결정하는 것이다.

routing은 algorithm으로 하고, software로 한다.

그렇다면 Data Plane은 무엇을 할까?

Data Plane은 forwarding을 한다. 즉, output link를 결정한다.

반면에 Control Plane은 무엇을 할까?

Control Plane은 routing을 한다.

control plane은 어떻게 동작했을까? 먼저 기존의 라우팅 할고리즘을 먼저 설명하겠다.

기존의 라우팅 알고리즘에서는 중앙집중화는 불가능한 영역이였다.

각각의 라우터에 forwarding table을 심어놓는다. 그 뒤, 각 라우터에 라우팅 알고리즘이 작동해서 서로 interaction을 하면서 작동한다.

즉, 라우팅을 담당하는 control plane과 forwarding을 담당하는 data plane이 서로 연결이 되서 각각의 router에 들어가 있었다.

이러한 라우팅 알고리즘은 확장성이 좋다는 장점이 있다.

하지만 만약 특정 라우터에 문제가 생기면 다른 라우터들이 running을 해서 아 이 라우터에 문제가 있다는 사실을 깨닫고 다른 경로로 수행을 하는데 시간이 너무 오래 걸린다는 문제가 있었다.

이 문제를 해결하기 위해 SDN(Software Define Network)가 등장한다.

SDN이란 라우터에 data plane 기능만 심는 것이다. 그리고 control plane 영역은 remote controller로 하는 것이다.

그런데 서버 하나가 모든 네트워크를 cover한다는 것은 쉽지 않으므로 특정 서버가 특정 부분만을 담당하게 하는 것이다. 그래서 그 서버가 라우팅 알고리즘을 계산을 해서 최적화된 table을 내려주면 라우터는 그 table대로 forwarding만 하는 것이다.

즉, control plane과 data plane이 분리가 되서 control plane은 Remote controller가, data plane은 라우터가 담당하는 것이다. 이것이 가능했던 이유는 서버의 성능이 그만큼 좋아졌기 때문이다.

(2) 라우터의 내부

라우터의 다이어그램

위 사진이 전형적인 라우터의 다이어그램이다.

routing process은 라우팅을 담당한다. control plane이 담당하고, 소프트웨어로 수행되며, 조금 시간이 걸린다.

밑의 switching 부분은 포워딩을 담당한다. data plane이 담당하고, 하드웨어로 수행되며, 빠르게 동작한다.

input ports 부분과 fabric, output ports 부분을 살펴보자

일단 본 장에서는 lookup, forwarding을 위한 queueing 부분을 중점적으로 설명한다.

스위칭을 하면 header field가 들어온다. 그러면 header field의 정보를 보고 어느 output link로 보내줄까를 정한다. 이것이 match plus action이다.

여기서 중요한 것은 line speed와 맞게 패킷을 switch로 넘어가게 해야한다. 만약 그렇지 못하면 queueing이 일어나게 된다.

이 데이터그램을 포워딩하는 방법은 2가지가 있다.

· destination-based forwarding(traditional)

· generalized forwarding

matching을 해서 destination을 어떻게 정할까?

forwarding table의 destination address range에 따라서 어느 링크로 연결될지를 결정한다.

패킷의 header 파일의 destination address를 가지고 라우터는 어느 링크로 연결을 할지를 one to one으로 맵핑을 한다.

이 때 맵핑은 longest prefix matching을 써서 정한다.

longest prefix matching란 가장 길게 매칭이 되는 link interface로 넘긴다라는 뜻이다.

예를 들어, 첫번째 destination address는 가장 길게 똑같은 0번째 링크로 연결이 되고, 두번째 DA는 가장 길게 똑같은 1번째 링크로 연결이 된다.

다음은 fabric 파트가 어떻게 동작하는지 알아보자.

이 switching fabric을 구현하는 방법은 3가지가 있다.

첫번째는 memory를 이용하는 방법이다. 시스템 메모리에 패킷을 저장한 뒤, CPU를 통해서 output 포트로 나간다.

라우터에서 하기에는 오버헤드가 너무 크다는 문제가 있다.

bus 구조는 메모리를 없애고 bus connection을 사용한다.

input port에 있는 버퍼와 output port에 있는 버퍼 간에 직접 복사가 일어남으로써, 직접 복사가 일어나기 때문에 메모리 방식보다 더 빠르게 처리가 가능하다.

이 방법의 문제는 bus에서 congestion이 일어난다는 점이다.

해당 방식은 crossbar 형태로, 바둑판 모양의 네트워크를 사용하는 방식이 있다.

위 사진의 경우 세 쌍이 동시에 통신을 할 수 있게 된다.

이 방식은 datagram이 라우터로 들어올 때, interconnection은 datagram만큼 큰 사이즈를 전송할 수 없다는 문제가 있다. 그래서 이 datagram을 잘게 쪼갠다. 이것을 cell이라고 한다. 이 cell이 fabric을 통해 나간다.

Input port에서 나오는 HOL blocking에 대해서 알아보자.

링크를 통해 패킷이 들어오는데, switching에서 처리하는 속도가 들어오는 속도를 따라오는 것은 어렵다.

그러므로 앞에 버퍼를 두는데 블로킹이 발생한다.

HOL 블록킹 : input 버퍼에 패킷들이 존재하고 있다. 그런데 스위치 패브릭에서 패킷이 처리가 안되서 버퍼에 있는 패킷이 넘어가지를 못하고 있는 상황에서 새로 들어오는 패킷이 버퍼에 들어가지 못하고 버퍼 앞에서 블록킹이 되는 상황을 HOL 블록킹이라고 한다.

예를 들어, 위 사진에서 첫번째와 세번째 버퍼에 빨간색 패킷이 들어있다고 하자. 이때 첫번쨰 빨간색 패킷이 먼저 처리됬다고 하자. 그러면 뒤에 파란색 패킷은 버퍼로 들어가는데 세번째 빨간색 패킷은 첫번째에 있던 빨간색 패킷이 처리될 때까지 기다려야 하므로 세번째의 초록색 패킷은 버퍼에 들어가지 못한다. 이 초록색 패킷이 HOL 블록킹 되었다고 한다.

Output port도 Input port와 마찬가지로 버퍼링이 된다. 즉 output으로 나가는 속도가 느리면 switch fabric 뒤에서 문제가 발생하게 된다. 이 버퍼가 꽉 차게 되면 로스가 발생할 수 있다.

버퍼링이 걸렸을 때, 다음 번 패킷을 선정할 때 누구를 선택할 것인지를 정해야 한다. 이것이 스케쥴링이다. 즉, 어떤 패킷을 먼저 보낼 것인가를 결정하는 것이다.

이때 나오는 것이 망 중립성(network neutrality)이다.

· 망 중립성(network neutrality) : 특정 무언가를 편애하지 말고 공평하게 운영하라 라는 철학이다.

스케쥴링에는 여러 방식이 있다.

가장 쉽고 만만한 것이 FIFO 방식이다. 먼저 들어온 패킷을 먼저 처리하는 것이다.

tail drop : 버퍼가 꽉 찾을 때 그 다음에 들어오는 패킷들은 드랍하는 것

priority : 패킷에 가중치를 줘서 그 가중치가 낮은 패킷을 드랍하는 것

random : 무작위로 드랍하는 것

Priority는 패킷을 두는 class를 나누고 high priority와 low priority로 분류한다.

얘를 들어 오른쪽 아래 사진을 보았을 때, FIFO로 하면 1번 뒤에 2번이 와야하지만, 3번이 우선순위가 높으므로 1번 뒤에 3번 패킷이 서비스 된다.

Round Robin 스케쥴링은 multiple class를 두는데, 우선 순위를 두지 않고 각 class마다 cyclic하게 처리하는 방식이다. 위 사진을 예로 들면, 1,2,3 번 패킷이 동시에 들어오면, 빨간색 class인 1을 처리하고 다음에 초록색 class인 3번 패킷을 처리하고 다시 빨간색 클래스인 2번을 처리한다.

Round Robin에 가중치를 준 것이 WFQ이다. 즉, 각 클래스마다 다른 양의 서비스 시간을 부여받는다.

728x90
반응형

'Study > 네트워크' 카테고리의 다른 글

5. Network Layer : Control Plane (1)  (2) 2023.06.14
4. Network Layer (Data Plane) (2)  (1) 2023.06.14
3. Transport Layer (3)  (1) 2023.06.14
3. Transport Layer (2)  (0) 2023.06.14
3. Transport Layer (1)  (0) 2023.06.14