nikikom Публикувано Май 2, 2011 Report Share Публикувано Май 2, 2011 Малко за това защо 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 Сподели другаде More sharing options...
tanganika Публикувано Май 3, 2011 Author Report Share Публикувано Май 3, 2011 Малко за това защо ICMP не е хубаво да се спира.Този трик оптимизира ефективно работата най-вече на RFC1323, но е приложим и в други ситуации. За съжаление е изключен по подразбиране от масовият Windows, и се налага да си го включвам на ръка: В HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters се създава DWORD Key с име „EnablePMTUDiscovery” и стойност 1. При мен този ключ е създаден , само стойността му " 0 " Цитирай Link to comment Сподели другаде More sharing options...
tanganika Публикувано Ноември 15, 2011 Author Report Share Публикувано Ноември 15, 2011 Аватара ми вече се асоциира със защитните стени http://www.youtube.com/watch?v=vLeg5TGs538 Цитирай Link to comment Сподели другаде More sharing options...
Препоръчан пост
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.