Jump to content
Калькуляторы

Linux Embedded Appliance Framework aka LEAF Линуксовый "модульный" софтроутер

Итак, после довольно продолжительной разработки (с февраля - кода я понял, что мне 2.4.34 ядра не хватает, а переползать на другой дистр не хотелось ввиду большого кол-ва наработок для LEAF и привычки к дистру), таки родили сообществом бета1 версию, в которую добавили все актуальные на сегодня "хотелки" как для ISP юзания (вносились мной), так и для юзания в качестве пользовательского софтроутера на каком-то ALIX'е с Geode (или чем-то еще более медленном типа WRAP или классического первопневого тазика на антресоли).

 

Коротко: многофункциональный embedded дистр, на 2.6.35.8 ядре, для x86 архитектуры с поддержкой SMP (или без оной - для i486/geode ядер), с uClibc в качестве libc библиотеки и busybox в качестве шелла и базового окружения, для своей работы - требует минимум памяти (способен в минимальном наборе запуститься на тазике с 16МБ памяти, для браса на 500+ абонентов и шейпингом аплоада htb+hash на 2к адресов - хватает с головой 512МБ памяти); работает с рамдиска, на который при старте подгружает указанные в конфиге пакеты (формата .lrp - .tgz архивы с присутствующими служебными файлами для менеджера пакетов). Запускается с устройства с FAT/FAT32/ISO9660 ФС, пользуя syslinux/isolinux - с сд-привода (с конфигом на флопике), IDE/SATA винта или с USB флэшки.

 

Подгружает только необходимые для работы устройств модули ядра; по дефолту в дистр включены драйверы наиболее популярных сетевых карт; имеется архив со всеми ядреными модулями + механизм автоматической подгрузки требуемых железом дров из этого архива (эдакий plug'n'play, для запуска требует наличия минимум 64МБ оперативной памяти на машине). При желании можно юзать для NAS/SAN (нужные пакеты - самба, vsftpd, iscsi, а так же mdadm имеются). В близких планах - портирование астериска с зависимостями (при обновлении ядра и окружения астериск поломался, править - времени и нужды особо не было, от того - в релизе пока убран), + обновление ядра по мере выхода новых версий 2.6.35 ветки, + чистка, багфиксы и т.д.

 

Из того, что интересно для ISP, имеется:

  • iptables со скриптом инициализации, извлеченным с рэдхетовских осей и немного перепиленным под урезанный дистр (имеется загрузка-сохранение конфига/модулей и прочие плюшки)
  • accel-pptp 0.8.5
  • kernel-mode rp-pppoe
  • xl2tpd (лично мной не проверялся)
  • pppd + radcoad
  • quagga 0.9.17 в полном комплекте
  • perl 5.12.1 (я им не пользуюсь, но мало ли кому понадобится)
  • net-snmp 5.4.3
  • irqbalance 0.55 (0.56 - адекватно не заработал)
  • скрипт инициализации хеш-таблиц шейпера и модификации правил в них, исходя из IP и скорости + ip-up/ip-down/ip-mod для pppd
  • openrrcp - может кому-то будет актуально
  • at, tcpdump, iptraf, lmsensors и прочие мелочи

 

Работает у меня в продакшне долго (с февраля-марта), постепенно модифицируясь, в качестве роутеров и в качестве брасов с шейпером (pptp+pppoe), сейчас - собрали новый бордюр на нем же.

 

Скачать можно отсюда. Собссно страничка проекта - вот (пока правда еще не обновили новости, документация в стадии наполнения, но многое касательно версии 3.х применимо и для 4.0). Багрепорты предпочтительно постить в trac или в мэйллисты. Ну или здесь - хотя в мэйллистах/трэке ответ будет быстрее.

 

Для желающих что-то допилить/добавить нужный пакет - welcome, документация для девелоперов - вот.

 

P.S. Из того, что всплыло после релиза - для полноценной работы скрипта инициализации-отключения iptables необходим пакет mawk, но по дефолту в leaf.cfg он не указан.

Edited by NiTr0

Share this post


Link to post
Share on other sites

Зарелизилась beta3. Из основных изменений - обновлено ядро до 2.6.35.11, добавлена поддержка esfq, правка багов в некоторых пакетах/скриптах, частичное обновление пакетов. Подробный ченжлог - здесь.

Share this post


Link to post
Share on other sites

да, B-uc V4 - вешь хорошая, ram-based, со своим sdk. И очень хорошо, что не на основе debian-live ( как linux.voyage.hk). Жаль тока что что arping - из пакета iproute, а не самостийный . И никто не хочет к нему ipt_netflow прикрутить.

