Site Tools


software:freebsd:ng_vlan

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
Last revisionBoth sides next revision
software:freebsd:ng_vlan [2015/05/16 13:58]
– [Сообщения] root
software:freebsd:ng_vlan [2022/02/05 04:20]
root
Line 1: Line 1:
-====== QinQ: ng_vlan patch ======+====== FreeBSD QinQ: ng_vlan patch ======
 Патч добавляет функционал в нетграф ноду ng_vlan, в том числе становится возможным делать QinQ. Патч добавляет функционал в нетграф ноду ng_vlan, в том числе становится возможным делать QinQ.
 [[http://www.netlab.linkpc.net/download/software/FreeBSD/patches/ng_vlan.patch|http://www.netlab.linkpc.net/download/software/FreeBSD/patches/ng_vlan.patch]]\\ [[http://www.netlab.linkpc.net/download/software/FreeBSD/patches/ng_vlan.patch|http://www.netlab.linkpc.net/download/software/FreeBSD/patches/ng_vlan.patch]]\\
 [[http://www.freebsd.org/cgi/query-pr.cgi?pr=161908|http://www.freebsd.org/cgi/query-pr.cgi?pr=161908]]\\ [[http://www.freebsd.org/cgi/query-pr.cgi?pr=161908|http://www.freebsd.org/cgi/query-pr.cgi?pr=161908]]\\
 +<note important>Включено в кодовую базу FreeBSD, патч применять больше не требуется.</note>\\
  
  
Line 30: Line 31:
 **аргумент**: нет\\ **аргумент**: нет\\
 **действие**: возвращает: **действие**: возвращает:
-  * **0** - __по умолчанию__, нода пересылает без изменений пакеты не попавшие в фильтры с downstream на nomatch хук. +  * **0** - __по умолчанию__, нода пересылает без изменений пакеты не попавшие в фильтры с **downstream** на **nomatch** хук. 
-  * **1** - если нода делает 802.1Q/P декапсуляцию, и добавляет в mbuf флаг M_VLANTAG, записывает всю информацию (**vid**, **pcp**, **cfi**) в m_pkthdr.ether_vtag перед отправкой пакетов на nomatch хук. Это обычная декапсуляция, подобная той, что делают сетевые драйвера.+  * **1** - если нода делает 802.1Q/P декапсуляцию, и добавляет в mbuf флаг M_VLANTAG, записывает всю информацию (**vid**, **pcp**, **cfi**) в __m_pkthdr.ether_vtag__ перед отправкой пакетов на **nomatch** хук. Это обычная декапсуляция, подобная той, что делают сетевые драйвера.
  
  
Line 42: Line 43:
 **аргумент**: нет\\ **аргумент**: нет\\
 **действие**: возвращает: **действие**: возвращает:
-  * **0** - если нода не делает 802.1Q/P инкапсуляцию, а добавляет в mbuf флаг M_VLANTAG и записывает всю информацию (**vid**, **pcp**, **cfi**) в m_pkthdr.ether_vtag;+  * **0** - если нода не делает 802.1Q/P инкапсуляцию, а добавляет в mbuf флаг M_VLANTAG и записывает всю информацию (**vid**, **pcp**, **cfi**) в __m_pkthdr.ether_vtag__;
 **предупреждения**: **предупреждения**:
-  - если down хук подключён к ng_ether, чей интерфейс if_capenable & IFCAP_VLAN_HWTAGGING то инкапсуляцию произведёт сетевой адаптер, с ethernet_type = 0x8100, значение установленное через NGM_VLAN_SET_ENCAP_PROTO - будет проигнорировано!+  - если **down** хук подключён к ng_ether, чей интерфейс if_capenable & IFCAP_VLAN_HWTAGGING то инкапсуляцию произведёт сетевой адаптер, с ethernet_type = 0x8100, значение установленное через __NGM_VLAN_SET_ENCAP_PROTO__ - будет проигнорировано!
   - если адаптер не поддерживает инкапсуляцию или она отключены то пакеты уйдут в сеть не тегированными.   - если адаптер не поддерживает инкапсуляцию или она отключены то пакеты уйдут в сеть не тегированными.
   * **1** (VLAN_ENCAP_FROM_FILTER) - __по умолчанию__, нода производит 802.1Q/P инкапсуляцию пакетов полученный через хук фильтра   * **1** (VLAN_ENCAP_FROM_FILTER) - __по умолчанию__, нода производит 802.1Q/P инкапсуляцию пакетов полученный через хук фильтра
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 +Включить "неразборчивый" режим = отключить mac фильтры на сетевом адаптере и отключить автоматическое установку mac адреса на исходящих пакетах: 
-ngctl msg re0: setautosrc 0+<code>ngctl msg re0: setpromisc 1 
 +ngctl msg re0: setautosrc 0</code>
  
-ngctl mkpeer re0: vlan lower downstream +Подключаем ng_vlan к re0 адаптеру, таким образом чтобы все пакеты не попавшие в vlan фильтры ушли в ядро: 
-ngctl connect re0: re0:lower upper nomatch+<code>ngctl mkpeer re0: vlan lower downstream 
 +ngctl connect re0: re0:lower upper nomatch</code>
  
-ngctl mkpeer re0:lower eiface vlan1001 ether +Создаём интерфейсы для вланов и подключаем их к ng_vlan на re0: 
-ngctl mkpeer re0:lower eiface vlan1002 ether+<code>ngctl mkpeer re0:lower eiface vlan1001 ether 
 +ngctl mkpeer re0:lower eiface vlan1002 ether</code>
  
-ngctl name re0:lower:vlan1001 ngeth0+Задаём имя интерфейса, mac и ip адрес для созданного влан 1001 интерфейса: 
 +<code>ngctl name re0:lower:vlan1001 ngeth0
 ifconfig ngeth0 link 00:1a:4d:55:9a:43 ifconfig ngeth0 link 00:1a:4d:55:9a:43
-ifconfig ngeth0 inet 192.168.0.36 netmask 255.255.255.0+ifconfig ngeth0 inet 192.168.0.36 netmask 255.255.255.0</code>
  
-ngctl name re0:lower:vlan1002 ngeth1+Задаём имя интерфейса, mac и ip адрес для созданного влан 1002 интерфейса: 
 +<code>ngctl name re0:lower:vlan1002 ngeth1
 ifconfig ngeth1 link 00:1a:4d:55:9a:44 ifconfig ngeth1 link 00:1a:4d:55:9a:44
-ifconfig ngeth1 inet 192.168.254.36 netmask 255.255.255.0+ifconfig ngeth1 inet 192.168.254.36 netmask 255.255.255.0</code>
  
-ngctl msg re0:lower addfilter '{ vid=1001 hook="vlan1001" }' +Добавляем фильтр в ng_vlan для влана 1001: 
-ngctl msg re0:lower addfilter '{ vid=1002 pcp=6 cfi=1 hook="vlan1002" }'+<code>ngctl msg re0:lower addfilter '{ vid=1001 hook="vlan1001" }'</code>
  
 +Добавляем фильтр в ng_vlan для влана 1002, так же задаем доп параметры:
 +<code>ngctl msg re0:lower addfilter '{ vid=1002 pcp=6 cfi=1 hook="vlan1002" }'</code>
  
- +Проверяем что фильтры добавились, смотрим какие фильтры есть: 
-# ngctl msg re0:lower gettable+<code># ngctl msg re0:lower gettable
 Rec'd response "gettable" (4) from "[156]:": Rec'd response "gettable" (4) from "[156]:":
-Args: { n=2 filter=[ { hook="vlan1001" vid=1001 } { hook="vlan1002" vid=1002 pcp=6 cfi=1 } ] }+Args: { n=2 filter=[ { hook="vlan1001" vid=1001 } { hook="vlan1002" vid=1002 pcp=6 cfi=1 } ] }</code>
  
-# ngctl msg re0:lower getencap+Проверяем режим инкапсуляции пакетов: 
 +<code># ngctl msg re0:lower getencap
 Rec'd response "getencap" (5) from "[156]:": Rec'd response "getencap" (5) from "[156]:":
-Args: 1+Args: 1</code>
  
-# ngctl msg re0:lower getencapproto+Проверяем номер протокола для инкапсуляции/декапсуляции: 
 +<code># ngctl msg re0:lower getencapproto
 Rec'd response "getencapproto" (7) from "[156]:": Rec'd response "getencapproto" (7) from "[156]:":
-Args: 0x8100+Args: 0x8100</code>
  
-# ngctl msg re0:lower delvidflt 1001+Удаляем фильтр для влан 1001 (интерфейс __ngeth0__ при этом не удаляется из системы!): 
 +<code># ngctl msg re0:lower delvidflt 1001</code>
  
-# ngctl msg re0:lower gettable+Проверяем что удалилось: 
 +<code># ngctl msg re0:lower gettable
 Rec'd response "gettable" (4) from "[156]:": Rec'd response "gettable" (4) from "[156]:":
-Args: { n=1 filter=[ { hook="vlan1002" vid=1002 pcp=6 cfi=1 } ] }+Args: { n=1 filter=[ { hook="vlan1002" vid=1002 pcp=6 cfi=1 } ] } </code>
  
-# ngctl msg re0:lower delfilter '"vlan1002"'+Удаляем фильтр для влан 1002 (интерфейс __ngeth1__ при этом не удаляется из системы!): 
 +<code># ngctl msg re0:lower delfilter '"vlan1002"'</code>
  
-# ngctl msg re0:lower gettable+Убеждаемся что все фильтры удалены: 
 +<code># ngctl msg re0:lower gettable
 Rec'd response "gettable" (4) from "[156]:": Rec'd response "gettable" (4) from "[156]:":
-Args: {}+Args: {}</code> 
 + 
 + 
 +{{tag>software freebsd net netgraph vlan deprecated mysoft}}
software/freebsd/ng_vlan.txt · Last modified: 2022/03/02 23:11 by root