Обрабатывать размер пакета протокола bgp
Почему протокол BGP ограничивает размер пакета менее 4096 октетов?
Если размер пакета BGP превышает 4096 байт, как мне справиться с этим?
2 ответа
"Почему протокол BGP ограничивает размер пакета менее 4096 октетов?"
Тони Ли дал официальный ответ в этой ветке IDR. Процитирую его ответ:
1) Во-первых, реализация НЕ должна использовать размер сообщения, который
отличается от указанного предела размера сообщения 4k. Если
реализация отправляет сообщения больше 4к, потом другие
реализации не смогут их проанализировать. Если реализация
не может получать сообщения 4k, то он также не сможет
взаимодействие.1a) Наличие фиксированного размера хорошо, потому что это делает протокол
реализации легко. Там нет смысла иметь сложность в
реализация, если это не дает никакой выгоды. Большие сообщения не
обеспечить замечательную выгоду, так как они должны быть достаточно большими, чтобы нести
атрибуты пути и связанные префиксы. Для этого 4к есть
наверное адекватно на сегодняшний день.1b) Исторически сложилось так, что 4k считалось немного расточительным. Конечно, это
было удивительно просто по сравнению с EGP, который использовал фрагментированный
пакеты. Хотите разобрать 16-килограммовый джамбо-грамм? Хотите отладить это? Доверять
мне это не весело2) Размер сообщения 4k полностью не зависит от окна TCP
размер. Реализация совершенно свободна, чтобы составить любое количество
сообщения, каждое из которых находится в пределах 4k предела. Реализация
затем может втиснуть любое количество сообщений в свой сокет TCP, до
пределы буферизации этого TCP.2a) Таким образом, размер сообщения НЕ ограничивает производительность, кроме случаев, когда
реализация может фактически переполнить сообщение. Folks
поддержание текущих реализаций здесь может быть связано с тем,
или нет они видят это. Итак, в целом, да, ограничение размера сообщения 4К является хорошей ситуацией для
BGP, за то, как он себя ведет и за работу, которую он делает. это
НЕ обязательно обобщать на другие протоколы (например, OSPF)
где 4k превышает самые распространенные MTU. В этих случаях вы бы в конечном итоге
с фрагментацией, и это плохо.
Как обработать пакет BGP с размером превышает 4096?
В реальном мире мы имеем дело с этим сценарием, регистрируя неправильно сформированное сообщение BGP и затем завершаем сеанс, отправляя уведомление BGP с кодом Ошибка заголовка сообщения (1) и субкодом Длина плохого сообщения (2). Завершение сеанса является одним из подходов обработки ошибок BGP. Вы можете обратиться к обработке ошибок BGP rfc7606.
Как спецификация была написана. Проверьте http://www.faqs.org/rfcs/rfc1771.html для получения дополнительной информации. Это означает, что теоретически вы никогда не должны получать пакет BGP больше 4 КБ. Возможно, они думали, что отправленные большие пакеты, содержащие большие обновления таблицы маршрутизации и тому подобное, не должны мешать большим объемам передачи данных, поэтому они разбивают пакеты, чтобы использовать разные очереди. Это всего лишь SWAG.:)