BIC TCP
BIC TCPBIC TCP(Binary Increment Blooming Control)는 TCP(Transmission Control Protocol)에 사용할 수 있는 정체 제어 알고리즘 중 하나이다. BIC는 대기 시간이 긴 고속 네트워크 즉, 소위 "긴 지방 네트워크"에 최적화되어 있다. 이러한 네트워크의 경우, BIC는 심하게 활용되지 않은 대역폭을 교정하는 데 있어서 이전의 정체 제어 방식보다 상당한 이점을 가지고 있다.[1]
BIC는 고유한 정체 창(cwnd) 알고리즘을 구현한다. 이 알고리즘은 바이너리 검색 증가, 가법 증가, 저속 시작의 세 부분으로 검색하여 최대 cwnd를 찾으려고 한다. 네트워크 장애가 발생했을 때 BIC는 cwnd를 수정하는 데 승수 감소를 사용한다.[2]
BIC TCP는 Linux 커널 2.6.8 이상에서 기본적으로 구현되고 사용된다. 기본 구현은 2.6.19 버전에서 다시 큐빅 TCP로 변경되었다.
알고리즘.
다음 변수를 정의하십시오.
Smax: 최대 증분min S: 최소 증분 wmax: 최대 윈도우 크기 β: 곱셈 윈도우 감소 계수 cwnd: 정체 윈도우 크기 bic_inc: RTT당 윈도우 증분(원형 트립 시간)
RTT 간격 업데이트 시마다 다음을 참조하십시오.
패킷이 삭제되지 않으면 정체 창(cwnd)은 바이너리 검색 증가, 가법 증가, 저속 시작의 세 가지 뚜렷한 방법으로 증가한다. 각 단계에서 1개는 증분으로 사용된다.
cwnd 증가의 한 단계:
if (cwnd < wmax) // binary search OR additive bic_inc = (wmax - cwnd) / 2; else // slow start OR additive bic_inc = cwnd - wmax; if (bic_inc > Smax) // additive bic_inc = Smax; else if (bic_inc < Smin) // binary search OR slow start bic_inc = Smin; cwnd = cwnd + (bic_inc / cwnd);
하나 이상의 패킷이 삭제되면 승수 감소를 사용하여 cwnd가 감소한다. 이를 위해서는 β가 필요하며, β는 (100×β)% 감소에 사용된다. 두 흐름의 경우 하나는 큰 cwnd이고 다른 하나는 작은 cwnd의 흐름보다 큰 cwnd 흐름을 감소시켜max cwnd를 증가시킬 때 큰 cwnd 흐름의 빠른 수렴을 가능하게 하기 위해 빠른 융합을 사용한다.
한 단계 감소하는 cwnd:
(cwnd < wmax) // 빠른max 수렴 w = cwnd * (2-β) / 2; 기타 wmax = cwnd; cwnd = cwnd * (1-β);
참고 항목
참조
외부 링크
- [1] 홈 페이지.