Интеграция виртуальной сети 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
| |
|
|---|