Рейтинг:18

К чему могут привести сетевые пакеты, состоящие из PUU?

флаг us

У нас есть система, которая страдает от перебоев связи в гигабитной сети Ethernet. Нагрузка на сеть такова, что слегка нагружает 100-мегабитную сеть, но везде есть гигабитные коммутаторы, сетевые карты и кабели — по крайней мере, так мне сказал заказчик, который построил сеть, к которой мы подключаемся.

Мы подключили ноутбук с Wireshark через концентратор 100baseT и обнаружили, что он сообщает о большом количестве пакетов «Ethernet II», где необработанные данные, отображаемые в виде ASCII, в основном выглядят следующим образом:

ПУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУ

Естественно, я сразу же назвал этот выпуск «Сетевой PUU», и последовало много смешков.Нам всем за сорок или около того, но я думаю, что некоторые из нас никогда не вырастут (виноваты!)

В любом случае, если говорить более серьезно, эти данные искажали другие совершенно корректные пакеты. Заголовки IPv4 заменяли байты на U байтов, а также повреждение данных, из-за чего программное обеспечение отклоняет данные, даже если контрольные суммы IP не совпадают. Мы почти уверены, что эти данные, выплескивающиеся в сеть, вызывают перебои в связи. Чего мы не знаем, так это того, откуда она может исходить.

Кто-нибудь когда-нибудь видел, как это происходит раньше? Вы решили это? Вы разобрались, откуда оно взялось?

====ОТРЕДАКТИРОВАНО====

В исходное описание добавлено упоминание о хабе, поскольку, судя по комментариям ниже, он является наиболее вероятным источником порчи! Инструмент, который мы использовали, чтобы попытаться найти проблему с сетью, похоже, добавил новую и более серьезную проблему с сетью.

флаг us
Спасибо за все ваши ответы. Я только что узнал, что концентратор, который мы использовали для прослушивания трафика, имеет размер 100 МБ, и проблема возникает только при передаче определенного типа данных (около 40+ КБ, отправленных одновременно по TCP).
флаг us
Рону и Заку: вы оба говорили об исходном MAC-адресе. Необработанные данные сетевого пакета буквально просто PUUUUU..., поэтому адрес источника — 0x55555555, а адрес назначения — 0x50555555. Якобы. Возможно, я пропустил несколько байтов 0x55.
флаг cn
Обратите внимание, что ASCII `U` также имеет значение 0x55.
NobodyNada avatar
флаг br
@Bergi ... который (если это не очевидно) равен «01010101» в двоичном формате, что может указывать либо на значение тестирования/отладки, либо на результат неисправности физического уровня.
флаг cn
@AlastairG Вы действительно имеете в виду «концентратор» или просто «неуправляемый коммутатор». Если это действительно хаб, немедленно выбросьте его из окна. Хабам вообще не место в современной (как в «этом тысячелетии») сети.
Ben Voigt avatar
флаг pl
@Tonny: концентраторы гораздо полезнее, чем коммутаторы для захвата пакетов, до такой степени, что качественные коммутаторы могут назначать один порт в качестве концентратора и отражать весь трафик, пересылаемый по всем другим путям.
user10489 avatar
флаг nc
Хабы бесполезны в современной сети, потому что их перестали делать обратно в 100М раз. Концентратор 100M не может идти в ногу с сетью 1G. Выбросьте их. Некоторые интеллектуальные коммутаторы поддерживают неразборчивый режим, в котором порт мониторинга может получать весь трафик.
флаг cn
Концентраторы @BenVoigt не имеют буферизации (в лучшем случае только 1 пакет) и ограничены скоростью 100 Мбит/с. Этого уже недостаточно. И это даже не считая беспорядок, создаваемый обработкой столкновений. Логика коллизии для концентраторов основана на полудуплексной логике более чем 50-летней давности времен коаксиальных сетей. Это не очень хорошо работает с современной сетью Ethernet, где каждая ссылка является полнодуплексной связью, которая обычно использует только коллизии в качестве механизма удержания/возобновления для обработки (надеюсь, редких) условий полного буфера. Перехват пакетов является случайным преимуществом хаба, но сейчас у нас есть лучшие инструменты (зеркалирование портов) для этого.
флаг us
Как говорит Бен Фойгт, мы использовали концентратор для мониторинга сети. Я не ИТ-специалист, не совсем, хотя в итоге я занимался ИТ для моей маленькой компании из 10 человек.Я не знал, что вы можете настроить порты на коммутаторах так, чтобы они были неразборчивыми. Я думаю, что мои знания об Ethernet немного устарели.
Рейтинг:18
флаг ru

