300x250


세미나_16_TCP 혼잡제어.pptx



1. Window sizebuffer size?


윈도우 계산

윈도우 관계식
awnd = minimum[rwnd,cwnd]
awnd : 전송 윈도우 크기 (송신할 수 있는 세그먼트 수)
rwnd : 수신 윈도우 크기 (수신측 버퍼 여유용량)
cwnd : 혼잡 윈도우 크기 (연결 초기` `혼잡 상황`에서 사용되는 윈도우)
연결 초기에 cwnd = 1 로 셋팅됨
최대값이 될 때까지 cwnd증가시킴
Þ따라서, slow start 동작 시에는 cwnd의 크기가 사용됨.
Þ

cwnd 값은 어떻게 구하는가?
RFC5681
전달 받은 ACK에 다음 동작 수행
cwnd += SMSS,   (cwnd < ssthresh),   저속시작

cwnd += SMSS*SMSS/cwnd,   (cwnd > ssthresh),   혼잡 회피

 혼잡 회피
혼잡 회피
혼잡이 발생한 경우 발생
e.g
타이머 만료
중복된 ack 수신
전송 세그먼트의 수를 조금씩 증가 시킴


16. TCP 혼잡 제어


contents

1.개요
2.고전적인 알고리즘
3.표준 알고리즘의 발전
4.Eifel 응답 알고리즘을 이용한 Spurious RTO의 제어
5.확장 예제
6.혼잡 상태 공유
7.TCP 친화성
8.고속 환경에서의 TCP
9.지연 기반 혼잡 제어
10.버퍼 포화
11.활성 대기열 관리와 ECN
12.TCP 혼잡 제어와 관련된 공격

13.정리

1. 개요

16장의 주된 내용
전반부
혼잡 제어 알고리즘의 기본 원리

2.   고전적인 알고리즘

3.   표준 알고리즘의 발전

4.   Eifel 응답 알고리즘을 이용한 Spurious RTO의 제어

5.   확장 예제


후반부
알고리즘의 최신 버전(수정된 기능)

6.   혼잡 상태 공유

7.   TCP 친화성

8.   고속 환경에서의 TCP

9.   지연 기반 혼잡 제어

10.  버퍼 포화

11.  활성 대기열 관리와 ECN

12.  TCP 혼잡 제어와 관련된 공격

혼잡 제어
정의
네트워크가 너무 큰 트래픽 부하에 영향 받는 것을 방지하기
위해 구현된 행위

기본 접근 방법
네트워크가 혼잡한 상황이라고 할 수 있는 경우 전송 속도 감소.
E.g
라우터가 패킷을 폐기하고 있는 경우
속도 감소 후 언제 정상 속도로 복구 할 것인가?
발신자의 속도를 늦추는 방법
발신자의 윈도우 조절
발신자의 사용 가능한 윈도우(W)
혼잡 윈도우(cwnd)
cwnd(혼잡 윈도우 크기)를 알기 위해 실험이 필요.
수신자의 수신 윈도우(awnd)
awnd(수신자의 윈도우 크기)패킷 교환을 통해 습득.(15)


W= min(awnd, cwnd)


문제점
awndcwnd가 시간에 따라 변화 함.

ÞW awndcwnd는 측정을 통해 동적으로 결정되어야 함.



2. 고전적인 알고리즘

알고리즘의 구성
TCP 데이터 전송

저속시작 -> 패킷 손실 -> 혼잡 회피
저속시작
새로운 TCP 연결이 생성되거나 RTO에 의해 패킷 손실이 발생할 경우 수행 됨.
목적
데이터 전송 시 사용 가능한 대역폭을 찾기 위한 cwnd 값을
검색하는 것을 도움.
IW(initial window)라 불리는 정해진 수의 세그먼트 부터 전송.
동작
IW = 1SMSS(Sender’s Maximum Segment Size)
IW = 2*(SMSS)이고, 많아야 2 세그먼트
IW = 3*(SMSS)이고, 많아야 3 세그먼트
IW = 4*(SMSS)이고, 많아야 4 세그먼트
저속시작 (계속)
패킷에 대해 ACK를 반환할 경우
K 왕복후의 W
ÞW = 2^k
문제점
저속 시작이 계속 되어
네트워크를 훼손 할 정도의
크기가 될 수 있음.
저속시작 (계속)
문제점
저속 시작이 계속 되어 네트워크를 훼손 할 정도의 크기가
있음.
Þ시점은 cwndssthresh(slow start threshold)라 불리는 값에
따라 결정 됨

해결
cwnd가 반 값으로 감소됨.
혼잡 회피 동작을 수행함.

혼잡 회피
저속 시작 동작은 cwnd가 지수적으로 증가함.
반면 혼잡 회피 동작에서 cwnd는 선형에 가깝게 증가함.
cwndt+1 = cwndt + SMSS * SMSS/cwndt

               
저속 시작과 혼잡 회피
저속 시작과 혼잡 회피의 선택
cwnd ssthresh
저속시작 작동
cwnd > ssthresh
혼잡 회피 작동
ssthresh
초기값
cwnd보다 높은 임의값

값 변경
재전송이 될 때 (time out, ack기반 재전송)
ssthresh = max(flight size/2, 2*SMSS)
flight size = 발신자가 네트워크에 전송할 수 있는 데이터의 양
표준 TCP[RFC5681]
지금까지의 설명은 표준 TCP의 기본 절차
RFC5681
1.초기값과 저속 시작
cwnd = IW
ssthresh = awnd
2.cwnd 갱신
새로운 데이터를 알리는 good ACK를 받을 때 갱신.
cwnd += SMSS,   (cwnd < ssthresh),   저속시작
cwnd += SMSS*SMSS/cwnd,   (cwnd > ssthresh),   혼잡 회피
ACK 기반 재전송 발생시
일시적인 cwnd의 증가가 발생.
ACK 기반 재전송 발생(ACK 3개 도착)
1.ssthresh 계산
2.cwnd(ssthresh + 3*SMSS)로 설정 됨.
3.cwndACK를 받을 때 마다 증가.
4.Good ACK가 수신되면 cwndssthresh 값으로 재설정 됨.
그림.

2번과 3번을 빠른 복구 라고 함.
동작
재전송 수행

4번을 수축 이라고 함.
재전송이 완료되고 일시적인 증가를 제거


3. 표준 알고리즘의 발전

New Reno
탄생 동기
ack 기반 재전송 과정 중 빠른 복구의 문제점
여러 개의 패킷이 손실될 때 한번에 하나의 패킷이 복구 됨.
과정
1.발신자가 빠른 재전송을 들어가기 전 현재 전송 지점을 저장함.
2.1번에 대한 빠른 재전송을 수행.
3.발신자는 8에 대한 ack를 받길 기대중.
4.2번에 대한 ack가 도착.
5.3번이 전달 되지 않았다는 것을 인지한 후 재전송.
6.8에 대한 ack 도착

SACK을 이용한 혼잡 제어
탄생 동기
ack 기반 재전송 과정 중 빠른 복구의 문제점
여러 개의 패킷이 손실될 때 한번에 하나의 패킷이 복구 됨.
과정
1.발신자가 빠른 재전송을 들어가기 전 현재 전송 지점을 저장함.
2.1번에 대한 빠른 재전송을 수행.
3.발신자는 8에 대한 ack를 받길 기대중.
4.2번에 대한 ack가 도착.
5.3번이 전달 되지 않았다는 것을 인지한 후 재전송.
6.8에 대한 ack 도착
혼잡 윈도우 유효성 검사(CWV)
발신자의 cwnd는 데이터가 전송 되지 않으면 감소함.
ssthresh는 감소 되기 이전의 초기 값에 대한 설정을 유지
Þ패킷의 전송률을 감소시키는 것은 라우터의 압박을 줄여줌.

지역 혼잡
원인
전송 시스템에서의 패킷 손실
데이터 전송 < 데이터 생산
영향
CWR(Congestion Window Reducing) 상태가 되게 함
Ssthresh = cwnd/2
Cwnd = min(cwnd, flight size+1)
Þ전송률 절반 감소

 6. 혼잡 상태 공유
연결 정보 공유

먼저, 연결이 맺어지면 RTT측정값, cwnd, ssthresh가 저장됨.

지금까지는 호스트당 하나의 연결이었음.

같은 호스트들 사이에 다른 연결이 설정된다면?

Þ이전 연결이나 다른 연결로부터 ssthreshcwnd 값을 얻음.
Þ, 다른 연결에 사용될 cwnd, ssthresh를 초기화 시킴.

   8. 고속 환경에서의 TCP
탄생 배경
1Gb/s 이상의 고속 네트워크를 사용하는경우
윈도우를 증가시키는 시간이 오래걸림.
혼잡이 없을 경우에 이득을 볼 수 없음.
연구 결과
고속 TCP(HSTCP)
기존의 Reno congestion control 알고리즘의 congestion window 조절
기능을 수정
congestion window 크기를 매우 크게 만들어 TCP 의 한계성을 극복
이진 증가(BIC, CUBIC) – 2.6.18이후 default algorithm
congestion window 크기를 마지막으로 발생한 혼잡 이후, 경과 시간에
대한 3 차 함수를 이용하여 조절.
W(t) = C(t-K)³ + Wmax
두가지 방법이 존재
방법 1.
마지막 혼잡이 발생하기 이전상태로 빠르게 혼잡 윈도우를
복구하는 방법
방법 2.
추가적인 대역폭을 점유하기 위해 혼잡 윈도우 크기를 처음에는
느리게 증가시키다가 점차 증가 속도를 높이는 방법(HSTCP와 비슷)

9. 지연 기반 혼잡 제어

지금까지 설명한 알고리즘들과의 차이점
손실 기반 혼잡 제어
타임아웃, 패킷 손실, ACK 손실, SACK, ECN 등이 감지된 경우 윈도우 조절

지연 기반 혼잡 제어
측정한 RTT 값을 기반으로 윈도우 조절
Vegas, FAST, Westwood
널리 쓰이지는 않음

복합
패킷 손실뿐 아니라 지연 측정을 기반으로 윈도우 조절

CTCP

 10. 버퍼 포화
 •발생 원인과 문제점
배경
메모리 가격의 하락으로 네트워크 장비의 버퍼 용량 증가
원인
큐잉 지연
표준 TCP 혼잡 제어 알고리즘이 버퍼를 꽉 찬 상태로
유지하려는 경향이 있기 때문.
문제점
프로토콜의 성능 저하
해결
프로토콜 수정
부작용 발생 가능
엑세스 드라이브를 사용하여
동적으로 버퍼크기를 조절

 11. 활성 대기열 관리와 ECN
 •활성 대기열 관리
라우터가 FIFO방식 이외의 버퍼관리와 스케줄링을 사용하는 것
좀 더 정교한 스케줄링과 버퍼 관리 정책
 •ECN bit 설정
혼잡 상황에서 라우터의 기능
라우터가 혼잡 발생을 나타내는 ECN 비트를 설정
ECN bit가 설정된 패킷은 혼잡한 라우터를 통과 했음을 뜻함.



ECN echo ACK를 받은 후 발신자의 행동

혼잡 윈도우 조절


12. TCP 혼잡 제어와 관련된 공격

기본 접근 방법
발신자가 의도한 것보다 더 빠른 속도로 데이터를 주입
다른 발신자보다 큰 이득을 취할 수 있음

라우터에 부하를 줌
공격 방법
ACK 구분
인정되는 byte 범위에 대한 ACK를 전송하여 빠른 cwnd
증가를 가져옴.
DupACK 스푸핑
발신자에서 빠른 재전송 발생시 공격
빠른 복구 과정에서 ACK를 전송하여 cwnd를 증가 시킴
Optimistic ACKing
아직 도착하지 않은 세그먼트에 대한 ACK 생성

RTT가 짧다고 판단하고 cwnd를 증가 시킴

13. 정리

기본접근
저속시작
혼잡회피
알고리즘 추가
속도 반감
손실 감지 후 즉시 감소 대신 점차적으로 감소 시킴
혼잡 윈도우 검증
발신 App이 유휴 상태일때 cwnd가 커지지 않게 관리
가용 대역폭 도달 시간 감소
HSTCP
FAST
CTCP
라우터 동작의 변화
더 정교한 스케쥴링

ECN flag


반응형

'IT > TCP IP' 카테고리의 다른 글

01 ~ 04 개요, 링크계층, ARP  (0) 2015.09.14
17. TCP 유지  (0) 2015.08.31
15. TCP 데이터 흐름과 윈도우 관리  (0) 2015.08.12
14. TCP 타임아웃과 재전송  (0) 2015.08.12
13. TCP 연결관리  (0) 2015.08.12

+ Recent posts