Site Tools


software:freebsd:lagg_on_netgraph

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
software:freebsd:lagg_on_netgraph [2015/07/19 00:19]
– [Этапы создания lagg на простом примере] root
software:freebsd:lagg_on_netgraph [2015/07/19 22:48]
– [ng_lagg - if_lagg on netgraph] root
Line 1: Line 1:
 ====== ng_lagg - if_lagg on netgraph ====== ====== ng_lagg - if_lagg on netgraph ======
-По неизвестной причине использование if_lagg и двух сетевых адаптеров igb на FreeBSD 10.1 amd64 приводило к большой нагрузке на CPU, потере пакетов и потере связи.\\+По неизвестной причине использование **if_lagg** и двух сетевых адаптеров igb на FreeBSD 10.1 amd64 приводило к большой нагрузке на CPU, потере пакетов и потере связи.\\
 Реализация объединения сетевых адаптеров средствами netgraph не подвержена подобной проблеме.\\ Реализация объединения сетевых адаптеров средствами netgraph не подвержена подобной проблеме.\\
 +Результат совместим с **if_vlan** и по сути мало чем отличается от других интерфейсов в системе.\\
 **Cкрипт**: [[http://netlab.linkpc.net/download/software/FreeBSD/ng_lagg/ng_lagg.sh|ng_lagg.sh]]\\ **Cкрипт**: [[http://netlab.linkpc.net/download/software/FreeBSD/ng_lagg/ng_lagg.sh|ng_lagg.sh]]\\
 +**rc.d скрипт**: [[http://netlab.linkpc.net/download/software/FreeBSD/ng_lagg/ng_lagg|ng_lagg]]\\
  
  
Line 16: Line 18:
  
 == ВАЖНО! == == ВАЖНО! ==
-1. Имя интерфейса не должно содержать: "." и ":".\\ +  - Имя интерфейса не должно содержать: "." и ":". Это ограничение netgraph, подробнее: [[https://www.freebsd.org/cgi/man.cgi?query=netgraph&sektion=4&apropos=0&manpath=FreeBSD+10.1-stable|man 4 netgraph]] 
-Это ограничение netgraph.\\ +  - Максимальное количество интерфейсов в LAGG - 64Это ограничение обусловлено константой **NG_ONE2MANY_MAX_LINKS** в файле /usr/src/sys/netgraph/ng_one2many.h. Если вам требуется больше, то измените значение константы и пересоберите **ng_one2many**. 
-Подробнее: [[https://www.freebsd.org/cgi/man.cgi?query=netgraph&sektion=4&apropos=0&manpath=FreeBSD+10.1-stable|man 4 netgraph]]\\ +  - В LAGG на базе netgraph можно добавлять только сетевые интерфейсы к которые работают с нодой **ng_ether**. Список доступных интерфейсов можно увидеть так:
- +
-2. В LAGG на базе netgraph можно добавлять только сетевые интерфейсы к которые работают с нодой **ng_ether**.\\ +
-Список доступных интерфейсов можно увидеть так:+
 <code>ngctl list | grep ether</code> <code>ngctl list | grep ether</code>
 Если ничего нет, то убедитесь что нода **ng_ether** загружена, или загрузите: Если ничего нет, то убедитесь что нода **ng_ether** загружена, или загрузите:
Line 44: Line 43:
 Проверки на принадлежность интерфейса к какому либо lagg на базе netgrapf не производится.\\ Проверки на принадлежность интерфейса к какому либо lagg на базе netgrapf не производится.\\
 Код просто отключает lower хук интерфейса не производя никаких проверок.\\ Код просто отключает lower хук интерфейса не производя никаких проверок.\\
 +
 +
 +==== rc.d скрипт ====
 +Для того чтобы интерфейс создавался при загрузке автоматически нужно:
 +  - сохранить rc.d скрипт [[http://netlab.linkpc.net/download/software/FreeBSD/ng_lagg/ng_lagg|ng_lagg]] в /usr/local/etc/rc.d/
 +  - сохранить скрипт [[http://netlab.linkpc.net/download/software/FreeBSD/ng_lagg/ng_lagg.sh|ng_lagg.sh]] в /usr/local/sbin/
 +  - разрешить выполнение обоих скриптов (chmod +x)
 +  - добавить в /etc/rc.conf или /etc/rc.conf.local разрешение на его запуск и настройки:
 +<code>ng_lagg_enable="YES"
 +ng_lagg_interfaces="lagg0 xyzlagg"
 +ng_lagg_lagg0="em0 em1"
 +ng_lagg_xyzlagg="xl0 igb1"
 +ifconfig_lagg0="inet 192.168.11.77 netmask 255.255.255.0"
 +ifconfig_xyzlagg="inet 192.168.22.77 netmask 255.255.255.0"
 +
 +vlans_lagg0="vlan1234"
 +create_args_vlan1234="vlan 1234"
 +ifconfig_vlan1234="inet 192.168.0.77 netmask 255.255.255.0"
 +</code>
 +
 +
 +=== Замечания ===
 +  - Можно создавать сколько угодно интерфейсов, в каждом из них должен быть хотя бы один сетевой адаптер
 +  - Нельзя давать имена интерфейсам "auto", так можно создать не более одного интерфейса, но по команде **stop** такой интерфейс не будет уничтожен.
  
  
Line 63: Line 86:
  
 ==== Замечания ==== ==== Замечания ====
-  * Настройка one2many отсутствует потому что после создания нода работает в режиме NG_ONE2MANY_XMIT_ROUNDROBIN для исходящего трафика, других приемлемых для lagg режимов у ноды нет. +  * Настройка **one2many** отсутствует потому что после создания нода работает в режиме NG_ONE2MANY_XMIT_ROUNDROBIN для исходящего трафика, других приемлемых для **lagg** режимов у ноды нет. 
-  * ng_one2many можно заменить на ng_bpf, и с помощью ассемблера BPF реализовать распределение исходящих пакетов по L2/L3/L4 адресам. Пример использования ng_bpf: [[ru:software:freebsd:igmpproxy_on_netgraph|Замена igmpproxy на netgraph]]+  * **ng_one2many** можно заменить на **ng_bpf**, и с помощью ассемблера BPF реализовать распределение исходящих пакетов по L2/L3/L4 адресам. Пример использования **ng_bpf**: [[ru:software:freebsd:igmpproxy_on_netgraph|Замена igmpproxy на netgraph]]
  
  
software/freebsd/lagg_on_netgraph.txt · Last modified: 2022/02/05 04:36 by root