Re: bhyve with lagg failover doesn't work on wifi

From: John Nielsen <lists_at_jnielsen.net>
Date: Fri, 29 Jul 2016 13:06:52 -0600
Generally speaking, you can't bridge the station side of a wireless link. The access point will only accept frames with the station's MAC address. So what you are seeing is expected, unfortunately.

Your best bet is probably to do NAT. Take lagg0 out of the bridge and use it as your "public" interface. Assign a local IP to the bridge. Run a DHCP server on your host (or in another VM on the bridge if you like) or just use static internal IPs on your VMs. Enable IP forwarding (gateway_enable=yes in rc.conf). Configure your firewall to NAT your private range out lagg0.

You can do other things with tunneling, etc. but you'll need a remote endpoint for the tunnel. (If your access point runs FreeBSD you can use either vxlan or gif+EtherIP and just use the wireless link to carry the tunnel traffic, but I suspect that you want to roam between arbitrary access points.)

> On Jul 28, 2016, at 10:56 PM, Randy Westlund <rwestlun_at_gmail.com> wrote:
> 
> I'm using bhyve on 11.0-BETA2, bridging tap0 to lagg0, a failover
> between wifi and ethernet.  The bhyve VM's networking only works I'm
> using ethernet.
> 
>> # Lagg config.
>> ifconfig_em0="up"
>> create_args_wlan0="wlanaddr 3c:97:0e:46:70:ca"
>> wlans_iwn0="wlan0"
>> ifconfig_wlan0="WPA"
>> cloned_interfaces="lagg0 bridge0 tap0"
>> ifconfig_lagg0="laggproto failover laggport em0 laggport wlan0 DHCP"
>> # tap0 and bridge0 are for bhyve.
>> ifconfig_bridge0="addm lagg0 addm tap0"
> 
> With the ethernet cable connected, the VM's networking works.  But when
> I remove the ethernet cable and lagg0 fails over to wifi, the VM can no
> longer use the network.
> 
> I can use tcpdump to see the DHCP packets going along this path:
>    vtnet0 -> tap0 -> bridge0 -> lagg0 -> wlan0
> 
> The DHCP requests appear on wlan0.  But the router never sees them.
> 
> Here's the ifconfig output when wlan0 is active:
> 
>> em0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
>>        options=4219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO>
>>        ether 3c:97:0e:46:70:ca
>>        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
>>        media: Ethernet autoselect
>>        status: no carrier
>> lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
>>        options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
>>        inet6 ::1 prefixlen 128
>>        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
>>        inet 127.0.0.1 netmask 0xff000000
>>        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
>>        groups: lo
>> wlan0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
>>        ether 3c:97:0e:46:70:ca
>>        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
>>        media: IEEE 802.11 Wireless Ethernet MCS mode 11ng
>>        status: associated
>>        ssid neural_network channel 1 (2412 MHz 11g ht/40+) bssid c4:04:15:90:f5:fd
>>        regdomain FCC country US authmode WPA2/802.11i privacy ON
>>        deftxkey UNDEF AES-CCM 2:128-bit AES-CCM 3:128-bit txpower 30 bmiss 10
>>        scanvalid 60 protmode CTS ampdulimit 64k ampdudensity 8
>>        -amsdutx amsdurx shortgi -stbc wme roaming MANUAL
>>        groups: wlan
>> lagg0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
>>        ether 3c:97:0e:46:70:ca
>>        inet 192.168.1.17 netmask 0xffffff00 broadcast 192.168.1.255
>>        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
>>        media: Ethernet autoselect
>>        status: active
>>        groups: lagg
>>        laggproto failover lagghash l2,l3,l4
>>        laggport: em0 flags=1<MASTER>
>>        laggport: wlan0 flags=4<ACTIVE>
>> bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
>>        ether 02:4a:6b:6e:fc:00
>>        nd6 options=9<PERFORMNUD,IFDISABLED>
>>        groups: bridge
>>        id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
>>        maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
>>        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
>>        member: tap0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
>>                ifmaxaddr 0 port 6 priority 128 path cost 2000000
>>        member: lagg0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
>>                ifmaxaddr 0 port 4 priority 128 path cost 55
>> tap0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
>>        options=80000<LINKSTATE>
>>        ether 00:bd:ea:f0:f6:00
>>        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
>>        media: Ethernet autoselect
>>        status: active
>>        groups: tap
>>        Opened by PID 1322
> 
Received on Fri Jul 29 2016 - 17:10:33 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:07 UTC