В любом случае, если говорить более серьезно, эти данные искажали другие совершенно корректные пакеты. Заголовки IPv4 заменяли байты на байты U, а также имело место повреждение данных, из-за чего программное обеспечение отклоняло данные, даже если контрольные суммы IP не совпадали.

Удивительно, что просто чередование битов (U это ASCII 0x55 или 01010101b) на самом деле составляют действительные кадры Ethernet или даже действительные IP-пакеты.Если это повреждение распространяется также и на неповрежденные фреймы/пакеты, оно может быть вызвано, скорее всего, неисправным коммутатором (плохая буферная память) или неисправным хостом (сетевой картой или ОЗУ).

Если данные кадра повреждены при передаче по кабелю, FCS, скорее всего, не сможет выполнить проверку, что приведет к тому, что следующий коммутатор потеряет этот кадр. Однако, если такой кадр передается по сети с действительным FCS, он должен быть поврежден. перед что FCS был рассчитан, что указывает на неисправный коммутатор или хост.

Вам нужно будет отследить этот трафик. Если исходный MAC-адрес недействителен или не может быть проверен на промежуточных (неуправляемых) коммутаторах, вам необходимо проследить обратный путь по кабелям.

fraxinus avatar
флаг ng
Я тоже голосую за неисправный блок памяти в коммутаторе. Похоже, не вся память плохая, поскольку она разбивает пакеты только в больших пакетах данных.
Andrew Henle avatar
флаг ph
И я не удивлюсь, обнаружив, что проблема сильно усугубляется отключением автосогласования на гигабитных соединениях. [Автосогласование является требованием для использования 1000BASE-T в соответствии с *Разделом 28D.5 Расширения, необходимые для статьи 40 (1000BASE-T)*. По крайней мере, источник синхронизации должен быть согласован, так как одна конечная точка должна быть главной, а другая конечная точка должна быть подчиненной.] (https://en.wikipedia.org/wiki/Gigabit_Ethernet#1000BASE-T). -умные люди отключают автосогласование в сетях. Вы не продолжаете водить машину со скоростью 60 миль/ч/90 км/ч с ровным счетом «потому что так и должно быть».
Zac67 avatar
флаг ru
@AndrewHenle Любое устройство, связывающее 1000BASE-T с отключенным автосогласованием, можно считать неисправным (и вам понадобятся два из них).
Рейтинг:12
флаг in

Похоже, у вас плохая сетевая карта. Если исходный MAC-адрес действителен, вы можете найти его, проверив таблицы MAC-адресов коммутатора. Если он поврежден, вам просто нужно начать отключать устройства, чтобы найти его.

Рейтинг:3
флаг cn

Это звучит так, как будто у вас где-то есть устройство (вероятно, коммутатор на 100 Мбит/с), которое не может справиться с потоком трафика и начинает портить пакеты, когда его внутренние буферы переполняются.
(Или у него просто плохая оперативная память).

Он не замечает, что у него есть поврежденные пакеты, и с удовольствием повторно передает их со свежевычисленными новыми контрольными суммами.Таким образом, плохие пакеты принимаются другими коммутаторами (контрольная сумма в порядке, коммутаторам все равно, что содержимое бессмысленно) и пересылаются по всей сети.

На самом деле все еще хуже:
Рассмотрим, как коммутаторы узнают, какое устройство (mac-адрес) за каким портом находится. Любой пакет, предназначенный для mac-адреса, который еще не изучен коммутатором, рассылается на все порты коммутатора (кроме того, с которого он пришел). Это эффективно превращает пакет для неузнаваемого mac-адреса во временную трансляцию.
Поскольку ваши коммутаторы никогда не узнают эти mac-адреса (в конце концов, они повреждены, а не настоящие mac-адреса), они ВСЕ обрабатываются как широковещательные рассылки...
По сути, это наводняет всю сеть недоставленными пакетами.
(И обратите внимание, что обычные средства смягчения широковещательных штормов в этом случае не работают. Они действуют только на НАСТОЯЩИЕ широковещательные пакеты, а не на эти обучающие потоки.)

Единственный способ устранить эту проблему — отключить по одному переключателю за раз и посмотреть, исчезнет ли проблема. Если вы можете сузить его до 1 коммутатора, это будет сам коммутатор или устройство, подключенное за этим коммутатором.

Рейтинг:-1
флаг nc

Разница между концентратором и коммутатором заключается в том, что когда коммутатор сталкивается с коллизией, он либо отбрасывает второй пакет, либо сохраняет его, а затем пересылает, когда заканчивается первый пакет; где концентратор с радостью позволит произойти столкновению и просто заменит содержимое пакета на 10101..., чтобы указать, что это было столкновение, и продолжит отправку до тех пор, пока оба пакета не закончатся.

Решение здесь состоит в том, чтобы избавиться от концентраторов, поскольку они устарели. Они перестали делать концентраторы до того, как стал доступен 1G, поэтому концентратор должен быть 100M или медленнее. Стандарт сети 1G не поддерживает концентраторы.

Немного истории: до того, как появились концентраторы, были повторители. Разница между ретранслятором и концентратором заключается в том, что ретранслятор получает аналоговый сигнал, слегка очищает его, превращая в красивую прямоугольную волну, а затем ретранслирует его, где концентратор на самом деле немного смотрит на то, что находится в пакете, и пытается убедитесь, что пакет хорошо сформирован. Однако ни один из них ничего не делает для исправления столкновений, они просто позволяют им происходить. Ретрансляторы и концентраторы пришли из тех времен, когда Ethernet считался небуферизованной шиной, и только одно устройство в сети могло говорить одновременно. Когда Ethernet был настоящей шиной (10base2 и 10base5), для запуска пакета вы передавали стартовые биты (10101...) до тех пор, пока первый бит не достигнет самых дальних концов сети, и если за это время вас никто не прервал. , затем вы продолжаете свой пакет. Если вас прервут, произойдет столкновение, и обе стороны отступят и попытаются снова в случайное время позже. Если одна сторона не прерывается, то у вас поздняя коллизия. Ваш хаб превращает ваши поздние столкновения во все стартовые биты. Возможно, что-то в пути не распознает пакет как поздний конфликт и вместо того, чтобы отбрасывать его, преобразует его в действительный пакет. Или ваш неразборчивый анализатор пакетов видит недействительные пакеты так же, как и действительные.

Сравните это с коммутатором, который не только устраняет коллизии, но и может поддерживать полный дуплекс, когда пакет передается, а другой принимается. Стандарт 100M поддерживает коммутаторы, которые как поддерживают, так и не поддерживают полнодуплексный режим, и это согласовывается между устройствами при подключении кабеля. и поэтому концентраторов 1G не существует.

флаг gb
_ "концентратор с радостью позволит произойти столкновению и просто заменит содержимое пакета на 10101..., чтобы указать, что это было столкновение, и продолжит отправку до тех пор, пока оба пакета не закончатся" _ - можете ли вы уточнить? Я знаю концентраторы как простые повторители на уровне 1 (т. е. физические, чисто электрические соединения), вообще не изменяющие пакеты, в лучшем случае (временно) блокирующие порты, которые вызывают проблемы.
Zac67 avatar
флаг ru
Сигнал застревания имеет только 62 бита чередующихся 0101. Шаблон в вопросе выглядит намного длиннее. Кроме того, вы не объясняете, как сигнал помехи превращается в допустимый кадр. Гигабитные Ethernet-концентраторы с очень хорошо определенными повторителями - см. IEEE 802.3, пункт 41 - они просто больше не материализовались (к счастью). Концентратор - это *многопортовый ретранслятор* - разница в количестве портов. Хаб *не* проверяет кадры (FCS), он только реагирует на jabber. *вы передаете стартовые биты (10101...) до тех пор, пока первый бит не достигнет самых дальних концов сети* - определенно нет.
Zac67 avatar
флаг ru
Преамбула плюс SFD составляют ровно 48 бит. Вот и перестал читать...
user10489 avatar
флаг nc
Возможно, вы смотрите на более новый стандарт. Я смотрю на 10base2 и 10base5. Кроме того, существует большая разница между обычным столкновением и поздним столкновением. Концентраторы просматривали пакеты только для того, чтобы понять, откуда они начинаются. Репитер даже этого не делает, он просто формирует прямоугольную волну.
user10489 avatar
флаг nc
@ Zac67: 48 бит на частоте 10 МГц, если я правильно подсчитал, составляет более 200 м, что, если я правильно помню, было близко к приблизительной максимальной длине сети, поэтому ваши цифры не расходятся, если предположить, что моя память покрывает 10base2.
Zac67 avatar
флаг ru
48/100M*e*.64 для 100BASE-TX составляет примерно 92 м, а максимальная длина домена коллизий — 300 м (два повторителя). При использовании 100BASE-FX максимальная длина составляет 6000 м. Ваша теория неверна.
Zac67 avatar
флаг ru
PS: Извините, 100BASE-FX в HDX ограничен 400, поэтому максимальная длина домена коллизий составляет 1200 м.
user10489 avatar
флаг nc
Коллизия по времени преамбулы не применяется к 100base-TX, она применяется только к 10base2 и 10base5, которые, если я правильно помню, были 200 м и 500 м. Разница в длине будет учитываться, потому что коэффициент скорости RG58 составляет около 60%, а для 10base5 требуется коаксиальный кабель гораздо более высокого класса, который, вероятно, имеет коэффициент скорости около 90-98%.
Zac67 avatar
флаг ru
10BASE5 с двумя повторителями (правило 5-4-3 позволяет смешивать 3 сегмента) имеет максимальную длину домена коллизий 1500 м. Фактор скорости RG8 составляет 0,77 в соответствии с пунктом 8. Посчитайте. 100BASE-TX использует ту же преамбулу, что и все варианты Ethernet. Преамбула нигде не используется для обнаружения коллизий (кроме того, что присутствует несущая). Вы действительно должны прочитать IEEE 802.3.
Zac67 avatar
флаг ru
Это не преамбула, а *минимальный размер кадра* (включая преамбулу), который должен охватывать весь домен коллизий и обратно — отправитель должен продолжать передачу, когда коллизия обнаружена/сигнализирована, иначе он не будет передавать повторно.
user10489 avatar
флаг nc
Коаксиальные кабели 10BASE2 имеют максимальную длину 185 метров. 10base5 это 500м. Я не знаю, откуда вы взяли 1500 м, может быть, вы думаете о 1600 футах.
user10489 avatar
флаг nc
@ Zac67: звучит правильно. Но также есть механизм раннего прекращения передачи для предотвращения поздних коллизий больших пакетов.
Zac67 avatar
флаг ru
*позднее столкновение* — это столкновение за пределами минимального размера кадра. Это может произойти только в том случае, если домен коллизий длиннее допустимого или если опаздывающий отправитель работает со сбоями (или с несоответствием дуплекса).
user10489 avatar
флаг nc
Правильно. Если все в норме, поздних коллизий быть не должно.
флаг us
Это звучит как наиболее вероятный ответ, поскольку он объясняет чередование битов как признак коллизии. PUU возникает, когда одна часть системы пытается отправить что-то вроде 40 КБ за одну запись в сокет. Естественно, это разделено на несколько пакетов максимального размера (1500 байт IIRC). Однако оказывается, что эксперты, которые знают гораздо больше меня, считают, что это не может быть правильным ответом, потому что PUU слишком длинный. Могут ли множественные столкновения вызвать проблему? Или иметь концентратор 100MbaseT между двумя устройствами Gigabit Ethernet с другой системой обнаружения коллизий?
user10489 avatar
флаг nc
Я думаю, что очень вероятно, что один или оба коммутатора 1G неправильно обрабатывают полудуплексный концентратор и все равно питают его в полнодуплексном режиме, и концентратор превращает что-то в одну длинную запоздалую коллизию. Затем, опять же, один или оба коммутатора 1G неправильно обрабатывают коллизию, потому что вы не получаете коллизии в полнодуплексном режиме.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.