πŸ“š CS [ComputerScience]/πŸ“˜ μ»΄ν“¨ν„°λ„€νŠΈμ›Œν¬ [ComputerNetwork]

[Network] TCP ν˜Όμž‘μ œμ–΄

Dbswnstjd 2022. 5. 2. 21:42

혼작 ((Congestion) μ΄λž€?

μ†‘μ‹ μΈ‘μ˜ λ°μ΄ν„°λŠ” μ§€μ—­λ§μ΄λ‚˜ μΈν„°λ„·μœΌλ‘œ μ—°κ²°λœ λŒ€ν˜• λ„€νŠΈμ›Œν¬λ₯Ό 톡해 μ „λ‹¬λ©λ‹ˆλ‹€. μ΄λ•Œ λ§Œμ•½ ν•œ λΌμš°ν„°μ— 데이터가 λͺ°λ¦΄ 경우, μžμ‹ μ—κ²Œ 온 데이터λ₯Ό λͺ¨λ‘ μ²˜λ¦¬ν•  수 μ—†κ²Œ 되며 κ²°κ΅­ λΌμš°ν„° λ‚΄μ˜ 큐가 ν¬ν™”μƒνƒœκ°€ λ˜μ–΄ νŒ¨ν‚·μ˜ 전달이 μ·¨μ†Œλ˜κ±°λ‚˜ μ†μ‹€λ˜λŠ” ν˜„μƒμ΄ λ°œμƒν•˜κ²Œ λ©λ‹ˆλ‹€.

즉, λ„€νŠΈμ›Œν¬ λ‚΄ λŒ€κΈ°ν•˜λŠ” νŒ¨ν‚· μˆ˜κ°€ λ„€νŠΈμ›Œν¬ 처리 μš©λŸ‰μ„ μ΄ˆκ³Όν•˜λŠ” 경우λ₯Ό ν˜Όμž‘이 λ°œμƒ ν•˜μ˜€λ‹€κ³  ν•©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ ν˜Όμž‘ν˜„μƒμ„ λ°©μ§€ν•˜κ±°λ‚˜ μ œκ±°ν•˜λŠ” μž‘μ—…μ„ ν˜Όμž‘μ œμ–΄λΌκ³  ν•©λ‹ˆλ‹€. ν˜Όμž‘μ œμ–΄λŠ” λ„€νŠΈμ›Œν¬ 계측과 전솑 계측이 κ΄€μ—¬ν•˜μ—¬ 이루어 μ§‘λ‹ˆλ‹€.

ν˜Όμž‘μ œμ–΄ λ°©μ‹μ—λŠ” λ„€νŠΈμ›Œν¬ μžμ›μ„ λŠ˜λ¦¬λŠ” 방식, λ„€νŠΈμ›Œν¬ 츑에 μžμ›μ„ 미리 μ˜ˆμ•½ν•˜λŠ” μ˜ˆμ•½ 기반 방식 등이 μžˆμ§€λ§Œ μ—¬κΈ°μ„œλŠ” κ°€μž₯ 많이 μ‚¬μš©λ˜λŠ” μ†‘μ‹ μΈ‘ 전솑λ₯ μ„ μ œμ–΄ν•˜λŠ” ν˜Όμž‘μ œμ–΄ 방법에 λŒ€ν•˜μ—¬ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

ν˜Όμž‘μ œμ–΄ 방식((Congestion Control)

  • AIMD ν•© 증가/ κ³± κ°μ†Œ ((Addtive Increase / Multiplicative Decrease)

μ²˜μŒμ— νŒ¨ν‚·μ„ ν•˜λ‚˜μ”© 보내고 이것이 문제 없이 λ„μ°©ν•˜λ©΄ window 크기 ((λ‹¨μœ„ μ‹œκ°„λ‚΄μ— λ³΄λ‚΄λŠ” νŒ¨ν‚·μ˜ 수)λ₯Ό 1μ”© 증가해 κ°€λ©° μ „μ†‘ν•˜λŠ” 방식 μž…λ‹ˆλ‹€. λ§Œμ•½ νŒ¨ν‚·μ „μ†‘μ„ μ‹€νŒ¨ν•˜μ˜€κ±°λ‚˜ μΌμ •μ‹œκ°„μ„ λ„˜μœΌλ©΄ νŒ¨ν‚·μ„ μ „μ†‘ν•˜λŠ” 속도λ₯Ό 절반으둜 μ€„μ΄κ²Œ λ©λ‹ˆλ‹€.

이 방법을 μ‚¬μš©ν•˜λŠ” μ—¬λŸ¬ ν˜ΈμŠ€νŠΈκ°€ ν•œ λ„€νŠΈμ›Œν¬λ₯Ό κ³΅μœ ν•˜κ³  있으면, λ‚˜μ€‘μ— μ§„μž…ν•˜λŠ” μͺ½μ΄ μ²˜μŒμ—λŠ” λΆˆλ¦¬ν•˜μ§€λ§Œ μ‹œκ°„μ΄ 흐λ₯΄λ©΄ ν‰ν˜• μƒνƒœλ‘œ μˆ˜λ ΄ν•˜κ²Œ λ˜μ–΄ 곡평해 μ§„λ‹€λŠ” νŠΉμ§•μ΄ μžˆμŠ΅λ‹ˆλ‹€.

단, μ΄ˆκΈ°μ— νŒ¨ν‚·μ„ ν•˜λ‚˜μ”© 보내기 λ•Œλ¬Έμ— λ„€νŠΈμ›Œν¬μ˜ 높은 λŒ€μ—­ν­μ„ ν™œμš©ν•˜μ§€ λͺ»ν•˜μ—¬ 였랜 μ‹œκ°„μ΄ 걸리게 되고, λ„€νŠΈμ›Œν¬κ°€ ν˜Όμž‘ν•΄μ§€λŠ” 상황을 미리 κ°μ§€ν•˜μ§€ λͺ»ν•œλ‹€λŠ” 단점이 μ‘΄μž¬ν•©λ‹ˆλ‹€.

즉, λ„€νŠΈμ›Œν¬κ°€ ν˜Όμž‘ν•΄μ§€κ³  λ‚˜μ„œμ•Ό λŒ€μ—­ν­μ„ μ€„μ΄λŠ” 방식이라 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • Slow start

μ•žμ—μ„œ 이야기 ν–ˆλ“―μ΄ AIMD의 경우 ν˜Όμž‘μƒνƒœλ₯Ό 미리 κ°μ§€ν•˜μ§€ λͺ»ν•˜κΈ° λ•Œλ¬Έμ— 전솑 속도λ₯Ό μ˜¬λ¦¬λŠ”λ° λ„ˆλ¬΄ 였랜 μ‹œκ°„μ΄ κ±Έλ¦°λ‹€λŠ” 단점이 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ 단점을 ν•΄κ²°ν•˜λŠ” λ°©λ²•μœΌλ‘œ Slow start방식이 μ œμ‹œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

Slow start λ°©μ‹λ˜ν•œ AIMD와 같이 νŒ¨ν‚·μ„ ν•˜λ‚˜μ”© 보내기 μ‹œμž‘ν•©λ‹ˆλ‹€.

ν•˜μ§€λ§Œ 이 방식은 νŒ¨ν‚·μ΄ λ¬Έμ œμ—†μ΄ 도착할 경우 ν•œ ACK νŒ¨ν‚·λ§ˆλ‹€ window 크기λ₯Ό 1μ”© 증가 μ‹œμΌœ μ€λ‹ˆλ‹€. 즉, ν•˜λ‚˜μ˜ μ£ΌκΈ°κ°€ λλ‚˜λ©΄ window 크기가 두배가 λ©λ‹ˆλ‹€. 덕뢄에 전솑속도가 μ§€μˆ˜ 꼴둜 μ¦κ°€ν•©λ‹ˆλ‹€.

λ§Œμ•½ 혼작 ν˜„μƒμ΄ λ°œμƒν•˜λ©΄ window 크기λ₯Ό 1둜 μ€„μ—¬λ²„λ¦½λ‹ˆλ‹€. AIMD 방식과 λ§ˆμ°¬κ°€μ§€λ‘œ μ²˜μŒμ—λŠ” λ„€νŠΈμ›Œν¬μ˜ μˆ˜μš©λŸ‰μ„ μ˜ˆμƒν•  수 μžˆλŠ” 정보가 μ—†μ§€λ§Œ ν•œλ²ˆ 혼작 ν˜„μƒμ΄ λ°œμƒν•˜κ³  λ‚˜λ©΄ λ„€νŠΈμ›Œν¬μ˜ μˆ˜μš©λŸ‰μ„ μ–΄λŠ 정도 μ˜ˆμƒν•  수 μžˆμœΌλ―€λ‘œ 혼작 ν˜„μƒμ΄ λ°œμƒν•˜μ˜€λ˜ window 크기의 μ ˆλ°˜κΉŒμ§€λŠ” 이전과 같이 μ§€μˆ˜ 꼴둜 window 크기λ₯Ό 증가 μ‹œν‚€κ³ , κ·Έ μ΄ν›„λΆ€ν„°λŠ” μ™„λ§Œν•˜κ²Œ 1μ”© μ¦κ°€μ‹œν‚΅λ‹ˆλ‹€.

  • Fast Retransmit

μ†‘μ‹ μΈ‘μ—μ„œ μ€‘λ³΅λœ ACKλ₯Ό λ°›κ²Œλ˜λ©΄ νŒ¨ν‚·μ†μ‹€λ‘œ κ°„μ£Όν•˜κ³  μ¦‰μ‹œ μž¬μ „μ†‘ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.

νŒ¨ν‚·μ„ λ°›λŠ” μˆ˜μ‹ μΈ‘μ—μ„œ λ¨Όμ € 도착해야할 νŒ¨ν‚·μ΄ λ„μ°©ν•˜μ§€ μ•Šκ³  λ‹€μŒ νŒ¨ν‚·μ΄ λ„μ°©ν•œ 경우, ((μœ„μ˜ κ·Έλ¦Όμ—μ„œ segment 4, segment 5)

κ·Έ 전에 μ •μƒμ μœΌλ‘œ λ„μ°©ν–ˆλ˜ λ§ˆμ§€λ§‰ νŒ¨ν‚·μ˜ 순번((ACK 3) 을 ACK에 μ‹€μ–΄μ„œ 보내, μˆ˜μ‹ μΈ‘μ€ 전에 λ°›μ•˜λ˜ ACK와 μ€‘λ³΅λœ ACKλ₯Ό λ°›κ²Œ λ©λ‹ˆλ‹€.

μ€‘λ³΅λœ ACKλ₯Ό 3번 λ°›κ²Œλ˜λ©΄ λ¬Έμ œκ°€ λ˜λŠ” 순번의 νŒ¨ν‚·μ„ μž¬μ „μ†‘ν•˜λ©° ν˜Όμž‘μ„ κ°μ§€ν•˜κ³  window 크기λ₯Ό μ€„μ΄κ²Œ λ©λ‹ˆλ‹€.

즉, 쀑간에 νŒ¨ν‚·μ΄ μ†μ‹€λ˜λ©΄ μ†‘μ‹ μΈ‘μ—μ„œλŠ” μ€‘λ³΅λœ ACKλ₯Ό λ°›κ²Œλ˜κ³  이λ₯Ό κ°μ§€ν•˜μ—¬ λ¬Έμ œκ°€ λ˜λŠ” 순번의 νŒ¨ν‚·μ„ μž¬μ „μ†‘ ν•΄μ€λ‹ˆλ‹€.

Fast retransmit둜 κ΅¬ν˜„λœ TCPλ₯Ό TCP Tahoe라고 ν•©λ‹ˆλ‹€.

  • Fast Recovery

ν˜Όμž‘μƒνƒœκ°€ 되면 window 크기λ₯Ό 1이 μ•„λ‹Œ 반으둜 쀄이고 μ„ ν˜•μœΌλ‘œ μ¦κ°€μ‹œν‚€λŠ” λ°©μ‹μž…λ‹ˆλ‹€.λΉ λ₯Έ 회볡 μ •μ±…κΉŒμ§€ μ μš©ν•˜λ©΄ 혼작 상황을 ν•œλ²ˆ κ²ͺκ³  λ‚˜μ„œλΆ€ν„°λŠ” AIMD λ°©μ‹μœΌλ‘œ λ™μž‘ν•˜κ²Œ λ©λ‹ˆλ‹€.

Fast recovery둜 κ΅¬ν˜„ν•œ TCPλ₯Ό TCP Reno라고 ν•©λ‹ˆλ‹€.