2NiTro: прошу прощения за дерзость , а Вы имеете какое-то отношение к этому чудесному проекту?

P.S. сам когда-то активно в нём участвовал, пока не забанили за подрыв идеологии.

Share this post


Link to post
Share on other sites

Собссно я 4-ю ветку и начал, сделав основную работу по апдейту ядра/модификации скриптов/апдейту компилятора и основных пакетов. Последние несколько месяцев правда мало времени проекту уделяю - т.к. вроде как все, что мне нужно, работает.

arping - был отдельным пакетом, вроде как в 3.1 и альфах присутствовал еще, но потом был исключен ввиду наличия аналога в bb. Можно вернуть.

ipt_netflow - в принципе прикрутить не проблема, если он имеется под 2.6.35 ядро, думаю попробую на неделе.

Share this post


Link to post
Share on other sites

Апну тему.

15 мая, через 14 месяцев после начала разработки, зарелизили 4.0 версию.

Из планов на развитие:

обновление ядра до 2.6.39 (или выше);

включение в дистр BIND, accel-ppp, freeradius, asterisk;

реорганизация тулчейна для осуществления возможности сборки дистрибутивов под другие архитектуры (x86_64, ARM и т.п.);

автоматическия подгрузка пакетов по зависимостям;

прочие мелочи, высплывающие по мере использования.

Share this post


Link to post
Share on other sites

Good work, sir! ;)

