Рубрики
KVM ovs / openvswitch / dpdk

ovs \ libvirt \ virsh \ lxc \ openvswitch \ openflow \ контейнеры

ссылки:

http://www.openvswitch.org/
https://docs.openvswitch.org/en/latest/howto/libvirt/
https://libvirt.org/drvlxc.html
https://libvirt.org/drvqemu.html
https://www.linux-kvm.org/page/Main_Page
https://xakep.ru/2017/09/04/open-vswitch/
https://habr.com/ru/post/242741/
https://xakep.ru/2012/11/19/59656/
https://docs.openvswitch.org/en/latest/howto/libvirt/
https://russianblogs.com/article/5481757540/

Установка необходимых пакетов:

# ставим на Debian 10

apt install openvswitch-switch - ставим openvswitch (ovs)
apt install qemu-kvm libvirt-clients libvirt-daemon-system - устанавливаем libvirt

openvswitch:

обычное использование без vlan:
ovs-vsctl show - показывает информацию по свитчу, проверяем работу и заодно узнаем какая у нас версия ovs
ovs-vsctl add-br br0 - добавляем свитч с именем br0
ovs-vsctl add-port br0 eth0 - добавляем интерфейс eth0 в свитч br0 

пример с vlan:
ovs-vsctl add-br ovs0 - добавляем свитч openvswitch с именем br0
ovs-vsctl add-port ovs0 eth0 - добавляем интерфейс eth0 в свитч ovs0 
ovs-vsctl set port eth0 vlan_mode=native-untagged tag=2 trunks=2,3,4 - вешаем trunk на интерфейс eth0 
ovs-vsctl add-port ovs0 ovs0-vlan2 tag=2 -- set Interface ovs0-vlan2 type=internal - добавляем порт и вешаем access (tag=2) на интерфейс ovs0-vlan2
ovs-vsctl add-port ovs0 ovs0-vlan4 tag=4 -- set Interface ovs0-vlan4 type=internal - добавляем порт и вешаем access (tag=4) на интерфейс ovs0-vlan2
ovs-vsctl add-port ovs0 ovs0-vlan3 tag=3 -- set Interface ovs0-vlan3 type=internal - добавляем порт и вешаем access (tag=3) на интерфейс ovs0-vlan2

ovs-vsctl set port ovsbr0 tag=29

удаление портов и коммутатора:
ovs-vsctl del-port ovs0-vlan2 - удалить порт (ovs0-vlan2) из коммутатора
ovs-vsctl del-br ovs0 - удалить коммутатор ovs0

Примеры настройки сети:

dhcp client:
dhclient ovs0-vlan3 - получить настройки по dhcp для интерфейса ovs0-vlan3

static ifconfig:
ifconfig ovs0-vlan2 inet 10.254.254.1/24 up - настраиваем ip 10.254.254.1/24 и запускаем интерфейс
ifconfig ovs0-vlan4 up - просто запускаем интерфейс без настройки ip


static ip:
ip a - показать доступные устройства
ip address add  192.168.66.10/24 dev eth0 - задаем адрес ipv4
ip link set up eth0 - запускаем интерфейс

Собственно пытаемся работать:

virsh --c lxc:// - подключаемся к консоли управления lxc контейнерами
create /root/lxc0.xml - создаем контейнер из шаблона lxc0.xml
create /root/lxc1.xml - создаем контейнер из шаблона lxc1.xml
list - показать доступные контейнеры
console lxc0 - подключаемся к контейнеру lxc0 (CTRL+] - отключится контейнера)

ip a - показать доступные устройства
ip address add  192.168.66.10/24 dev eth0 - задаем адрес ipv4
ip link set up eth0 - запускаем интерфейс


ip a - показать доступные устройства
ip address add  192.168.66.11/24 dev eth0 - задаем адрес ipv4
ip link set up eth0 - запускаем интерфейс




Шаблон для контейнера(lxc0.xml)


    lxc0
    131072
    
        exe
        /sbin/init
    
    1
    
    
        
            
            
            
        
        
    

Шаблон для контейнера(lxc1.xml)


    lxc1
    131072
    
        exe
        /sbin/init
    
    1
    
    
        
            
            
            
        
        
    



OpenFlow


По умолчанию openvswitch работает как обычный свитч (нету vlan)
ovs-vsctl set-fail-mode br0 secure - включаем режим работы умного свитча (Задействуем протокол OpenFlow)

Гоняем трафик между двумя портами
ovs-ofctl add-flow br0 in_port=1,action=output=2
ovs-ofctl add-flow br0 in_port=2,action=output=1
ovs-ofctl dump-flows br0 - проверяем что мы там настроили 

ovs-vsctl set-fail-mode br0 standalone - вернуть настройки в обычный режим (br0 снова будет как обычный свитч)



# еще 
ovs-ofctl -O OpenFlow13 dump-flows ovsbr0
ovs-ofctl -O OpenFlow13 dump-ports ovsbr0