The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Использование нескольких сетевых карт в XEN 3.0 (xen ethernet bridge network virtual)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: xen, ethernet, bridge, network, virtual,  (найти похожие документы)
From: Михаил Сгибнев Date: Mon, 22 May 2008 17:02:14 +0000 (UTC) Subject: Использование нескольких сетевых карт в XEN 3.0 Оригинал: http://dreamcatcher.ru/index.php?option=com_content&task=view&id=97&Itemid=2 Краткая статья, повествующая о назначении различных физических сетевых интерфейсов гостевым доменам. Перевод: Сгибнев Михаил, Original Xen - классная штука, но работа с несколькими сетевыми платами для меня оказалась большой проблемой. Есть несколько теоретических документов, описывающих принцип такой работы, но практической реализации мне встретить не удалось. Данная статья призвана заполнить этот пробел. Использование бриджа для Dom является неплохой идеей, но в этом случае любые пакеты могут быть перехвачены другим Dom. Наличие одной сетевой платы в Xen означает, что есть теоретическая возможность снифить пакеты со всех Dom. Решить данную проблему нам поможет наличие нескольких сетевых карт. В данном случае мы имеем сервер с тремя сетевыми картами, при этом первая используется для доступа к Dom0 и другим гостевым DomN, вторая для работы с Dom1 и третья для работы с Dom2. Файл конфигурации Dom должен выбрать соответствующий бридж для каждого домена. Топология eth0 - xenbr0 - Dom0, DomN eth1 - xenbr1 - Dom1 (cannot be sniffed by Dom0, DomN or Dom2) eth2 - xenbr2 - Dom2 (cannot be sniffed by Dom0, Dom1 or Domn) Преимущество использования бриджа состоит в отсутствии маршрутизации. /etc/xen/xend-config.sxp: ... #(network-script network-bridge) (network-script my-network-script) ... Изменим скрипт для работы больше чем с одним мостом: /etc/xen/scripts/my-network-script: #!/bin/sh dir=$(dirname "$0") "$dir/network-bridge" "$@" vifnum=0 netdev=eth0 bridge=xenbr0 "$dir/network-bridge" "$@" vifnum=1 netdev=eth1 bridge=xenbr1 "$dir/network-bridge" "$@" vifnum=2 netdev=eth2 bridge=xenbr2 Не забудьте выставить права доступа chmod u+x для этого скрипта! В заключение сконфигурируем каждый DomU: /etc/xen/anyXmDomain.cfg: (не забудьте изменить mac-адрес) ... # use eth0 for this DomU vif = ['ip=10.XX.XX.230,mac=00:16:de:ad:fa:ce,bridge=xenbr0'] ... или ... # use eth1 for Dom1 vif = ['ip=10.XX.XX.234,mac=00:16:de:ad:be:ef,bridge=xenbr1'] ... или ... # use eth2 for Dom2 vif = ['ip=10.XX.XX.238,mac=00:16:be:ef:fa:ce,bridge=xenbr2'] ... Как я уже говорил, для Dom0 или DomU нет никакой маршрутизации, кроме обычного шлюза по умолчанию, как если бы вы работали с единственной сетевой картой, подключенной к Xen. Для DomU ничего кардинально не меняется. Каждый DomU будет автоматически использовать бридж, определенный в файле конфигурации. Единственное отличие, на которое вы обратите внимание заключается в том, что светодиоды сетевых карт будут мигать только когда отсылаются/принимаются пакеты с соответствующих доменов. Вы даже можете выдернуть патчкорд из NIC (eth0) в то время как Dom1 (eth1) и Dom2 (eth2) будут продолжать свою работу. Dom0 routing: # netstat -arn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 10.XX.XX.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 10.XX.XX.254 0.0.0.0 UG 0 0 0 eth0 Dom0 bridging: # brctl show bridge name bridge id STP enabled interfaces xenbr0 8000.feffffffffff no peth0 vif0.0 vif1.0 vif3.0 vif4.0 xenbr1 8000.feffffffffff no peth1 vif0.1 vif6.0 xenbr2 8000.feffffffffff no peth2 vif0.2 vif7.0 Каждый DomU может использоваться как обычно. Сам DomU даже не знает, что использует другой мост. С точки зрения DomUs есть (виртуальная) сетевая карта, которая будет использоваться как eth0. Dom1/Dom2 eth0 configuration: (HWaddr is Dom1) # ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:16:DE:ED:BE:EF inet addr:10.XX.XX.234 Bcast:10.XX.XX.255 Mask:255.255.255.0 inet6 addr: fe80::216:daff:feda:ba5e/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:257357 errors:0 dropped:0 overruns:0 frame:0 TX packets:238053 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:32954128 (31.4 MiB) TX bytes:51239288 (48.8 MiB) Проблем с маршрутизацией тоже никаких не возникает. Dom1/Dom2 routing: # netstat -arn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 10.XX.XX.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 10.XX.XX.254 0.0.0.0 UG 0 0 0 eth0 Вот, славная победа и результат достигнут, все расходятся пить пиво. Я считаю это более простым и красивым решением по сравнению с настройкой шины pci непосредственно от DomX, который также был бы возможным.

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1, Илья (??), 17:11, 03/05/2010 [ответить]  
  • +/
            eth0 - xenbr0 - Dom0, DomN
            eth1 - xenbr1 - Dom1 (cannot be sniffed by Dom0, DomN or Dom2)
            eth2 - xenbr2 - Dom2 (cannot be sniffed by Dom0, Dom1 or Domn)

    В данном примере dom0 может снифить все сетевые мосты, попробуйте запустить tcpdump.


    Если инетресно, я могу выложить статью о примерно такой-же схеме, только на сервер поступает тагированый трафик, а виртуалкам раздаются разные Vlan-ы.

     
  • 2, Брызгалов Константин (ok), 20:05, 09/09/2010 [ответить]  
  • +/
    Да интересно, выкладывайте!
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру