150 likes | 402 Views
제 22 장. TCP Persist Timer. Contents. Introduction TCP Persist Timer Silly Window Syndrome Summary. Introduction. Window 를 기반으로 한 TCP 흐름 제어 데이터 패킷 전송 시 수신 가능한 Window Size 를 지정 (Receiver) Window Size 가 “ 0” 이면 ? 데이터 전송을 중지하고 대기 상태 (Sender) TCP 의 Dead Lock 상태
E N D
제 22 장 TCP Persist Timer
Contents • Introduction • TCP Persist Timer • Silly Window Syndrome • Summary
Introduction • Window를 기반으로 한 TCP 흐름 제어 • 데이터 패킷 전송 시 수신 가능한 Window Size를 지정(Receiver) • Window Size가 “0” 이면? • 데이터 전송을 중지하고 대기 상태(Sender) • TCP의 Dead Lock 상태 • Sender/Receiver 모두 대기 상태 • 데이터 패킷에 대한 Ack 메시지가 분실될 경우 발생 • Ack 패킷에 대한 응답확인패킷이 없음
TCP Persist Timer • 정의 • Receiver의 Window Size 증가 여부를 확인하기 위해 일정 간격으로 Sender 측에서 구동하는 Timer • Window Size가 0 인 패킷을 수신할 때 동작 • Window Probes 특성 • Persist Timer 종료 후 Window 증가 여부 확인 패킷을 전송(Window Probing) • 1 byte의 데이터 포함 • Window Size가 증가 될 때까지 반복(재전송 Timeout과 다른점)
TCP Persist Timer 예(1) • bsdi % sock -i -s -P100000 5555
Spacing of Window Probes • Spacing of Window Probes • 약 5, 6, 12, 24, 48, 60 초 간격으로 전송 • TCP는 500ms 타이머에 의존 • 다음 클럭 주기까지 시간 : 500ms - 응답시간(4ms) • Persist Timer 계산 : • TCP의 지수 backoff 사용 • 항상 5~60초 사이에 Timeout • LAN Connection의 timeout : 1.5초( 2,4,8 배수로 계속)
Silly Window Syndrome • 정의 • full-sized segment 대신에 적은 양의 data가 connection을 통해 교환되는 현상 • CASE • Receiver: 작은 Window를 통지 • Sender : 적은 양의 데이터를 송신
Avoidance of Silly Window Syndrome • Receiver는 small segment를 통보해서는 안됨. • Window가 one-full-sized segment로 증가할 때 통보 • Receiver의 buffer space의 1/2로 증가 할 때 통보 • Sender는 다음 조건을 만족할 때 data를 전송함. • Full-sized segment를 전송할 수 있을 때 • Receiver에 의해 통보된 maximum sized window의 1/2 이상을 전송할 수 있을 때 • 모든 데이터를 전송할 수 있고 Ack를 기대하지 않을 때 • Nagle algorithm이 enable 되어 있는 상태가 아닐 때
sun.1069 bsdi.7777 PSH 1:1025(1024) ack 1, win 4096 0.0 0.002026(0.0020) 0.003737(0.0017) 0.005361(0.0016) 0.170306(0.1649) 5.151768(4.9815) 5.170308(0.0185) 10.151592(4.9813) 10.170299(0.0187) 15.151466(4.9812) 15.170296(0.0188) 1 PSH 1025:2049(1024) ack 1, win 4096 2 PSH 2049:3073(1024) ack 1, win 4096 3 PSH 3073:4097(1024) ack 1, win 4096 4 ack 4097,win 0 5 4097:4098(1) ack 1, win 4096 6 ack 4098, win 0 7 4098:4099(1) ack 1, win 4096 8 ack 4099, win 0 9 4099:4100(1) ack 1, win 4096 10 ack 4100, win 1533 11 SWS 회피를 위한 데이터 전송 시나리오(1) sun % sock -i -n6 bsdi 7777 bsdi % sock -i -s -P4 -p2 -r256 7777
bsdi.7777 sun.1069 4100:5124(1024) ack 1, win 4096 15.172006(0.0017) 15.370307(0.1983) 20.151782(4.7815) 20.170297(0.0185) 25.151162(4.9809) 25.170302(0.0191) 25.171801(0.0015) 25.174401(0.0026) 39.991658(14.8173) 51.991775(12.0001) 51.992665(0.0009) 12 ack 5124, win 509 13 5124:5633(509) ack 1, win 4096 14 ack 5633, win 0 15 5633:5634(1) ack 1, win 4096 16 ack 5634, win 1279 17 FIN, PSH 5634:6145(511) ack 1, win 4096 18 ack 6146, win 767 19 ack 6146, win 2816 20 FIN 1:1(0) ack 6146, win 4096 21 ack 2, win 4096 22 SWS 회피를 위한 데이터 전송 시나리오(2)
Silly Window Syndrome Avoidance • Receiver에 의한 silly window syndrome avoidance • 세그먼트 7에서 receiver는 window를 0으로 advertise 함 • Receiver는 full-sized segment 혹은 그 buffer의 1/2을 위한 공간을 가지고 있지 않기 때문이다. • Sender에 의한 silly window syndrome avoidance • 세그먼트 13에서 window size가 509 byte인데 바로 전송하지 않음 • Sender는 Persist Timer가 종료된 후 14번 segment에서 509byte를 전송 (window를 계속 open 할 것인가를 확인하기 위해 약 5초간 대기)
Summary • Window를 기반으로 하는 TCP에서 데이터 흐름 제어를 원활하게 하기 위해 receiver가 zero-sized window를 advertise할 때 set된다. • Sender는 retransmission interval을 이용해서 closed window probing을 계속한다. • Silly window syndrome 회피는 TCP가 small window를 advertise하거나 small segment를 전송하는 것을 방지한다.