Сеть в Xen
Материал из Xgu.ru
- Короткий URL: xen/net
На этой странице должна быть представлена
информация о
построении виртуальных сетей на основе виртуальных
машин Xen.
Рассмотрены принципы использования сети в доменах Xen, организации и управления виртуальными связями между виртуальными машинами.
Содержание |
[править] Способы подключения виртуальных машин к сети
[править] bridged
Создание моста:
brctl addbr br0 ip link set br0 up
Такой мост подойдёт для связи виртуальных машин между собой, но не для связи машины с внешним миром.
Для связи с внешним миром нужно использовать мост, который подключен к сетевому интерфейсу. Например, если мы хотим использовать интерфейс eth0:
/etc/xen/scripts/network-bridge start bridge=eth0bridged netdev=eth0
Мост будет называться eth0bridged. В конфигурационном файле домена нужно будет использовать именно это название.
Если мы хотим создать несколько мостов, это имеет смысл сделать в специальном файле-скрипте, который будет вызываться при старте машины (до того как запущен xend).
Здесь мы создаём два моста, один внешний и один внутренний: eth0bridged и br0.
%# cat /etc/network/xen brctl addbr br0 ip link set br0 up /etc/xen/scripts/network-bridge start bridge=eth0bridged netdev=eth0 %# chmod +x /etc/network/xen
Вызывать скрипт можно, например, из /etc/network/interfaces(для Debian):
auto eth0 iface eth0 inet static address 192.168.1.197 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.198 up /etc/network/xen
[править] bridged, разные мосты на разные VLANы
Можно привязать отдельные мосты на отдельные VLANы. В этом случае можно развернуть сложную сеть с произвольной топологией внутри нескольких хост-систем Xen, которые связаны между собой с помощью тегированного канала. В этом случае становится неважно, на какой из хост-систем исполняется домен, если он подключён к одноимённым мостам (подробнее об этом здесь: Xen поверх DRBD). Кроме этого, привязка мостов к различным VLAN'ам позволяет легко включать реальное оборудование в произвольную точку виртуальной сети.
ifconfig eth1 0.0.0.0 down /etc/xen/scripts/network-bridge start vifnum=4 bridge=tagged0 netdev=eth1 ip link set eth1 up vconfig add eth1 4094 /etc/xen/scripts/network-bridge start vifnum=2 bridge=br0 netdev=eth1.4094 ip link set eth1.4094 up vconfig add eth1 4093 /etc/xen/scripts/network-bridge start vifnum=3 bridge=br1 netdev=eth1.4093 ip link set eth1.4093 up ifconfig eth1.4094 192.168.1.191 route add default gw 192.168.1.198
- eth1 — физический интерфейс, через который будет вестись работа с сетью
- eth1 подключается к мосту tagged0. Если нужно будет взять тегированный трафик, нужно подключаться к этому мосту
- мост br0 подключается на трафик VLAN'а 4094
- мост br1 подключается на трафик VLAN'а 4093
- управляющим VLAN'ом для домена 0 является VLAN 4094, через него нужно будет подключаться, если нужно зайти внутрь домена 0
+ ------ tagged0 / eth1 - vlan4094 - br0 \ vlan4093 - br1
К мостам tagged0, br0, br1 и другим подобным можно подключать
домены как и обычно.
[править] Разные вопросы
[править] Отключение iptables на мостах
Для того чтобы виртуальные мосты работали более приближенно к простому железу, нужно отключить применение правил iptables на самом мосту.
%# sysctl net.bridge.bridge-nf-filter-vlan-tagged=0 %# sysctl net.bridge.bridge-nf-call-ip6tables=0 %# sysctl net.bridge.bridge-nf-call-iptables=0 %# sysctl net.bridge.bridge-nf-call-arptables=0
Это, в частности, помогает справиться с проблемой, когда трафик домена Xen, уходящий через внешний интерфейс обрабатывается правилом MASQUERADE некорректно.
Правило в домене 0:
%# iptables -t nat -A POSTROUTING -o eth1 -s 192.168.72.0/24 -j MASQUERADE
Сначала:
apt-proxy:~# ping google.com PING google.com (64.233.167.99) 56(84) bytes of data. (молчание)
После отключения фильтрации на мостах в домене 0:
# ping google.com PING google.com (64.233.187.99) 56(84) bytes of data. 64 bytes from jc-in-f99.google.com (64.233.187.99): icmp_seq=2 ttl=239 time=145 ms 64 bytes from jc-in-f99.google.com (64.233.187.99): icmp_seq=3 ttl=239 time=143 ms 64 bytes from jc-in-f99.google.com (64.233.187.99): icmp_seq=4 ttl=239 time=142 ms --- google.com ping statistics --- 4 packets transmitted, 3 received, 25% packet loss, time 3009ms rtt min/avg/max/mdev = 142.956/143.791/145.231/1.022 ms
В данном случае домен был подключен через dummy-интерфейс (однако, проблема существует не только для такого подключения, но и прямого подключения через интерфейс):
%# brctl show bridge name bridge id STP enabled interfaces dummy0br 8000.feffffffffff no pdummy0 vif0.1 vif5.0
[править] Проблема с производительностью сети в домене domU
Иногда помогает справиться с проблемой отключение механизма разгрузки TCP (а именно того, что касается отправки трафика). Похоже, что это баг Xen.
%# ethtool -K eth0 tx off
[править] Поддержка jumbo-frames
(Keir Fraser:)
So long as you advertise feature-sg in xenstore then netback will allow the mtu to be increased to jumbo sizes. This doesn't happen automatically -- the user will need to increase mtu both in the vif inside the guest and on the vif exposed in dom0. But apart from that it will work!
[править] Количество сетевых интерфейсов в гостевом домене
В Xen версии до 3.0 включительно существовало ограничение на количество сетевых интерфейсов в гостевом домене, равное трём.
Начиная с версии 3.1 в гостевых доменах Xen поддерживается до 8 сетевых интерфейсов. Однако, нужна и соответствующая поддержка не только со стороны гипервизора, но и ядра гостевой системы. В ядре 2.6.18 (которое до сих пор является основным ядром Xen) такой поддержки нет. Она появляется в более новых ядрах.
Для HVM-доменов поддерживаются до 8 интерфейсов (8 сетевых карт в Windows?! работает! — это жуткое зрелище показано на картинке).
[править] Как сделать так чтобы стартовый скрипт xend вообще не создавал мост?
Использовать
(network-script /bin/true)
в /etc/xen/xend-config.sxp
[править] Дополнительная информация
Процедуры конфигурирования виртуальных сетей различной сложности детально описаны здесь:
- XenWiki XenNetworking (англ.)
- Xen and Shorewall (англ.)
- an attempt to explain xen networking (англ.) — сообщение в списке рассылки Xen
- Debian Administration :: Using multiple network cards in XEN 3.0 (англ.)
- Xen Networking over bonded VLANs. (англ.)
Использование VLAN'ов в Xen:
- Xen network configuration and multiple VLANs (II) (англ.)
- Bridging domains to tagged VLANs in Xen (англ.)
Регулирование пропускной способности виртуальной сети:
- Network Bandwidth Isolation (англ.)
|
---|