ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Netflix Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΡΠΈΡΠΈΡΠ½ΠΈ Π² TCP ΡΡΠ΅ΠΊΠΎΠ²Π΅ΡΠ΅ Π½Π° Linux ΠΈ FreeBSD, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΎ ΠΈΠ½ΠΈΡΠΈΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠΈΠ² Π½Π° ΡΠ΄ΡΠΎΡΠΎ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠ΅ΠΊΠΎΠΌΠ΅ΡΠ½ΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΠΎΡΠΎΡΠΌΠ΅Π½ΠΈ TCP ΠΏΠ°ΠΊΠ΅ΡΠΈ (packet-of-death). ΠΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΠΎΡ Π³ΡΠ΅ΡΠΊΠΈ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° Π±Π»ΠΎΠΊΠ° Π΄Π°Π½Π½ΠΈ Π² TCP ΠΏΠ°ΠΊΠ΅ΡΠ° (MSS, Maximum segment size) ΠΈ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° ΡΠ΅Π»Π΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° Π²ΡΡΠ·ΠΊΠΈΡΠ΅ (SACK, TCP Selective Acknowledgement).
(SACK Panic) β ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ ΡΠ΅ ΠΏΡΠΎΡΠ²ΡΠ²Π° Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux ΠΎΡ Π²Π΅ΡΡΠΈΡ 2.6.29 Π½Π°ΡΠ°ΡΡΠΊ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° ΡΡΠΈΠ² (panic) Π½Π° ΡΠ΄ΡΠΎΡΠΎ ΡΡΠ΅Π· ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΠΈΡ SACK ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΏΠΎΡΠ°Π΄ΠΈ Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½ΠΎ ΠΎΠ²ΡΡΡΠ»ΠΎΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠ°. ΠΠ° Π°ΡΠ°ΠΊΠ° Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π·Π°Π΄Π°Π΄Π΅ Π·Π° TCP Π²ΡΡΠ·ΠΊΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° MSS ΠΎΡ 48 Π±Π°ΠΉΡΠ° (Π΄ΠΎΠ»Π½Π° Π³ΡΠ°Π½ΠΈΡΠ°, Π·Π°Π΄Π°Π²Π° ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° 8 Π±Π°ΠΉΡΠ°) ΠΈ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ ΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΈΡΠ°Π½ΠΈ SACK ΠΏΠ°ΠΊΠ΅ΡΠΈ.ΠΠ°ΡΠΎ ΠΎΠ±Ρ
ΠΎΠ΄Π΅Π½ ΠΏΡΡ Π·Π° Π·Π°ΡΠΈΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° SACK (Π·Π°ΠΏΠΈΡΠ²Π°ΠΉΠΊΠΈ 0 Π² /proc/sys/net/ipv4/tcp_sack) ΠΈΠ»ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π½ΠΈΡΠΊΠΎ MSS (ΡΠ°Π±ΠΎΡΠΈ ΡΠ°ΠΌΠΎ ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ Π·Π°Π΄Π°Π΄Π΅ sysctl net.ipv4.tcp_mtu_probing Π½Π° 0 ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΡΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ Π½Π° Π½ΡΠΊΠΎΠΈ Π½ΠΎΡΠΌΠ°Π»Π½ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π½ΠΈΡΠΊΠΎ MSS);
(SACK Slowness) β Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π½Π°ΡΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ° SACK (ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ 4.15) ΠΈΠ»ΠΈ Π΄ΠΎ ΠΏΡΠ΅ΠΊΠΎΠΌΠ΅ΡΠ½ΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈ. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ ΡΠ΅ ΠΏΡΠΎΡΠ²ΡΠ²Π° ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΠΎΡΠΎΡΠΌΠ΅Π½ΠΈ SACK ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° Π·Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ (TCP retransmission). ΠΠ±Ρ
ΠΎΠ΄Π½ΠΈΡΠ΅ ΠΏΡΡΠΈΡΠ° Π·Π° Π·Π°ΡΠΈΡΠ° ΡΠ° Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΈ Π½Π° ΠΏΡΠ΅Π΄Ρ
ΠΎΠ΄Π½Π°ΡΠ° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ; (SACK Slowness) β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° ΠΊΠ°ΡΡΠ°ΡΠ° Π½Π° ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ SACK Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π΅Π΄Π½ΠΎ TCP Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΡΡΠΎΠ΅ΠΌΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΏΠ΅ΡΠ΅Π±ΠΎΡ Π½Π° ΡΠΏΠΈΡΡΠΊ. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ ΡΠ΅ ΠΏΡΠΎΡΠ²ΡΠ²Π° Π²ΡΠ² FreeBSD 12 Ρ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π·Π°Π³ΡΠ±Π° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ RACK. ΠΠ°ΡΠΎ ΠΎΠ±Ρ
ΠΎΠ΄Π½Π° ΠΌΡΡΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»ΡΡ RACK; β Π°ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈΡΠ΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ TCP ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°, Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΠΊΠΎΠΈΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° ΡΠ°ΠΌΠΎ 8 Π±Π°ΠΉΡΠ° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ°, ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° CPU ΠΈ Π·Π°Π΄ΡΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠ°Π½Π°Π»Π° Π·Π° Π²ΡΡΠ·ΠΊΠ°. ΠΠ°ΡΠΎ ΠΎΠ±Ρ
ΠΎΠ΄Π΅Π½ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° Π·Π°ΡΠΈΡΠ° ΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π½ΠΈΡΠΊΠΎ MSS.Π ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΡΠ° ΠΎΡΡΡΡΠ°Π½Π΅Π½ΠΈ Π² Π²Π΅ΡΡΠΈΠΈΡΠ΅ 4.4.182, 4.9.182, 4.14.127, 4.19.52 ΠΈ 5.1.11. ΠΠΎΠΏΡΠ°Π²ΠΊΠ° Π·Π° FreeBSD Π΅ Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΊΠ°ΡΠΎ . Π Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Ρ ΡΠ΄ΡΠΎ Π²Π΅ΡΠ΅ Π΅ ΠΈΠ·Π΄Π°Π΄Π΅Π½ Π·Π° , , . ΠΠΎΠΏΡΠ°Π²ΠΊΠ°ΡΠ° Π΅ Π² ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π² , ΠΈ .
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru