개요
네트워크 계층에 대한 내용은 크게 data plane 과 control plane으로 구분된다.
data plane은 라우터 내에서 지역적으로 일어나는 일을 다루고, control plane은 네트워크 전반적으로 일어나는 일을 다룬다.
우선 data plane을 먼저 정리하려고 한다.
data plane에서는 라우터의 input port, output port 그리고 그 사이에 흘러가는 데이터 흐름, IP 프로토콜에 대해 정리한다.
또 Generalized Forwarding, SDN 에 대해서, 여러 중간 장치인 Middlebox에 대해서도 정리한다.
이 그림에서 3계층에 대한 이야기를 하기 시작하면, 이제 Network Core에 대한 이야기를 같이 하게 된다.
(라우터가 보통 3계층 스위치 장비로서 사용되기 때문)
지난 주제인 4계층이 process to process 통신에 대한 내용이었다면, 3계층은 프로세스가 실행되는 컴퓨터와 상대 컴퓨터 사이의 통신에 대한 서비스를 제공한다.
3계층 sender는 4계층의 전송단위인 세그먼트를 데이터로 받은 뒤, 여기에 3계층 헤더를 붙영 '데이터그램' 또는 '패킷'이라는 새로운 전송단위로 만들어 2계층으로 내려보낸다.
3계층 receiver는 2계층에서 받은 데이터로부터 IP 헤더를 보고 자신에게 도착한 것이 맞는지 확인을 한 뒤, 데이터(세그먼트)를 4게층으로 올려보낸다.
네트워크 계층은 트랜스포트 계층과 달리 인터넷 내부의 모든 디바이스에 구현되어있다.
즉, 그림에서 보듯 호스트 뿐만 아니라 라우터에도 구현이 되어있다.
라우터의 역할이 IP 패킷의 헤더를 보고 다음 목적지 어디로 보내줘야 할 지 결정해서 액션을 취하기 때문이다.
네트워크 계층에는 2가지 중요한 핵심 기능이 있다.
1. forwarding
포워딩은 라우터 내에서 일어나는 일로, input port 로 들어온 패킷을 output port 로 신속하게 내보내는 것을 말한다.
각각의 라우터에서 일어나는 forwarding을 조합하면 sender - receiver 까지 경로가 형성된다.
먼저 정리하려고 하는 data plane이 포워딩, 즉, 지역적으로, 라우터마다 발생하는 이벤트에 대한 내용이다.
위 그림에서 맨 왼쪽에 있는 라우터로 패킷이 들어왔을 때, 1, 2, 3 이라는 output link 중 어떤 링크로 내보낼 지 local forwarding table 을 보고 결정하는 것을 포워딩이라고 한다.
2. routing
포워딩을 할 때 어떤 input port 로 들어온 데이터를 어떤 output port 로 보낼지는 이미 결정이 되어있다.
그리고 라우터는 패킷을 보고 이미 결정된 규칙에 따라 빠르게 보내기만 할 뿐이다.
즉, 왼쪽에서 오른쪽으로 보내야한다면 모든 라우터는 그 패킷에 대해 왼쪽에서 오른쪽이라는 일관된 view를 네트워크 전역적으로 갖고 있는 것이다.
이때 이 규칙을 결정하는 과정(알고리즘)에 대해서 routing 이라고 한다.
위 그림에서 local forwarding table을 만드는 과정을 라우팅이라고 한다.
이 알고리즘을 라우팅 알고리즘이라고 하는데, 이 알고리즘은 컴퓨터 한대에서 실행되는 것이 아니라 여러 컴퓨터가 각각 알고리즘을 돌려서 결정해야 한다. (이때 알고리즘을 실행시키는 걸 '에이전트' 라고 한다.) 그때 서로가 서로의 결정된 알고리즘 결과를 물어보고 이 내용을 토대로 다시 자신의 알고리즘에 반영하는 과정을 거치는데, 이렇게 동일한 알고리즘을 분산된 컴퓨터가 각각 돌리고, 각각이 서로의 결과를 공유하여 최적의 결과를 찾는 것을 '분산 알고리즘'이라고 한다.
분산 알고리즘은 꽤 어려운 주제이고, 컴퓨터 한대에서 돌아가는 알고리즘보다 더 복잡하다.
그래서 간단하게만 다룰 것이다.
그런데 비교적 최근(그래도 나온지 10년은 넘은..)에 Software Defined Newtork (SDN) 이라는 개념이 등장했다.
이 개념은 어떤 특정한 라우팅 알고리즘 하나에 국한되어서 그것만 고집하지 말고, 경우에 따라 필요하다면 새로운 라우팅 알고리즘을 즉시 구현해서 즉시 각각의 라우터에 집어넣을 수 있는 방법을 생각해보자는 개념이다.
이는 라우팅에 'programmability' 를 부여한다.
이걸 도입하면 기존에 없었던 새로운 라우팅 알고리즘을 실험적으로 SDN을 통해 구현해서 돌려볼 수 있게 된다.
이 내용은 control plane, 즉, network-wide 로직에 대해 정리할 때 자세히 정리한다.
네트워크 계층 서비스 모델
IP는 인터넷 (대문자 I의 인터넷) 에 들어가 있는 프로토콜이다.
IP가 제공하는 서비스는 best effort 서비스이다. (최선을 다하지만 보장은 못한다.)
그런데 왜 보장을 못하는 Internet을 사용하는 것일까?
만약 네트워크 계층이 best effort 보다 더 나은 서비스를 제공한다면 어떨까?
sender에서 receiver로 데이터를 전송하는 통로를 '채널' 이라고 하자.
그러면 이 채널은 어떤 서비스 모델을 제공할 수 있을 지 생각해보자.
1. 데이터 전송 여부의 보장
만약 a 컴퓨터에 b 컴퓨터로 데이터를 보낼 때, a 컴퓨터에서 출발한 데이터가 반드시 b 컴퓨터에 도착하는 것을 보장하는 서비스 모델을 쓴다면 어떨까?
당연히 도착이 보장되면 사용하는 입장에서는 매우 좋다. 하지만 이를 위해 감내해야할 오버헤드가 크다면 과연 그 오버헤드를 감수하고서라도 사용해야할지 생각해봐야한다.
2. 데이터 전송 시간의 보장
예를 들면 어떤 데이터를 40ms 이내에 전송하는 것을 보장하겠다는 것과 같다.
이것도 보장할 수 있다면 좋겠지만, 보장하기 위한 부담이 매우 크기 때문에 사실상 보장하기 힘들다.
3. 데이터 전송 순서의 보장
두 컴퓨터 사이에서 여러 IP 패킷이 연속적으로 이동할 수 있다.
예를 들면, 스트리밍 서비스를 이용하여 동영상을 보는 것과 같는 서비스이다.
이때 동영상을 원활하게 보려면 당연히 동영상 앞부분부터 순서대로 데이터가 들어오기를 바라야한다.
하지만 순서에 맞게 데이터가 온다는 것도 당연한 요구사항 같지만, 이를 보장하는 것은 쉽지 않다.
IP는 대부분 보장하려고 최선을 다하지만, 100% 보장하지 않는다.
4. 데이터 전송 대역폭의 보장
영화를 보는데, 영화를 볼 때 도착하는 영상 데이터의 최소 bandwidth를 보장받고 싶은 경우, IP는 이것도 보장하지 않는다.
이걸 보장하려면 inter packet spacing 크기에 제한을 거는 것과 같다.
inter packet spacing 은 하나의 패킷을 연속해서 이어붙여서 보낼 때, 패킷과 패킷 사이의 간격을 의미한다.
목적지에 패킷이 도착하는 이 간격이 균일하면 패킷을 받는 입장에서는 재생하기가 편하다.
딱딱 정해진 시간 후에 다음 패킷이 도착한다는 것을 보장할 수 있으면 버퍼의 용량을 크게 잡지 않아도 된다는 의미가 되기 때문이다.
물론 균일한 inter packet spacing을 보장하는 것도 굉장한 오버헤드를 부담을 해야한다.
위와 같은 것들을 통칭해서 Quality of Service (QoS) 라고 한다.
그리고 지금 사용하는 인터넷은 이 모든 것들을 보장하지 못한다.
그렇다면 왜 이걸 보장하지 않았을까?
분명 요금을 더 내더라도 이런 것들이 보장된 서비스를 사용하기를 원하는 사람들은 충분히 있을 것이다.
하지만 이런걸 100% 보장할 수 있는 ISP는 존재하지 않는다.
높은 확률로 보장은 해줄 수 있을지 몰라도 100% 보장하는 것은 못하기 때문에, 계약서에 절대로 그런 항목을 넣을 ISP는 없다.
실제로 Internet에서 이런 것들을 보장할 수 있는 기술을 연구했던 적이 있다.
그것들이 위에 나와있는 항목들이다.
4번째 Intserv Guaranteed는 대문자 I 인터넷에서도 대역폭, Loss, Order, Timing을 보장하려는 시도였따.
하지만 요즘은 이걸 연구하는 사람들은 없다.
5번째 Diff Serv는 품질을 보장하진 못하더라도, 차등화된 서비스를 제공하려는 시도이다.
서비스 요금을 2배로 내면, 그 사람에게는 조금 우선순위를 높여서 서비스를 제공하는 것이다.
ATM은 Asynchronous Transfer Mode 라는 기술이다.
과거에는 네트워크 프로젝트에서 ATM 기술을 채택해서 무언가를 하려고 했던 적이 있었지만 요즘은 쓰지 않는다.
아무튼 지금까지 살아남은 기술은 Internet Best Effort 서비스 모델이다.
인터넷이 살아남을 수 있었던 이유는 기술적으로 비록 뛰어나지는 않았지만, 구현하기 편한 것과 더불어 링크의 발전으로 대역폭이 충분히 넓어졌기 때문이다.
넓어진 대역폭과, 이 대역폭을 쓰는데 지불하는 비용의 부담이 줄어들었기 때문에 Internet이 보장하지 못했던 서비스들에 대한 부담이 줄어들었다.
따라서 IP 라는 프로토콜 자체도 제공하는 기능이 많지 않기 때문에 단순하며, 이 IP에 추가적으로 여러 서비스를 붙이는 것이 용이하다.
그리고 정말 높은 퀄리티의 서비스가 필요한 경우에 이를 해결하는 수단으로 CDN과 같은 distributed service 들이 등장해서 많은 서비스 보장 문제들이 해결된 점도 있다.
'CS > 컴퓨터 네트워크' 카테고리의 다른 글
[컴퓨터 네트워크] 27. Network Layer (3) : IP (0) | 2024.06.05 |
---|---|
[컴퓨터 네트워크] 26. Network Layer (2) : 라우터 (0) | 2024.06.03 |
[컴퓨터 네트워크] 24. Transport Layer (10) : TCP 기능의 진화 (1) | 2024.05.31 |
[컴퓨터 네트워크] 23. Transport Layer (9) : TCP Congestion Control (혼잡 제어) (0) | 2024.05.31 |
[컴퓨터 네트워크] 22. Transport Layer (8) : TCP 연결 설정 (3-way handshake) (0) | 2024.05.28 |