ipt_netflow still awaiting... :(

 

Возможно баг, (возможно нет) , но командочка ip ro get x.x.x.x/x выводит пустую строку...

Share this post


Link to post
Share on other sites

ipt_netflow still awaiting... :(

Ок, закончу с bind'ом, попробую вкрутить.

 

Возможно баг, (возможно нет) , но командочка ip ro get x.x.x.x/x выводит пустую строку...

Похоже проблема бизибокса.

Share this post


Link to post
Share on other sites

Дошли таки руки до ipt_netflow. Вкомпилил, не проверял (не на чем).

Тарболл лежит здесь.

 

не надо.

Не надо - не пользуйте. Никто вас не заставляет его включать, все модульное ведь.

А мне к примеру - надо :) Ибо бордюры с секондари днс скрещены (т.к. оперативки дофига - ибо двухканальный режим подразумевает 2-4ГБ, проц тоже далеко не в полке). + уверен кому-то еще пригодится.

 

P.S. Также портировал BIRD, поиграться - тоже не тестил, пока в todo эксперименты с ним.

Share this post


Link to post
Share on other sites

Интересный проект, но смущает что без кеширования.

Возможно, портирую как-то. Хотя и бинда хватает, тем более после перевода его на uclibc он изрядно похудал, сейчас живут 5 процессов с VSZ=80MB, большая часть памяти при этом общая (выделилась до форка). Суммарное потребление памяти на бордюре - в 200 МБ (сюда же кеши, корневая ФС + логи общей суммой на метров 40 и т.п.).

Share this post


Link to post
Share on other sites

Если DNS-сервер для предоставления рекурсии большому кол-ву клиентам, то рекомендую powerdns(pdns-recursor). После перевода основной рекурсивной нагрузки с бинда на powerdns, проблем с dns вообще ни разу не было. Если рекурсивная нагрузка маленькая(до 1000 запрос в секунду), то можно использовать привычный bind9 и не заморачиваться

Share this post


Link to post
Share on other sites

Если DNS-сервер для предоставления рекурсии большому кол-ву клиентам, то рекомендую powerdns(pdns-recursor).

Unbound.

Share this post


Link to post
Share on other sites

Ага, мне его советовали, но на полуискусственных тестах он показал себя хуже чем powerdns, в продакшне не сравнивал.

Share this post


Link to post
Share on other sites

30-го числа зарелизили 4.1 beta1.

Основные изменения:

-обновлено ядро до 2.6.35.13, обновлен igb

-добавлен софт (в частности bind, ipt_netflow, dibbler, sysstat)

-небольшие изменения в скриптах

Share this post


Link to post
Share on other sites

Итак, зарелизили 4.1 beta2.

Основные изменения:

-обновлено ядро до 2.6.35.14

-обновлен биибокс, увеличена длинна истории и включено ее сохранение

-пофиксен sysstat, nut

-правки шейпера (ppp-hsh)

-прочие мелочи

Share this post


Link to post
Share on other sites

8 октября зарелизили 4.1. Основные изменения:

-добавлен скрипт для автоматической подгрузки модулей при горячем подключении устройств (mdev не имеет данного функционала)

-обновление версий софта (dhcpd, shorewall, wpa_supplicant, tor и т.д.), добавлены файлы лицензий и инфо о типе лицензии каждого пакета.

 

Из планов на будущее (5.х ветка; ориентировочно - первую бету соберем где-то весной):

-приведение тулчейна к адекватному виду и, как следствие, поддержка других архитектур (x86_64, ARM, MIPS и т.п.)

-обновление uClibc, gcc

-обновление ядра до каррент версии

-включение accel-ppp (скорее всего произойдет в 4.х)

Edited by NiTr0

Share this post


Link to post
Share on other sites

Попробывал! Отлично. Вайата нервно курит в стороне. Прекрасная идеология. "Just pure linux"!

Share this post


Link to post
Share on other sites

а реально LEAF запихнуть на флешку, если да то ткните в man

Share this post


Link to post
Share on other sites

а реально LEAF запихнуть на флешку, если да то ткните в man

Берете и пихаете, так же как и на винчестер, один в один. USB дрова на борту имеются. Ну или на крайний случай, если syslinux пугает/не получается с ним и лень разбираться/хочется виндовыми гуевыми средствами, пишете на флэш образ диска через ultraiso.

Edited by NiTr0

Share this post


Link to post
Share on other sites

Зарелизили 4.2-beta1. Самые существенные изменения:


     
  • ревизия конфигов ядра (memory allocators, модули/драйверы и т.п.) - чистка лишнего и добавление нужного;
  • автодетект железа при буте пользуя hotplug подсистему (быстрее загрузка);
  • добавлены sshblack, clamav с havp, и еще кое-какие пакеты (еще в 4.1.1), обновлена часть пакетов до актуальных версий

Полный чейнджлог - здесь.

Также в процессе неспешной разработки новая ветка - переработанный тулчейн для полноценной кросс-компиляции, обновленный софт (наконец-то uClibc 0.9.32 с поддержкой nptl), accel-ppp в стадии портирования, упакованные модули ядра, в перспективе - апдейт ядра и поддержка не-x86 архитектур (фундамент заложен), разбивка initrd на несколько частей, а также пользование zram вместо tmpfs.

Share this post


Link to post
Share on other sites

С глубоким прискорбием обнаружил присутствие отсутствия всяких "parm" в модуле igb.ko, его depend-са от dca.ko, да и сам модуль отстаёт от версии на sf.net.

Уважаемый NITrO, могу я надеяться на Вашу поддержку в этом вопросе ?

Share this post


Link to post
Share on other sites

Параметры вроде как есть. Во всяком случае - были на промежуточных сборках, которые крутятся на брасах, и есть в сборке next ветки, которая крутится на тестовом тазике. Учитывая, что в промежутке ничего в igb не менялось - в 4.1.1 параметры тоже должны присутствовать.

# modinfo igb
filename:       igb.ko.gz
description:    Intel(R) Gigabit Ethernet Network Driver
author:         Intel Corporation, <e1000-devel@lists.sourceforge.net>
license:        GPL
vermagic:       2.6.35.14-i686 SMP mod_unload modversions PENTIUMII
parm:           debug:Debug level (0=none, ..., 16=all)
parm:           DMAC:Enable/disable on parts that support the feature
parm:           EEE:Enable/disable on parts that support the feature
parm:           QueuePairs:Enable TX/RX queue pairs for interrupt handling (0,1), default 1=on
parm:           max_vfs:Number of Virtual Functions: 0 = disable, 1-7 enable, default 0
parm:           VMDQ:Number of Virtual Machine Device Queues: 0-1 = disable, 2-8 enable, default 0
parm:           RSS:Number of Receive-Side Scaling Descriptor Queues (0-8), default 1=number of cpus
parm:           LLISize:Low Latency Interrupt on Packet Size (0-1500), default 0=off
parm:           LLIPush:Low Latency Interrupt on TCP Push flag (0,1), default 0=off
parm:           LLIPort:Low Latency Interrupt TCP Port (0-65535), default 0=off
parm:           Node:set the starting node to allocate memory on, default -1
parm:           IntMode:Change Interrupt Mode (0=Legacy, 1=MSI, 2=MSI-X), default 2
parm:           InterruptThrottleRate:Maximum interrupts per second, per vector, (max 100000), default 3=adaptive
depends:

Версию обновлю.

Share this post


Link to post
Share on other sites

а в kernel можно добавить поддержку dca.ko ?

Share this post


Link to post
Share on other sites

Ок, добавил в каррент, ждите 4.2 beta2 или собирайте из гита. Хотя не думаю, что что-то сильно должно от I/OAT DMA улучшиться на реальной железке, но модуль ничему мешать не должен - так что пусть живет.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this