URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 36824
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Q-in-Q (VLAN stacking) в Linux"

Отправлено auto_tips , 01-Мрт-07 14:10 
Q-in-Q  - проброс VLAN внутри  другого VLAN.

host1:

   vconfig set_name_type VLAN_PLUS_VID_NO_PAD
   vconfig add eth0 4
   ifconfig vlan4 10.1.1.1 netmask 255.255.255.0 up
   vconfig add vlan4 8
   ifconfig vlan8 192.168.1.1 netmask 255.255.255.0 up

host2:

   vconfig set_name_type VLAN_PLUS_VID_NO_PAD
   vconfig add eth0 4
   ifconfig vlan4 10.1.1.2 netmask 255.255.255.0 up
   vconfig add vlan4 8
   ifconfig vlan8 192.168.1.2 netmask 255.255.255.0 up

ragahost ~ # ping 192.168.1.2
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.820 ms

ragahost ~ # tcpdump -e -i eth0
22:40:47.297489 00:0e:0c:9b:fa:ce (oui Unknown) > 00:13:d4:8b:c8:b6 (oui Unknown),
ethertype 802.1Q (0x8100), length 106: vlan 4, p 0, ethertype 802.1Q, vlan 8, p 0,
ethertype IPv4, 192.168.1.2 > 192.168.1.1: ICMP echo request, id 64531, seq 146, length 64

URL:
Обсуждается: https://www.opennet.ru/tips/info/1381.shtml


Содержание

Сообщения в этом обсуждении
"Q-in-Q (VLAN stacking) в Linux"
Отправлено Аноним , 01-Мрт-07 14:10 
а зачем вилан внутри вилана нужен впинципе?

не ради флейма, просто интересно узнать.


"Q-in-Q (VLAN stacking) в Linux"
Отправлено Аноним , 01-Мрт-07 15:52 
>а зачем вилан внутри вилана нужен впинципе?
>
>не ради флейма, просто интересно узнать.

Первое, что в голову приходит это преодоление лимита в 4К вланов. Второй пример - транзит вланов клиентов через оборудование провайдера. Третий вариант, когда в большой сети где каждому клиенту (считай порту) выделяется свой влан, удобно каждому свичу дать отдельный влан и вланы клиентов гнать через него, т.е. путь влана прописывается только для свича, клиенские вланы трогаем только на входе и выходе.


"Q-in-Q (VLAN stacking) в Linux"
Отправлено Аноним , 02-Мрт-07 07:54 
Q-in-Q - необходимая для операторов вещь. По причинам, уже описанным в предыдущем посте.

"Q-in-Q (VLAN stacking) в Linux"
Отправлено Dmitry , 03-Мрт-07 20:06 
ifconfig vlan4 10.1.1.1 netmask 255.255.255.0
А это зачем? Не достаточно ли просто поднять интерфейс?

"Q-in-Q (VLAN stacking) в Linux"
Отправлено emp , 04-Мрт-07 22:40 
а любой свитч это дело пережуёт ?
поддерживает ли это дело FreeBSD ?

"Q-in-Q (VLAN stacking) в Linux"
Отправлено _umka_ , 11-Мрт-07 19:55 
фря поддерживает с мелким патчем (возможно в 4ке и его не надо)
--- /usr/src/sys.orig/net/if_vlan.c     Mon Jan  8 12:03:15 2007
+++ if_vlan.c   Sun Mar 11 16:46:00 2007
@@ -155,7 +158,7 @@
  * is too big to fit into CPU cache.
  */
static struct mtx ifv_mtx;
-#define        VLAN_LOCK_INIT()        mtx_init(&ifv_mtx, "vlan_global", NULL, MTX_DEF)
+#define        VLAN_LOCK_INIT()        mtx_init(&ifv_mtx, "vlan_global", NULL, MTX_RECURSE)
#define        VLAN_LOCK_DESTROY()     mtx_destroy(&ifv_mtx)
#define        VLAN_LOCK_ASSERT()      mtx_assert(&ifv_mtx, MA_OWNED)
#define        VLAN_LOCK()             mtx_lock(&ifv_mtx)
@@ -997,8 +988,8 @@
        /* VID numbers 0x0 and 0xFFF are reserved */
        if (tag == 0 || tag == 0xFFF)
                return (EINVAL);
-       if (p->if_type != IFT_ETHER)
-               return (EPROTONOSUPPORT);
+//     if (p->if_type != IFT_ETHER)
+//             return (EPROTONOSUPPORT);
        if ((p->if_flags & VLAN_IFFLAGS) != VLAN_IFFLAGS)
                return (EPROTONOSUPPORT);
        if (ifv->ifv_trunk)
