Три різні інструменти повідомляють про три різні дублікати, і лише один із них є мережевою подією, на яку можна вплинути. Повторна передача TCP — це відправник, що знову надсилає діапазон, дубльований ACK — це отримувач, що повторює підтвердження, а відкидання повтору ESP — це асоціація безпеки, яка відхиляє номер послідовності, який уже прийняла. Жодне з трьох не передбачає інших. Читайте кожен лічильник на тому рівні, який його створює, перш ніж пов’язувати їх в одну історію.

Три лічильники, які ніколи не вимірюють ту саму подію

Позначка повторної передачі TCP означає, що відправник знову поклав діапазон послідовності на дріт. Втрата — одна з причин цього, і в наявному у вас записі може просто бракувати початкового пакета або підтвердження, яке пояснило б час. Дубльований ACK — це отримувач, що повторює кумулятивне підтвердження за правилами відновлення TCP, і це не є ні дубльованим записом застосунку, ні другою копією даних.

ESP працює у власному просторі послідовностей. Кожна асоціація безпеки нумерує надіслані пакети, а отримувач тримає вікно вже прийнятих номерів, тому ESP-пакет, що прибуває двічі, відкидається лише на цій підставі. Тому повторно надісланий сегмент TCP подорожує в новому ESP-пакеті з новим номером послідовності, що є правильною поведінкою на обох рівнях. Ті самі байти можуть виглядати новими в одному лічильнику й старими в іншому, і жоден рівень не бреше.

Що аналізатор може й чого не може бачити

Почніть зі словника аналізатора, бо назви фільтрів описують спостереження, а не внутрішній устрій кінцевих точок. Підрахунок тими самими назвами, які використовує інструмент, тримає вас чесними щодо того, що справді виміряно. Число з неповного запису — це число того, що вижило, а не того, що сталося на дроті.

tshark -r trace.pcap -Y "tcp.analysis.retransmission" | wc -l
tshark -r trace.pcap -Y "tcp.analysis.duplicate_ack" | wc -l

Читайте експертну інформацію поруч із цими числами, бо попередження про контрольну суму й порядок змінюють те, скільки ваги вони заслуговують. Об’єднаний слід із двох датчиків може показати один кадр двічі, а підрахунок обох копій вигадує подію відновлення, якої ніколи не було.

Лічильники ESP живуть у стані ядра

Номери послідовності ESP належать асоціації безпеки, а не потоку TCP, тому шлюз — це місце, де треба питати. Список станів повідомляє лічильники пакетів і помилок за кожною асоціацією, які не може відтворити жоден запис.

ip -s xfrm state
tshark -r trace.pcap -Y "esp" -T fields -e esp.seq | head

RFC 4303 визначає номер послідовності й вікно захисту від повторів, що його споживає, тому лічильник зростає навіть тоді, коли все гаразд. Монотонні зовнішні номери послідовності без відповідної аномалії TCP вказують на іншого відправника або дубльований шлях, а не на бурю повторних передач. Зовнішній запис зашифрованого тунелю зазвичай приховує внутрішні номери послідовності TCP, тож не може довести, що зробив внутрішній стек. Записуйте всередині тунелю лише там, де це дозволено політикою, і ніколи не вимикайте захист від повторів, щоб заглушити не пов’язане попередження.

Де точка спостереження змінює відповідь

Перш ніж ескалювати, запишіть, як було зроблено запис: інтерфейс, чи повідомляв процес запису про втрати й чи зіставні позначки часу між датчиками. Одна точка спостереження не може бачити обидва кінці шляху, тому будь-яке твердження про поведінку отримувача є висновком, а не вимірюванням. Слід, знятий на шлюзі, і слід, знятий на хості, розходитимуться щодо порядку під навантаженням, і ця розбіжність зазвичай належить запису, а не тунелю. Зіставлення двох подань — це те, що перетворює число на доказ.

Використовуйте один дозволений потік застосунку й запишіть лічильники кінцевих точок поруч із числами запису в той самий момент. Якщо числа розходяться, довіряйте рівню, якому належить подія, а інший вважайте артефактом спостереження, доки не доведено протилежне. Це правило вирішує більшість таких випадків, не торкаючись конфігурації тунелю.

Читання чисел у правильному порядку

Почніть із рівня, на якому поставлено запитання: на попередження TCP відповідають із запису TCP, а на відкидання ESP — із лічильників асоціації безпеки на шлюзі. Лише потім питайте, чи обидва подання описують той самий пакет. Висновок, якому потрібні обидва рівні, має називати обидва, бо твердження про тунель, що спирається лише на позначку TCP, є здогадом.

Записуйте рівень, лічильник і точку спостереження для кожного знаходження, і наступний читач не зіллє три події в одну уявну несправність. Ескалюйте з цими трьома полями, і виправлення зазвичай випливає з першого.

Схожі статті