๊ด€๋ฆฌ ๋ฉ”๋‰ด

Unfazedโ—๏ธ๐ŸŽฏ

์—ฐ๊ฒฐ์ง€ํ–ฅํ˜• ํŠธ๋žœ์ŠคํฌํŠธ(TCP) - ์™•๋ณต์‹œ๊ฐ„(RTT) ์˜ˆ์ธก๊ณผ ํƒ€์ž„์•„์›ƒ(timeout) ๋ณธ๋ฌธ

Network (๋„คํŠธ์›Œํฌ)/Computer Network (์ปดํ“จํ„ฐ๋„คํŠธ์›Œํฌ)

์—ฐ๊ฒฐ์ง€ํ–ฅํ˜• ํŠธ๋žœ์ŠคํฌํŠธ(TCP) - ์™•๋ณต์‹œ๊ฐ„(RTT) ์˜ˆ์ธก๊ณผ ํƒ€์ž„์•„์›ƒ(timeout)

9taetae9 2024. 12. 12. 14:07
728x90

TCP์˜ ์†์‹ค ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ : ํƒ€์ž„์•„์›ƒ/์žฌ์ „์†ก ๋ฉ”์ปค๋‹ˆ์ฆ˜

 

์™•๋ณต์‹œ๊ฐ„(RTT, round-trip time) : ํŒจํ‚ท์ด ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์„œ๋ฒ„๊นŒ์ง€ ๊ฐ€๊ณ , ๋‹ค์‹œ ํด๋ผ์ด์–ธํŠธ๋กœ ๋˜๋Œ์•„์˜ค๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„

RTT๋Š” ํŒจํ‚ท ์ „ํŒŒ ์ง€์—ฐ, ์ค‘๊ฐ„ ๋ผ์šฐํ„ฐ์™€ ์Šค์œ„์น˜์—์„œ์˜ ํŒจํ‚ท ํ์ž‰ ์ง€์—ฐ, ํŒจํ‚ท ์ฒ˜๋ฆฌ ์ง€์—ฐ ๋“ฑ์„ ํฌํ•จ.

ex) ์‚ฌ์šฉ์ž๊ฐ€ ํ•˜์ดํผ๋งํฌ๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ผ

1. ํด๋ฆญ - ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์„œ๋ฒ„ ์‚ฌ์ด์—์„œ TCP ์—ฐ๊ฒฐ์„ ์‹œ๋„ (three-way handshake๋ฅผ ํฌํ•จ - ํด๋ผ์ด์–ธํŠธ๊ฐ€ tcp ๋ฉ”์‹œ์ง€๋ฅผ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๊ณ , ์„œ๋ฒ„๊ฐ€ ๋ฉ”์‹œ์ง€๋กœ ์‘๋‹ต ํ›„ ๋งˆ์ง€๋ง‰์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‹ค์‹œ ์„œ๋ฒ„์— ์‘๋‹ต, ์ด ์ค‘ ํ•ธ๋“œ์…ฐ์ดํฌ ์ค‘ ์ฒ˜์Œ ๋‘ ๋‹จ๊ณ„๊ฐ€ ๊ฒฝ๊ณผํ•˜๋ฉด ํ•œ RTT๊ฐ€ ๊ณ„์‚ฐ๋จ.)

2. ํ•ธ๋“œ ์…ฐ์ดํฌ์˜ ์ฒ˜์Œ ๋‘ ๊ณผ์ •์ด ๋๋‚œ ํ›„, ํด๋ผ์ด์–ธํŠธ๋Š” HTTP ์š”์ฒญ ๋ฉ”์‹œ์ง€๋ฅผ TCP ์—ฐ๊ฒฐ๋กœ ๋ณด๋‚ด๋ฉด์„œ ํ•ธ๋“œ์…ฐ์ดํฌ์˜ ์„ธ ๋ฒˆ์งธ ๋ถ€๋ถ„(์‘๋‹ต)์„ ํ•จ๊ป˜ ๋ณด๋ƒ„. 

3. ์š”์ฒญ ๋ฉ”์‹œ์ง€๊ฐ€ ์„œ๋ฒ„์— ๋„์ฐฉํ•˜๋ฉด ์„œ๋ฒ„๋Š” HTML ํŒŒ์ผ์„ TCP ์—ฐ๊ฒฐ๋กœ ๋ณด๋ƒ„. ์ด HTTP ์š”์ฒญ/์‘๋‹ต์ด ๋˜ ํ•˜๋‚˜์˜ RTT๋ฅผ ํ•„์š”๋กœ ํ•จ

