ПредишенСледващото

Били ли сте някога е, че поставянето на файл на скоростта на изтегляне и е бавно, но сигурно расте, а след това, в някакъв момент, е рязко намалява и след това отново се увеличава? Файлът се инжектират в един поток не предоставя пълна скорост канал? Започвате клиента торент, и пинг в игра много скокове? С помощта на 3G-модем (или друга линия с относително голяма загуба на пакети) и не мога да го понасям?
Със сигурност те обвинявам около маршрутизатора, вашия интернет доставчик или на обвиняемия в настройка на кривата шейпър? Това се отразява, но те не са виновни.
Така че, отговарят:

TCP Задръстванията контрол, или алгоритъм за избягване на задръстванията TCP.

Какво е това?

С една дума - алгоритмите, които се опитва да направи всичко възможно, за да се осигури най-високата скорост на трансфер на данни между два възела, които предават данни по TCP. Те контролират размера на TCP-прозорец и може да се съсредоточи върху RTT (Round Trip Time - времето на изпращане на заявката за получаване на отговор), загуба на пакети, латентността на изпращане на пакет от опашката, и т.н. Всеки алгоритъм се държи по различен начин в определена ситуация, и има някои универсални.

Какви са алгоритми?

Много от тях. На Linux 3.7 ядрото са:

  • BIC TCP
  • CUBIC TCP
  • високоскоростен TCP
  • Н-TCP
  • TCP Hybla
  • TCP-Илинойс
  • TCP Нисък приоритет
  • TCP Вегас
  • TCP NewReno
  • TCP Вено
  • TCP Westwood +
  • Да-TCP

BIC, кубичен, Високоскоростен, H-TCP, NewReno, Илинойс - тези алгоритми са предназначени за така наречените дълго мазнини мрежи - дълго (и следователно с високо RTT) и бързи мрежи. TCP Hybla велики се държи по сателитна връзка, а Вено е предназначен за безжични мрежи с висока загуба на пакети. TCP Нисък приоритет като цяло едва ли може да се нарече алгоритъм на задръстванията, като Той не направи много, но просто се опитвам да изпрати пакет опашка, TCP Вегас понякога се използва за сървъри с голям брой връзки, защото тя осигурява почти постоянна скорост, въпреки че не е далеч от идеала. Уестууд + - комбиниран алгоритъм, да-TCP е най-младият от тях, но най-интересното, защото се държи повече или по-малко във всички случаи.
Повече подробности за алгоритмите себе си могат да бъдат намерени в пост casperrr

Както можете да видите, кубичен изостава. Това значително увеличава RTT до пълното използване на 3G канал, а Уестууд + и NewReno повече или по-малко да се справи с този проблем.
Нека да разгледаме броя на препредаване:

TCP контрол задръстванията или защо скоростта скача, savepearlharbor

Както се вижда от графиката, в CUBIC относително голям брой препредаване

TCP контрол задръстванията или защо скоростта скача, savepearlharbor

В същото време, той е водещ скоростта на пренос на данни за единица време.

Какво означава това? Това означава, че с използването на Уестууд + или NewReno можете удобно да сърфирате в Интернет, докато сте изтеглили голям файл.

канал тест високоскоростен

Ефективното предаване на данни в зависимост от RTT доведе Да

TCP контрол задръстванията или защо скоростта скача, savepearlharbor

Ефективното предаване на данни и загуба на пакети, отново на първо място, да

TCP контрол задръстванията или защо скоростта скача, savepearlharbor

За съжаление, Да на ядрото 3.7 има някои проблеми след известно време тя тежи interrupt'ami софтуерна система. Това поведение не се наблюдава при 3,6.

Как да се промени?

Промяна Задръстванията Алгоритъм е достатъчно проста, просто един ред:
Sysctl -w net.ipv4.tcp_congestion_control = Westwood
Когато вместо Уестууд, можете да вмъкнете името на /lib/modules/.../kernel/net/ipv4/tcp_....ko tcp_ без префикс.

вместо заключение

На канали като у дома vayf, аз препоръчваме да използвате Уестууд или Вено. За телени канали могат да бъдат добър избор Да (ако не сте забелязали някакви проблеми с него), H-TCP или Илинойс.

Няколко съвета. Ако вече имате ядрото 3.6+, не забравяйте да включите net.ipv4.tcp_fastopen. тя няма да се добави и ръкостискане подкрепена ускори някакви проблеми с несъвместими сървъри.
Също така препоръчваме net.ipv4.tcp_slow_start_after_idle набор на 0, това ще ускорите SPDY и други за проверка на връзката връзки.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!