이 글은 컴퓨터 네트워크 수업내용을 정리한 글임을 알림니다.
송신자가 네트워크가 처리하기엔 너무 많이, 빨리, 패킷을 보낼때를 의미한다!!
=> (트래픽 몰릴때!!)
호스트들이 데이터를 송수신 할때
라우터가 명시적으로 혼잡 정보를 호스트들에게 알려주어 혼잡을 예방하는것!!
송신측은 자신의 최종 윈도우 크기를 정할 때 두가지중 작은 것을 선택한다.
- 수신측이 보내준 윈도우 크기인 수신자 윈도우(RWND)
- 자신이 네트워크 상황을 고려해 정한 혼잡 윈도우(CWND)
네트워크 상황을 고려해 송신자 측에서 정한 윈도우를 혼잡 윈도우라 한다!!
위 사진은 Sender의 시퀸스 넘버 공간이다. (시퀸셜 넘버에 사용되는 숫자들!)
4가지 필드가 보인다.
- 패킷을 보낸뒤 ACK를 받은 필드
- 보냈지만 아직 ACK를 받지 못한 필드
- 사용 가능하지만 아직 사용하지 않는 필드
- 사용하지 못하는 시퀸스 필드
이때 혼잡 윈도우 == cwnd 는 2번 + 3번이다.
그리고 이때
TCP rate
=cwnd / RTT
이다.
Additive Increse/Multicative Decrease
의 약자로
혼잡이 발생하기 전까지 전송률을 높히다가 손실이 발생하면 반으로 줄이기!
위 사진을 보면 전송률을 늘이다가 특정 구간에서 반으로 전송률을 줄이는 모습을 볼 수 있다.
- TCP Reno ( 세개 중복된 ack가 오면 절반으로 줄인다. )
- TCP Tahoe ( segment size 가 최대면 1로 줄인다! ) (완전 트래픽이 몰리는 상황)
처음엔 cwnd사이즈가 1이다…
처음에 요청을 1번 , 그다음 2번, 4번…. 기하급수적으로 cwnd 사이즈를 증가하는것!
그리고 혼잡 발생시 cwnd를 1로 줄여 버린다!!
CUBIC
은 특정 시간 K일때 까지는 세제곱 (cube) 씩 증가하지만 k에서 멀어질때는 천천히 증가하는것!위 사진에서는 세제곱을 하여 점선 퍼런 그래프가 휘어진 모습!!
패킷이 손실 날때까지 일단 보낸다!!!
만약 병목이 있는 곳에서 이렇게 한다면...? (매우 안좋다!!)
RTT를 측정하고 대역폭을 정한뒤 혼잡을 제어 한다!
명시적으로 혼잡을 알리는 방법
그냥 간단하게
- 송신자가 ECN을 보내면 라우터에 의해(네트워크 사업자에 의해)
- ECN이 수정되고 (정확히는 IP헤더의 ToS피드 부분이)
- 목적지에서 혼잡도를 판단하여 혼잡도와 함께 ACK를 응답하여 혼잡을 제어하는 기법!!