Сеть в Xen

Материал из Xgu.ru

Перейти к: навигация, поиск
stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.


Короткий 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!

[править] Количество сетевых интерфейсов в гостевом домене

Windows XP с 8 сетевыми интерфейсами

В 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

[править] Дополнительная информация

Процедуры конфигурирования виртуальных сетей различной сложности детально описаны здесь:

Использование VLAN'ов в Xen:

Регулирование пропускной способности виртуальной сети:

Xen
Xen

Виртуализация и паравиртуализация
Эмуляция | Виртуализация | Паравиртуализация | Рекурсивная виртуализация
Паравиртуальные драйверы | Виртуализация ввода/вывода

Общие вопросы по Xen
Аппаратные требования Xen | Поддержка Xen операционными системами | Поддерживаемые аппаратные архитектуры |
Примеры использования Xen | Сравнение виртуальных машин |
Хостинг на Xen
Альтернативы Xen

свободные: KVM | LXC | OpenVZ | VServer | QEMU | VirtualBox
проприетарные: Hyper-V | VMware ESX Server

Технические вопросы
Инсталляция Xen | Конфигурационный файл домена
ОС в Xen: Linux small icon.png Linux | Solaris small icon.png OpenSolaris | Freebsd small icon.png FreeBSD | Openbsd small icon.png OpenBSD | Netbsd small icon.png NetBSD | Windows xp small icon.png Windows XP | Windows vista small icon.png Windows Vista
Устройства: Блочные | USB | SCSI | Сеть | PV-драйверы для Linux | PV-драйверы для Windows | Консоль

Распределение ресурсов между доменами | Перенос системы внутрь Xen | HVM -> PV

Управление и кластеризация | Enomalism | Xen+DRBD | Ganeti | Convirt 2.0 | SkyCover Infrastructure