Jump to content

Защитни стени - въпроси, мнения, предимства, недостатъци


Препоръчан пост

Малко за това защо ICMP не е хубаво да се спира.

 

PMTU е Path Mtu Discovery. MTU е максималният по размер пакет преминаващ през дадена медия. Например по подразбиране за Ethernet тази стойност се движи в промеждутъка между 1514 и 10000 байта. Но IP пакета може да бъде до 65535 байта дълъг. За да бъде пренесен през медия, която поддържа по-малки пакети той се фрагментира на фрагментчета, които натоварват процесора на маршрутизаторите и особено в миналото фрагментацията е забавяла значително скоростта на комуникация. И тук идеята е проста – ако изпращащата данни машина ги форматира в пакети не по-големи от най-малкото MTU по пътя на трафика, никога няма да се налага фрагментация и комуникацията ще върви спрямо RFC1323 (MSS, виж предната опция) максимално бързо и с големи сегменти. Обаче как да разберем кое е най-малкото MTU? И тук идва PMTU-то. Използва малък трик – слага бит в IP пакета, който забранява фрагментацията. Така маршрутизатор, който види медия с по-малко MTU от размера на пакета няма да го фрагментира. Вместо това той ще го дропне и ще върне ICMP MTU Error в чието съдържание ще запише размера на MTU-то. Изпращащата машина ще го вземе в предвид и няма да изпраща повече към този peer пакети с по-голяма от посочената дължина. Този трик оптимизира ефективно работата най-вече на RFC1323, но е приложим и в други ситуации. За съжаление е изключен по подразбиране от масовият Windows, и се налага да си го включвам на ръка:

 

В HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters се създава DWORD Key с име „EnablePMTUDiscovery” и стойност 1.

 

PMTU Black Hole Detection е необходимо в следните ситуации – понякога стари маршрутизатори не връщат MTU-то на медията, заради която дропват по-големият пакет. Но по-лошото е ако ICMP-то е изфилтрирано. В не малко Интернет доставчици работят хора с „ъкъл море – глава шамандура”, които не знаят как работят протоколите в Интернет и излизат с идеи, които са крайни и смешни. Когато по Windows се разпространяваха червеи проверяващи на къде да отидат с ICMP echo request, те филтрираха всички ICMP-та. Без да разбират че ICMP е контролен протокол, той се използва и в нормалната комуникация (например ICMP source quench е NACK алгоритъма на TCP-то) и не съществува без причинно и никога не трябва да се изфилтрирва. Винаги има друг начин от бруталното отрязване на цялото ICMP. Така или иначе ефекта бе че ICMP не минава и следователно PMTU-то не минава. Представете си как реагира TCP-то в този случай – изпраща пакет от 1500-байта, той се дропва някъде защото е много голям, но машината не разбира това понеже няма ICMP. Тя си мисли че е дропнат поради претоварване например. И го изпраща пак – 1500 байта. И се получава същото. Така няколко пъти, докато на края сесията се прекъсне или Window Size не падне под размера на MTU-то по пътя. Ефекта за потребителя – сесията се отваря, тръгва бързо и изведнъж зависва, и започва да влачи много бавно, от време на време някакви данни. Случвало ли ви се е? На мен непрестанно. Имаше един момент, когато бе направо епидемия в България. Това не е от Интернета, нито от протоколите, а от умни администратори не разбиращи как работят комуникациите в Интернет. Този ефект се нарича MTU black hole. И има различни алгоритми за откриването му (например ако получим ICMP отговор без MTU вътре слагаме MSS-а на най-малкото възможно разрешено MTU – 576, ако пък не получаваме ICMP за отговор на определени времена правим проби – с различни размери, често директно падаме до 576). Black Hole Detection по принцип не би трябвало да е необходим ако най-големия враг на комуникацията не са хората, които конфигурират мрежите. Но за съжаление е необходим. В Windows той е изключен по подразбиране. Освен в Windows 2003 SP2, Windows XP SP3 (oще не излязъл) и Windows Vista SP1. Ето как се активира изрично:

Link to comment
Сподели другаде

  • Отговори 1.1k
  • Създадена
  • Последен отговор

ТОП потребители в тази тема

ТОП потребители в тази тема

Публикувани изображения

Малко за това защо ICMP не е хубаво да се спира.

Този трик оптимизира ефективно работата най-вече на RFC1323, но е приложим и в други ситуации. За съжаление е изключен по подразбиране от масовият Windows, и се налага да си го включвам на ръка:

 

В HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters се създава DWORD Key с име „EnablePMTUDiscovery” и стойност 1.

 

 

При мен този ключ е създаден , само стойността му " 0 "

Link to comment
Сподели другаде

  • 6 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гост
Отговори на тази тема

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   Не можете да качите директно снимка. Качете или добавете изображението от линк (URL)

Loading...

×
×
  • Създай ново...