혼잡의 원인과 비용
네트워크에 혼잡이 발생하게되면 어떤 일이 벌어지는 지를 시나리오 별로 살펴본다.
시나리오 1
- 단일 라우터
- 라우터 버퍼 크기는 무한 (패킷이 버려지지 않음)
- 재전송, 흐름 제어, 혼잡 제어를 수행하지 않는다.
- 2개의 송신자 2개의 수신자
단일 라우터를 공유하는 4개의 호스트가 존재한다.
이 때 송신자(Host A,B)는 링크 용량의 절반인 R/2 아래로 전송하면 수신률은 좌측 그림처럼 선형 증가한다.
R/2를 초과하게되면 라우터의 버퍼는 무한하기에 패킷은 버려지지 않고 딱 R/2만큼 전송된다.
하지만 전송률이 아닌 지연의 관점에선 R/2에 근접할 수록 지연은 무한대가 된다.
여기서 지연은 큐잉 지연을 뜻한다. 예를 들어 버퍼에 10개의 패킷이 도착한 경우 첫 패킷은 지연없이 바로 전송되지만 뒤 이은 패킷들은 자신의 순서를 기다려야한다.
시나리오 2
- 단일 라우터
- 라우터 버퍼크기는 유한 (버퍼가 가득 차면 패킷은 버려진다)
- 송신자는 재선송 한다
이제 버퍼가 유한하기에 패킷은 버려질 수 있고 그에 따라서 송신자는 재전송을 하게 된다.
이런 경우 송신 이라는 의미를 잘 정의해야한다. 첫 째로 재전송이 아닌 처음 보내는 데이터, 둘 째로 재전송을 포함하는 데이터 둘로 나눠 생각해야한다.
송신자가 라우터 버퍼의 상태를 알 수 있는 경우
비현실적이지만 송신자가 버퍼 상태를 알 수 있다면 패킷이 버려질 상태에 놓여있다면 아예 전송을 하지 않을 수 있다.
이 경우 위 그래프와 같이 전송률이 정해진다. 송신측은 R/2를 초과해서 보내지 않는다. (시나리오1과 다른 점임)
송신자가 패킷이 손실된 것을 알았을 경우에 재전송
이제 좀 더 현실적으로 패킷은 손실 될 수 있고 그 손실을 알았을 경우 재전송하는 경우다.
패킷이 손실된다면 송신자는 재전송하게 되므로 사실상 중복된 전송에 속한다.
예를 들어 10개의 패킷(람다 in)을 보내야하는데 4개의 패킷이 손실 됐다면 총 14개의 패킷(람다 다시 in)을 전송해야하는 것이고 이는 네트워크를 10번 탈 일을 14번 타게 만든다는 것이고 4번의 추가적인 재전송이 바로 손실이라 보는 것이다.
즉 재전송은 네트워크 혼잡의 비용이다.
타임아웃 이후에 패킷이 도달한 경우
네트워크 상에서 패킷이 유실되진 않았지만 수신자 측에 너무 늦게 도달해 송신자가 재전송해야하는 경우다.
바로 위 단락에서 설명한 재전송은 네트워크 혼잡 비용이긴 하나 사실상 신뢰성 있는 전송을 위한 필요한 재전송이다.
하지만 위 그림의 경우엔 패킷이 정상적으로 도착했으나 너무 늦게 도착해서 송신자가 재전송 해야하기 때문에 네트워크 링크를 불필요하게 한 번 더 이용해야하는 셈이다.
이것 또한 네트워크 혼잡의 비용에 해당한다.
시나리오 3
조금 더 복잡한 예시이나 어렵지 않다.
A->C로 가는 트래픽과 B->D로 가는 트래픽은 하나의 라우터를 공유하게 된다.
즉 A->C, B->D의 트래픽은 하나의 라우터를 놓고 경쟁상태에 놓이게 되는데 B->D 트래픽이 급증했다고 가정해보자.
공유하는 라우터의 링크 용량이 R일때 B->D가 대부분의 용량을 점유한다면 그만큼 A->C 트래픽은 처리율이 낮아 질 것이다.
극단적으론 A->C 트래픽 처리율은 0에 가까워진다.
위와 같은 그래프가 나오게 되는데, 이때 A->C로 가는 트래픽이 두번째 라우터에서 혼잡으로 인해 패킷이 버려질 경우 첫 번째 라우터는 헛된 일을 하게 된다.
어차피 두 번째 가서 버려질 패킷을 위해 첫 번째 라우터가 링크 용량을 낭비하는 것이다.
이것이 세 번째 시나리오의 네트워크 혼잡 비용이다.
혼잡 제어의 접근법
크게 두 가지로 나뉜다.
종단 간의 혼잡 제어
TCP 아래에 존재하는 IP 계층은 혼잡에대해 어떠한 정보도 제어도 하지 않고 TCP가 처리하도록 한다.
즉 네트워크 상에서 발생하는 혼잡은 TCP가 감지해야하고 제어해야한다는 것이다.
TCP 크게 두 가지로 혼잡을 인지할 수 있다.
- 타임아웃 : 송신자의 경우 송신한 패킷에 대한 응답이 지정된 시간까지 도달하지 않아 재전송하는 경우를 혼잡의 징후로 파악
- 3-Duplicated ACK : 연달아 나타나는 3번의 ACK는 TCP에게 특정 패킷이 손실됐음을 알리고 이를 혼잡의 징후로 파악
이런 징후를 TCP가 파악하여 송신 윈도우 크기를 줄인다.
네트워크 지원 혼잡 제어
네트워크 상태를 가장 잘 알고있는 것은 당연히도 네트워크를 구성하는 장비들이다.(ex. 라우터)
라우터들이 직접 송신자 측에 네트워크 상태를 알리거나 지나가는 패킷에 마킹(RM 셀 이용)하여 수신자 측에 도착시키고 수신자의 ACK 응답에 포함시켜 수신자가 네트워크 상태를 알릴 수도 있다.
참고
Computer Networking: a Top Down Approach
Powerpoint Slides Below you'll find the Powerpoint slides that accompany the 8th edition of our textbook. There are more than 800 slides, covering each chapter and subsection of the book. These slides were extensively updated in the Spring of 2020 with con
gaia.cs.umass.edu