This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
software:freebsd:ng_vlan [2015/05/16 13:58] – [Сообщения] root | software:freebsd:ng_vlan [2022/03/02 23:11] (current) – [FreeBSD QinQ: ng_vlan patch] root | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== QinQ: ng_vlan patch ====== | + | ====== |
- | Патч добавляет функционал в нетграф ноду ng_vlan, в том числе становится возможным делать QinQ. | + | Патч добавляет функционал в нетграф ноду ng_vlan, в том числе становится возможным делать QinQ.\\ |
[[http:// | [[http:// | ||
[[http:// | [[http:// | ||
+ | <note important> | ||
Line 30: | Line 31: | ||
**аргумент**: | **аргумент**: | ||
**действие**: | **действие**: | ||
- | * **0** - __по умолчанию__, | + | * **0** - __по умолчанию__, |
- | * **1** - если нода делает 802.1Q/P декапсуляцию, | + | * **1** - если нода делает 802.1Q/P декапсуляцию, |
Line 42: | Line 43: | ||
**аргумент**: | **аргумент**: | ||
**действие**: | **действие**: | ||
- | * **0** - если нода не делает 802.1Q/P инкапсуляцию, | + | * **0** - если нода не делает 802.1Q/P инкапсуляцию, |
**предупреждения**: | **предупреждения**: | ||
- | - если down хук подключён к ng_ether, чей интерфейс if_capenable & IFCAP_VLAN_HWTAGGING то инкапсуляцию произведёт сетевой адаптер, | + | - если |
- если адаптер не поддерживает инкапсуляцию или она отключены то пакеты уйдут в сеть не тегированными. | - если адаптер не поддерживает инкапсуляцию или она отключены то пакеты уйдут в сеть не тегированными. | ||
* **1** (VLAN_ENCAP_FROM_FILTER) - __по умолчанию__, | * **1** (VLAN_ENCAP_FROM_FILTER) - __по умолчанию__, | ||
Line 70: | Line 71: | ||
===== Тюнинг системы ===== | ===== Тюнинг системы ===== | ||
- | В [i]loader.conf[/i] | + | В **/boot/loader.conf**\\ |
- | [i]kern.ipc.max_linkhdr[/i] - рекомендую увеличить, | + | **kern.ipc.max_linkhdr** - рекомендую увеличить, |
- | 20 - 1 VLAN tag (.Q) | + | * **20** - 1 VLAN tag (.Q) |
- | 24 - 2 VLAN tags (QinQ) | + | * **24** - 2 VLAN tags (QinQ) |
- | 28 - 3 VLAN tags (QinQinQ) | + | * **28** - 3 VLAN tags (QinQinQ) |
- | 32 - 4 VLAN tags (...) | + | * **32** - 4 VLAN tags (...) |
Line 82: | Line 83: | ||
kldload ng_ether | kldload ng_ether | ||
- | ngctl msg re0: setpromisc 1 | + | Включить " |
- | ngctl msg re0: setautosrc 0 | + | < |
+ | ngctl msg re0: setautosrc 0</ | ||
- | ngctl mkpeer re0: vlan lower downstream | + | Подключаем ng_vlan к re0 адаптеру, |
- | ngctl connect re0: re0:lower upper nomatch | + | < |
+ | ngctl connect re0: re0:lower upper nomatch</ | ||
- | ngctl mkpeer re0:lower eiface vlan1001 ether | + | Создаём интерфейсы для вланов и подключаем их к ng_vlan на re0: |
- | ngctl mkpeer re0:lower eiface vlan1002 ether | + | < |
+ | ngctl mkpeer re0:lower eiface vlan1002 ether</ | ||
- | ngctl name re0: | + | Задаём имя интерфейса, |
+ | < | ||
ifconfig ngeth0 link 00: | ifconfig ngeth0 link 00: | ||
- | ifconfig ngeth0 inet 192.168.0.36 netmask 255.255.255.0 | + | ifconfig ngeth0 inet 192.168.0.36 netmask 255.255.255.0</ |
- | ngctl name re0: | + | Задаём имя интерфейса, |
+ | < | ||
ifconfig ngeth1 link 00: | ifconfig ngeth1 link 00: | ||
- | ifconfig ngeth1 inet 192.168.254.36 netmask 255.255.255.0 | + | ifconfig ngeth1 inet 192.168.254.36 netmask 255.255.255.0</ |
- | ngctl msg re0:lower addfilter '{ vid=1001 hook=" | + | Добавляем фильтр в ng_vlan для влана 1001: |
- | ngctl msg re0:lower addfilter '{ vid=1002 pcp=6 cfi=1 hook=" | + | < |
+ | Добавляем фильтр в ng_vlan для влана 1002, так же задаем доп параметры: | ||
+ | < | ||
- | + | Проверяем что фильтры добавились, | |
- | # ngctl msg re0:lower gettable | + | < |
Rec'd response " | Rec'd response " | ||
- | Args: { n=2 filter=[ { hook=" | + | Args: { n=2 filter=[ { hook=" |
- | # ngctl msg re0:lower getencap | + | Проверяем режим инкапсуляции пакетов: |
+ | < | ||
Rec'd response " | Rec'd response " | ||
- | Args: 1 | + | Args: 1</ |
- | # ngctl msg re0:lower getencapproto | + | Проверяем номер протокола для инкапсуляции/ |
+ | < | ||
Rec'd response " | Rec'd response " | ||
- | Args: 0x8100 | + | Args: 0x8100</ |
- | # ngctl msg re0:lower delvidflt 1001 | + | Удаляем фильтр для влан 1001 (интерфейс __ngeth0__ при этом не удаляется из системы!): |
+ | < | ||
- | # ngctl msg re0:lower gettable | + | Проверяем что удалилось: |
+ | < | ||
Rec'd response " | Rec'd response " | ||
- | Args: { n=1 filter=[ { hook=" | + | Args: { n=1 filter=[ { hook=" |
- | # ngctl msg re0:lower delfilter '" | + | Удаляем фильтр для влан 1002 (интерфейс __ngeth1__ при этом не удаляется из системы!): |
+ | < | ||
- | # ngctl msg re0:lower gettable | + | Убеждаемся что все фильтры удалены: |
+ | < | ||
Rec'd response " | Rec'd response " | ||
- | Args: {} | + | Args: {}</ |
+ | |||
+ | |||
+ | {{tag> |