혼잡 제어에 대해 알기 위해서는 혼잡(congestion)이 무엇인지 알아야겠죠?
너무 많은 송신자가 너무 많은 데이터를 너무 빠르게 네트워크에 보내는 것
흐름 제어(flow control)와는 다르다!
혼잡의 징후
패킷의 손실 (라우터에서의 버퍼의 넘침)
긴 지연 (라우터 버퍼에서의 지연)
두 명의 송신자, 두 명의 수신자
하나의 라우터, 무한한 버퍼
출력 링크 용량: R
재전송 없음
위와 같은 이상적인 예시에서도, 우리는 이미 혼잡한 네트워크의 한 가지 비용을 발견할 수 있다!
패킷 도착 속도가 링크 용량(R/2)에 가까워짐
--> 대규모 대기열 지연이 발생!
하나의 라우터, 제한된 버퍼
시간 초과된 패킷에 대한 송신자의 재전송
응용 계층의 입력 = 응용 계층의 출력
전송 계층의 입력은 재전송을 포함
송신자는 라우터의 버퍼가 사용가능할 때만 보낸다.
송신자는 패킷이 손실될 때만 재전송한다.
패킷 재전송으로 인해서 성능이 감소!
송신자의 시간 초과가 일찍 발생해, 이미 보낸 패킷에 대해 중복이 발생한다.
혼잡의 비용
- 재전송: 주어진 입력에 대해 더 많은 작업
- 불필요한 재전송: 링크가 여러 개의 패킷 복사본을 전송
네 명의 송신자들
multihop 경로
시간 초과 + 재전송
Q: 빨간색 입력량이 증가한다면 어떤 일이 발생하는가?
라우터에 도착하는 모든 파란색의 패킷들은 큐에서 대기하다가 버려지고,
파란색 처리량은 0이 된다.
혼잡의 비용
- 패킷이 삭제되면 해당 패킷에 사용된 "전송 용량"이 낭비!
- End-to-end 혼잡 제어
- Network-assisted 혼잡 제어