kakaoChannel: false
<body>
<div class="notion-page-content padding">
	<div id="darass" 
	    data-project-key="MGxNT547E7u0i1i466" 
	    data-dark-mode="false"
	    data-primary-color="#10DF99"
	    data-show-sort-option="true"
	    data-allow-social-login="true"
	    data-show-logo="true"
			style="flex-shrink:0;flex-grow:1;display:flex;align-items:center;flex-direction:column;color:rgb(55, 53, 47);padding-top:5px;padding-bottom:var(--page-content-padding-bottom);margin:0 auto;"
	    >
	    <script type="text/javascript" defer>
	        (function () {
	        var $document = document;
	
	        var $script = $document.createElement("script");
	        $script.src = "<https://reply-module.darass.co.kr/embed.js>";
	        $script.defer = true;
	
	        $document.head.appendChild($script);
	        })();
					if (window.matchMedia("(min-width: 400px)").matches) {
						  document.getElementById("darass").style.maxWidth = "730px";
					} else {
						  document.getElementById("darass").style.maxWidth = "400px";
					}
	    </script>
	</div>
</div>
</body>

⬅️ 이전 글 : 없음

➡️ 다음 글 : 없음

1. Bufferbloat

**병목구간(bottleneck)**이란, 인터넷을 이용하는 Client와 인터넷 Server 사이에 존재하는 네트워크 구간 중 가장 bandwidth가 작은 구간을 말한다.

인터넷 초창기엔 서버의 media speed, 스위치나 라우터의 interface/home edge단 link가 모두 100Mbps(Fast Ethernet)이었기에 병목구간이 큰 문제로 부각되지 않았다. 하지만 Gigabit ethernet이 나오면서 상황이 달라졌다. 이전에는 64Kbyte의 window size로 충분히 성능을 낼 수 있었지만, 이후 인터넷 속도가 올라감에 따라 window size를 올릴 수 밖에 없었기 때문이다. (RFC 1323)

서버의 media speed나 상위 네트워크가 1G로 바뀜에 따라 WiFi AP/Microwave 장비 등이 병목구간이 되었다. 이에 Speed mismatch에 의한 buffer overflow가 빈번히 발생하면서 Throughput 저하, 잦은 재전송 등 link 효율이 감소하게 되었다. 특히, packet drop의 경우 TCP 통신상의 속도(Throughput)에 치명적일 수 있었다.

이에 제조사들은 메모리 가격 하락 등의 외부 요인을 반영하여 Buffer 메모리를 크게 늘리는 형태로 대응하였지만 이는 또다른 문제를 낳았다. 여러 명이 동시 접속해서 사용하는 WiFi의 경우 buffer는 큰 데 비해 bandwidth가 작아, 한 유저가 file을 다운로드 받는 경우에 WiFi AP의 buffer가 그 유저의 데이터로 가득 차버리는 등의 문제가 발생하였다. 이에 다른 유저가 동일 WiFi를 사용할 경우 인터넷 접속 Ack가 buffer의 맨 뒤에 쌓여, 최대 buffering delay가 수백 ms에서 수초까지 발생하는 등 지연 현상이 발생하였다. 이런 현상을 **Bufferbloat**이라 한다.

image.png

2. 한번에 얼마나 보낼 수 있을까

예를 들어 병목구간이 100Mbps Ethernet이고, Client와 서버의 RTT는 40ms 상황을 가정해보면,

100Mbps(bandwidth, 처리량) * 40ms(delay, RTT) = 10000000 * 0.04 = 4000000 bits = 500Kbytes

즉, 이 경우 100Mbps 속도로 40ms 동안 보낼 수 있는 데이터가 500Kbytes이기 때문에 Window size가 500Kbytes로 끊김없이 서버에서 계속 데이터를 보낼 경우, 병목구간 100Mbps를 하나의 세션이 모두 사용하게 된다. 이와 같이 병목구간의 bandwidth를 최대한 다 사용할 수 있는 window size를 BDP(Bandwidth Delay Product)라 한다.

image.png