Що викликає повторювані записи ACK?


19

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

Вони показані на наступному знімку екрана. .26 - клієнт, а .252 - сервер.

введіть тут опис зображення

Що викликає повторювані записи ACK?

Більше інформації, якщо це допомагає:

Ми досліджуємо проблеми з пропускною здатністю мережі на одному конкретному сайті клієнта. Проблема, сприйнята з точки зору користувальницького інтерфейсу, полягає в тому, що дані передаються повільно, незважаючи на недостатнє використання WAN-з'єднання 1 Гбіт / с.

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

Ми спробували змінити налаштування TcpMaxDupAcks на сервері, але значення, яке нам дійсно потрібно, становить 5, а допустимий діапазон - лише 1-3.

Сервер - це Windows Server 2003. Клієнтами є всі ОС Windows XP, якими керує підприємство. На всіх клієнтах, включаючи двох працюючих, встановлено антивірус Symantec.

Це єдиний клієнтський сайт із сотні, який виявив цю проблему.

pathping показує 56 мс RTT та послідовну втрату пакетів 0/100 навіть із проблемних машин.

Спасибі,

Сем


Яке обладнання для комутації маршрутизації між двома кінцевими точками?
SpacemanSpiff

@SpacemanSpiff, є маршрутизатор Cisco ASR 1006.
Сем

Чи є ІТ-персонал і клієнти на одному комутаційному обладнанні? Чи можете ви взяти одну з їх машин до ІТ-сфери і побачити проблему?
SpacemanSpiff

Відповіді:


25

Примітка. Я припускаю, що це захоплення зроблено на клієнтській машині.

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

