Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 8 Jan 2016 14:52:45 -0700
From:      John Nielsen <lists@jnielsen.net>
To:        FreeBSD stable <freebsd-stable@freebsd.org>
Subject:   lagg(4) + VLAN + if_bridge(4) vs. ARP
Message-ID:  <A318528D-34D4-459B-B474-5879251C0EA0@jnielsen.net>

next in thread | raw e-mail | index | archive | help
Hi all-

I'm trying to troubleshoot a problem on a machine running recent =
10-STABLE. The machine has two physical interfaces and hosts a number of =
services, including a bhyve VM (FreeBSD 10.2-RELEASE) acting as a =
network appliance. The VM has three interfaces: external, =
internal-trusted and internal-guest. Each VM interface is plumbed to a =
TAP device on the host which in turn is a member of a bridge. Here is =
the current (working) setup:

External <--------> Host <-> Host <-> Host <-> VM
port                re0      bridge2  tap21    vtnet1

Switch <-> Host <-> Host <-> Host <-> Host <-> VM
port       em0      em0.2    bridge0  tap20    vtnet0
            ^
            \-----> Host <-> Host <-> Host <-> VM
                    em0.103  bridge1  tap22    vtnet2

Since there is not much external traffic, most of the bandwidth =
potential of re0 is wasted while em0 is sometimes busy. So I'd like to =
move to a LAGG setup, as below:

External  Trusted  Untrusted
VLAN 99   VLAN 2   VLAN 103
  |         |        |
  \         |       /
   /---------------\   /------> Host <--> Host <-> Host <-> VM
   |     switch    |   |        lagg0.99  bridge2  tap21    vtnet1
   \---------------/   |
       |    |          |  /---> Host <--> Host <-> Host <-> VM
       |    v          |  |     lagg0.2   bridge0  tap20    vtnet0
       |   Host        v  v
       \   re0 <-----> Host <-> Host <--> Host <-> Host <-> VM
        \              lagg0    lagg0.103 bridge1  tap22    vtnet2
         \-> Host       ^
             em0 <------/

So in other words, plugging the external port into the switch, creating =
a new "external" VLAN, adding both em0 and re0 into a new LAGG and =
creating VLAN child interfaces off of that.

I tried the new setup today and it worked except that the VM no longer =
received ARP replies from the external network. Using tcpdump on the =
host's lagg0.99, I saw the ARP request from the VM go out and an ARP =
reply come back, but that's as far as it went. I did not see the arp =
reply on the host's bridge2 or tap21 interfaces, and the VM never =
received it.

I didn't make any changes on the VM, and all I changed on the host was =
the networking via /etc/rc.conf. The host does run ipfw but I verified =
that none of the rules reference any stale interface names. I have also =
previously disabled all firewalling of bridged packets:
  net.link.bridge.pfil_onlyip=3D0
  net.link.bridge.pfil_member=3D0
  net.link.bridge.pfil_bridge=3D0

I also verified that "ifconfig bridge2 addr" contained the MAC addresses =
of both the VM and the external device on the correct ports.

So in the LAGG setup, why aren't the ARP replies going across bridge2 to =
the VM? Any ideas on how to narrow down the cause appreciated.

Thanks!

-John Nielsen




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?A318528D-34D4-459B-B474-5879251C0EA0>