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