I found strange behavior when tried to bridge vlan from OpenBSD box over mpls. It seems like BSD box sends untagged packets received from mpls tunnel instead of adding vlan tag. Is it known bug or am I just missing something?

OpenBSD running on a PC with two vlans.
vyb-r0# uname -a
OpenBSD vyb-r0.loc 6.3 GENERIC.MP#107 amd64


vlan107 -- mpls enabled vlan:
vyb-r0# ifconfig vlan107
vlan107: flags=88843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,MPLS> mtu 1500
        lladdr 70:71:bc:cc:fb:d4
        description: Kinda uplink interface
        index 7 priority 0 llprio 3
        encap: vnetid 107 parent re0
        groups: vlan
        media: Ethernet autoselect (1000baseT full-duplex)
        status: active
        inet 10.150.0.10 netmask 0xffffff00 broadcast 10.150.0.255

vlan2000 -- vlan that got to be bridged over mpls:
vyb-r0# ifconfig vlan2000
vlan2000: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        lladdr 70:71:bc:cc:fb:d4
        description: local L2 interface
        index 9 priority 0 llprio 3
        encap: vnetid 2000 parent re0
        groups: vlan
        media: Ethernet autoselect (1000baseT full-duplex)
        status: active

bridging interface:
vyb-r0# ifconfig bridge0
bridge0: flags=41<UP,RUNNING>
        index 4 llprio 3
        groups: bridge
priority 32768 hellotime 2 fwddelay 15 maxage 20 holdcnt 6 proto rstp
        designated: id 00:00:00:00:00:00 priority 0
        vlan2000 flags=3<LEARNING,DISCOVER>
                port 9 ifpriority 0 ifcost 0
        mpw0 flags=3<LEARNING,DISCOVER>
                port 6 ifpriority 0 ifcost 0
        Addresses (max cache: 100, timeout: 240):
                e4:6f:13:aa:38:c1 mpw0 1 flags=0<>
                e4:6f:13:aa:37:c1 vlan2000 1 flags=0<>


MPLS tunnel is up and running and I can see MACs and packets coming in and out of tunnel.

vyb-r0# tcpdump -nibridge0 -e
tcpdump: listening on bridge0, link-type EN10MB
13:02:48.323723 e4:6f:13:aa:37:c1 ff:ff:ff:ff:ff:ff 0806 60: arp who-has 10.150.2.40 tell 10.150.2.50 13:02:48.324253 e4:6f:13:aa:38:c1 e4:6f:13:aa:37:c1 0806 60: arp reply 10.150.2.40 is-at e4:6f:13:aa:38:c1 13:02:49.347673 e4:6f:13:aa:37:c1 ff:ff:ff:ff:ff:ff 0806 60: arp who-has 10.150.2.40 tell 10.150.2.50 13:02:49.348255 e4:6f:13:aa:38:c1 e4:6f:13:aa:37:c1 0806 60: arp reply 10.150.2.40 is-at e4:6f:13:aa:38:c1 13:02:50.371668 e4:6f:13:aa:37:c1 ff:ff:ff:ff:ff:ff 0806 60: arp who-has 10.150.2.40 tell 10.150.2.50 13:02:50.372173 e4:6f:13:aa:38:c1 e4:6f:13:aa:37:c1 0806 60: arp reply 10.150.2.40 is-at e4:6f:13:aa:38:c1 13:02:51.395596 e4:6f:13:aa:37:c1 ff:ff:ff:ff:ff:ff 0806 60: arp who-has 10.150.2.40 tell 10.150.2.50 13:02:51.396143 e4:6f:13:aa:38:c1 e4:6f:13:aa:37:c1 0806 60: arp reply 10.150.2.40 is-at e4:6f:13:aa:38:c1

However, those arp replies don't reach 10.150.2.50 on vlan2000.

I've mirrored OpenBSD port on a switch. vlan3000 is a target vlan for port mirroring. Here's tcpdump on another PC that receives mirroring vlan.

#tcpdump -nivlan3000 -e
13:29:46.445351 e4:6f:13:aa:37:c1 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 64: vlan 2000, p 0, ethertype ARP, Request who-has 10.150.2.40 tell 10.150.2.50, length 46 13:29:46.445410 70:71:bc:cc:fb:d4 > b8:38:61:1a:8e:a1, ethertype 802.1Q (0x8100), length 90: vlan 107, p 0, ethertype MPLS unicast, MPLS (label 21, exp 0, ttl 255) (label 20, exp 0, [S], ttl 255) 13:29:46.445820 b8:38:61:1a:8e:a1 > 70:71:bc:cc:fb:d4, ethertype 802.1Q (0x8100), length 86: vlan 107, p 0, ethertype MPLS unicast, MPLS (label 16, exp 0, [S], ttl 254) 13:29:46.445870 e4:6f:13:aa:38:c1 > e4:6f:13:aa:37:c1, ethertype ARP (0x0806), length 60: Reply 10.150.2.40 is-at e4:6f:13:aa:38:c1, length 46

First line is arp-request. (vlan2000)
Line two is arp-request sent over MPLS. (vlan107)
Line three is arp-answer sent over MPLS. (vlan107)
But forth line in simple untagged answer that got to be sent over vlan2000.

I haven't checked if this issue is broadcast only or unicast has same problem. I haven't checked if it is mpw only problem or any point-to-point interface strives too. Bridge works ok with bridging two vlans.

ospfd.conf and ldpd.conf are as simple as it could be.

ospfd.conf:
router-id 10.128.0.10

area 0.0.0.0 {
        interface vlan107
        interface lo1
}


ldpd.conf:
router-id 10.128.0.10

l2vpn OFFICE type vpls {
  bridge bridge0
  interface vlan2000
  pseudowire mpw0 {
     neighbor-id 10.128.0.9
     pw-id 1111
  }
}

address-family ipv4 {
        interface vlan107
}


Things that confuses me is why vlan bridging over mpls isn't working in my setup. Bridging client's vlan is the most common mpls application that happens a lot of times, at least in my experience.

Reply via email to