Фрагментация пакетов ведет к сбоям Ping
Описание проблемы
CO_CS и OP_DS - это CE12800. WN_DS - это S9700 с NAT. FW - это брандмауэр не Huawei.
Симптом неисправности
• OP-сервер может пропинговать сервер штаб-квартиры маленькими пакетами, но отказывает большими пакетами, которые превышают 1472 байта.
• OP_DS и CO_CS могут пропинговать сервер головного офиса маленькими пакетами, но терпеть неудачу с большими пакетами, которые превышают 1472 байта.
Процедура
Если локальное устройство пропингует удаленное устройство большими пакетами, длина которых превышает 1472 байта, ICMP-пакеты будут фрагментированы. В следующих ситуациях проверьте, не вызывает ли фрагментация пакетов неправильную последовательность пакетов или неправильную маркировку, а затем приводит к ошибкам пересылки:
• Два конца могут пропинговать с маленькими пакетами, но не большими пакетами.
• Маленькие пакеты могут быть пересланы, но большие пакеты не могут быть пересланы.
Проанализируйте причину неисправности в соответствии с местоположением устройства, которое инициирует операцию проверки связи.
• OP-сервер не может пропинговать сервер штаб-квартиры большими пакетами.
На рисунке 1 получены заголовки пакетов на портах нисходящей линии связи и восходящей линии связи, которые соединяют OP_DS с FW (как показано зелеными и синими кружками соответственно). На рисунках 2 и 3 показана полученная информация заголовка пакета на портах нисходящей линии связи и восходящей линии связи соответственно.
Рисунок 1 Полученная информация заголовка пакета на порте нисходящей линии связи, который соединяет OP_DS с FW
Рисунок 2 Полученная информация заголовка пакета на порту восходящей линии связи, который соединяет OP_DS с FW
Полученная информация заголовка пакета показывает:
Пакеты, отправленные из OP_DS в FW, упорядочены: каждый большой пакет запроса ICMP помещается перед небольшим пакетом запроса ICMP.
Пакеты, отправленные с FW на OP_DS, расположены в обратном порядке: каждый маленький пакет запроса ICMP помещается перед большим пакетом запроса ICMP. В этой ситуации фрагментированные пакеты ошибочно упорядочены.
Когда OP-сервер отправляет большие пакеты для проверки связи с сервером штаб-квартиры, фрагменты ICMP-пакетов неправильно сортируются после обработки FW, подключенной к OP_DS, в режиме обхода. Когда фрагменты пакета ICMP поступают в WN_DS, WN_DS отбрасывает эти фрагменты, поскольку NAT не может обрабатывать фрагменты с неверной последовательностью.
Три из четырех строк исходящего интерфейса Eth-Trunk на FW удаляются, чтобы заменить Eth-Trunk на единый канал, чтобы проверить, не вызывает ли FW неправильную последовательность пакетов. Впоследствии OP-сервер может успешно пропинговать сервер штаб-квартиры большими пакетами.
В заключение, сбой проверки связи является результатом неправильной последовательности пакетов на интерфейсе Eth-Trunk FW.
• OP_DS и CO_CS не могут пропинговать сервер штаб-квартиры большими пакетами.
Следующее использует CO_CS в качестве примера. Заголовки пакетов получены на порту восходящей линии связи, который соединяет CO_CS с WN_DS, как показано на рисунке 4.
Рисунок 3 Полученная информация заголовка пакета на порту восходящей линии связи, который соединяет CO_CS с WN_DS
Полученная информация заголовка пакета показывает, что CO_CS получает ответ ICMP от сервера штаб-квартиры. В ответе ICMP бит «не фрагментировать» (DF) и бит «больше фрагментов» (MF) отправляются в 1.
Согласно RFC 791:
Fragment не фрагментировать: значение 0 указывает, что пакет может быть фрагментирован, а значение 1 указывает, что пакет не может быть фрагментирован.
Больше фрагментов: значение 0 указывает, что фрагмент является последним фрагментом, а значение 1 указывает, что помимо этого фрагмента имеются другие фрагменты.
Если бит DF пакета установлен в 1, но пакет должен быть фрагментирован, этот пакет будет отброшен. Пакеты с битом 1 DF могут быть отправлены хостам, которые не могут повторно собрать фрагменты. Когда CO_CS обнаруживает, что как бит DF, так и бит MF принятого ответа ICMP установлены в 1, он считает ответ ICMP недействительным пакетом и отбрасывает пакет. В результате происходит сбой проверки связи.
CO_CS получает пакеты с неправильными битами флага фрагмента и поэтому не может получить информацию о сервере и промежуточных устройствах штаб-квартиры. Ниже анализируется причина этой проблемы.
Сервер главного офиса устанавливает бит DF в своем ответе ICMP на 1, чтобы получить минимальный MTU, также называемый MTU пути (PMTU) обратного пути. В этом механизме обнаружения PMTU сервер указывает PMTU пути, отправляет пакеты, которые короче PMTU, и использует бит DF 1 на этом пути. Если некоторые большие пакеты не могут быть фрагментированы и переадресованы некоторыми промежуточными устройствами на пути, эти устройства отбрасывают пакеты и возвращают пакет ошибок ICMP, указывая, что пакеты должны быть фрагментированы, но бит DF был установлен в 1. Когда сервер принимает такой пакет ошибок ICMP, он уменьшает PMTU пути, пока не получит пакет ошибок ICMP. Затем обнаружение PMTU завершено. В механизме обнаружения PMTU устройства могут отвечать пакетами ошибок ICMP при приеме пакетов, которые должны быть фрагментированы, но переносят бит 1. DF. Однако в реальных приложениях некоторые устройства принудительно фрагментируют такие принятые пакеты, не изменяя бит DF с 1 на 0 В результате CO_CS получает пакеты с неправильным битом DF.
В заключение, сбой проверки связи вызван неправильным битом DF пакетов, обработанных сервером штаб-квартиры или промежуточными сетевыми устройствами на пути от OP_DS и CO_CS к серверу штаб-квартиры.
Решение
• Если OP-сервер не может пропинговать сервер штаб-квартиры большими пакетами, найдите и устраните проблему хеша магистрали брандмауэра не-Huawei. В настоящее время вы можете изменить исходящий интерфейс Eth-Trunk брандмауэра в одну ссылку, чтобы предотвратить эту проблему. Эта профилактическая мера, однако, повлияет на пропускную способность канала.
• Если OP_DS или CO_CS не могут пропинговать сервер штаб-квартиры большими пакетами, клиент должен убедиться, что все промежуточные сетевые устройства на пути от OP_DS или CO_CS к серверу штаб-квартиры поддерживают обнаружение PTMU и могут отвечать пакетами ошибок ICMP, чтобы CE12800 могут получать ответы ICMP с действительными битами DF. Результаты тестов показывают, что OP-сервер может идентифицировать ответы ICMP как с битом DF, так и с битом MF, установленным на 1. Следовательно, эта проблема не повлияет на реальные сервисы. Рекомендуется проверить фактическую сетевую среду и оценить влияние.