улучшения сетевого стека FreeBSD 5
Предлагаемая вашему вниманию заметка – это краткий перевод PDF-документа "FreeBSD 5 Network Enhancements", в котором детально рассматриваются новшества и изменения в сетевой подсистеме FreeBSD 5 относительно FreeBSD 4.
таблица маршрутизации
- удален PRCLONING;
- удален указатель на маршрут из INPCB. Теперь нет необходимости периодически сканировать все INPCB (блокируя их при этом) для удаления указателя после удаления маршрута;
- RTENTRY выделяются с помощью UMA, что позволило уменьшить объем, занимаемый в памяти одним маршрутом, с 256 до 130 байт.
работа с интерфейсами
- уведомление о состоянии через RTSOCKET и KQUEUE: пока реализовано уведомление об отключении/подключении кабеля для Ethernet-интерфейсов;
- переименования интерфейса (например ifconfig bge0 name office);
- клонирование для создания виртуальных интерфейсов (например ifconfig gre0 create);
- автоматические VLAN'ы (упрощена настройка VLAN-интерфейсов: теперь достаточно просто выполнить ifconfig bge1.100 inet 192.168.1.1/24 для создания интерфейса в 100 VLAN);
- бинарная совместимость с NDIS (проект Evil): теперь во FreeBSD можно использовать бинарные драйверы для Ethernet- и WLAN-карт, написанные согласно спецификации Windows XP NDIS 5.1.
работа IPv4
- IP FastForward (идея похожа на Cisco CEF). По сравнению с обычным IP forwarding прирост скорости 40-60%. Была достигнута скорость 1Mpps (миллион пакетов в секунду).
- генерация случайных IP ID. При обычной последовательной генерации IP ID возможно определить число хостов, находящихся за NAT, использование случайных ID делает это невозможным.
- обработка опций IP. Реакцией на пакеты, содержащие IP-опции (такие, как record route), можно стало управлять переменной sysctl net.inet.ip.process_options;
фильтрация пакетов
- PFIL_HOOKS постоянно включены и не требуют перекомпиляции ядра;
- pf (из OpenBSD) и ALTQ (KAME) импортированы и полностью функциональны, за исключением CARP (скоро будет). Во FreeBSD 5 теперь три пакетных фильтра: ipfw, pf и ipfilter;
- ipfw был изменен для использования PFIL_HOOKS, как и другие два. Добавлен ряд новых функций в ipfw.
работа TCP
- TCP Hostcache: кэш, в котором сохраняются характеристики удаленных хостов от предыдущих соединений, для предварительной настройки новых подключений к этому же хосту. Это позволяет увеличить скорость работы HTTP;
- Inflight Bandwidth-Delay Limiter: ограничивает размер окна на основе времени прихода ACK, позволяя избежать потерь пакетов. Это увеличивает скорость длительных соединений, таких, как FTP;
- сжатие состояния TIME_WAIT2. Соединение в состоянии TIME_WAIT2, ожидающее таймаут 2MSL, содержит минимум необходимой информации, что сокращает требуемый соединению объем памяти ядра на 80%;
- RFC3042 Limited Transmit: ускоряет восстановление потерянных сегментов за счет ускорения отправки данных при получении двойного ACK;
- RFC3390: увеличенное начальное окно TCP;
- SACK, выборные TCP ACK;
- TCP_MD5 (реализовано только частично) позволяет Zebra/Quagga подключаться к устройствам производства Cisco и Juniper, используя подписанные TCP-соединения.
новые сетевые стеки
- поддержка Bluetooth на основе netgraph;
- поддержка ATM на основе netgraph.
Антон Южанинов, citrin@mail.ru.
таблица маршрутизации
- удален PRCLONING;
- удален указатель на маршрут из INPCB. Теперь нет необходимости периодически сканировать все INPCB (блокируя их при этом) для удаления указателя после удаления маршрута;
- RTENTRY выделяются с помощью UMA, что позволило уменьшить объем, занимаемый в памяти одним маршрутом, с 256 до 130 байт.
работа с интерфейсами
- уведомление о состоянии через RTSOCKET и KQUEUE: пока реализовано уведомление об отключении/подключении кабеля для Ethernet-интерфейсов;
- переименования интерфейса (например ifconfig bge0 name office);
- клонирование для создания виртуальных интерфейсов (например ifconfig gre0 create);
- автоматические VLAN'ы (упрощена настройка VLAN-интерфейсов: теперь достаточно просто выполнить ifconfig bge1.100 inet 192.168.1.1/24 для создания интерфейса в 100 VLAN);
- бинарная совместимость с NDIS (проект Evil): теперь во FreeBSD можно использовать бинарные драйверы для Ethernet- и WLAN-карт, написанные согласно спецификации Windows XP NDIS 5.1.
работа IPv4
- IP FastForward (идея похожа на Cisco CEF). По сравнению с обычным IP forwarding прирост скорости 40-60%. Была достигнута скорость 1Mpps (миллион пакетов в секунду).
- генерация случайных IP ID. При обычной последовательной генерации IP ID возможно определить число хостов, находящихся за NAT, использование случайных ID делает это невозможным.
- обработка опций IP. Реакцией на пакеты, содержащие IP-опции (такие, как record route), можно стало управлять переменной sysctl net.inet.ip.process_options;
фильтрация пакетов
- PFIL_HOOKS постоянно включены и не требуют перекомпиляции ядра;
- pf (из OpenBSD) и ALTQ (KAME) импортированы и полностью функциональны, за исключением CARP (скоро будет). Во FreeBSD 5 теперь три пакетных фильтра: ipfw, pf и ipfilter;
- ipfw был изменен для использования PFIL_HOOKS, как и другие два. Добавлен ряд новых функций в ipfw.
работа TCP
- TCP Hostcache: кэш, в котором сохраняются характеристики удаленных хостов от предыдущих соединений, для предварительной настройки новых подключений к этому же хосту. Это позволяет увеличить скорость работы HTTP;
- Inflight Bandwidth-Delay Limiter: ограничивает размер окна на основе времени прихода ACK, позволяя избежать потерь пакетов. Это увеличивает скорость длительных соединений, таких, как FTP;
- сжатие состояния TIME_WAIT2. Соединение в состоянии TIME_WAIT2, ожидающее таймаут 2MSL, содержит минимум необходимой информации, что сокращает требуемый соединению объем памяти ядра на 80%;
- RFC3042 Limited Transmit: ускоряет восстановление потерянных сегментов за счет ускорения отправки данных при получении двойного ACK;
- RFC3390: увеличенное начальное окно TCP;
- SACK, выборные TCP ACK;
- TCP_MD5 (реализовано только частично) позволяет Zebra/Quagga подключаться к устройствам производства Cisco и Juniper, используя подписанные TCP-соединения.
новые сетевые стеки
- поддержка Bluetooth на основе netgraph;
- поддержка ATM на основе netgraph.
Антон Южанинов, citrin@mail.ru.
Сетевые решения. Статья была опубликована в номере 10 за 2004 год в рубрике software