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. В следующей статье всё вышло.