Интеграция виртуальной сети Xentaur и реальной сети
Материал из Xgu.ru
- Короткий URL: xentaur/real_network
< Xentaur
Нужно:
- Настроить коммутатор
- Настроить хост-систему
Содержание |
[править] Настройка коммутатора
Настройку можно выполнить вручную, или воспользоваться скриптом для автоматизации создания VLAN'ов. Пример скрипта есть на странице VLAN.
[править] Создание нетегированных каналов
Разместите порты по одному (два или больше) в отдельном VLAN'е. Трафик не должен тегироваться.
Количество VLAN'ов должно быть больше или равно максимальному количеству виртуальных мостов, которые будут использоваться в ваших топологиях.
Например, если вы планируете строить топологии, содержащие до 20 мостов, вам понадобится 20 VLAN'ов.
Для удобства будем нумеровать VLAN'ы начиная с 100:
- VLAN 101
- VLAN 100
и т.д.
Допустим, мы будем использовать на коммутаторе порты с 20 по 40. Разместим эти порты в соответствующих VLAN'ах.
- порт 21 — VLAN 101
- порт 22 — VLAN 102
- порт 23 — VLAN 103
- ...
- порт 39 — VLAN 119
[править] Создание тегированных каналов
Через порт 20 пусть передаётся трафик всех этих VLAN'ов в тегированном виде.
[править] Настройка хост-системы
Необходимо сделать так, что
трафик виртуальных мостов внутри хост-системы
тегировался бы тегами созданных на коммутаторе VLAN'ов
и отправлялся через сетевой интерфейс.
Этот сетевой интерфейс должен быть подключён к коммутатору
через интерфейс с тегированным трафиком (в нашем примере это интерфейс 20),
на котором поддерживаются все нужные VLAN'ы.
<sh/>
- !/bin/sh
iface=eth0 iface_ip=192.168.15.254 first_vlan=100 last_vlan=120 bridge_prefix=br
for vlan in `seq ${first_vlan} ${last_vlan}` do
vconfig add ${iface} ${vlan} /etc/xen/scripts/network-bridge start vifnum=$[vlan-100] bridge=${bridge_prefix}${vlan} netdev=${iface}.${vlan}
done
ifconfig ${iface} 0.0.0.0 ifconfig ${iface}.${last_vlan} ${iface_ip}
Будет создано указанное количество (20+1) мостов, которые будут подключены к соответствующим VLAN'ам (номер моста+100).
В последнем VLAN'е размещён домен 0. Порт этого VLAN'а нужна включить в ту сеть, которую раньше был включен сетевой интерфейс домена 0.
[править] Изменение топологии
[править] Пример
Здесь:
- windows1, linux1 и mac1 — реальные хосты;
- cisco1 — реальный маршрутизатор;
- cat1 и cat2 — реальные коммутаторы;
- остальное — виртуальные машины и виртуальные мосты.
Описание топологии:
import os domain=os.environ['xendomain'] network='netw' domains = [ 'qua1', 'qua2', 'dyn3', 'qua4', 'qua5', 'dyn6', 'cisco1', 'linux1', 'windows1', 'mac1' ] domain_types = [ 'quagga', 'quagga', 'xenomips', 'quagga', 'quagga', 'xenomips','cisco', 'linux', 'windows', 'macosx' ] bridges = [ 'br1', 'br2', 'br3', 'br4', 'br5', 'br6', 'cat1', 'cat2', ] vbridges_table ={ 'qua1' : [ 'br1' ], 'qua2' : [ 'br2', 'br5' ], 'dyn3' : [ 'br1', 'br2', 'br3' ], 'qua4' : [ 'br3', 'br4', 'br6' ], 'qua5' : [ 'br5' ], 'dyn6' : [ 'br5', 'br6' ], 'cisco1' : [ 'br6','cat1'], 'linux1' : [ 'cat1'], 'windows1' : [ 'cat2'], 'mac1' : [ 'cat1'], } bridge_bridge_table = { 'cat2' : [ 'br1' ], } hidden_bridges = [] broken_links = [] temporary_links = [] real_bridges=['cat1', 'cat2'] real_nodes=['cisco1','cisco2'] N=domains.index(domain) if domain_types[N] == 'quagga': memory = 64 else: memory = 400 xenomips_dir='/home/nata/xenomips-images/' ios_name='C7200-AD.BIN' npe_type='npe-400'
Небольшая ремарка для Dynamips:
Если вы хотите увидеть интерфейс хост-системы, в которой работает эмулятор, используйте подключение tap, для сетевых модулей dynamips.
Полученный tap-интерфейс соединяйте через brctl addbr
brctl addbr br104 ip link set br104 up dynamips ... brctl addif br104 dyn104 ip link dyn104 up ifconfig br104 promisc
|
---|