Oracle VM, XEN, транк и VLAN #1

У нас Oracle VM — серверная виртуализация с централизованным управлением на базе xen.

Мы покупаем физические сервера с двумя сетевыми интерфейсами, используя так — один управляющий и для доступа к СХД (где лежат запускаемые образа ВМ), другой для ВМ (на него пробрасываются VLANы).

У меня возникло желание связать два интерфейса и бросить VLANы поверх транка. Это удвоило бы скорость доступа к СХД, без каких-либо дополнительных затрат. Но к сожалению это невозможно (на самом деле возможно, читайте вторую статью).

Дело в том, что для нормальной работы надо отключить ARP и MULTICAST на физическом интерфейсе, через который проходят VLAN (и на бриджах), а так же назначить им MAC FE:FF:FF:FF:FF:FF. Обычно это делается при старте xend, скриптом прописанным в директиве network-script в /etc/xen/xend-config.sxp.

Но сделать так на bonding интерфейсе не получается, не будет работать IP на нем самом. Сделать на включенных в bond интерфейсах тоже нельзя т.к. маки назначенные на этом уровне будут присвоены bonding интерфейсу.

Для желающих повторить, вот вся использованная в эксперименте конфигурация:

/etc/xen/xend-config.sxp:

...
#(network-script network-bridges)
...

/etc/sysconfig/network-scripts/ifcfg-bond0:

DEVICE=bond0
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.0.1.9
NETMASK=255.255.255.0
#ARP=no

/etc/sysconfig/network-scripts/ifcfg-bond0.2002:

DEVICE=bond0.2002
VLAN=yes
BRIDGE=office
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
MACADDR=FE:FF:FF:FF:FF:FF
ARP=no
MULTICAST=no

/etc/sysconfig/network-scripts/ifcfg-eth0:

DEVICE=eth0
BOOTPROTO=none
SLAVE=yes
MASTER=bond0
HWADDR=00:30:48:79:1E:06
ONBOOT=yes
#MACADDR=FE:FF:FF:FF:FF:FF
#ARP=no

/etc/sysconfig/network-scripts/ifcfg-eth1:

DEVICE=eth1
BOOTPROTO=none
SLAVE=yes
MASTER=bond0
HWADDR=00:30:48:79:1E:07
ONBOOT=yes
#MACADDR=FE:FF:FF:FF:FF:FF
#ARP=no

/etc/sysconfig/network-scripts/ifcfg-office:

DEVICE=office
TYPE=Bridge
BOOTPROTO=none
ONBOOT=yes
ARP=no
MULTICAST=no

Получается, что ВМ подключенная к бриджу office стабильно получает IP по DHCP, но ICMP работает через раз. Иногда может сразу пойти (запускается с ВМ в сторону хоста в сети), иногда с задержкой, а иногда вообще не работает. Причем, в отношении одного хоста сети может развиться один сценарий, а в отношении другого другой. Более того, ICMP может в одну сторону работать, а в другую нет (странно правда?).

Между ВМ, размещенными на этом же сервере, все ок.

P.S. В следующей статье всё вышло.