======
а вот Linux (RH EL3) - судя по tcpdump -это не поддерживает.

# tcpdump -e -n -i eth0
tcpdump: listening on eth0
16:58:09.313703 0:3:47:a6:47:a3 Broadcast 8100 60: 802.1Q vlan#1 P0 802.1Q vlan#10 P0 arp who-has 172.20.4.2 tell 172.20.4.1
16:58:09.313744 0:2:b3:d7:0:97 0:3:47:a6:47:a3 8100 46: 802.1Q vlan#10 P0 arp reply 172.20.4.2 is-at 0:2:b3:d7:0:97

декодит нормально, а вот назад отвечает без parent vlan tag.
172.20.4.1 - freebsd with patch
172.20.4.2 - linux.


"Q-in-Q (VLAN stacking) в Linux"
Отправлено Дохтур , 04-Мрт-07 23:34 
freebsd это не умеет.

>ifconfig vlan4 10.1.1.1 netmask 255.255.255.0
>А это зачем? Не достаточно ли просто поднять >интерфейс?

мне надо было для тестов.


"Q-in-Q (VLAN stacking) в Linux"
Отправлено _umka_ , 12-Мрт-07 06:48 
умеет. а в линухе эта поддержка похоже появилась весьма не давно.

"Q-in-Q (VLAN stacking) в Linux"
Отправлено proxx , 16-Мрт-07 16:39 
линух это давно умееет, только нужно еще патчить драйвера сетевых карт чтоб они пакеты длинной 1508 байт пропускали, ну и свитчи тоже не должны их резать..

"Q-in-Q (VLAN stacking) в Linux"
Отправлено Serge , 19-Мрт-07 19:43 
По-моему 1504 байта достаточно.

"Q-in-Q (VLAN stacking) в Linux"
Отправлено Lion , 22-Мрт-07 04:05 
Для Q-in-Q нужно 1508 (4+4 - там же 2 VLAN тега)

"Q-in-Q (VLAN stacking) в Linux"
Отправлено Serge , 22-Мрт-07 19:34 
Откуда 4+4 то?
Всего вланов 4096 - это 2^12, следовательно 2 раза по 12 бит получается 24 бита, а это как раз 4 байта!

"Q-in-Q (VLAN stacking) в Linux"
Отправлено Ilijaz , 25-Мрт-07 12:39 
vlan 4, !!!p 0,!!!! <- а про это мы забыли?! 1508 байт!

"Q-in-Q (VLAN stacking) в Linux"
Отправлено Прохожий , 21-Мрт-07 13:22 
>Q-in-Q - необходимая для операторов вещь. По причинам, уже описанным в предыдущем посте

Нормальный оператор не может себе позволить нормальный DSLAM?
Зачем изобретать велосипед то, для этого есть спец. оборудование которое специально создано для решения этих задач


"Q-in-Q (VLAN stacking) в Linux"
Отправлено Andrew Kolchoogin , 23-Мрт-07 13:03 
DSLAM? Digital Subscriber Line Access Multiplexer? А каким местом он к Ethernet'у и 802.1q? Это же ADSL...

"Q-in-Q (VLAN stacking) в Linux"
Отправлено Andrew Shtabnoi , 14-Дек-07 07:11 
ADSL - это ATM, который потом надо как-то во что-то инкапсулировать дабы передавать по ethernet-сетям. вот и спасает qnq, в худшем случае просто .1q

"Q-in-Q (VLAN stacking) в Linux"
Отправлено denis , 06-Авг-09 10:48 
А какой MTU должен быть в этом случае?
Для такого получается 1508, я прав?

"Q-in-Q (VLAN stacking) в Linux"
Отправлено martin , 08-Июн-11 12:49 
ну и какой влан  в какой вложен?
vconfig set_name_type VLAN_PLUS_VID_NO_PAD задает вид именования vlan
далее создается два vlan и передаются в транке с одного интерфейса
а где конфетка?

"Q-in-Q (VLAN stacking) в Linux"
Отправлено Костя , 29-Ноя-11 14:57 
лучше для наглядности пример, когда vlan 8 в vlan 8 вложили....

"Q-in-Q (VLAN stacking) в Linux"
Отправлено shtabnoi , 31-Янв-13 19:42 
> лучше для наглядности пример, когда vlan 8 в vlan 8 вложили....

Router(config)# interface gigabitEehernet0/0.008008
Router(config-subif)# encapsulation dot1q 8 second-dot1q 8