Debian – Xen 4.4 mixed routed/bridged network vm does not work

debianxen

I have updated one of my servers from Xen 4.1.4 (Debian squeeze) to Xen 4.4.1 (Debian jessie). As xend/xm is deprecated I would like to use the xl tool kit with Xen 4.4.1. But now I have issues with the networking setup of my VMs.

My VMs use a mixed routed and bridged interface setup. Internal traffic as well as the experimental IPv6 interface is bridged while the interface holding the public IP is routed. However, Xen 4.4.1 seems to completely ignore my script/bridge/vifname variables in the vm configuration and only uses the default vif script and interface names.

How can I get my existing vm configuration to run successfully on Xen 4.4.1?

Please find the relevant configuration/log files below:

VMs network configuration: (Mentioned bridges are pre-created via /etc/network/interfaces, replaced original public IP address)

vif=['mac=fe:fd:1:00:00:0, vifname=int-vm0, script=vif-bridge, bridge=int',
     'mac=fe:fd:1:00:00:1, vifname=ext-vm0,ip=a.b.c.d', 
     'mac=fe:fd:1:00:00:2, vifname=v6-vm0, script=vif-bridge, bridge=v6']

/etc/xen/xl.conf

# default vif script to use if none is specified in the guest config
#vif.default.script="vif-bridge"
vif.default.script="/etc/xen/scripts/vif-route"

# default bridge device to use with vif-bridge hotplug scripts
#vif.default.bridge="xenbr0"

Relevant networking syslog entries when starting the virtual host:

Dec  4 15:47:00 host root: /etc/xen/scripts/block: add XENBUS_PATH=backend/vbd/16/51713
Dec  4 15:47:00 host root: /etc/xen/scripts/vif-route: online type_if=vif XENBUS_PATH=backend/vif/16/0
Dec  4 15:47:00 host root: /etc/xen/scripts/vif-route: online type_if=vif XENBUS_PATH=backend/vif/16/1
Dec  4 15:47:00 host root: /etc/xen/scripts/vif-route: online type_if=vif XENBUS_PATH=backend/vif/16/2
Dec  4 15:47:00 host kernel: [83460.131540] IPv6: ADDRCONF(NETDEV_UP): vif16.0: link is not ready
Dec  4 15:47:00 host kernel: [83460.135514] IPv6: ADDRCONF(NETDEV_UP): vif16.1: link is not ready
Dec  4 15:47:00 host kernel: [83460.140061] IPv6: ADDRCONF(NETDEV_UP): vif16.2: link is not ready
Dec  4 15:47:00 host root: /etc/xen/scripts/vif-route: Successful vif-route online for vif16.2.
Dec  4 15:47:00 host root: /etc/xen/scripts/vif-route: Writing backend/vif/16/2/hotplug-status connected to xenstore.
Dec  4 15:47:00 host root: /etc/xen/scripts/vif-route: Successful vif-route online for vif16.0.
Dec  4 15:47:00 host root: /etc/xen/scripts/vif-route: Writing backend/vif/16/0/hotplug-status connected to xenstore.
Dec  4 15:47:00 host root: /etc/xen/scripts/vif-route: Successful vif-route online for vif16.1.
Dec  4 15:47:00 host root: /etc/xen/scripts/vif-route: Writing backend/vif/16/1/hotplug-status connected to xenstore.

Please let me know if you need more information.

Best Answer

The given mac addresses in the vif section of the configuration miss the leading zeros which seems to confuse the mac address parser within libxl and causing it to ignore all configuration items after the mac address.

You can check the parser by using the debug output of the xl create command

xl create vm0 -d -n

The following network configuration works for my vm now: (Replaced public IP address)

vif=['mac=fe:fd:01:00:00:00, vifname=int-vm0, script=vif-bridge, bridge=int',
     'mac=fe:fd:01:00:00:01, vifname=ext-vm0, ip=a.b.c.d', 
     'mac=fe:fd:01:00:00:02, vifname=v6-vm0, script=vif-bridge, bridge=v6']