์ด ์‘๋‹ต ์‹œ๊ฐ„ : 2 RTT + HTML ํŒŒ์ผ ์ „์†ก ์‹œ๊ฐ„

 

 

ํƒ€์ž„์•„์›ƒ ์ฃผ๊ธฐ

ํƒ€์ž„์•„์›ƒ์€ ์—ฐ๊ฒฐ์˜ ์™•๋ณต์‹œ๊ฐ„(RTT)๋ณด๋‹ค๋Š” ์ปค์•ผ ํ•จ.

 

์™•๋ณต์‹œ๊ฐ„ ์˜ˆ์ธก

TCP๊ฐ€ ์†ก์ˆ˜์‹ ์ž ๊ฐ„ ์™•๋ณต์‹œ๊ฐ„(RTT, rount-trip time)์„ ์˜ˆ์ธกํ•˜๋Š” ๋ฐฉ๋ฒ•

SampleRTT(์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•œ RTT ์ƒ˜ํ”Œ) : ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์†ก์‹ ๋œ ์‹œ๊ฐ„(IP์—๊ฒŒ ๋„˜๊ฒจ์ง„ ์‹œ๊ฐ„)์œผ๋กœ๋ถ€ํ„ฐ ๊ทธ ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•œ ๊ธ์ •์‘๋‹ต์ด ๋„์ฐฉํ•œ                                                                 ์‹œ๊ฐ„๊นŒ์ง€์˜ ์‹œ๊ฐ„ ๊ธธ์ด

๋Œ€๋ถ€๋ถ„์˜ TCP๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ SampleRTT ์ธก์ •๋งŒ์„ ์‹œํ–‰ํ•จ. (์–ด๋–ค ์‹œ์ ์—์„œ SampleRTT๋Š” ์ „์†ก๋˜์—ˆ์ง€๋งŒ ํ˜„์žฌ๊นŒ์ง€ ํ™•์ธ์‘๋‹ต์ด ์—†๋Š” ์„ธ๊ทธ๋จผํŠธ ์ค‘ ํ•˜๋‚˜์— ๋Œ€ํ•ด์„œ๋งŒ ์ธก์ •๋˜๊ณ , ์ด๋Š” ๋Œ€๋žต ์™•๋ณต์‹œ๊ฐ„๋งˆ๋‹ค SampleRTT์˜ ์ƒˆ๋กœ์šด ๊ฐ’์„ ์–ป๊ฒŒ ํ•จ)

๋˜ํ•œ ์žฌ์ „์†กํ•œ ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•œ SampleRTT๋Š” ๊ณ„์‚ฐํ•˜์ง€ ์•Š๊ณ , ํ•œ ๋ฒˆ ์ „์†ก๋œ ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•ด์„œ๋งŒ ์ธก์ •ํ•จ.

SampleRTT๊ฐ’์€ ๋ผ์šฐํ„ฐ์—์„œ์˜ ํ˜ผ์žก๊ณผ ์ข…๋‹จ ์‹œ์Šคํ…œ์—์„œ์˜ ๋ถ€ํ•˜ ๋ณ€ํ™” ๋•Œ๋ฌธ์— ์„ธ๊ทธ๋จผํŠธ๋งˆ๋‹ค ๋‹ฌ๋ผ ๋ถˆ๊ทœ์น™์ ์ž„.

๋Œ€์ฒด๋กœ RTT๋ฅผ ์ถ”์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ SampleRTT๊ฐ’์˜ ํ‰๊ท ๊ฐ’(EstimatedRTT)์„ ์ฑ„ํƒํ•˜๊ณ  TCP๋Š” ์ด ํ‰๊ท ๊ฐ’์„ ์œ ์ง€ํ•จ.

TCP๋Š” ๊ธ์ • ํ™•์ธ์‘๋‹ต์„ ์ˆ˜์‹ ํ•˜๊ณ  ์ƒˆ๋กœ์šด SampleRTT๋ฅผ ํš๋“ํ•˜์ž๋งˆ์ž ๋‹ค์Œ ๊ณต์‹์— ๋”ฐ๋ผ EstimatedRTT๋ฅผ ๊ฐฑ์‹ ํ•จ.

EstimatedRTT = ( 1 - α ) * EstimatedRTT + α * SampleRTT

