제 21 장 TCP 타임아웃과 재전송 정보통신연구실
목차 개요 TCP 간단한 타임아웃과 재전송 예 왕복 시간 측정 RTT 예 폭주의 예 폭주 회피 알고리즘 1998년 12월 11일 목차 개요 TCP 간단한 타임아웃과 재전송 예 왕복 시간 측정 RTT 예 폭주의 예 폭주 회피 알고리즘 고속 재전송과 고속 복구 알고리즘 라우트 매트릭스 ICMP 에러 재패킷화 요약 정보통신연구실
1. 개요 데이터 세그먼트, 응답 세그먼트의 전송 도중에 상실. 데이터 전송시 타임아웃 시간설정. 타임아웃 시간 초과 후 데이터 재전송. TCP 연결에 있어서의 서로 다른 4가지 타이머 재전송 타이머(retransmission timer) - 21장 지속 타이머(persist timer) - 22장 유지 타이머(keepalive timer) - 23장 2MSL 타이머 - 18.6절 정보통신연구실
계속 TCP 타임아웃과 재전송의 예. 왕복 시간 측정 방법. 왕복 시간 측정 후 다음 세그먼트 전송시 재전송 타임아웃 설정 방법. TCP 폭주에 따른 제어. 고속 재전송(fast retransmission). 고속 회복 알고리즘(fast recovery). 상실한 패킷의 재패킷화(repacketization). 정보통신연구실
2. T C P 연결형 서비스(connection-oriented service). 전이중(full-duplex) 방식. 근원지 호스트의 연결 요청, 목적지 호스트의 연결 설정 동의. 전이중(full-duplex) 방식. 근원지 전달 계층 사용자 목적지 전달 계층 사용자 TCP 연결형 서비스 정보통신연구실
계속 가상 선로(Virtual Circuit). 슬라이딩 윈도우 프로토콜을 사용한 데이터 전송. 송신자 : 일련번호(Sequence Number)와 함께 데이터 전송. 수신자 : 전송 확인 번호(Acknowledge Number) 응답. 전송한 데이터에 대한 전송 확인(Ack)이 도착하기 전에 윈도우 크기만큼의 데이터를 지속적으로 전송할 수 있다. 정보통신연구실
계속 발신 수신 발신 수신 Ack 확 인 없 이 데 터 송 신 Ack 확 인 후 데 이 터 송 신 Ack1 Ack1 Ack2 데이터1 데이터1 Ack 확 인 없 이 데 터 송 신 Ack 확 인 후 데 이 터 송 신 데이터2 Ack1 Ack1 데이터2 데이터3 Ack2 데이터4 Ack3 Ack2 데이터3 Ack3 . . A B 정보통신연구실
3. 간단한 타임아웃과 재전송 예 Bsid % telnet svr4 discard Tyring 140.252.13.34… Connected to svr4. Escape character is ‘^]’. Hello, world and hi Connection closed by foreign host -TCPdump output 1 0.0 bsdi.1029 > svr4.discard: S 1747921409:1747921409(0) win 4096 <mss> 4096 2 0.004811(0.0048) svr4.discard > bsdi.1029: S 3416685569:3416685569(0) ack 1747921410 win 4096 <mss 1024> 3 0.006441(0.0015) bsdi.1029 > svr4.discard: . ack 1 win 4096 정보통신연구실
계속 4 6.102290(6.0958) bsdi.1029 > svr4.discard: P 1:15(14) ack 1 win 4096 5 6.259410(0.1571) svr4.discard > bsdi.1029: . Ack 15 win 4096 6 24.480158(18.2207) bsdi.1029 > svr4.discard: P 15:23(8) ack 1 win 4096 7 24.493733(1.0136) bsdi.1029 > svr4.discard: P 15:23(8) ack 1 win 4096 8 28.493795(3.0001) bsdi.1029 > svr4.discard: P 15:23(8) ack 1 win 4096 9 34.493971(6.0002) bsdi.1029 > svr4.discard: P 15:23(8) ack 1 win 4096 10 46.484427(11.9905) bsdi.1029 > svr4.discard: P 15:23(8) ack 1 win 4096 11 70.485105(24.0007) bsdi.1029 > svr4.discard: P 15:23(8) ack 1 win 4096 12 118.486408(48.0013 ) bsdi.1029 > svr4.discard: P 15:23(8) ack 1 win 4096 13 182.488164(64.0018) bsdi.1029 > svr4.discard: P 15:23(8) ack 1 win 4096 14 246.489921(64.0018) bsdi.1029 > svr4.discard: P 15:23(8) ack 1 win 4096 15 310.491678(64.0018) bsdi.1029 > svr4.discard: P 15:23(8) ack 1 win 4096 16 374.493431(64.0018) bsdi.1029 > svr4.discard: P 15:23(8) ack 1 win 4096 17 438.495191(64.0018) bsdi.1029 > svr4.discard: P 15:23(8) ack 1 win 4096 18 502.486941(64.9917) bsdi.1029 > svr4.discard: P 15:23(8) ack 1 win 4096 19 566.488478(64.0015) bsdi.1029 > svr4.discard: P 15:23(8) ack 1 win 4096 정보통신연구실
계속 지수 백오프(exponential backoff) 6번(24.480초) ~ 19번(566.488초) 1초(7번), 3초(8번), 6초(9번), 12초(10번) … 이전 타임아웃 시간 2 = 다음 타임아웃 시간 6번(24.480초) ~ 19번(566.488초) 566.488 - 24.480 = 342.008(초) 542.008 60.000 9.033(분) 정보통신연구실
4. 왕복 시간(Round-Trip Time) 측정 TCP의 타임아웃과 재전송 경로의 변경 또는 네트워크 트래픽의 변화에 따른 시간 변경이필요. 왕복시간(RTT)의 측정. TCP는 일련번호(Sequence Number)를 가진 데이터를 송신. 송신 데이터에 대한 확인응답이 돌아오기까지의 시간 측정. R R ( 1 )M 측정한 RTT 값 : M RTT 평가 값 : R : 0.9 정보통신연구실
계속 재전송 타임아웃 값(RTO) RTO = R Jacobson의 문제 제기 RTT의 변화에 따라 재전송 타임아웃 값이 달라짐. RTO = R : 지연분산 계수로서 권장 값 2. Jacobson의 문제 제기 부하가 걸려있는 네트워크에서 불필요한 재전송은 부하를 가중시키는 결과를 가져온다. RTT 측정 값의 분산 값을 기반으로 RTO를 계산하여 RTT의 변동에 대응한다. 정보통신연구실
계속 Err = M - A A A + g Err D D + h(| Err | - D) RTO = A + 4D A : RTT평균 평가값. D : 평균 편차. Err : 실제 측정 값 - 현재 RTT 측정 값. g : 평균 0.125(1/8) h : 편차의 계수 0.25 계수가 커지면 RTT가 변화할때 RTO 급속히 증가. 재전송 타이머 계산에 사용. 정보통신연구실
계속 재전송 애매성 문제(retransmission ambiguity problem) RTT 평가값의 변경 불가. 패킷을 재전송할 때 타임아웃이 발생 한다고 가정. 재전송 타임아웃(RTO) 값에 의한 패킷의 재전송. 수신측의 확인응답(Ack)이 도착. 송신측에 도착한 확인응답(Ack)이 첫번째 전송에 대한 것인지 두번째 전송에 대한 것인지 불확실한 결과 초래. RTT 평가값의 변경 불가. 타임아웃과 재전송이 발생했을때 재전송된 데이터에 대한 확인응답이 도착하더라도 RTT평가 값을 변경. 재전송 애매성 문제에 의해 확인응답을 Mapping. 정보통신연구실
5. RTT 예 왕복시간1 (1.061 초) 측정이 시작된 세그먼트 확인 응답 세그먼트 왕복시간2 (0.808 초) 3 6 1 왕복시간1 (1.061 초) 측정이 시작된 세그먼트 1 1 3 6 3 확인 응답 세그먼트 왕복시간2 (0.808 초) 4 4 7 8 3 4 측정이 시작된 세그먼트 6 왕복시간3 (1.015 초) 7 4 6 8 갱신되지 않는 세그먼트 정보통신연구실
계속 ~ 왕복시간 재전송 구간 : 확인 응답될 때까지 RTT (second) TIME(second) 평가 값은 갱신되지 않음. 2 RTT (second) 1 5 10 15 20 TIME(second) ~ 왕복시간 재전송 구간 : 확인 응답될 때까지 평가 값은 갱신되지 않음. 정보통신연구실
계속 초기 재전송 타임아웃. 타임아웃 발생 후 재전송 타임아웃. A : 0, D : 3 RTO = A + 2D = 0 + 2 3 = 6초(초기 계산에만 2D 적용) 타임아웃 발생 후 재전송 타임아웃. RTO = A + 4D = 0 + 4 3 = 12초 1 0.0 slip.1024 > vangogh.discard : S 35648001 : 356480001(0) win 4096 <mss 256> 2 5.802377(5.8024) slip.1024 > vangogh.discard : S 35648001 : 35648001 (0) 3 6.269395(0.4670) vangogh.dicard > slip.1024 : S 1365512705:1365512705(0) ack 35648002 win 8192<mss 256> 4 6.27.796(0.0014) slip.1024 > vangogh.discard : . Ack 1 win 4096 정보통신연구실
계속 500ms 왕복시간1 (1.061 초) 왕복시간2 (0.808 초) 왕복시간3 (1.015 초) 3 주기 0.03 0.53 1.03 1.53 2.03 2.53 3.03 0.0 1.061 1.063 1.871 1.872 2.887 On off on off on off 왕복시간1 (1.061 초) 왕복시간2 (0.808 초) 왕복시간3 (1.015 초) 3 주기 (15000ms) 1 주기 (5000ms) 2 주기 (10000ms) 정보통신연구실
계속 처음 데이터 세그먼트의 확인 응답 후 평가 값 갱신. RTO 평가 값 계산. A = M + 0.5 = 1.5 + 0.5 = 2 D = A / 2 = 1 RTO 평가 값 계산. A + 4D = 2 + 4 1 = 6초 두 번째 데이터 세그먼트의 확인 응답 후 평가 값 갱신. Err = M - A = 0.5 - 2 = -1.5 A = A + gErr = 2 - 0.125 1.5 = 1.8125 D = D + h(|Err| - D) = 1 + 0.25 (1.5 - 1) = 1.125 RTO = A + 4D = 1.8125 + 4 1.125 = 6.3125 정보통신연구실
6. 폭주의 예 정보통신연구실
계속 save 256byte 사용자 프로세서 9.158419 ~ 11.438824 (second) 2304byte 7 2 8 save 2 2 9.158419 ~ 11.438824 (second) 2 2 2 2 9 2304byte 10 사용자 프로세서 11 정보통신연구실
7. 폭주 회피 알고리즘 손실된 패킷 문제를 해결하는 방법. 패킷의 손실. 폭주회피와 저속출발 이용. 폭주회피 저속출발 발신지와 목적지 사이의 네트워크 어딘가에 폭주 발생. 타임아웃 발생. 중복된 확인 응답의 수신. 폭주회피와 저속출발 이용. 폭주회피 Congestion window Ssthresh 저속출발 Ssthresh > Congestion window 저속출발 : 20.6절 참조 정보통신연구실
계속 Cwnd : 1 세그먼트, Ssthresh : 65535 바이트로 설정. 정보통신연구실
계속 정보통신연구실
8. 고속 재전송과 고속 복구 알고리즘 중복 Ack의 생성 고속 재전송 알고리즘 고속 복구 알고리즘 폭주 회피 수행. 송신측이 보낸 세그먼트 순서번호가 다를 경우. 수신측이 기대하는 순서번호가 아닐 경우. 송신측에게 알린다. 고속 재전송 알고리즘 2개의 중복 Ack : 세그먼트의 교체. 3개 이상의 중복 Ack : 세그먼트의 손실. 재전송 타이머를 기다리지 않고 요구된 세그먼트 재전송. 고속 복구 알고리즘 폭주 회피 수행. 정보통신연구실
계속 save 256byte 사용자 프로세서 9.158419 ~ 11.438824 (second) 2304byte 7 2 8 save 2 2 9.158419 ~ 11.438824 (second) 2 2 2 2 9 2304byte 10 사용자 프로세서 11 정보통신연구실
계속 3개의 중복 Ack 수신후에도 저속출발을 수행 않함. 송신측은 수신측에 의해 요구된 세그먼트 재전송.( ) 송신측은 수신측에 의해 요구된 세그먼트 재전송.( ) 재전송에 대한 확인응답을 받기전에 새로운 세그먼트 전송( ) 수신측은 또다른 세그먼트를 수신했을때 중복 Ack를 생성. 세그먼트는 수신버퍼에 진입. 즉, 송신측과 수신측사이에 데이터 흐름이 계속되고 있음을 의미. 저속 출발로 인한 흐름의 감소를 야기시키지 않기 위해. 2 9 10 11 정보통신연구실
9. 라우트 메트릭스 송 • 수신측간의 TCP연결 종료후 RTT, 평균편차, 저속 출발 기준 값의 정보를 라우팅 테이블 엔트리에 저장. ROUTE명령을 이용해 관리자는 특정 경로의 매트릭스를 설정할 수 있다. 새로운 TCP 연결이 확립될때 라우팅 테이블 엔트리에 저장되어있는 매트릭스 값에 의해 초기화된다. 정보통신연구실
10. ICMP 에러 ICMP(Internet 계속rol Message Protocol) 오류 메시지 목적지 도달 불능(Destination Unreachable) IP 데이터 그램이 목적지 호스트로 전달될 수 없을 경우. 시간 초과(Time Exceeded) IP 데이터그램의 수명 필드에 포함된 값이 만료되어 IP 데이터 그림이 폐기되었을 때. 무효 파라미터(Invalid Parameter) IP데이터그램에서 하나 또는 그 이상의 헤더 필드가 적합하지 않은 데이터를 포함할 경우. 근원지 억제(Source Quench) 잠시 동안 IP 데이터그램의 송신을 멈추도록 근원지 호스트에 요청하기 위해 보내질 경우. 정보통신연구실
계속 호스트 도달불가 에러 ICMP : 6장 참조 1 slip % sock aix echo 2 test line 4 another line 14 another line 15 line number 3 16 line number 3 17 the last line read error : No route to host 호스트 도달불가 에러 ICMP : 6장 참조 정보통신연구실
11. 재패킷화 (repacketization) 타임아웃 발생시 동일한 세그먼트를 재전송하지 않는다. TCP는 보다 큰 세그먼트를 보낼 때 재 패킷화를 실행. (수신측의 MSS를 초과할 수 없다.) bsdi % sock svr4 discard hello there line number 2 and 3 첫번째 데이터 전송 이더넷 케이블 절단 두번째 데이터 전송 세번째 데이터 전송 정보통신연구실
12. 요약 타임아웃 발생 시 재전송 타임아웃 값의 지수 백오프. 왕복시간 측정(RTT). RTT평가 값과 평균편차 평가 값에의한 RTO 계산. Karn’s 알고리즘에서 재전송 애매성 문제. 저속 출발, 폭주 회피, 고속 재전송, 고속 복구 알고리즘. ICMP 에러. 라우트 메트릭스를 이용한 초기화. 재 패킷화를 통한 전송의 효율화. 정보통신연구실