✔ 혼잡이 발생하면 혼잡이 일어나지 않게 하거나 혼잡이 발생했을때 발생하는 환경을 해결하는 등 2가지 방법이 있다. 인터넷은 best-effort서비스이기 때문에 이것이 가장 큰 문제가 된다.
data flow를 보여주는 값으로 단위 시간당 왔다갔다하는 트래픽의 양을 보여준다.
Average data rate(=amount of date/time): 평균 트래픽 전송속도
Peak data rate: 트래픽이 제일 빠르게 왔다갔다하는 속도
Maximum Burst size: 제일 빠르게 왔다갔다하는 것이 얼마나 오래 지속되는지 나타내는 지표
Effective Bandwidth: 내가 영상을 제대로 보기위해 필요한 대역폭을 의미
Constant Bit Rate(CBR) traffic: data rate가 시간에 따라 변하지 않는 것이다. 쉽게 예측 가능하다. 만약 64kbps의 사람들이 많이 들어올때 보낼 수 있는 최대 bps가 1Mbps라고 하면 최대 15명정도의 사람들을 받아야지 모든 사람들이 말을 해도 원활하게 통신이 된다.
Variable bit rate traffic: data rate가 시간에 따라 변화하는 것이다. 이것은 누가 언제 말할지를 모르기 때문에 CBR보다 다루기가 더 어렵다. 어떤 사람이 20kbps~200kbps로 통신을 한다고 했을때 최대로 받을 수 있는 사람의 수가 5명을 받아야 할지, 50명을 받아야 할지 애매하기 때문이다.
Bursty data traffic: 엄천 급격하게 data rate가 변화하는 것을 의미한다. 혼잡이 발생할 수 있기 때문에 이것을 해결할 무언가가 필요하다.
💡 congestion의 발생이유
- 시스템에서 waiting이 있기 때문에 있어서 발생한다. 라우터나 스위치는 버퍼가 있기 때문에 incoming buffer에서는 CPU의 처리속도보다 들어오는 데이터의 속도가 더 빠를때 overflow가 발생할수 있다. outgoing buffer에서는 CPU의 처리속도는 빠르지만 데이터가 빠져나가는 속도(interface의 속도)가 느릴때 또한 발생할 수 있다.
💡 Closed-loop에서의 Backpressure 방식
- 만약 congestion이 발생할 것 같으면 in->out으로 데이터를 옮기지 않고 대기한다. 가만히 있으면 앞 라우터에 의해 in으로 들어오는 것들이 버퍼가 계속 차 overflow가 발생할것 같으니 앞 라우터에게 데이터를 보내지 말라고 한다. 이런식으로 순차적으로 뒤로 알려져 결국 source에서 데이터의 전송을 멈추게 한다. 이 방식은 IP에서는 사용하지 못하는데 그 이유는 connectionless이기 때문에 IP 패킷만 보면 누가 보냈는지 알 수 없기때문에 사용하지 못한다.
💡 Closed-loop에서의 Choke packet 방식
- cogestion(overflow를 혼잡이라고 정의함)이 발생하면 그 라우터가 source에게 직접 choke packet을 보내 내가 지금 congestion이 발생하였으니 데이터를 조금만 보내라고 말하는 것이다. 이것은 IP에서도 사용가능하다. 이 방식의 한가지 예시가 ICMP에서 source quench에 해당한다.