[devel] openvswitch и etcnet

Viacheslav Dubrovskyi dubrsl на gmail.com
Пн Дек 30 18:49:09 MSK 2013


30.12.2013 14:53, Denis Ovsienko пишет:
>> Привет
>>
>>>   Если в эти переменные предполагается записывать списки команд, может иметь смысл использовать для этого файлы вместо переменных. Например, команды brctl записываются в файл brctl.
>> Если честно, то делал по примеру
>> http://git.openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=blob;f=rhel/etc_sysconfig_network-scripts_ifup-ovs;h=017346d4ca46f336f2806248f708d46a80f90235;hb=HEAD
>> Там просто все засовывается в одну переменную.
>>
>> Подскажите как это можно лучше разрулить? Вот пример:
>>
>> ovsvs-ctl -t $OVS_VSCTL_TIMEOUT -- --may-exist add-br br0 -- add-port
>> br0 tap0 -- add-port br0 gre0 -- set interface gre0 type=gre
>> options:remote_ip=192.168.1.10 -- --id=@p get port gre0 -- --id=@m
>> create mirror name=m0 select-all=true output-port=@p -- set bridge br0
>> mirrors=@m
>>
>> Т.е. можно сделать файл, например ovsvs-ctl с таким содержимым:
>> add-port br0 tap0
>> add-port br0 gre0
>> set interface gre0 type=gre options:remote_ip=192.168.1.10 --id=@p get
>> port gre0 --id=@m create mirror name=m0 select-all=true output-port=@p
>> set bridge br0 mirrors=@m
>>
>> Правильно?
> Заметно лучше, хотя оставшаяся часть всё-таки выглядит подозрительно. Чтобы понять, действительно ли необходим человек для её сочинения, нужно осмыслить устройство OVS и множества пересечения его запчастей с набором ядерных сетевых интерфейсов и с самими собой. У меня пока без картинки это не получается: хотя с OVS я много раз сталкивался, но только в виде готовых изделий. Такая диаграммка была бы очень кстати на той wiki-странице.
Вся конфигурация OVS хранится в БД и описание полей базы находится в 
ovs-vswitchd.conf.db(5). ovs-vsctl занимается только манипулированием 
базы: добавить, изменить, очистить поле в соответствующей таблице. 
Таблиц, и полей достаточно много и дублировать в etcnet все это, мне 
кажется,  нет смысла.
Вообще можно задать вопрос: - А зачем интегрировать OVS в etcnet? Ведь 
ядерные сетевые интерфейсы созданные OVS прекрасно настраиваются через 
etcnet если их тип eth.

Я вижу несколько причин:

1. OVS не умеет настраивать L3 параметры (IP, маска, шлюз и т.д.) 
Поэтому для этого логичнее использовать etcnet. Т.е. мы должны описать 
интерфейс в etcnet. Сразу возникает вопрос: а что делать если такого 
интерфейса нет? Можно ли его создать автоматом? Да, можно. Вот для этого 
и нужны все эти типы и параметры. Но по сути только те, которые приводят 
к созданию ядерного сетевого интерфейса. Все остальное это бонус, 
который может быть использован, если кому-то нагляднее видеть (хранить) 
задаваемые команды в текстовом файле.

2. Еще существует проблема первичного старта. При загрузке вначале 
запускается сервис OVS, потом network. Так вот OVS создает все свои 
интерфейсы в состоянии UP. И при старте network, все эти интерфейсы 
просто пропускаются и не настраиваются (etcnet рассчитывает что все 
должно быть DOWN). Поэтому я добавил в сервис OVS проверку на наличие 
соответствующего интерфейса в etcnet и если такой настроен, то интерфейс 
переводится в DOWN, чтобы etcnet смог его поднять позже.

Не знаю удалось ли ответить.

-- 
WBR,
Viacheslav Dubrovskyi

----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : smime.p7s
Тип     : application/pkcs7-signature
Размер  : 3738 байтов
Описание: п я─п╦п©я┌п╬пЁя─п╟я└п╦я┤п╣я│п╨п╟я▐ п©п╬п╢п©п╦я│я▄ S/MIME
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20131230/95489f4a/attachment.bin>


Подробная информация о списке рассылки Devel