αααα»αα αα»α Netflix αα·ααααααΆα
αααΎαα Π² TCP-ΡΡΠ΅ΠΊΠ°Ρ
Linux ΠΈ FreeBSD, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°ΡΡ ΠΊΡΠ°Ρ
ΡΠ΄ΡΠ° ΠΈΠ»ΠΈ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ΅Π·ΠΌΠ΅ΡΠ½ΠΎΠ΅ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΡΠΎΡΠΌΠ»Π΅Π½Π½ΡΡ
TCP-ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² (packet-of-death). ΠΡΠΎΠ±Π»Π΅ΠΌΡ ααα α»ααα
αααα»αα§ααααααααααααΆααααααΆααααα ααααα»ααα·ααααααα’αα·ααααΆαα
αααα»ααααα
αα TCP (MSS ααα ααααααα’αα·ααααΆ) αα·αααααααΆααααααΆααααΆαααα½αααααΆααααΆααααααΆαααααααΆαααααΎαααΎα (SACK, TCP Selective Acknowledgment)α
(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