์ฆ‰, ์ƒˆ๋กœ์šด EstimatedRTT ๊ฐ’์€ EstimatedRTT ์ด์ „ ๊ฐ’๊ณผ SampleRTT์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๊ฐ’์˜ ๊ฐ€์ค‘๋œ ์กฐํ•ฉ์œผ๋กœ ํ‘œํ˜„

๊ถŒ์žฅ๋˜๋Š” α์˜ ๊ฐ’์€ α = 0.125(1/8) [RFC 6298]์ด๋ฉฐ, ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ณต์‹์„ ์‚ฌ์šฉ

EstimatedRTT = 0.875 * EstimatedRTT + 0.125 * SampleRTT

EstimatedRTT๋Š” SampleRTT๊ฐ’์˜ ๊ฐ€์ค‘ํ‰๊ท (weighted average)์ด๊ณ  ๊ฐ€์ค‘ํ‰๊ท ์€ ์˜ˆ์ „ ์ƒ˜ํ”Œ๋ณด๋‹ค ์ตœ๊ทผ ์ƒ˜ํ”Œ์— ๋†’์€ ๊ฐ€์ค‘์น˜๋ฅผ ์ฃผ์–ด, 

์ตœ๊ทผ์˜ ์ƒ˜ํ”Œ๋“ค์ด ๋„คํŠธ์›Œํฌ์ƒ์˜ ํ˜„์žฌ ํ˜ผ์žก์„ ๋” ์ž˜ ๋ฐ˜์˜ํ•จ.

์ด๋Ÿฌํ•œ ํ‰๊ท ์„ ํ†ต๊ณ„์—์„œ ์ง€์ˆ˜์  ๊ฐ€์ค‘ ์ด๋™ ํ‰๊ท (exponential weighted moving average, EWMA)๋ผ ํ•จ.

SampleRTT์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ๊ฐฑ์‹  ์ ˆ์ฐจ๊ฐ€ ์ง„ํ–‰๋จ์— ๋”ฐ๋ผ ๋น ๋ฅด๊ฒŒ ์ง€์ˆ˜์ ์œผ๋กœ ๊ฐ์†Œํ•˜๋ฏ€๋กœ EWMA์—์„œ "์ง€์ˆ˜์ (exponential)"์ด๋ผ ๋ช…์นญ

RTT ์ƒ˜ํ”Œ๊ณผ RTT ์ถ”์ •์น˜

์œ„ ๊ทธ๋ฆผ์€ gaia.cs.umass.edu(๋งค์‚ฌ์ถ”์„ธ์ธ  ์ฃผ ์• ๋จธ์ŠคํŠธ)์™€ fantasia.eurecom.fr(ํ”„๋ž‘์Šค ๋‚จ๋ถ€) ์‚ฌ์ด์˜ TCP ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ

α = 0.125(1/8)์˜ ๊ฐ’์— ๋Œ€ํ•œ SampleRTT ๊ฐ’๋“ค๊ณผ EstimatedRTT๋ฅผ ๋ณด์—ฌ ์ค€๋‹ค. 

SampleRTT์˜ ๋ณ€ํ™”์œจ(variation)์€ EstimatedRTT ๊ณ„์‚ฐ์— ์˜ํ•ด ์™„๋งŒํ•˜๊ฒŒ ๋œ๋‹ค.

 

RTT์˜ ์˜ˆ์ธก ์™ธ์—๋„ RTT์˜ ๋ณ€ํ™”์œจ์„ ์ธก์ •ํ•˜๋Š” ๊ฒƒ๋„ ๋งค์šฐ ์œ ์šฉํ•œ๋ฐ, [RFC 6298]์€ RTT ๋ณ€ํ™”์œจ์„ ์˜๋ฏธํ•˜๋Š” DevRTT๋ฅผ SampleRTT๊ฐ€ EstimatedRTT๋กœ๋ถ€ํ„ฐ ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ๋ฒ—์–ด๋‚˜๋Š”์ง€์— ๋Œ€ํ•œ ์˜ˆ์ธก์œผ๋กœ ์ •์˜ํ•œ๋‹ค.

DevRTT = ( 1 - β ) * DevRTT + β * | SampleRTT - EstimatedRTT |      ( β ๊ถŒ์žฅ๊ฐ’ : 0.25 )

DevRTT๋Š” SampleRTT์™€ EstimatedRTT ๊ฐ’ ์ฐจ์ด์˜ EWMA๋กœ, SampleRTT๊ฐ’์— ๋ณ€ํ™”๊ฐ€ ์—†๋‹ค๋ฉด DevRTT๋Š” ์ž‘์„ ๊ฒƒ์ด๊ณ , SampleRTT์˜ ๋ณ€ํ™”๊ฐ€ ํฌ๋‹ค๋ฉด DevRTT๋„ ํด ๊ฒƒ์ด๋‹ค. 

 

์žฌ์ „์†ก ํƒ€์ž„์•„์›ƒ ์ฃผ๊ธฐ์˜ ์„ค์ • ๋ฐ ๊ด€๋ฆฌ

์ฃผ์–ด์ง„ EstimatedRTT์™€ DevRTT์˜ ๊ฐ’์—์„œ, TCP ํƒ€์ž„์•„์›ƒ ์ฃผ๊ธฐ์—๋Š” ์–ด๋–ค ๊ฐ’์ด ์‚ฌ์šฉ๋˜์–ด์•ผ ํ• ๊นŒ?

ํƒ€์ž„์•„์›ƒ ์ฃผ๊ธฐ๋Š” EstimatedRTT๋ณด๋‹ค๋Š” ์ปค์•ผํ•  ๊ฒƒ์ด๋‹ค. (๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ถˆํ•„์š”ํ•œ ์žฌ์ „์†ก ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ ๋†’์Œ)

๊ทธ๋Ÿฌ๋‚˜ ํƒ€์ž„์•„์›ƒ ์ฃผ๊ธฐ๊ฐ€ EstimatedRTT๋ณด๋‹ค ๋„ˆ๋ฌด ํฌ๋ฉด ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์žƒ์—ˆ์„ ๋•Œ, ์žฌ์ „์†ก์ด ๋А๋ ค์ ธ ๋ฐ์ดํ„ฐ ์ „์†ก ์ง€์—ฐ ๋ฌธ์ œ ๋ฐœ์ƒํ•จ.

๊ทธ๋Ÿฌ๋ฏ€๋กœ EstimatedRTT + safety margin(์•ฝ๊ฐ„์˜ ์—ฌ์œ  ๊ฐ’) ์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•œ๋ฐ,

SampleRTT๊ฐ’์— ๋งŽ์€ ๋ณ€๋™์ด ์žˆ์„ ๋•Œ๋Š” safety margin์ด ์ปค์•ผ ํ•˜๊ณ , ๋ณ€๋™์ด ์ž‘์„ ๋•Œ์—๋Š” safety margin์ด ์ž‘์•„์•ผ ํ•œ๋‹ค.

์ด safety margin์˜ ์—ญํ• ์„ DevRTT์˜ ๊ฐ’์ด ํ•˜๊ฒŒ ๋˜์–ด ์•„๋ž˜์™€ ๊ฐ™์ด ์žฌ์ „์†ก ํƒ€์ž„์•„์›ƒ ์ฃผ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.

TimeoutIntervral = EstimatedRTT + 4 * DevRTT

์ดˆ๊ธฐ TimeoutInterveral์˜ ๊ฐ’์œผ๋กœ 1์ดˆ๋ฅผ ๊ถŒ๊ณ [RFC 6298]ํ•˜๊ณ , ํƒ€์ž„์•„์›ƒ์ด ๋ฐœ์ƒํ•  ๋•Œ, TimeoutInterval์˜ ๊ฐ’์„ ๋‘ ๋ฐฐ๋กœ ํ•˜์—ฌ ํ™•์ธ์‘๋‹ต ํ•  ํ›„์† ์„ธ๊ทธ๋จผํŠธ์—๊ฒŒ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์กฐ๊ธฐ ํƒ€์ž„์•„์›ƒ์„ ๋ฐฉ์ง€ํ•œ๋‹ค. ์ดํ›„ ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์ˆ˜์‹ ๋˜๊ณ  EstimatedRTT๊ฐ€ ์ˆ˜์ •๋˜๋ฉด TimeoutInterval์€ ๋‹ค์‹œ ์œ„ ๊ณต์‹์— ๋”ฐ๋ผ ๊ณ„์‚ฐ๋œ๋‹ค.

 

 

 

์ฐธ๊ณ  ๋„์„œ :

์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํ‚น ํ•˜ํ–ฅ์‹ ์ ‘๊ทผ - ์ œ7ํŒ

728x90