300x250
1. Window size는 buffer 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)
•문제점
•awnd와 cwnd가 시간에
따라 변화 함.
ÞW와 awnd와 cwnd는 측정을
통해 동적으로 결정되어야 함.
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
•
•문제점
•저속
시작이 계속 되어
네트워크를 훼손 할 정도의
크기가 될 수 있음.
네트워크를 훼손 할 정도의
크기가 될 수 있음.
•저속시작 (계속)
•문제점
•저속
시작이 계속 되어 네트워크를 훼손
할 정도의 크기가 될
수
있음.
있음.
Þ이
시점은 cwnd와
ssthresh(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
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.cwnd는
ACK를
받을 때 마다 증가.
4.Good
ACK가 수신되면 cwnd가
ssthresh 값으로
재설정 됨.
•그림.
•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가 저장됨.
지금까지는 호스트당 하나의 연결이었음.
같은 호스트들 사이에 다른 연결이 설정된다면?
Þ이전
연결이나 다른 연결로부터 ssthresh와 cwnd 값을 얻음.
Þ즉, 다른 연결에
사용될 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 차 함수를 이용하여 조절.
대한 3 차 함수를 이용하여 조절.
•W(t) = C(t-K)³ + Wmax
•두가지
방법이 존재
•방법 1.
•마지막
혼잡이 발생하기 이전상태로 빠르게 혼잡 윈도우를
복구하는 방법
복구하는 방법
•방법 2.
•추가적인
대역폭을 점유하기 위해 혼잡 윈도우 크기를 처음에는
느리게 증가시키다가 점차 증가 속도를 높이는 방법(HSTCP와 비슷)
느리게 증가시키다가 점차 증가 속도를 높이는 방법(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 |