Hello everyone!
I need help with bridging VLANs and "tap" interfaces for bhyve-VMs. I assume I have misunderstood of networking basics here so please don't kick me too hard.
I've already asked at the churchers/vm-bhyve (https://github.com/churchers/vm-bhyve/issues/155), but no solution so far.
The short version of this question is: Is it posible to have bridge at "parent"(trunk) interface the same time as bridging VLANs of this interface (bridging VLANs and "parent" with "tap" IF-s)? How to solve/bypass this problem?
What I have now:
Host
with 1 interface (igb0) as trunk port for VLANs, 2 VLAN id's ("default"=1 and another one=22), and 1 bhyve-VM so far. I use the sysutils/vm-bhyve to manage VMs.
IP "inside" Win12r2-vm is 192.168.22.12/24
It's the working config - host and Win12r2-vm have access to network and internet.
But as soon as I add new bridge (bridge1, vm-switch name=public1) at igb0 with second VM for default VLAN in mind, networking for Win12r2-vm guest stops working.
Removing igb0 from bridge1
turns back working guest network.
I need help with bridging VLANs and "tap" interfaces for bhyve-VMs. I assume I have misunderstood of networking basics here so please don't kick me too hard.
I've already asked at the churchers/vm-bhyve (https://github.com/churchers/vm-bhyve/issues/155), but no solution so far.
The short version of this question is: Is it posible to have bridge at "parent"(trunk) interface the same time as bridging VLANs of this interface (bridging VLANs and "parent" with "tap" IF-s)? How to solve/bypass this problem?
What I have now:
Host
Code:
#uname -vp
FreeBSD 11.0-RELEASE-p8 #0 r316704: Tue Apr 11 20:26:00 MSK 2017 user0@bhyve0.local:/usr/obj/usr/src/sys/GENERIC amd64
Code:
# cat /etc/rc.conf
zfs_enable="YES"
ifconfig_igb0="inet 100.1.1.11 netmask 255.255.0.0"
defaultrouter="100.1.1.1"
vlans_igb0="22"
ifconfig_igb0_22="up"
hostname="bhyve0.local"
vm_enable="YES"
vm_dir="zfs:zdata/bhyve"
vm_list="Win12r2"
vm_delay="20"
Code:
# ifconfig
igb0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=6403bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6>
ether 0c:c4:7a:XX:XX:XX
inet 100.1.1.11 netmask 0xffff0000 broadcast 100.1.255.255
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
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 0x3
inet 127.0.0.1 netmask 0xff000000
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
groups: lo
igb0.22: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=303<RXCSUM,TXCSUM,TSO4,TSO6>
ether 0c:c4:7a:XX:XX:XX
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
vlan: 22 vlanpcp: 0 parent interface: igb0
groups: vlan
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
description: vm-public22
ether 02:c2:88:YY:YY:00
nd6 options=1<PERFORMNUD>
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: igb0.22 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 4 priority 128 path cost 2000000
tap0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
description: vmnet-Win12r2-0-public22
options=80000<LINKSTATE>
ether 00:bd:2a:ZZ:ZZ:ZZ
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect
status: active
groups: tap
Opened by PID 91231
Code:
# cat ~/bhyve/.config/system.conf:
switch_list="public22"
ports_public22="igb0.22"
Code:
# vm switch list
NAME TYPE IDENT VLAN NAT PORTS
public22 auto bridge0 - - igb0.22
Code:
# cat ~/bhyve/Win12r2/Win12r2.conf:
guest="windows"
uefi="yes"
cpu=4
memory=8G
graphics="yes"
graphics_listen="100.1.1.11"
graphics_res="1600x900"
graphics_wait="no"
network0_type="virtio-net"
network0_switch="public22"
network0_mac="58:9c:fc:XX:XX:XX"
disk0_type="ahci-hd"
disk0_name="disk0"
disk0_dev="sparse-zvol"
uuid="XXX-xx-xxx..."
IP "inside" Win12r2-vm is 192.168.22.12/24
It's the working config - host and Win12r2-vm have access to network and internet.
But as soon as I add new bridge (bridge1, vm-switch name=public1) at igb0 with second VM for default VLAN in mind, networking for Win12r2-vm guest stops working.
Code:
...
bridge1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
description: vm-public0
ether 02:c2:88:YY:YY:01
nd6 options=1<PERFORMNUD>
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: igb0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 2 priority 128 path cost 20000
Removing igb0 from bridge1
Code:
bridge1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
description: vm-public0
ether 02:c2:88:YY:YY:01
nd6 options=1<PERFORMNUD>
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