Download presentation
Presentation is loading. Please wait.
1
1. Window size는 buffer size?
수신자가 보내준 window size는 발신자가 전송가능한 최대 bytes 21페이지 TSOPT 예제 26페이지 SACK 언제 재전송 되나? 2018년 9월 18일 오전 5시 54분 1 / 35
2
윈도우 계산 2 / 35 윈도우 관계식 따라서, slow start 동작 시에는 cwnd의 크기가 사용됨.
awnd = minimum[rwnd,cwnd] awnd : 전송 윈도우 크기 (송신할 수 있는 세그먼트 수) rwnd : 수신 윈도우 크기 (수신측 버퍼 여유용량) cwnd : 혼잡 윈도우 크기 (연결 초기` 및 `혼잡 상황`에서 사용되는 윈도우) 연결 초기에 cwnd = 1 로 셋팅됨 최대값이 될 때까지 cwnd를 증가시킴 따라서, slow start 동작 시에는 cwnd의 크기가 사용됨. cwnd 값은 어떻게 구하는가? 2018년 9월 18일 오전 5시 54분 2 / 35
3
CWND 계산 3 / 35 RFC5681 전달 받은 ACK에 다음 동작 수행
cwnd += SMSS, (cwnd < ssthresh), 저속시작 cwnd += SMSS*SMSS/cwnd, (cwnd > ssthresh), 혼잡 회피 2018년 9월 18일 오전 5시 54분 3 / 35
4
혼잡 회피 4 / 35 혼잡 회피 원인 결과 혼잡이 발생한 경우 발생 e.g 타이머 만료 중복된 ack 수신
전송 세그먼트의 수를 조금씩 증가 시킴 2018년 9월 18일 오전 5시 54분 4 / 35
5
16. TCP 혼잡 제어 김 진 홍
6
contents 개요 고전적인 알고리즘 표준 알고리즘의 발전 Eifel 응답 알고리즘을 이용한 Spurious RTO의 제어
확장 예제 혼잡 상태 공유 TCP 친화성 고속 환경에서의 TCP 지연 기반 혼잡 제어 버퍼 포화 활성 대기열 관리와 ECN TCP 혼잡 제어와 관련된 공격 정리
7
1. 개요 7 / 35 16장의 주된 내용 전반부 후반부 혼잡 제어 알고리즘의 기본 원리 2. 고전적인 알고리즘
2. 고전적인 알고리즘 3. 표준 알고리즘의 발전 4. Eifel 응답 알고리즘을 이용한 Spurious RTO의 제어 5. 확장 예제 후반부 알고리즘의 최신 버전(수정된 기능) 6. 혼잡 상태 공유 7. TCP 친화성 8. 고속 환경에서의 TCP 9. 지연 기반 혼잡 제어 10. 버퍼 포화 11. 활성 대기열 관리와 ECN 12. TCP 혼잡 제어와 관련된 공격 2018년 9월 18일 오전 5시 54분 7 / 35
8
1. 개요 혼잡 제어 정의 네트워크가 너무 큰 트래픽 부하에 영향 받는 것을 방지하기 위해 구현된 행위 기본 접근 방법 네트워크가 혼잡한 상황이라고 할 수 있는 경우 전송 속도 감소. E.g 라우터가 패킷을 폐기하고 있는 경우 속도 감소 후 언제 정상 속도로 복구 할 것인가? 2018년 9월 18일 오전 5시 54분 8 / 35
9
1. 개요 9 / 35 발신자의 속도를 늦추는 방법 발신자의 윈도우 조절 문제점
발신자의 사용 가능한 윈도우(W) 혼잡 윈도우(cwnd) cwnd(혼잡 윈도우 크기)를 알기 위해 실험이 필요. 수신자의 수신 윈도우(awnd) awnd(수신자의 윈도우 크기)는 패킷 교환을 통해 습득.(15장) W= min(awnd, cwnd) 문제점 awnd와 cwnd가 시간에 따라 변화 함. W와 awnd와 cwnd는 측정을 통해 동적으로 결정되어야 함. 2018년 9월 18일 오전 5시 54분 9 / 35
10
2. 고전적인 알고리즘 10 / 35 알고리즘의 구성 TCP 데이터 전송 저속시작 -> 패킷 손실 -> 혼잡 회피
2018년 9월 18일 오전 5시 54분 10 / 35
11
2. 고전적인 알고리즘 저속시작 새로운 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 세그먼트 2018년 9월 18일 오전 5시 54분 11 / 35
12
2. 고전적인 알고리즘 12 / 35 저속시작 (계속) 각 패킷에 대해 ACK를 반환할 경우 문제점 K번 왕복후의 W 값
W = 2^k 문제점 저속 시작이 계속 되어 네트워크를 훼손 할 정도의 크기가 될 수 있음. 2018년 9월 18일 오전 5시 54분 12 / 35
13
2. 고전적인 알고리즘 13 / 35 저속시작 (계속) 문제점 해결
저속 시작이 계속 되어 네트워크를 훼손 할 정도의 크기가 될 수 있음. 이 시점은 cwnd와 ssthresh(slow start threshold)라 불리는 값에 따라 결정 됨 해결 cwnd가 반 값으로 감소됨. 혼잡 회피 동작을 수행함. 2018년 9월 18일 오전 5시 54분 13 / 35
14
2. 고전적인 알고리즘 14 / 35 혼잡 회피 저속 시작 동작은 cwnd가 지수적으로 증가함.
cwndt+1 = cwndt + SMSS * SMSS/cwndt 1씩 증가하는 cwnd 2018년 9월 18일 오전 5시 54분 14 / 35
15
2. 고전적인 알고리즘 저속 시작과 혼잡 회피 2018년 9월 18일 오전 5시 54분 15 / 35
16
2. 고전적인 알고리즘 16 / 35 저속 시작과 혼잡 회피의 선택 cwnd ≤ ssthresh
저속시작 작동 cwnd > ssthresh 혼잡 회피 작동 2018년 9월 18일 오전 5시 54분 16 / 35
17
2. 고전적인 알고리즘 17 / 35 ssthresh 초기값 값 변경 cwnd보다 높은 임의값
재전송이 될 때 (time out, ack기반 재전송) ssthresh = max(flight size/2, 2*SMSS) flight size = 발신자가 네트워크에 전송할 수 있는 데이터의 양 2018년 9월 18일 오전 5시 54분 17 / 35
18
2. 고전적인 알고리즘 18 / 35 표준 TCP[RFC5681] 지금까지의 설명은 표준 TCP의 기본 절차 RFC5681
초기값과 저속 시작 cwnd = IW ssthresh = awnd cwnd 갱신 새로운 데이터를 알리는 good ACK를 받을 때 갱신. cwnd += SMSS, (cwnd < ssthresh), 저속시작 cwnd += SMSS*SMSS/cwnd, (cwnd > ssthresh), 혼잡 회피 2018년 9월 18일 오전 5시 54분 18 / 35
19
2. 고전적인 알고리즘 19 / 35 ACK 기반 재전송 발생시 일시적인 cwnd의 증가가 발생.
ACK 기반 재전송 발생(ACK 3개 도착) ssthresh 계산 cwnd는 (ssthresh + 3*SMSS)로 설정 됨. cwnd는 ACK를 받을 때 마다 증가. Good ACK가 수신되면 cwnd가 ssthresh 값으로 재설정 됨. 그림. 2번과 3번을 빠른 복구 라고 함. 동작 재전송 수행 4번을 수축 이라고 함. 재전송이 완료되고 일시적인 증가를 제거 2018년 9월 18일 오전 5시 54분 19 / 35
20
3. 표준 알고리즘의 발전 20 / 35 New Reno 탄생 동기 과정 ack 기반 재전송 과정 중 빠른 복구의 문제점
여러 개의 패킷이 손실될 때 한번에 하나의 패킷이 복구 됨. 과정 발신자가 빠른 재전송을 들어가기 전 현재 전송 지점을 저장함. 1번에 대한 빠른 재전송을 수행. 발신자는 8에 대한 ack를 받길 기대중. 2번에 대한 ack가 도착. 3번이 전달 되지 않았다는 것을 인지한 후 재전송. 8에 대한 ack 도착 2018년 9월 18일 오전 5시 54분 20 / 35
21
3. 표준 알고리즘의 발전 21 / 35 SACK을 이용한 혼잡 제어 탄생 동기 과정
여러 개의 패킷이 손실될 때 한번에 하나의 패킷이 복구 됨. 과정 발신자가 빠른 재전송을 들어가기 전 현재 전송 지점을 저장함. 1번에 대한 빠른 재전송을 수행. 발신자는 8에 대한 ack를 받길 기대중. 2번에 대한 ack가 도착. 3번이 전달 되지 않았다는 것을 인지한 후 재전송. 8에 대한 ack 도착 2018년 9월 18일 오전 5시 54분 21 / 35
22
3. 표준 알고리즘의 발전 22 / 35 혼잡 윈도우 유효성 검사(CWV)
발신자의 cwnd는 데이터가 전송 되지 않으면 감소함. ssthresh는 감소 되기 이전의 초기 값에 대한 설정을 유지 패킷의 전송률을 감소시키는 것은 라우터의 압박을 줄여줌. 2018년 9월 18일 오전 5시 54분 22 / 35
23
3. 표준 알고리즘의 발전 23 / 35 지역 혼잡 원인 영향 전송률 절반 감소 전송 시스템에서의 패킷 손실
데이터 전송 < 데이터 생산 영향 CWR(Congestion Window Reducing) 상태가 되게 함 Ssthresh = cwnd/2 Cwnd = min(cwnd, flight size+1) 전송률 절반 감소 2018년 9월 18일 오전 5시 54분 23 / 35
24
3. 표준 알고리즘의 발전 24 / 35 초반부 정리 혼잡 제어 알고리즘의 기초 저속 시작 혼잡 회피 전송률 절반 감소
2018년 9월 18일 오전 5시 54분 24 / 35
25
6. 혼잡 상태 공유 25 / 35 연결 정보 공유 먼저, 연결이 맺어지면 RTT측정값, cwnd, ssthresh가 저장됨.
지금까지는 호스트당 하나의 연결이었음. 같은 호스트들 사이에 다른 연결이 설정된다면? 이전 연결이나 다른 연결로부터 ssthresh와 cwnd 값을 얻음. 즉, 다른 연결에 사용될 cwnd, ssthresh를 초기화 시킴. 21페이지 TSOPT 예제 26페이지 SACK 언제 재전송 되나? 2018년 9월 18일 오전 5시 54분 25 / 35
26
8. 고속 환경에서의 TCP 탄생 배경 1Gb/s 이상의 고속 네트워크를 사용하는경우 윈도우를 증가시키는 시간이 오래걸림. 혼잡이 없을 경우에 이득을 볼 수 없음. 2018년 9월 18일 오전 5시 54분 26 / 35
27
8. 고속 환경에서의 TCP - 계속 27 / 35 연구 결과 고속 TCP(HSTCP)
기존의 Reno congestion control 알고리즘의 congestion window 조절 기능을 수정 congestion window 크기를 매우 크게 만들어 TCP 의 한계성을 극복 이진 증가(BIC, CUBIC) – 이후 default algorithm congestion window 크기를 마지막으로 발생한 혼잡 이후, 경과 시간에 대한 3 차 함수를 이용하여 조절. W(t) = C(t-K)³ + Wmax 두가지 방법이 존재 방법 1. 마지막 혼잡이 발생하기 이전상태로 빠르게 혼잡 윈도우를 복구하는 방법 방법 2. 추가적인 대역폭을 점유하기 위해 혼잡 윈도우 크기를 처음에는 느리게 증가시키다가 점차 증가 속도를 높이는 방법(HSTCP와 비슷) 2018년 9월 18일 오전 5시 54분 27 / 35
28
9. 지연 기반 혼잡 제어 28 / 35 지금까지 설명한 알고리즘들과의 차이점 손실 기반 혼잡 제어 지연 기반 혼잡 제어 복합
타임아웃, 패킷 손실, ACK 손실, SACK, ECN 등이 감지된 경우 윈도우 조절 지연 기반 혼잡 제어 측정한 RTT 값을 기반으로 윈도우 조절 Vegas, FAST, Westwood 등 널리 쓰이지는 않음 복합 패킷 손실뿐 아니라 지연 측정을 기반으로 윈도우 조절 CTCP 2018년 9월 18일 오전 5시 54분 28 / 35
29
10. 버퍼 포화 29 / 35 발생 원인과 문제점 배경 원인 문제점 해결
메모리 가격의 하락으로 네트워크 장비의 버퍼 용량 증가 원인 큐잉 지연 표준 TCP 혼잡 제어 알고리즘이 버퍼를 꽉 찬 상태로 유지하려는 경향이 있기 때문. 문제점 프로토콜의 성능 저하 해결 프로토콜 수정 부작용 발생 가능 엑세스 드라이브를 사용하여 동적으로 버퍼크기를 조절 2018년 9월 18일 오전 5시 54분 29 / 35
30
11. 활성 대기열 관리와 ECN 활성 대기열 관리 라우터가 FIFO방식 이외의 버퍼관리와 스케줄링을 사용하는 것 좀 더 정교한 스케줄링과 버퍼 관리 정책 2018년 9월 18일 오전 5시 54분 30 / 35
31
11. 활성 대기열 관리와 ECN - 계속 31 / 35 ECN bit 설정 혼잡 상황에서 라우터의 기능
packet (with ECN) 발신자 packet 수신자 라우터 ACK (ECN echo) ACK (ECN echo) 2018년 9월 18일 오전 5시 54분 31 / 35
32
11. 활성 대기열 관리와 ECN - 계속 32 / 35 ECN echo ACK를 받은 후 발신자의 행동 혼잡 윈도우 조절
2018년 9월 18일 오전 5시 54분 32 / 35
33
12. TCP 혼잡 제어와 관련된 공격 33 / 35 기본 접근 방법 발신자가 의도한 것보다 더 빠른 속도로 데이터를 주입
다른 발신자보다 큰 이득을 취할 수 있음 라우터에 부하를 줌 2018년 9월 18일 오전 5시 54분 33 / 35
34
12. TCP 혼잡 제어와 관련된 공격 - 계속 34 / 35 공격 방법 ACK 구분 DupACK 스푸핑
인정되는 byte 범위에 대한 ACK를 전송하여 빠른 cwnd 증가를 가져옴. DupACK 스푸핑 발신자에서 빠른 재전송 발생시 공격 빠른 복구 과정에서 ACK를 전송하여 cwnd를 증가 시킴 Optimistic ACKing 아직 도착하지 않은 세그먼트에 대한 ACK 생성 RTT가 짧다고 판단하고 cwnd를 증가 시킴 2018년 9월 18일 오전 5시 54분 34 / 35
35
13. 정리 35 / 35 정리 기본접근 알고리즘 추가 라우터 동작의 변화 저속시작 혼잡회피 속도 반감
손실 감지 후 즉시 감소 대신 점차적으로 감소 시킴 혼잡 윈도우 검증 발신 App이 유휴 상태일때 cwnd가 커지지 않게 관리 가용 대역폭 도달 시간 감소 HSTCP FAST CTCP 라우터 동작의 변화 더 정교한 스케쥴링 ECN flag 2018년 9월 18일 오전 5시 54분 35 / 35
36
Qna
Similar presentations