Open vSwitch (http://openvswitch.org/) - это виртуальный свитч, котороый позволяет вам строить виртуальную сеть (SDN) поддерживает различные протоколы для мониторнига и управления (NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag и др). Приставка “open” означает что он является opensource продуктом со всеми вытекающими плюсами и минусами.  На просторах интернета найти документацию по нему и руководства по установки не проблема, если вы знаете английский язык. На русском практически ничего нет:(. Далее я расскажу процесс установки его с исходников на Red Hat Enterprise Linux 6.3 (RHEL) и основанной на базе него бесплатной CentOS 6.3 с ядром 2.6.32-279.el6.x86_64. 

В оффициальной документации Open vSwitch по установке на RHEL достаточно подробно написано как это сделать, но я столкнулся с некоторыми проблемами, о которых следует сказать отдельно.

!!! В примере для простоты делаю все операции от root’а, что категорически рекомендуется делать только в образовательных целях.

 

  1. Устанавливаем нужные пакеты для сборки RPM:
    # yum install -y gcc gcc-c++ make rpm-build rpm-devel rpmdevtools git  make python-devel openssl-devel kernel-devel kernel-debug-devel

  2. Клонируем себе исходный код Open vSwitch:
    # git clone git://openvswitch.org/openvswitch openvswitch-1.9.90

  3. Создаем в домашней директории пользователя, от которого будем создавать RPM нужную структуру папок командой:
    # rpmdev-setuptree
  4. Т.к. на помент написания этого поста последняя версия Open vSwitch была 1.9.90, то создаем соответствующий архив:
    # tar pczf ~/rpmbuild/SOURCES/openvswitch-1.9.90.tar.gz ./openvswitch

  5. Далее для сборки необходима более новая версия утилиты autoconf, чем есть в репозитории. Скачиваем и устанавливаем последнюю:
    # wget http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz
    # ./configure
    # make
    # make install
  6. Переходим в папку с исходниками Open vSwitch и выполняем следующие команды:
    # ./boot.sh
    # ./configure


    Далее можно просто выполнить “make && make install”, но тогда будут проблемы с обновлением/удалением приложения и для следующей установки нужно будет выполнить те же сымые действия.
  7. В папке с Open vSwitch запускаем команду, которая соберет нужную нам rpm:
    # rpmbuild -bb rhel/openvswitch.spec
  8. Аналогичным образом собираем модули для текущей версии ядра:
    # rpmbuild -bb -D "kversion `uname -r`" --target=i686-unknown-linux rhel/openvswitch-kmod-rhel6.spec
  9. Если все прошло успешно (а у меня это было именно так), то устанавливаем полученные rpms:
    # rpm -i kmod-openvswitch-1.9.90-1.el6.x86_64.rpm
    # rpm -i openvswitch-1.9.90-1.x86_64.rpm 

  10. Open vSwitch может заменить собой стандартный модуль bridge и тогда brctl будет работать с Open vSwitch как и с обычными мостами, не подозревая что что-то не так. Для этого отключаем модуль brigde и включаем brcompat, который появился после установки Open vSwitch:
    # rmmod bridge
    # modprode openvswitch
    # modprode brcompat


    Для того, чтобы убедиться, что нужные модели ядра загружены, выполняем команду lsmod.

 

 

Ну и последнее, запускаем  Open vSwitch: 

# service openvswitch restart

… и проверяем, что он работает:

# ovs-vsctl show