четверг, 2 декабря 2010 г.

Дополнительные опции ядра FreeBSD

Опишу здесь некоторые опции которые часто добавляются в ядро.
Описывать всю пересборку ядра не интересно, она включена как часть в эту заметку.

Иногда выгодно включать пуллинг на сетевых карточках.
Пуллинг позволяет уменьшить количество прерываний от сетевой карточки,
т.к. позволяет обрабатывать за одно прервание группу пакетов.
Параметр HZ выставляет частоту просмотра буфера сетевой карточки, подбирается эксперементально..
Примечание: некоторые сетевые реализуют пуллинг на аппаратном уровне и при включении софтового, начинаются жуткие задержки пакетов.
### Polling
options         HZ=2000
options         DEVICE_POLLING

Фаервол PF
### PF
device pf
device pflog #Поддержка логов. Включает псевдоустройство pflog
device pfsync #включает необязательное сетевое псевдоустройство pfsync(4), 
              #используемое для отслеживания ''изменений состояния''
## Создание и управление очередями
options         ALTQ
options         ALTQ_CBQ        # Class Bases Queuing (CBQ)
options         ALTQ_RED        # Random Early Detection (RED)
options         ALTQ_RIO        # RED In/Out
options         ALTQ_HFSC       # Hierarchical Packet Scheduler (HFSC)
options         ALTQ_PRIQ       # Priority Queuing (PRIQ)
options         ALTQ_NOPCC      # Required for SMP build

фаервол IPFW

## IPFW
# включение управление трафиком (pipe, генерация потерь и т.д)
options         DUMMYNET
# собственно сам ipfw
options         IPFIREWALL
# нужна дляNAT
options         IPDIVERT
# нужна для правил fwd
options         IPFIREWALL_FORWARD
# логировать пакеты через syslogd и сколько логировать по умолчанию
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=200
# Последнее правило меняется с запрещающего на разрешающее
options         IPFIREWALL_DEFAULT_TO_ACCEPT
#### Можно изменить максимальное число таблиц, 
#### которые будет использовать IPFW
#### Для этого нужно поменять в файле /usr/src/sys/netinet/ip_fw.h
#### Значение 128 на нужное в строке 
#### #define>IPFW_TABLES_MAX  128
IPFW KERNEL NAT

options IPFIREWALL_NAT
options LIBALIAS

NETGRAPH

options         NETGRAPH
options         NETGRAPH_SOCKET
options         NETGRAPH_IPFW
options         NETGRAPH_NETFLOW
options         NETGRAPH_KSOCKET
options         NETGRAPH_NAT
options         NETGRAPH_SPLIT
options         NETGRAPH_ECHO
options         NETGRAPH_ETHER
options         NETGRAPH_TEE
options         NETGRAPH_BPF
options         NETGRAPH_IFACE
options         NETGRAPH_PPP
options         NETGRAPH_PPTPGRE
options         NETGRAPH_ONE2MANY
#options         NETGRAPH_RFC1490
options         NETGRAPH_TTY
options         NETGRAPH_UI
options         NETGRAPH_TCPMSS
options         NETGRAPH_VJC
options         NETGRAPH_MPPC_ENCRYPTION
options         NETGRAPH_MPPC_COMPRESSION

Дебаг (должен быть включен, чтоб при падении в корку можно было хоть в дампах поковыряться...)
makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols

Дополнительные параметры

# не менять значение TTL при прохождении пакета через этот роутер
options         IPSTEALTH

# options MROUTING # Маршрутизация многоадресного трафика
Увеличение адресного пространства ядра, которое на i386 платформе - 1Гб. Для увеличения до 2Гб. На платформе amd64 KVA всегда 2G.

options KVA_PAGES=512
Данная опция в FreeBSD 8.x предназначена для ускорения маршрутизации. При больших потоках трафика проц вгоняется в полку, поэтому настоятельно рекомендую вырубать ее нафиг, чтоб не наблюдать , как ваш роутер уходит в нирвану...

#options                FLOWTABLE               # per-cpu routing cache

http://comp-info.ru/articles/300006/

3 комментария:

  1. Добавь опцию NETGRAPH_PPPOE без нее dsl не работает.

    ОтветитьУдалить
  2. с опцией NETGRAPH_MPPC_COMPRESSION ядро не соберется без дополнительных файлов.
    Нужно скачать архив и распаковать в исходники 3 файла, инструкция здесь wiki.dieg.info/doku.php/mpd

    ОтветитьУдалить
  3. Наверняка утверждать не буду, т.к. не проверял сейчас.
    По идее те опции которые указаны должны собираться.
    P.S. Возможно зависит от версии FreBSD.

    ОтветитьУдалить