The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Отчет о состоянии развития FreeBSD за второй квартал 2011 года

15.09.2011 21:46

Представлен отчет о развитии проекта FreeBSD с апреля по июнь 2011 года. В указанный период основные усилия разработчиков были направлены на подготовку к релизу FreeBSD 9.0, который ожидается в начале октября.

Основные достижения:

  • Сетевая инфраструктура
    • Ведется работа над новым фреймворком netmap, нацеленным на обеспечение высокоскоростной обработки пакетов с сохранением богатой функциональности, доступной из пространства пользователя при помощи стандартных системных вызовов. При использовании netmap на перемещение одного пакета между каналом связи и пользовательским приложением тратится примерно 70 циклов, что позволяет одним ядром CPU с частотой 1050 MHz генерировать поток в 14.8 Mpps (миллионов пакетов в секунду), которого достаточно для анализа трафика на 10-гигабитном сетевом интерфейсе. В относительных показателях производительность netmap в 5-10 раз выше стандартного сетевого драйвера.

      Код драйвера netmap, работающего на уровне ядра, состоит из примерно 2000 строк кода, плюс 300-500 строк специфичных для конкретных сетевых карт. В настоящее время поддерживаются 1- и 10-гигабитные сетевые адаптеры Intel и 1-гигабитные карты RealTek. Взаимодействие с пользовательскими приложениями производится через стандартный API и не требует подключения специальных библиотек, переработки кода и пересборки приложений. Для работы существующих приложений поверх нового API подготовлена небольшая библиотека-враппер libpcap-over-netmap, позволяющая задействовать netmap в программах, уже поддерживающих libpcap;

    • Расширены возможности пакетного фильтра ipfw, для которого реализованы новые действия "call" и "return", позволяющие организовать выполнение типовых "подпрограмм", которые могут быть вызваны из разных участков правил. Когда обработка достигает правила с действием "call", текущий номер правила сохраняется в стеке и осуществляется переход к номеру правила, на который ссылается текущее действие "call". В дальнейшем, если обработка дошла до правила с действием "return", осуществляется возврат к следующему номеру, идущему после запомненной в стеке позиции. Действие "call" похоже на "skipto" и отличается только возможностью возврата в исходную позицию.
    • Выпущен релиз проекта DIFFUSE 0.4 (DIstributed Firewall and Flow-shaper Using Statistical Evidence), добавляющего в пакетный фильтр IPFW функции классификации IP-трафика на основании статистических данных. Система позволяет для отдельных потоков трафика накапливать и учитывать в IPFW такую статистику, как размер пакетов или время между поступлением пакетов, организуя привязку потоков к определенным классам трафика при помощи техник машинного обучения. В новой версии расширены возможности утилит, используемых для offline-анализа и обучения системы классификации трафика. Сообщается, что работа над проектом доведена до готовности и DIFFUSE 0.4 станет последним релизом. При необходимости в будущем могут быть выпущены корректирующие релизы с исправлением ошибок. Патчи с реализацией DIFFUSE подготовлены для FreeBSD-CURRENT;
    • Добавлена возможность собрать ядро FreeBSD только с IPv6 (INET6), без IPv4 (INET). Для тестирования подготовлена специальная сборка FreeBSD в которой по умолчанию отсутствует поддержка IPv4 и которая может работать только с IPv6. Сборка подготовлена с целью всесторонней проверки реализации IPv6-стека во FreeBSD, особенно в направлении проверки его самодостаточности и способности полноценно работать без наличия поддержки IPv4 в системе. Главный интерес эксперимента связан с выявлением ошибок в конечных приложениях, проблемы поддержки IPv6 в которых часто остаются незамеченными в двойном стеке, так как в случае сбоя программа без лишних предупреждений начинает использовать IPv4;
    • Проведена работа по улучшению реализации, устранению ограничений и добавлению поддержки новых функций в коде обработки сообщений ICMPv6 Router Advertisement (RA), определенных в RFC и являющихся частью IPv6 Neighbor Discovery Protocol. В частности, реализовано получение RA независимо от состояния net.inet6.ip6.forwarding, так как в IPv6 вместо модели с хостом и маршрутизатором используется понятие интерфейса принимающего RA и интерфейса отправляющего RA.

      В программах rtadvd(8) и rtsold(8) добавлена поддержка IPv6 Router Advertisement Options для конкурирования DNS, которая позволяет организовать обновление содержимого /etc/resolv.conf, используя RA. В демоне rtadvd(8) добавлена поддержка динамического добавления и удаления сетевых интерфейсов, а также их конфигурирования на лету при получении соответствующих RA-сообщений. Добавлена утилита rtadvctl(8), отображающая статус отправки RA для каждого интерфейса и предоставляющая функции для управления контролирующим RA фоновым процессом;

    • Проведена переработка подсистемы mii(4), в которую были добавлены исправления и улучшения, накопленные проектами NetBSD и OpenBSD со времени изначального портирования mii. В результате, из PHY-драйверов был удален дублирующийся код и не совсем красивые "хаки". Также достигнута возможность совместного использования файла miidevs с проектом NetBSD;
    • Реализована поддержка опции UTO (TCP User Timeout Option), позволяющая из приложений управлять параметрами ожидания получения TCP-подтверждений. Например, SSH-клиент может запросить установки большого таймаута для соединения (допустим 4 часа). Через какое-то небольшое время у клиента пропадает связь и восстанавливается только спустя 2 часа. Если IP-адрес не изменился, то благодаря UTO соединение не будет разорвано и все потерянные во время недоступности клиента данные будут переданы повторно. Поддержка UTO уже добавлена в такие утилиты, как telnet, ssh и netcat;
  • Изолированные окружения, безопасность и ограничения ресурсов
    • Для некоторых приложений из базовой системы реализована поддержка запуска в изолированных окружениях, сформированных с использованием фреймворка Capsicum. Ведется работа по адаптации легковесного DNS-резолвера для работы с Capsicum, что решит проблемы с выполнением в sandbox-режиме приложений, использующих функции преобразования имен.

      Capsicum нацелен на дополнение традиционного централизованного мандатного контроля доступа средствами для защиты отдельных приложений. Используя Capsicum приложение можно запустить в режиме повышенной изоляции (sandbox), при котором программа сможет выполнять только ранее специфицированные штатные действия. В настоящее время уже достаточно много программ, от tcpdump до chromium, модифицированы для поддержки режима изоляции, который может быть использован для уменьшения рисков при обработке сомнительных данных;

    • Во FreeBSD портирован тулкит Libvirt, в рамках которого подготовлены библиотеки и набор инструментов для унифицированного локального и удаленного управления виртуальными окружениями. Портирование поддержки функций управления по сети ещё не завершено, например, предстоит портировать драйвер для настройки сетевых интерфейсов (netcf) и драйвер для обеспечения работы сетевых мостов (bridge_drive), который достаточно плотно привязан к особенностям Linux;
  • Система
    • В состав базовой системы FreeBSD-CURRENT импортирована новая версия компилятора Clang 2.9, в котором переписан код, занимающийся распределением регистров (register allocator), что позволило заметно увеличить производительность. Кроме того, отмечается прогресс в обеспечении сборки с использованием Clang для платформ Mips и PowerPC, в дополнение к традиционному улучшению поддержки платформ ARM, i386 и amd64. Например, уже удалось достичь успешной загрузки ядра для архитектуры ARM, собранного с использованием Clang. Сборка всей базовой системы для архитектуры ARM пока затруднена использованием старого ARM ABI.

      Для тестирования качества подготовлена автоматизированная система периодической сборки clang/llvm во FreeBSD и FreeBSD (amd64 и i386) при помощи clang/llvm, а также загрузки собранных экземпляров. Решено много ошибок со сборкой портов с использованием clang. В настоящее время успешно собирается более 15000 портов, при этом число собираемых портов постоянно увеличивается, так как мешающие их сборке проблемы как правило имеют тривиальный характер;

    • Выполнена большая работа по устранению предупреждений при пересборке с использованием Clang, которая позволит в скором времени вернуться к использованию флага "-Werror". В сумме число выводимых на этапе сборки предупреждений сокращено с 42 тысяч до 9 тысяч;
    • Началась работа по замене устаревшей реализации регулярных выражений в libc. В качестве замены выбрана библиотека TRE, распространяемая под лицензией BSD, поддерживающая многобайтные символы, совместимая с POSIX и работающая не хуже других альтернатив. Кроме замены кода, планируется дополнительно обеспечить поддержку более быстрого алгоритма сопоставления строк и нового эвристического метода выявления соответствий, что должно значительно увеличить скорость сопоставления по шаблону.

      Так как утилиты grep и diff в базовой системе используют подмножество регулярных выражений GNU, планируется задействовать для базовой системы единый движок регулярных выражений, в котором обеспечить поддержку и синтаксиса GNU в качестве опциональной возможности.

  • Системы хранения и файловые системы
    • С кода нового клиента и сервера NFS снят гриф экспериментального проекта, что открывает двери для использования во FreeBSD 9.0 по умолчанию новой реализации NFS. Новый код поддерживает NFSv4.0, NFSv3 и NFSv2. В скором времени планируется завершить тестирование кода с поддержкой NFSv4.1 и представить патчи с реализацией экспериментального режима агрессивного дискового кэширования на стороне клиента NFSv4;
    • Продолжена работа по доведению до рабочего состояния поддержки работы FreeBSD в качестве клиента распределенной сетевой файловой системы OpenAFS. Порт OpenAFS обновлен до версии 1.6.0pre6. Ожидается, что ко времени выхода релиза OpenAFS 1.6 порт будет достаточно стабилен для повседневного использования;
    • Во FreeBSD-STABLE интегрирована поддержка ZFS pool v28. Дополнительно импортированы некоторые исправления ошибок, подготовленные в рамках проекта Illumos;
    • В утилиту iostat добавлена возможность вывода значения счетчика ошибок для диска. В настоящее время при запуске "iostat -e" выводится статистика по пяти типам ошибок, в будущем планируется расширить число распознаваемых ошибок;
  • Поддержка оборудования
    • Подготовлен первый работающий вариант GEM/KMS-драйвера для графических чипов Intel, реализованный на уровне ядра FreeBSD. Несмотря на то, что драйвер еще не достаточно протестирован, с его помощью удалось выполнить такие игры, как uhexen2 и ioquake3. После завершения разработки, пользователи FreeBSD получат возможность задействовать последние версии видеодрайверов xf86-video-intel, в которых обеспечена поддержка новых видеокарт Intel. В данный момент во FreeBSD невозможно использование xf86-video-intel начиная с версии 2.10, так как в данном выпуске была удалена поддержка переключения видеорежимов на пользовательском уровне (UMS) и оставлена только поддержка KMS (Kernel Mode Setting), обеспечивающая переключение видеорежимов на уровне ядра;
    • Поддержка работы FreeBSD на игровых приставках Sony PlayStation 3 доведена до готовности к включению в состав релиза FreeBSD 9. Из оборудования поддерживается большинство внутренних устройств, USB, Bluetooth, Ethernet и SATA. Система может быть установлена и загружена со встроенного диска. В ближайших планах реализация поддержки звуковой подсистемы, беспроводной карты и SPU-блоков (Synergistic Processing Unit) процессора Cell. Также планируется довести драйвер framebuffer до поддержки запуска X11;
    • Во FreeBSD/arm обеспечена базовая поддержка SoC-платформы Marvell Armada XP, основанной на ARMv6/v7-совместимых CPU Sheeva. Поддерживается загрузка с использованием U-Boot, последовательный порт, контроллер прерываний, таймеры, USB, Ethernet. Пока нет поддержки L2-кэша, SMP, PCI-Express и SATA;
    • Во FreeBSD/powerpc обеспечена начальная поддержка SoC APM86290, основанного на процессорах семейства AppliedMicro PACKETpro. В настоящий момент уже поддерживается загрузка с использованием U-Boot, CPU PPC465, L1-кэш и консоль через последовательный порт. Предстоит реализовать поддержку контроллера прерываний, EHCI USB, Ethernet, L2 -кэша и менеджера очередей;
    • Инициирован проект по обеспечению возможности запуска FreeBSD/powerpc на PAPR-совместимых машинах, таких как серверы IBM pSeries;
    • Значительны расширены возможности порта FreeBSD для платформы SPARC64: улучшена работа драйвера iommu, обеспечена возможность сборки GNUTLS, добавлена поддержка оборудования Sun Fire V890 на базе процессоров UltraSPARC-IV, обновлен драйвер schizo, в котором добавлена поддержка PCI-X мостов XMITS Fireplane/Safari и Casinni/Skyhawk, налажена работа Sun Fire V480, обеспечена возможность работы с более чем 32 CPU, улучшена работа подсистемы управления памятью для UltraSPARC-III и более новых CPU;
  • Приложения и система портов
    • После трех лет разработки представлен проект Portbuilder (ports-mgmt/portbuilder), предназначенный для организации параллельной одновременной сборки разных портов в несколько потоков. В процессе сборки имеется возможность контролировать нагрузку на систему через top-подобный интерфейс;
    • Число портов медленно продолжает приближаться к отметке 23000. Проведена работа по закрытию накопившихся PR, число незакрытых PR держится на уровне 1100. Бинарные пакеты в настоящее время собираются для архитектур amd64-6, amd64-7, amd64-8, i386-6, i386-7, i386-8, i386-9, ia64-8, sparc64-7, sparc64-8.
    • Порт web-браузера Chromium синхронизирован с основной веткой разработки браузера. При этом удалось обеспечить помещение новых релизов Chromium в дерево портов без задержки, в день выхода новой версии. Совместная работа с командой разработчиков Chromium позволила обеспечить интеграцию в upstream большого числа патчей, созданных в процессе портирования браузера для FreeBSD. Например, доступная в репозитории Chruëtertee версия 13 содержит на 70 патчей меньше, чем версия 12;
    • Добавлен порт Haskell Platform 2011.2.0.1. Другие связанные с Haskell порты, общее число которых уже превышает 200, также обновлены до последних версий. Некоторые порты, например, web-фреймворк Snap и Leksah с зависимостями, пока доступны только через специальный репозиторий;
    • Группа, занимающаяся портированием десктоп-оболочки KDE и Qt для FreeBSD, сообщила о продолжении адаптации данных проектов для FreeBSD. Важнейшим достижением является обеспечение сборки Qt с использованием компилятора Clang. Из последних портированных систем отмечены: Qt 4.7.3, KDE 4.6.5, Amarok 2.4.1, Digikam (+ KIPI-plugins) 1.9.0. Уже портированы, но требуют дополнительного тестирования, менеджер персональной информации KDE PIM 4.6.0 и офисный пакет Calligra 2.3.72;
    • Libarchive, bsdtar и bsdcpio обновлены до версии 2.8.4 во FreeBSD 9-CURRENT. В bsdtar добавлена поддержка распаковки форматов XAR и RPM. В экспериментальной версии bsdtar появилась поддержка чтения CAB, LHA и RAR, а также записи iso9660 и XAR;
    • Выполнена работа по добавлению поддержки многобайтовых кодировок в Nvi, распространяемого под лицензией BSD варианта текстового редактора Vi.


  1. Главная ссылка к новости (http://www.freebsd.org/news/ne...)
  2. OpenNews: Отчет о состоянии развития FreeBSD за первый квартал 2011 года
  3. OpenNews: Отчет о состоянии развития FreeBSD за четвертый квартал 2010 г.
  4. OpenNews: Отчет о состоянии развития FreeBSD за третий квартал 2010 года
  5. OpenNews: Отчет о состоянии развития FreeBSD за второй квартал 2010 года
  6. OpenNews: Вышла первая бета-версия FreeBSD 9.0 и PC-BSD 9.0
Лицензия: CC-BY
Тип: Обобщение
Короткая ссылка: https://opennet.ru/31758-summary
Ключевые слова: summary, freebsd, report
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (18) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, alltiptop (ok), 23:39, 15/09/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • –21 +/
    >Добавлена возможность собрать ядро FreeBSD только с IPv6 (INET6), без IPv4 (INET)

    Зачем?

     
     
  • 2.2, freename (ok), 23:48, 15/09/2011 [^] [^^] [^^^] [ответить]  
  • +11 +/
    там же все по русски написано для чего, что не понятно
     

  • 1.5, fidaj (ok), 01:56, 16/09/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    о "iostat -E" слукавили - моя сборка FreeBSD 9.0-BETA2 #0 r225582 - в упор не вижу такой опции:
    iostat: illegal option -- E
    вероятнее всего имелось ввиду "iostat E" ?

    за информацию о Portbuilder - отдельное спасибо - пошшупаю что за зверь :)

     
     
  • 2.6, wiseman (ok), 06:48, 16/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    А в отчете не сказано, что -E уже в свн. И врядли до релиза 9.0 появится
     
     
  • 3.10, fidaj (ok), 11:00, 16/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > А в отчете не сказано, что -E уже в свн. И врядли
    > до релиза 9.0 появится

    я в этой новости прочел, но там опцию уже на -e исправили, которой тоже нету в svn...

    В новости (оригинальной http://www.freebsd.org/news/status/report-2011-04-2011-06.html ) пишется что идет работа над опцией, все-таки, "-Е"
    Но на вики http://wiki.freebsd.org/Disk%20device%20error%20counters - "-е"
    никак не определятся... :)

     

  • 1.8, digitalbunny (ok), 08:42, 16/09/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как у низ там с GNOME 3?
     
     
  • 2.13, fidaj (ok), 11:16, 16/09/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Как у низ там с GNOME 3?

    http://www.freebsd.org/gnome/docs/develfaq.html#q3

    вот так http://www.marcuscom.com:8080/cgi-bin/cvsweb.cgi/ports/x11/gnome3/
    ;)

    инструкция для экстрималов http://forums.pcbsd.org/showthread.php?t=14811

     
  • 2.18, Captain Obvious (ok), 14:04, 16/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Как у низ

    Опечатка по Фрейду, однако.


     

  • 1.9, ssh911 (ok), 10:54, 16/09/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А как там обстоят дела с портированием virtio кто-то знает? У меня на некоторых не критичных hvm используется if_vtnet, очень не хватает virtio_blk. Последние его реализации сваливают в панику на этапе загрузки :(
     
  • 1.14, artemrts (ok), 11:47, 16/09/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Господа, а кто-нибудь пользовался вот это штукой - DIFFUSE?
     
     
  • 2.22, Aquarius (ok), 00:34, 17/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    IMHO, пользоваться ей еще рано, на текущей стадии развития имеет смысл "баловаться"
     

  • 1.15, polkan (ok), 13:08, 16/09/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    похоже не дождаться мне допиливания аспи под мой ноутбук... чуствую, придется менять ноут (тошиба А200 1HV)
     
     
  • 2.16, terr0rist (ok), 13:48, 16/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    та же фигня с самсунгом
     
     
  • 3.17, Captain Obvious (ok), 14:03, 16/09/2011 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > та же фигня с самсунгом

    У большинства ноутов весьма кривой ACPI, да и у самой фряхи с ACPI по жизни уйма проблем. В сумме получается термоядерная смесь.

     
  • 2.19, cvsup (ok), 15:07, 16/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Попробуй пересобрать с options NEW_PCIB
     
     
  • 3.20, fidaj (ok), 15:16, 16/09/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Попробуй пересобрать с options NEW_PCIB

    Для 9.0-BETA2 оно в DEFAULTS...

     
     
  • 4.21, cvsup (ok), 15:48, 16/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Да. Точно.
     

  • 1.23, dvg_lab (ok), 13:50, 17/09/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ктонить пробовал OpenAFS? какое примнение?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру