Congestion이 무엇이냐?
사전적 의미는 혼잡, 과잉이라는 뜻을 가지고 있습니다.
네트워크에서 너무 많은 것들이 한정된 공간을 사용하려고 할 때 발생하는 상황을 가리킵니다.
네트워크에서 Congestion이 일어나면, 딜레이가 길어지고, 패킷이 유실되는 상황이 발생합니다.
Congestion control과 flow control은 다른 개념입니다.
Congestion control은 네트워크의 트래픽이 많아져 네트워크의 성능이 저하되는 혼잡 상태를 관리하는 기술이고,
Flow control은 송신자와 수신자 간의 데이터 전송 속도를 조절하여 오버플로우를 방지하는 기술입니다.
각각은 다른 개념이지만 함께 사용되어 네트워크의 효율적인 데이터 전송을 가능하게 해 줍니다.
Congestion의 원인과 비용
위 그림에서 가정해야 할 사실은 하나의 라우터고 라우터의 버퍼는 무한하다.
그리고 라우터의 capacity는 R이다.
왼쪽 그림을 보면 송신과 수신이 라우터를 R/2만큼 가지면 비례해서 서로 주고받았지만,
송신 측에서 R/2를 초과해서 보낸다면 더 이상 수신하지 못하는 것을 볼 수 있다.
위 그림은 송신 transmission이 R/2에 가까워질수록 Queing delay 때문에 지연시간이 증가하는 것을 알 수 있다.
위 그림은 패킷이 유실되지도 않고, 재전송도 이루어지지 않는 상황이다. (이상적인 상황)
- 만약 라우터가 가득 찬 시점에서 데이터를 보낸다면 패킷은 유실될 수 있다.
- router가 패킷을 drop 해버림.
- 송신 측은 패킷이 유실된 것을 알 수 있고, 그때 다시 패킷을 재전송한다.
재전송을 위해 차지한 비용만큼 수신자의 받는 정보량은 적어진다.
- 또 다른 패킷 유실 상황은 timeout이다.
- 도착을 한 상황에서 응답이 timeout동안 오지 않아서, 재전송을 했다.
- 그러면 처리량은 버퍼가 가득 차서 패킷 로스된 상황보다 훨씬 적다.
- 왜냐하면 재전송 + 의도치 않은 복제 패킷을 처리해줘야 하기 때문이다.
Red를 람다인이라고 하고, 파란색을 람다아웃이라고 가정하자.
빨간색의 전송량이 일정 수준 전까지 증가할 때는 비례해서 증가하지만, 그 일정 수준을 넘어가면 파란색은 패킷을 못 받는 상황이다.
정리
- 처리량(throughput)은 용량(capacity)을 넘어서는 안된다.
- 넘어서는 순간 congestion이 발생
- 버퍼의 공간이 용량에 다가갈수록 delay가 증가한다.
- 패킷 로스 or 재전송은 처리량의 효율을 저하시킨다.
- 불필요한 복제품은 처리량의 효율을 저하시킨다
이제 그러면 라우터가 혼잡한 것을 어떻게 알아챌 것이냐에 대해서 설명해 볼까 합니다.
대응책
End-end congestion control
말 그대로 송신자와, 수신자 사이에서 혼잡을 처리하는 방식입니다.
네트워크가 개입하지는 않습니다.
송신자는 네트워크의 혼잡을 감지하기 위해 packet loss, delay를 관찰하고, 혼잡이 발생했는지 인지할 수 있습니다.
이것은 ACK를 통해서 수신자가 혼잡상태를 수신자에게 알려줍니다.
ACK가 지연되거나 손실된 경우가 혼잡 상황인 것입니다.
Network- assisted congestion control
네트워크 자체가 혼잡 제어를 지원하며, 네트워크 내에서 혼잡을 감지하고 제어하는 기술입니다.
- 라우터는 송신/수신 측에게 congested router를 통해서 데이터가 통과했다고 가르쳐 줍니다.
- 이렇게 되면 송신 측은 다른 라우터를 통해서 데이터를 보냅니다.
😀요약
- Congestion control은 네트워크의 트래픽이 많아져 네트워크의 성능이 저하되는 혼잡 상태를 관리하는 기술이다.
- Congestion이 발생하면 네트워크의 성능이 저하되고 , 패킷 손실, dealy 증가가 이루어 지기에 이를 방지해야 함.
- Congestion을 감지하는 방법은 2가지가 있다.
- End-end congestion control
- 네트워크 층에서 개입하지 않고, 송신자와 수신자 사이에서 congestion을 감지하는 방법
- Network-assisted congestion control
- 네트워크 층에서 명시적인 피드백을 준다.
- 라우터가 송신자나 수신자에게 버퍼가 찼다고 신호를 보낸다.
- 네트워크 층에서 명시적인 피드백을 준다.
- End-end congestion control
'Computer Science > Network' 카테고리의 다른 글
[컴퓨터망] - Network Layer(Routing & Forwarding & Switching Fabric && Buffer Management) (1) | 2023.04.15 |
---|---|
[컴퓨터망] - TCP congestion control (1) | 2023.04.15 |
[컴퓨터망] - TCP connection (0) | 2023.04.14 |
[컴퓨터망]- TCP flow control (0) | 2023.04.14 |
[컴퓨터망] - TCP 네놈이 뭔데? (0) | 2023.04.14 |