Борьба с битом DF и черными дырами или как фрагментировать нефрагментируемое
В заголовке IP пакета имеется один интересный флаг —«don't fragment» или сокращенно DF. Назначение сего флага — запретить разбивку пакета на фрагменты. Честно говоря, ситуации, когда встречаются пакеты с этим флагом довольно редки, но они таки бывают и могут надолго испортить настроение администратору/пользователю вот по какой причине.
Различные технологии канального уровня предусматривают различный размер MTU. И вполне естественно, что на пути следования трафика между сервером и клиентом могут попадатся сегменты с разными размерами MTU. На схеме ниже показана ситуация, когда клиент подключен к сети через GRE-туннель, у которого размер MTU на 24 байта меньше, чем у исходящего реального интерфейса.
Клиент хочет произвести некий обмен трафиком с удаленным сервером, а вот сервер выставляет этот самый флаг на свои исходящие пакеты.
Происходит следующая ситуация. Во время установки TCP-сессии клиент и сервер анонсируют свои максимальные размеры сегментов (maximum segment size или MSS), показывая друг другу какие максимальные TCP сегменты они могут принимать. После получения опций MSS устройства вычисляют максимальный размер сегмента, который будет посылатся удаленной стороне (Send Max Segment Size или SMSS). SMSS будет равен размеру меньшего MSS. Процедура установки TCP MSS описана в .
В нашем случае как у клиента, так и у сервера максимальный размер сегментов, которые они могут обработать — 1500 байт, ибо подключены они к своим маршрутизаторам по локальной сети. Соответственно SMSS для TCP сессии будет установлен в 1500.
Популярность: 10%
Roman Shramko