Principle of Congestion Control

KVV·2024년 12월 3일

Network 내에서의 Congestion을 제어하는 방법을 알아보자.

A) Congestion의 원인과 비용

Congestion이 일어나는 원인

1. 2개의 송신자와 무한 Buffer를 갖는 하나의 Router

아래 사진에서 Host A와 B의 Application이 λin\lambda_{in} byte/s의 Average transmission tare로 연결되어져 있다고 가정하자.

  • Host A와 Host B가 전송되는 패킷은 Router와 용량 R의 공유 출력 링크를 통과한다.

Per-connnection throughput: 수신자 측에서의 초당 바이트 수

  • 0 ~ R/2 사이의 전송률: 수신자 측의 처리량은 송신자의 처리량과 같다.

  • R/2 이상의 전송률: Queueing delay로 인하여 처리량은 R/2에 불과하다.

    • R/2인 이유는 두 Host가 하나의 링크를 공유하기 때문이다.

Queueing Delay

링크가 Steady state에서는 R/2를 초과해서 패킷을 수신자에게 전달할 수 없다. Host의 Transmission rate가 아무리 높더라고 처리량은 R/2를 넘을 수 없다.

2. 2개의 송신자와 유한 Buffer를 갖는 하나의 Router

이 경우, Buffer가 가득 찼을 때 도착하는 packet은 버려진다.

Applicationd의 Sending rateλin\lambda_{in} byte/s 이며, 각 연결은 신뢰적이라고 가정하자.

Network로의 데이터를 송신하는 Transport layer에서의 Sending rateλin\lambda^{'}_{in} byte/s 라고 하자.

  • λin\lambda^{'}_{in}는 때때로 offered load라고도 불린다.

a. Host가 Router의 Buffer에 여유 공간이 있는 경우에만 packet을 송신할 수 있는 경우

  • λin=λin\lambda^{'}_{in} = \lambda_{in}
  • 어떠한 손실도 발생하지 않고 처리량은 λin\lambda_{in} 이다.
  • Average Sending rate는 R/2를 초과할 수 없다.

b. Packet이 확실히 손실된 것을 알았을 때만 송신자가 재전송하는 경우

송신하는 Host에서 패킷이 확실하게 손실되었다는 것을 확신하기에 충분한 큰 Timeout을 설정할 수 있다.

이 경우에서는 λin\lambda^{'}_{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λ_{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\lambda_{in} 보다 약간 더 큰 값에 대해 원래의 데이터가 Network로 전송되고, Overflow가 거의 발생하지 않으므로 처리량은 약간 커진다.
  • λin\lambda_{in}가 작은 값일 때, λin\lambda_{in}이 증가한다면 λout\lambda_{out}도 증가한다.

b. Router R2

  • 라우터 R2는 λinλ_{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

라우터들은 네트워크 안에서 혼잡 상태와 관련하여 송신자나 수신자 또는 모두에게 직접적인 피드백을 제공한다.

  • ATM ABR(Available Bite Rate) 혼잡 제어에서
    라우터는 자신이 출력 링크(outgoing link)에 제공할 수 있는 전송률을 송신자에게 명확히 알릴 수 있게 해준다.

  • 최근 IP와 TCP가 이 방식을 선택적으로 구현할 수 있다.

혼잡 정보가 전달되는 두 가지 방법

업로드중..

  1. 직접 피드백

    • 네트워크 라우터 → 송신자
    • 알림의 형태 : choke packet
  2. 송신자에서 수신자에게로 흐르는 패킷 안에 특정 필드에 표시/수정

    • 수신자가 표시된 패킷을 수신했을 때, 혼잡 상태를 송신자에게 알린다.
    • 완전한 왕복 시간이 걸린다.

0개의 댓글