Network 내에서의 Congestion을 제어하는 방법을 알아보자.
A) Congestion의 원인과 비용
Congestion이 일어나는 원인
1. 2개의 송신자와 무한 Buffer를 갖는 하나의 Router
아래 사진에서 Host A와 B의 Application이 λin byte/s의 Average transmission tare로 연결되어져 있다고 가정하자.

- Host A와 Host B가 전송되는 패킷은 Router와 용량 R의 공유 출력 링크를 통과한다.
Per-connnection throughput: 수신자 측에서의 초당 바이트 수

Queueing Delay

링크가 Steady state에서는 R/2를 초과해서 패킷을 수신자에게 전달할 수 없다. Host의 Transmission rate가 아무리 높더라고 처리량은 R/2를 넘을 수 없다.
2. 2개의 송신자와 유한 Buffer를 갖는 하나의 Router
이 경우, Buffer가 가득 찼을 때 도착하는 packet은 버려진다.
Applicationd의 Sending rate는 λin byte/s 이며, 각 연결은 신뢰적이라고 가정하자.
Network로의 데이터를 송신하는 Transport layer에서의 Sending rate는 λin′ byte/s 라고 하자.
- λin′는 때때로 offered load라고도 불린다.
a. Host가 Router의 Buffer에 여유 공간이 있는 경우에만 packet을 송신할 수 있는 경우

- λin′=λin
- 어떠한 손실도 발생하지 않고 처리량은 λin 이다.
- Average Sending rate는 R/2를 초과할 수 없다.
b. Packet이 확실히 손실된 것을 알았을 때만 송신자가 재전송하는 경우
송신하는 Host에서 패킷이 확실하게 손실되었다는 것을 확신하기에 충분한 큰 Timeout을 설정할 수 있다.
이 경우에서는 λin′ = R/2 로, (재전송되는 데이터 전송 + 원래의 데이터 전송) = R/2라고 가정하자.

- 그림에 따르면 Network에서 Application으로 전달되는 data의 전송률은 R/3이다.
- 전송된 데이터 R/2 중 평균 1/3R byte/s는 원래 데이터이고, 1/6R byte/s는 재전송 데이터이다.
c. 송신자에서 너무 일찍 Timeout되어 패킷이 손실되지 않았지만, Queue에서 지연되고 있는 패킷을 재전송하는 경우

- 이 경우, 원래의 데이터와 재전송된 데이터 패킷 모두 수신자에게 도착한다.
- 수신자는 재전송되는 패킷은 버린다.
- 위 그림은 각 패킷이 두 번씩 전달된다고 가정했을 때의 처리량을 나타낸 것이다.
Multi-hop 경로, 4개의 송신자와 유한 버퍼를 갖는 라우터
4개의 호스트는 겹쳐지는 2홉 경로를 통해 패킷을 전송한다.
각각의 호스트가 타임아웃/재전송 매커니즘을 사용한다.
모든 호스트는 λin의 동일한 값을 가진다.
모든 라우터 링크는 R 바이트/초 용량을 갖는다.

a. Host A to Host C
Host A to Host C는 Host D to Host B 와 Router R1, Host B to Host D을 Router R2를 공유한다.
- 이 경우, λin 보다 약간 더 큰 값에 대해 원래의 데이터가 Network로 전송되고, Overflow가 거의 발생하지 않으므로 처리량은 약간 커진다.
- λin가 작은 값일 때, λin이 증가한다면 λout도 증가한다.
b. Router R2
-
라우터 R2는 λin과 관계없이, R1에서 R2까지의 링크 용량, 최대 R인 도착률을 가질 수 있다.
-
A ~ C와 B ~ D의 트래픽은 버퍼 공간을 라우터 R2에 경쟁해야 한다.
- R2를 성공적으로 통과하는 A ~ C의 트래픽의 양은 B ~ D에서 제공된 부하가 크면 클수록 더 작아진다.
- 트래픽이 많은 경우 A~C 종단 간 처리율이 0이 된다.
-
즉, 아래 그래프처럼 제공된 부하와 처리량 간의 tradeoff가 발생한다.
![업로드중..]()
-
패킷이 경로상에서 버려질 때, 버려지는 지점까지 패킷을 전송하는 데 사용된 상위 라우터에서 사용된 전송 용량은 낭비된 것이다.
Single-hop과 Multi-hop에서 차이가 발생하는 이유
- Single-hop 환경에선 비교적 덜 복잡한 Steady state 의 상태로 R/2로 유지될 수 있다.
- Multi-hop 환경에서는 다양한 Router, Link들의 결합으로 매우 복잡한 상황이기 때문에 특정 연결에서의 Traffic, Offered load 등에 의해 R/2로 유지되지 않는다.
B) Congestion control에 대한 접근
1. End System 간의 Congestion control
네트워크 계층은 혼잡 제어 목적을 위해 트랜스포트 계층에게 어떤 직접적인 지원도 제공하지 않는다.
- 따라서 네트워크에서 혼잡의 존재는 단지 관찰된 네트워크 동작(패킷 손실 및 지연)에 기초하여 종단 시스템이 추측해야 한다.
TCP가 혼잡 제어를 위해 취하는 방식
- TCP 세그먼트 손실과 증가하는 RTT을 네트워크 혼잡의 발생 표시로 간주한다.
- TCP는 그에 따라서 window size를 줄인다.
2. Network 지원 Congestion control
라우터들은 네트워크 안에서 혼잡 상태와 관련하여 송신자나 수신자 또는 모두에게 직접적인 피드백을 제공한다.
혼잡 정보가 전달되는 두 가지 방법
![업로드중..]()
-
직접 피드백
- 네트워크 라우터 → 송신자
- 알림의 형태 : choke packet
-
송신자에서 수신자에게로 흐르는 패킷 안에 특정 필드에 표시/수정
- 수신자가 표시된 패킷을 수신했을 때, 혼잡 상태를 송신자에게 알린다.
- 완전한 왕복 시간이 걸린다.