На замовлення надійна доставка здійснюється за допомогою використання порядкових номерів. Кожному пакету в кожному потоці присвоюється 32-бітний послідовний номер (пам'ятайте, що TCP фактично є двома незалежними потоками даних, A-> B і B-> A). Якщо A посилає ACK B, значення в полі ACK є наступним порядковим номером A, яке очікується побачити від B.

З вищесказаного виходить, що принаймні один сегмент TCP, що надсилається з сервера клієнту, був втрачений. Три повторювані ACK послідовно є спробою клієнта викликати швидку повторну передачу . Коли відправник TCP отримує 3 дублікати підтвердження для одного і того ж фрагмента даних (тобто 4 ACK для того самого сегмента, який не є самим недавно надісланим фрагментом даних), можна обгрунтовано припустити, що сегмент одразу після того, як сегмент ACKed був втрачений в мережі та призводить до негайної повторної передачі.

У цьому випадку повторна передача проходить через Wireshark і ідентифікується як позачергова.

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

Якщо ви не бачите очевидних кандидатів, виконайте одночасні захоплення пакетів у декількох точках уздовж шляху, щоб спробувати виділити, де відбувається втрата.

Яке WAN-з'єднання використовується тут? Це виділений рядок? MPLS VPN-посилання? IPsec VPN через загальнодоступний Інтернет? Щось ще?


Дякуємо за ваші коментарі. Ви маєте рацію, захоплення пакетів відбувається від клієнта. Якщо я розумію, що ви говорите, копії ACK - це не те, що клієнт робить щось не так, але насправді є закликом від клієнта, що він не отримав інший запис (той після ACK). Це правильно? Які речі я можу розглянути на клієнтському ПК, що спричинить це? Якщо це не проблема клієнтського ПК, то чому вона послідовно відображатиметься на одних клієнтах, а не на інших?
Сем

WAN - це "дві точки до точки" між трьома ділянками на східному узбережжі та на північному заході США.
Сем

Це правильно; DUPACK є симптомом втрати пакету. Щодо того, чому ця проблема виникне для одних клієнтів, а не для інших, вам потрібно розібратися, що є спільним для цих клієнтів. Вони всі в одному офісі? Проходить загальна мережева інфраструктура? (Перемикач або посилання?). Одне, що варто зробити, - це використовувати mtr(або pathpingв Windows) на кожній з машин, на які впливає вплив, і побачити, чи є якісь загальні стрибки на шляху до сервера, які, здається, зазнають втрати пакету. Чи є у вас система моніторингу мережі, яку ви можете використовувати для перегляду даних порту комутатора?
Муралі Суріар

4

Поки ви ізолюєте проблему, подумайте про відвал пакету як про один із симптомів ... Як аналогія, якщо хтось заходить до кабінету лікаря з болями в грудях, лікар не витратить три години на дослідження природи біль. Він витрачає на це близько двох хвилин, а потім знає, що 95% причин - це печія або стенокардія ... Таким же чином, якщо ви побачите дублікати АКК, не одразу щурячись на бур’янах сліду. .

Після встановлення з'єднання повільна продуктивність TCP не завжди виникає через проблеми з транзитною мережею; іноді це відбувається як результат обмеження процесорного сервера або диска ... а іноді через певну проблему на клієнтському ПК. Я тижнями переслідував свій хвіст, копаючись у бур'янах слідів проводів, лише щоб здатись та знайти проблему порівняно швидко з mtr , або переглянувши інші показники хоста, такі як процесор і диск вводу / виводу.

Ваше перше завдання - довести, чи це проблема в мережі або на рівні хоста. Сфокусуйтесь на надсиланні реального трафіку через вашу мережу та доведіть, чи ви в черзі / втраті / перезамовленні Примітки 1 це; що завжди є підсумком для такої потенційної мережі .

Я б робив pingвибірку протягом тривалого періоду часу (зазвичай для мене годину) між клієнтом і сервером, поки виникає проблема пропускної здатності; ви можете використовувати mtr або ping плотер безкоштовно для цього. Якщо ви послідовно втрачаєте пакети на якомусь хопі, а всі хмелі згодом втрачаєте стільки чи більше , то у вас є потенційний підозрюваний у мережі. Майте на увазі, що обмеження швидкості ICMP на пристрої може спричинити появу деяких хмелів, що вони втрачають пакети ... саме тому ви хочете шукати тенденцію, починаючи з цього переходу, і тих, що передують нижче.


Примітка 1. Якщо ви замовляєте трафік, він відображатиметься досить швидко в інформаційному полі для експертів, яке надає проводка


Погодьтеся, що звинувачувати мережу за замовчуванням не є вдалим підходом. Інструмент на всій стеці - це завжди хороша практика. Однак у цьому випадку сегменти DUPACK, не впорядковані та повторно передані, здається, свідчать про певну втрату мережі між двома кінцевими точками.
Муралі Суріар

@Murali Suriar, давайте продовжимо ваше твердження (яке має гідний шанс бути правильним) ... то що далі? Ви повинні виділити, чому є втрата пакету. Ми, ІТ-люди, загадково закохалися в wiresharkте, що нам подобається занадто довго дивитися в мікроскоп. Точка, яку я зазначаю, - це швидко поглянути на те pcap, що після цього вам краще витратити цикли витрат на втрату пакетів інструментів, цикли процесора та введення / виведення диска, ніж заглиблюватися в аналоги TCP. Настав час для цього, але зазвичай це не є на цій стадії аналізу.
Майк Пеннінгтон

@Mike погодився, і тому я запропонував шукати інформацію про помилки / використання для пристроїв по шляху в якості першого кроку. Я не є великим прихильником діагностики на основі ICMP, окрім як доступності. Як ви кажете, обмеження швидкості та неправильно налаштовані ACL / брандмауери можуть зробити це ненадійним; хоча у корпоративній мережі (що це звучить), MTR часто може вказувати вам у правильному напрямку. Інша проблема з MTR полягає в тому, що він часто вказує лише на одну проблему; цілком можливо, що на шляху є кілька несправностей, які ви не зможете знайти, поки не виправите першу.
Муралі Суріар

Ми не погоджуємося, що ICMP з TTL-кроком не є панацеєю, і може бути кілька помилок. Однак, зважаючи на недоліки, що стосуються брандмауерів та балансирів навантаження, ICMP - найкраща віддалена діагностика, якщо ви не можете запустити сеанси TCP / UDP з інструментами рівня хосту на конкретних портах додатків, про які йдеться ... навіть тоді ви можете лише сказати , ця розетка багато що передається ... але чому? 70% часу я витягую mtrабо це неправильно, і останні 15 років я таким же чином вирішував проблеми. Після того, як я зосередився на конкретному пристрої, тоді ми можемо подивитися на лічильники крапель
Майк Пеннінгтон

1
@Sam: лише питання щодо усунення неполадок у мережі: у кожної мережі є "проблеми". Ключовим моментом є визначення того, чи викликають ці проблеми проблеми з продуктивністю та / або підключенням. Ви знайдете дублікати ACK, ретрансляцій TCP, трансляцій, протоколів помилок тощо в кожній мережі. Вам слід зосередитись на обсязі дублікатів ACK та хостів, які найбільше беруть участь у надсиланні дублікатів ACK, щоб визначити, чи справді це симптом більшої проблеми чи просто природна робота мережі. Якщо я побачу 5 дублікатів ACK з 1000 пакетів, я не збираюся замислюватися над цим.
joeqwerty

3

Бачачи безліч [сегмент TCP перекомпонованого PDU] без ACK, я б сказав, що ці ACK, ймовірно, відображаються як [TCP Dup ACK ...] через поведінку селективного підтвердження (він же SACK) .

Приклад:

  • клієнт надсилає частини даних (..., 0,1,2,3,4,5,6, ...)

  • сервер атакований (0), потім отримував (2,4,3), потім (5), потім (6) і ніколи не отримував (1)

У наведеному вище сценарії - сервер може законно вибрати спочатку діапазон (2-4), потім (2-5), потім (2-6). Формуючи пакет "(AB) діапазон ack", сервер повинен вказати останню анкетну частину (0) у заголовку TCP. Wireshark позначає діапазон-acks (SACK) як [TCP Dup ACK ...], оскільки всі ці діапазони-аки мають однакове значення останньої частини в заголовку TCP (Ack = 872619 у вашому випадку).


1

Дублювання ACK у поєднанні з повільною продуктивністю мережі для мене звучить як проблема перевантаженості мережі. Подивіться на об'єм та швидкість трансляції в мережі. Не забудьте подивитися на трансляції фізичного рівня та мережевого рівня, а також на багатоадресні повідомлення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.