Ip virtual reassembly (віртуальне складання IP-пакетів) - це технологія, яка використовується у пристроях Cisco, яка дозволяє перебирати та збирати фрагментовані пакети IP у вихідні повідомлення. Це дуже важливий процес у мережній комунікації, оскільки дозволяє передавати дані, що перевищують максимальний розмір окремого IP-пакету без втрати інформації. Фрагментування пакетів IP виникає, коли мережевий трафік перевищує MTU (максимальну одиницю, що передається) мережевого інтерфейсу. Якщо пакет більше, ніж MTU, він розбивається на фрагменти меншого розміру для надсилання через мережу. Під час доставки ці фрагменти знову збираються у вихідний пакет. Цей процес виконується автоматично вузлами мережі, що забезпечують доступність збирання пакетів. Технологія віртуального складання IP-пакетів у cisco дозволяє обробляти та збирати ці фрагментовані пакети у пам'яті маршрутизатора. При цьому використовується інформація в заголовках пакетів для визначення порядку та повноти фрагментів. Після збирання пакет передається у відповідний додатку або сервісу для подальшої обробки. Важливо, що віртуальне складання IP-пакетів може бути налаштовано і контролюється за допомогою різних параметрів, таких як час очікування фрагментів та максимальний розмір пам'яті для складання пакетів. Це дозволяє оптимізувати процес складання пакетів та забезпечити надійність передачі даних у мережі. Віртуальне складання IP-пакетів у Cisco виконується на рівні маршрутизатора або комутатора. Кожен фрагментований пакет містить інформацію про свій порядковий номер, довжину даних та інші необхідні параметри.Після отримання всіх фрагментів мережний пристрій збирає в вихідний пакет. IP віртуальна збірка особливо корисна, коли пакети фрагментуються під час проходження через мережу з різними маршрутизаторами, оскільки маршрутизатори можуть мати різні обмеження розміру фрагментів. Переваги IP віртуального складання включають забезпечення цілісності даних, що передаються, збільшення ефективності передачі пакетів і підвищення продуктивності мережі. У цисковських пристроях команда "ip virtual-reassembly" використовується для включення віртуального складання IP-пакетів на інтерфейсах маршрутизатора або комутатора. При передачі даних через мережу IP-пакети можуть бути розділені на кілька фрагментів, щоб підтримати великі розміри пакетів і забезпечити їх доставку через мережі з різними MTU (максимальною одиницею, що передається). Однак, фрагментація IP-пакетів може призвести до проблем з продуктивністю та безпекою мережі, тому Cisco розробила механізм віртуального складання. Він дозволяє об'єднати фрагменти відновити вихідний пакет шляхом збирання фрагментів, що дозволяє усунути проблеми, пов'язані з фрагментацією. Процес віртуального складання заснований на ідентифікації та зборі всіх фрагментованих пакетів з тим самим ідентифікатором IP і послідовним номером фрагмента. Коли всі фрагменти пакета зібрані, маршрутизатор Cisco виключає з пакетів заголовки фрагментації і відновлює вихідне повідомлення. IP віртуальне складання широко використовується в мережах Cisco для забезпечення доставки пакетів з мінімальною втратою даних та забезпечення ефективності та надійності мережі. MTU визначає максимальний розмір пакета, який може бути переданий через інтерфейс мережі без фрагментації. Кожен пристрій у мережі має власний MTU, і коли IP-пакет більше, ніж MTU, потрібна фрагментація. Процес фрагментації IP-пакета відбувається на пристрої, що розбиває пакет на фрагменти і додає необхідну фрагментаційну інформацію в заголовки кожного фрагмента. На стороні, що приймає, пристрій збирає всі фрагменти і відновлює вихідний пакет. Фрагментація IP-пакетів необхідна у випадку, якщо розмір пакета перевищує MTU на деякій ділянці мережі, наприклад, при передачі пакету між LAN і WAN або передачі пакетів через VPN-тунель. Фрагментація дозволяє розділити великий пакет на кілька менших, які можуть успішно пройти через мережу з меншим MTU. Однак фрагментація IP-пакетів може призвести до додаткових витрат на витрати на пропускну здатність мережі та затримок в обробці пакетів. Тому рекомендується налаштовувати пристрої мережі таким чином, щоб уникати фрагментації, наприклад, шляхом налаштування MTU на всіх пристроях мережі на найбільше значення, що підтримується всіма пристроями. IP віртуальне складання Cisco дозволяє пристроям отримувати і збирати фрагментовані пакети даних, відновлюючи вихідні пакети і передаючи їх у цілісному вигляді. Це відбувається за рахунок перетворення фрагментів пакетів у пакети з повним розміром, що дозволяє мережевим пристроям обробляти ці дані так, ніби вони приходили у вигляді одного цільного пакета. ІР віртуальне складання важливе для забезпечення ефективності передачі даних в IP-мережах, особливо при використанні фрагментації пакетів. Без віртуального складання мережні пристрої не змогли б обробляти фрагментовані пакети і передавати їх правильно, що призвело б до погіршення продуктивності та виникнення проблем з доставкою даних. Для забезпечення правильної роботи IP віртуального складання мережні пристрої Cisco використовують таблиці сегментів (segment tables), де зберігаються всі фрагменти даних, отримані від джерела. Потім пристрій перевіряє послідовність вихідних фрагментів і збирає їх у повні пакети, які потім пересилаються мережею. Таким чином, IP віртуальне складання відіграє важливу роль у забезпеченні надійності та ефективності передачі даних в IP-мережах Cisco. Коли IP-пакет досягає маршрутизатора чи комутатора, може бути розділений на фрагменти, якщо його розмір перевищує максимальне значення MTU (Maximum Transmission Unit) шляху передачі даних. Фрагментування IP-пакетів необхідне забезпечення передачі даних через мережі з різними розмірами MTU. Віртуальне складання IP-пакетів відбувається на основі інформації, що міститься в заголовку IP-пакету.Коли фрагментовані пакети досягають маршрутизатора або комутатора, ці вузли відстежують інформацію в заголовку кожного пакета та використовують її для правильного складання вихідного IP-пакету. IP фрагментаційний процесор виконує всі необхідні функції для збирання пакета, включаючи визначення порядку фрагментів, перевірку цілісності даних та керування тимчасовим сховищем для фрагментів. Він також обробляє ідентифікатор фрагмента та усунення фрагмента для правильної реконструкції пакету. Після складання всіх фрагментів вхідного IP-пакета, IP фрагментаційний процесор передає його на подальшу обробку всередині пристрою або інший мережевий вузол. Правильне віртуальне складання IP-пакетів забезпечує безперервну та ефективну передачу даних через мережу. Використання IP віртуального складання Cisco надає наступні переваги: В цілому, використання IP віртуального складання в Cisco є ефективним способом покращення продуктивності та надійності IP-мережі. Ця технологія дозволяє оптимізувати передачу даних, підвищити пропускну здатність та забезпечити гарантовану доставку даних, що особливо важливо у мережах з високим рівнем трафіку та вимогами до безпеки. Однак, незважаючи на свою корисність, IP віртуальне складання може зіткнутися зі складнощами та обмеженнями. Ось деякі з них: В цілому, IP віртуальне складання є корисним інструментом для обробки фрагментованого IP-трафіку в мережах Cisco. Проте, її використання може супроводжуватися деякими складнощами та обмеженнями, які необхідно враховувати під час проектування та налаштування мережі. Протокол IP дозволяє виконувати фрагментацію пакетів, що надходять на вхідні порти маршрутизаторів. Слід розрізняти фрагментацію повідомлень у вузлі-відправнику та динамічну фрагментацію повідомлень у транзитних вузлах мережі – маршрутизаторах. Практично у всіх стеках протоколів є протоколи, які відповідають за фрагментацію повідомлень прикладного рівня на такі частини, що вкладаються у кадри канального рівня. У стеку TCP/IP це завдання вирішує протокол TCP, який розбиває потік байтів, переданий йому з прикладного рівня повідомлення потрібного розміру (наприклад, на 1460 байт для протоколу Ethernet). Тому протокол IP у вузлі-відправнику не використовує свої можливості фрагментації пакетів. А ось при необхідності передати пакет у наступну мережу, для якої розмір пакета є занадто великим, IP-фрагментація стає необхідною. У функції рівня IP входить розбиття надто довгого для конкретного типу складової мережі повідомлення більш короткі пакети зі створенням відповідних службових полів, необхідні подальшого складання фрагментів у вихідне повідомлення. У більшості типів локальних і глобальних мереж значення MTU, тобто максимальний розмір поля даних, яке має інкапсулювати свій пакет протокол IP, значно відрізняється. Мережі Ethernet мають значення MTU, що дорівнює 1500 байт, мережі FDDI - 4096 байт, а мережі Х.25 найчастіше працюють з MTU 128 байт. IP-пакет може бути позначений як не фрагментований. Будь-який пакет, позначений таким чином, не може бути фрагментований модулем IP за жодних умов. Якщо пакет, позначений як не фрагментований, не може досягти одержувача без фрагментації, то цей пакет просто знищується, а вузлу-відправнику надсилається відповідне ICMP-повідомлення. Протокол IP допускає можливість використання межах окремої підмережі її власних засобів фрагментування, невидимих для протоколу IP. Наприклад, технологія АТМ ділить IP-пакети, що надходять, на комірки з полем даних в 48 байт за допомогою свого рівня сегментування, а потім збирає комірки у вихідні пакети на виході з мережі. Але такі технології, як АТМ, є скоріше винятком, ніж правилом. Процедури фрагментації та складання протоколу IP розраховані на те, щоб пакет міг бути розбитий на практично будь-яку кількість частин, які згодом могли бути знову зібрані.Одержувач фрагмента використовує поле ідентифікації, щоб не переплутати фрагменти різних пакетів. Модуль IP, що відправляє пакет, встановлює в полі ідентифікації значення, яке має бути унікальним для цієї пари відправник - одержувач, а також час, протягом якого пакет може бути активним у мережі. Поле усунення фрагмента повідомляє одержувачу положення фрагмента у вихідному пакеті. Зміщення фрагмента та довжина визначають частину вихідного пакета, принесену цим фрагментом. Прапор more fragments показує поява останнього фрагмента. Модуль протоколу IP, що відправляє нерозбитий на фрагменти пакет, встановлює прапор more fragments в нуль і зміщення у фрагменті. Ці поля дають достатню кількість інформації для збирання пакета. Щоб розділити на фрагменти великий пакет, модуль протоколу IP, встановлений, наприклад, на маршрутизаторі, створює кілька нових пакетів і копіює вміст полів IP-заголовка з великого пакета IP-заголовки всіх нових пакетів. Дані зі старого пакета поділяються на відповідне число частин, розмір кожної з яких, крім останньої, обов'язково має бути кратним 8 байт. Розмір останньої частини даних дорівнює отриманому залишку. Кожна з отриманих частин даних міститься у новий пакет. Коли відбувається фрагментація, деякі параметри IP-заголовка копіюються в заголовки всіх фрагментів, інші залишаються лише у заголовку першого фрагмента.Процес фрагментації може змінити значення даних, розташованих у полі параметрів, і значення контрольної суми заголовка, змінити значення прапора more fragments і усунення фрагмента, змінити довжину IP-заголовка і загальну довжину пакета, У заголовок кожного пакета заносяться відповідні значення поле зміщення fragment offset, а в полі загальної довжини пакета міститься довжина кожного пакета. Перший фрагмент матиме у полі fragment offset нульове значення. У всіх пакетах, крім останнього, прапор more fragments встановлюється в одиницю, а останньому фрагменті - в нуль. Щоб зібрати фрагменти пакета, модуль протоколу IP (наприклад, модуль на хост - комп'ютері) поєднує IP-пакети, що мають однакові значення в полях ідентифікатора, відправника, одержувача та протоколу. Таким чином, відправник повинен вибрати ідентифікатор таким чином, щоб він був унікальним для даної пари відправник-одержувач, для даного протоколу і протягом того часу, поки даний пакет (або будь-який його фрагмент) може існувати у складовій IP-мережі. Очевидно, що модуль протоколу IP, що відправляє пакети, повинен мати таблицю ідентифікаторів, де кожен запис співвідноситься з кожним окремим одержувачем, з яким здійснювався зв'язок, і вказує на останнє значення максимального часу життя пакету в IP-мережі. Однак, оскільки поле ідентифікатора допускає 65536 різних значень, деякі хости можуть використовувати просто унікальні ідентифікатори, що не залежать від адреси одержувача. У деяких випадках доцільно, щоб ідентифікатори IP-пакетів вибиралися протоколами вищого, ніж IP рівня.Наприклад, у протоколі TCP передбачена повторна передача ТСР - сегментів, які з якихось причин не дійшли адресата. Імовірність правильного прийому збільшувалася б, якби при повторній передачі ідентифікатор для IP-пакету був би тим самим, що й у вихідному IP-пакеті, оскільки його фрагменти могли б використовуватися для складання правильного ТСР - сегмента. Процедура об'єднання полягає у приміщенні даних з кожного фрагмента в позицію, вказану в заголовку пакета в полі fragment offset. Кожен модуль IP повинен бути здатний передати пакет із 68 байт без подальшої фрагментації. Це з тим, що IP-заголовок може містити до 60 байт, а мінімальний фрагмент даних - 8 байт. Кожен одержувач повинен бути в змозі прийняти пакет з 576 байт як єдиний шматок або у вигляді фрагментів, що підлягають збиранню. Якщо біт прапора заборони фрагментації (Don't Fragment, DF) встановлений, фрагментація даного пакета заборонена, навіть якщо в цьому випадку він буде втрачений. Даний засіб може використовуватися для запобігання фрагментації у випадках, коли хост - одержувач не має достатніх ресурсів для складання фрагментів. Робота протоколу IP з фрагментації пакетів у хостах та маршрутизаторах ілюструється на рис. 21. Мал.
21. Фрагментація IP-пакетів при передачі між мережами з різним максимальним розміром пакетів: К1 та 01 - канальний та фізичний рівень мережі 1; К2 та Ф2 - канальний та фізичний рівень мережі 2 Нехай комп'ютер 1 пов'язаний з мережею, що має значення MTU 4096 байт, наприклад з мережею FDDI, При надходженні на IP-рівень комп'ютера 1 повідомлення від транспортного рівня розміром 5600 байт протокол IP ділить його на два IP-пакети, встановлюючи в першому пакеті ознака фрагментації та присвоюючи пакету унікальний ідентифікатор, наприклад 486, У першому пакеті величина поля Зміщення дорівнює 0, а в другому - 2800. Ознака фрагментації в другому пакеті дорівнює нулю, що показує, що це останній фрагмент пакета. Загальна величина IP-пакету становить 2800 плюс 20 (розмір IP-заголовка), тобто 2820 байт, що вміщується у полі даних кадру FDDI. Далі модуль IP комп'ютера 1 передає ці пакети своєму мережному інтерфейсу (утворюється протоколами канального рівня К 1 і фізичного рівня Ф1), Мережевий інтерфейс відправляє кадри наступного маршрутизатору. Після того, як кадри пройдуть рівень мережного інтерфейсу маршрутизатора (К1 і Ф1) і звільняться від заголовків FDDI, модуль IP за мережевою адресою визначає, що два пакети, що прибули, потрібно передати в мережу 2, яка є мережею Ethernet і має значення MTU, що дорівнює 1500. Отже, IP-пакети, що прибули, необхідно фрагментувати. Маршрутизатор витягує поле даних із кожного пакета і ділить його ще навпіл, щоб кожна частина вмістилася в полі даних кадру Ethernet. Потім він формує нові IP-пакети, кожен із яких має довжину 1400 + 20 - 1420 байт, що менше 1500 байт, тому вони нормально розміщуються в полі даних кадрів Ethernet. В результаті комп'ютер 2 по мережі Ethernet приходять чотири IP-пакети із загальним ідентифікатором 486, що дозволяє протоколу IP, що працює в комп'ютері 2, правильно зібрати вихідне повідомлення.Якщо пакети прийшли не в тому порядку, в якому були надіслані, то зміщення вкаже правильний порядок їхнього об'єднання. Зазначимо, що IP-маршрутизатори не збирають фрагменти пакетів у більші пакети, навіть якщо на шляху зустрічається мережа, яка допускає таке укрупнення. Це пов'язано з тим, що окремі фрагменти повідомлення можуть переміщатися по мережі через різні маршрути, тому немає гарантії, що всі фрагменти проходять через будь-який проміжний маршрутизатор на їх шляху. При надходженні першого фрагмента пакета вузол призначення запускає таймер, який визначає максимально допустимий час очікування приходу інших фрагментів цього пакета. Таймер встановлюється на максимальне із двох значень: початковий настановний час очікування та час життя, вказаний у прийнятому фрагменті. Таким чином, початкова установка таймера є нижньою межею часу очікування при c6opi. Якщо таймер закінчується раніше прибуття останнього фрагмента, то всі ресурси збірки, пов'язані з цим пакетом, звільняються, всі отримані до цього моменту фрагменти пакета відкидаються, а у вузол, який надіслав вихідний пакет, надсилається повідомлення про помилку за допомогою протоколу ICMP. У цьому пості поговоримо про фрагментацію пакетів, розберемося як вона працює і чому вона не вигідна нікому: ні хостам, ні маршрутизатором спочатку буде трохи теорії, а потім скористаємося генератором пакетів і подивимося дампи. З розмови про MTU ми пам'ятаємо чотири моменти: Це деякі вступні обмеження, які нам пропонує Ethernet. IPv4 до цих обмежень додає те, що вузол одержувач повинен гарантувати всім своїм сусідам, що він може прийняти IP-пакет розміром 576 байт, а вузол IPv6 повинен вміти обробляти пакети розміром 1280 байт. З урахуванням вищеописаного легко можна уявити дві ситуації, у яких може почати працювати фрагментація: Ці ситуації можна вирішити за рахунок хостів, їм просто потрібно генерувати такі пакети, які пролізуть через будь-який лінк на мережі, проблема в тому, що хости не знають MTU по всій мережі і зазвичай сподіваються, що MTU всієї мережі не менше, ніж MTU їх інтерфейсів , які в цю мережу включені, але є й інші варіанти розв'язання: Варто розуміти, що фрагментація пакетів явище вимушене і не дуже бажане, єдина перевага фрагментації полягає в наступному: якщо додатки не дбають про розміри даних, то це робить IP, щоб хоч якимось чином, але зв'язок між відправником і одержувачем підтримувався. Мінусів у фрагментації багато, ось три основні на мій погляд: Ось кілька посилань, де ви можна більше дізнатися про проблеми, фрагментації, все на ін-язе: RFC 4963, Fragmentation Considered Harmful, RFC 8900. У заголовку IP є чотири поля, які так чи інакше використовуються при фрагментації. Ось так ці поля виглядають у дампі Wireshark. Поля фрагментованого пакету: Total Length, Identification, Flags, Fragment Offset у дампі Wireshark Кольори на двох картинках вище відповідають. Варто окремо зупинитися на полі Fragment Offset, його розмір 13 біт, тобто максимальне значення цього поля 8191, але все питання в тому, які одиниці виміру використовуються для зміщення фрагмента, якщо в цьому полі стоїть значення 1, це означає, що зсув треба робити на 8 байт, тобто максимально можливе усунення 65528 байт. Найпростіше розібратися з питанням усунення можна буде на прикладі, припустимо, у нас є два хости, з'єднані каналом з MTU 1500 байт, але хости хочуть обмінюватися пакетами розміром 5940 байт, в цьому випадку буде включатися механізм фрагментації, і кожен вихідний пакет буде поділено на чотири пакети по 1500 байт, щоб вони гарантовано пройшли через канал, зміщення першого фрагментованого пакета дорівнює нулю, у другого пакета воно вже буде 1480 байт, третій пакет буде мати зміщення 2960 і останній пакет буде зі зміщенням 4440 байт, все описане вище представлено на малюнку. Приклад роботи фрагментації IP пакетів Для зручності я перераховував одиниці виміру зміщення в байти. З прикладу зрозуміло, що фрагментація це зайва робота як для транзитних вузлів, які її виконують, але й хостів. Також у прикладі видно зміст поля ID і прапора MF, за ними одержувач розуміє, що це кінець фрагментованої послідовності, але одержувач заздалегідь не знає розмір вихідного пакета. В якості перевірки і підтвердження сказаного раніше я зробив пінг пакетів з розміром, як у прикладі вище, і зняв дамп, важливо, щоб MTU лінків дорівнював 1500 байт щоб вийшло як у прикладі. Приклад фрагментованих пакетів у дампі Wireshark Цікаві стовпці виділені квітами: блакитний = розмір пакету зелений = наявність прапора MFIP віртуальне складання в Cisco: що це таке
Що таке IP віртуальне складання в Cisco?
Принцип роботи IP віртуального складання в Cisco
Що таке фрагментація IP-пакетів?
Переваги фрагментації IP-пакетів: - Можливість передачі великих пакетів через мережу з меншим MTU. - Гарантія доставки фрагментованих пакетів та їх правильного складання на стороні, що приймає. Недоліки фрагментації IP-пакетів: - Додаткові накладні витрати на пропускну спроможність мережі та затримки в обробці пакетів. - Збільшення ймовірності втрати фрагментованих пакетів під час передачі через мережу. - Неефективне використання ресурсів мережі при передачі великих пакетів, які б могли повністю поміститися в MTU пристроїв. У чому полягає роль IP віртуального складання Cisco?
Як відбувається IP віртуальне складання в Cisco?
Переваги IP віртуального складання: - Забезпечує доставку фрагментованих IP-пакетів без втрати даних - Покращує пропускну здатність мережі та знижує навантаження на пристрої - Дозволяє передавати дані з різними розмірами MTU через мережу Переваги використання IP віртуального складання в Cisco
Складнощі та обмеження IP віртуального складання в Cisco
Фрагментація IP-пакетів
Як працює фрагментація пакетів в IP (на прикладі тестів iPerf3)
Що таке фрагментація?
Поля IP заголовка для керування фрагментацією
Зміщення фрагмента в IP