Спустя почти два года с момента прошлой значительной версии представлен релиз операционной системы NetBSD 6.0. Новая версия примечательна интеграцией нового пакетного фильтра NPF, улучшением работы на многоядерных системах, новыми и обновлёнными драйверами, а также расширением возможностей портов Xen и MIPS.
NetBSD является рекордсменом по числу поддерживаемых аппаратных платформ. Релиз NetBSD 6.0 официально доступен в сборках для 57 системных архитектур и 16 различных семейств CPU. Отдельно выделены 8 первично поддерживаемых портов, составляющих ядро стратегии развития NetBSD: amd64, evbarm, evbmips, evbppc, hpcarm, i386, sparc64 и xen. Остальные 49 потов, связанных с такими CPU, как alpha, hppa, m68010, m68k, sh3, sparc и vax, отнесены ко второй категории, т.е. ещё поддерживаются, но уже потеряли актуальность или не имеют достаточного числа заинтересованных в их развитии разработчиков.
Ключевые улучшения NetBSD 6.0:
- В состав включён новый пакетный фильтр NPF, вобравший в себя лучшие черты PF и IP Filter. Особенности NPF:
- Параллельная обработка пакетов в многопоточном режиме с минимальным числом блокировок позволяет добиться максимальной производительности на современных многоядерных процессорах;
- Гибкие средства фильтрации трафика с учетом состояния соединений. NPF снабжён мощным и высокопроизводительным движком инспектирования пакетов, основанным на использовании интерпретатора байткода и идеях, реализованных в интерфейсе BPF (Berkeley Packet Filter). Попадание пакетов под правила обеспечивается через формирование набора RISC-подобных инструкций и CISC-подобных команд для выполнения типовых операций;
- Поддержка нескольких режимов трансляции адресов, включая NAPT (несколько внутренних адресов могут быть привязаны к одному реальному IP с разделением по номеру порта), ALG (Application-Level Gateway, учет особенностей прикладных протоколов при организации трансляции адресов, например, позволяет работать через NAT ftp, p2p, h.323, sip и т.п.), двунаправленный NAT, форвардинг портов.
- Поддержка пересборки пакетов, очистки отдельных полей в заголовках пакетов, выборочное блокирования ICMP и TCP RST пакетов;
- Возможность ведения лога пакетов, настраиваемого через систему фильтров;
- Использование эффективных хэш-таблиц и красно-черных деревьев для ускорения выборки элементов;
- Похожий на PF и IP Filter синтаксис файла конфигурации и типовой набор утилит;
- Легкость разработки и подключения дополнений, расширяющих базовую функциональность. Функции NPF могут расширяться через загрузку дополнительных модулей, обращение к которым может производиться непосредственно из правил фильтрации. Для создания модулей и расширений подготовлен специальный API.
- Поддержка TLS (Thread-Local Storage), техники использования изолированной локальной памяти для нитей внутри одного процесса для ухода от использования блокировок при доступе к общим ресурсам.
- Поддержка LVM (Logical Volume Manager), менеджера логических томов, используемого в Linux. Поддерживаются все базовые операции с логическими разделами, включая возможность записи данных;
- Полностью переписана подсистема работы с дисковыми квотами;
- Новая подсистема для работы с Flash-накопителями и NAND-контроллерами. В состав включена реализация новой файловой системы CHFS, специально созданной для Flash-накопителей.
- Поддержка протокола MPLS (Multiprotocol Label Switching);
- Расширены возможности порта Xen: для ядер Xen domU добавлена поддержка SMP; обеспечена возможность перехода гостевой системы в спящий режим; добавлена поддержка проброса PCI-устройств; добавлен драйвер balloon, который позволяет динамически ограничивать объём доступной оперативной памяти и передавать неиспользуемую память окружениям, нуждающимся в памяти.
- Улучшена поддержка платформы MIPS: добавлена поддержка SMP и 64-разрядных процессоров (ABI O32, N32, N64), поддержка использования расширения DSP v2 ASE, поддержка процессоров NetLogic/RMI и Loongson, а также новых одночиповых систем;
- Улучшена поддержка SMP для платформы PowerPC, добавлена поддержка процессоров Book E Freescale MPC85xx (e500 core);
- В порты для архитектуры ARM добавлена поддержка процессоров Cortex-A8 и различных SoC, а также начальная поддержка Raspberry Pi;
- Используемый для учёта времени тип time_t теперь определяется 64-разрязным значением (решена проблема 2037 года).