Я установил openvswitch на свой компьютер под управлением Ubuntu 12.04. У меня также есть виртуальная машина, работающая на моем ПК с 3 виртуальными машинами (Ubuntu 12.04), запущенными на них. названы
vm-1
vm-2
vm-3
Я настроил openvswitch на хосте следующим образом.
sudo ovs-vsctl show
#Create the virtual switch on the host machine
sudo ovs-vsctl add-br lan0
#Next we create tap devices on the host machine so we can bind them to the guests VM's later.
for tap in `seq 1 5`; do
sudo ip tuntap add mode tap lan0-p$tap
done;
#check if the interfaces are there
ip tuntap list
#Bring up the tap interfaces.
for tap in `seq 1 5`; do
sudo ip link set lan0-p$tap up
done;
# check if the interface are up
ip link
#Now we use ovs-vsctl to "bind" the tap devices to "lan0" switch
for tap in `seq 1 5`; do
sudo ovs-vsctl add-port lan0 lan0-p$tap
done;
#see that the tap devices are mapped to ports in lan0
sudo ovs-vsctl list-ports lan0
Результат ifconfig после этой операции на хосте выглядит следующим образом.
eth0 Link encap:Ethernet HWaddr 1c:6f:65:37:60:b5
inet addr:192.168.129.56 Bcast:192.168.129.255 Mask:255.255.254.0
inet6 addr: fe80::1e6f:65ff:fe37:60b5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:44955 errors:0 dropped:0 overruns:0 frame:0
TX packets:10042 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:13293545 (13.2 MB) TX bytes:1978326 (1.9 MB)
Interrupt:54 Base address:0x8000
lan0-p1 Link encap:Ethernet HWaddr 56:66:06:2d:da:ee
inet6 addr: fe80::5466:6ff:fe2d:daee/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:676 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lan0-p2 Link encap:Ethernet HWaddr 06:25:a2:ad:85:58
inet6 addr: fe80::425:a2ff:fead:8558/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:676 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lan0-p3 Link encap:Ethernet HWaddr 52:8e:34:67:a0:40
inet6 addr: fe80::508e:34ff:fe67:a040/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:676 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lan0-p4 Link encap:Ethernet HWaddr 22:6e:e8:62:c5:e8
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lan0-p5 Link encap:Ethernet HWaddr de:6f:9d:f9:c9:45
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:64 errors:0 dropped:0 overruns:0 frame:0
TX packets:64 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4984 (4.9 KB) TX bytes:4984 (4.9 KB)
Теперь с помощью сетевых настроек на каждой виртуальной машине в разделе Настроено в «Мостовом адаптере», где
vm-1 is attached to lan0-p1
vm-2 is attached to lan0-p2
vm-3 is attached to lan0-p3
Я установил контроллер pox, работающий на моем компьютере HOST. Я запускаю pox-контроллер для подключения к моему хост-компьютеру следующим образом.
./pox.py log.level --DEBUG forwarding.l2_learning
Результат, который я получаю, выглядит следующим образом
POX 0.1.0 (betta) / Copyright 2011-2013 James McCauley, et al.
DEBUG:core:POX 0.1.0 (betta) going up...
DEBUG:core:Running on CPython (2.7.3/Aug 1 2012 05:14:39)
DEBUG:core:Platform is Linux-3.2.0-38-generic-x86_64-with-Ubuntu-12.04-precise
INFO:core:POX 0.1.0 (betta) is up.
DEBUG:openflow.of_01:Listening on 0.0.0.0:6633
It shows listening on 0.0.0.0:6633 ? What is 0.0.0.0 ?
Я ожидал, что результат будет следующим
INFO:openflow.of_01:[Con 1/1] Connected to 00-00-00-00-00-01
DEBUG:forwarding.l2_learning:Connection [Con 1/1]
DEBUG:forwarding.l2_learning:installing flow for 00:00:00:00:00:03.2 ->
00:00:00:00:00:02.1
DEBUG:forwarding.l2_learning:installing flow for 00:00:00:00:00:02.1 ->
00:00:00:00:00:03.2
DEBUG:forwarding.l2_learning:installing flow for 00:00:00:00:00:03.2 ->
00:00:00:00:00:02.1
DEBUG:forwarding.l2_learning:installing flow for 00:00:00:00:00:04.3 ->
00:00:00:00:00:02.1
DEBUG:forwarding.l2_learning:installing flow for 00:00:00:00:00:02.1 ->
00:00:00:00:00:04.3
или что-то подобное, где показано, что он изучает разные MAC-адреса. Кажется, я этого не понимаю. Я делаю что-то неправильно?
Я думаю, вы потеряли адрес привязки и порт для POX. Вы можете попробовать использовать следующую команду:
./pox.py log.level --DEBUG forwarding.l2_learning --address=**your_address** --port=6633