ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] openvswitch и etcnet
@ 2013-12-27  0:13 Viacheslav Dubrovskyi
  2013-12-27 10:14 ` Viacheslav Dubrovskyi
  2013-12-27 11:25 ` Denis Ovsienko
  0 siblings, 2 replies; 7+ messages in thread
From: Viacheslav Dubrovskyi @ 2013-12-27  0:13 UTC (permalink / raw)
  To: Devel

[-- Attachment #1: Type: text/plain, Size: 4748 bytes --]

Здравствуйте.

В сизиф едет openvswitch с поддержкой etcnet. В связи с чем хочу 
рассказать как оно должно работать.
Что такое OVS и зачем его использовать лучше прочитать на официальном 
сайте http://openvswitch.org/support/

OVS сложная система. Имеет собственную базу данных, где хранит 
настройки. И не все эти порты и бриджи могут отражаться в системе как 
сетевые интерфейсы. В связи с чем создавать интерфейс (папку в 
/etc/net/ifaces) для такого типа порта нет смысла, т.к. etcnet оперирует 
реальными интерфейсами. Поэтому управлять будем только теми ресурсами 
которые реально отражаются в системе как сетевые интерфейсы.
Это 3 типа интерфейсов: бридж реальный и фейковый (ovsbr), порт типа 
internal (ovsport) и специальный тип порта - бондинг (ovsbond).
Реальный и фейковый бридж по сути имеют один тип ovsbr и отличаются 
только наличием родительского бриджа и влана.
Порт типа не internal это или существующий реальный интерфейс (eth0) или 
не отраженные в операционной системе интерфейсы (нпример gre, veth). 
Поэтому я не выделяю их для etcnet. Все это должно настраиваться через 
OVS_EXTRA.

Бридж.
Для его создания в options должно быть:
TYPE=ovsbr

Также как опция может быть указан список сетевых интерфейсов, которые 
должны быть добавлены в данный бридж. Они будут запущены и добавлены в 
бридж.
HOST='eth2'

NB! Нельзя сюда писать порты OVS (тип ovsport или ovsbond). Они должны 
быть описаны отдельно, т.к. для их добавления требуется уже существующий 
бридж.

В результате будет создан бридж. Проверить можно командой ovs-vsctl show


Фейковый бридж.
Данный вид бриджа можно использовать в ситуации, когда нет возможности 
задать влан на порту или когда вы его не знаете. Например подобная 
ситуация описана в 
http://blog.scottlowe.org/2012/10/19/vlans-with-open-vswitch-fake-bridges/ 
. Для создания такого бриджа нужно указывать родительский бридж и влан.
Для этого дополнительно к тем переменным что используются для реального 
бриджа, указываем:
BRIDGE=br0
VID=105
И тогда будет создаваться фейковый бридж


Порт типа internal.
Для его создания в options должно быть:
TYPE=ovsport
Бридж в который должен этот порт добавиться:
BRIDGE=br0

В результате получится сетевой интерфейс который может управляться через 
утилиту ip и др.

Порт бондинг.
Специальный тип порта для объединения 2х физических сетевых интерфейса в 
один.
Для его создания в options должно быть
TYPE=ovsbond
Бридж в который должен этот порт добавиться:
BRIDGE=br0
Также должны быть указаны не меньше 2х сетевых интерфейсов, которые 
должны быть добавлены в данный порт.
HOST='eth1 eth2'


Для задания всех остальных всевозможных настроек,  должны использоваться 
переменные
OVS_OPTIONS
и
OVS_EXTRA

Данные переменные действуют для всех типов сетевых интерфейсов ovs*.

Буду рад услышать вопросы или замечания.

-- 
WBR,
Viacheslav Dubrovskyi


[-- Attachment #2: Криптографическая подпись S/MIME --]
[-- Type: application/pkcs7-signature, Size: 3738 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [devel] openvswitch и etcnet
  2013-12-27  0:13 [devel] openvswitch и etcnet Viacheslav Dubrovskyi
@ 2013-12-27 10:14 ` Viacheslav Dubrovskyi
  2013-12-27 10:17   ` Aleksey Novodvorsky
  2013-12-27 11:25 ` Denis Ovsienko
  1 sibling, 1 reply; 7+ messages in thread
From: Viacheslav Dubrovskyi @ 2013-12-27 10:14 UTC (permalink / raw)
  To: Devel

27.12.2013 02:13, Viacheslav Dubrovskyi wrote:
> Здравствуйте.
>
> В сизиф едет openvswitch с поддержкой etcnet. В связи с чем хочу 
> рассказать как оно должно работать.
Нарисовал http://www.altlinux.org/Etcnet/openvswitch


-- 
WBR,
Viacheslav Dubrovskyi



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [devel] openvswitch и etcnet
  2013-12-27 10:14 ` Viacheslav Dubrovskyi
@ 2013-12-27 10:17   ` Aleksey Novodvorsky
  0 siblings, 0 replies; 7+ messages in thread
From: Aleksey Novodvorsky @ 2013-12-27 10:17 UTC (permalink / raw)
  To: ALT Linux Team development discussions

2013/12/27 Viacheslav Dubrovskyi <dubrsl@gmail.com>:
> 27.12.2013 02:13, Viacheslav Dubrovskyi wrote:
>>
>> Здравствуйте.
>>
>> В сизиф едет openvswitch с поддержкой etcnet. В связи с чем хочу
>> рассказать как оно должно работать.
>
> Нарисовал http://www.altlinux.org/Etcnet/openvswitch

Спасибо!

Rgrds, Алексей

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [devel] openvswitch и etcnet
  2013-12-27  0:13 [devel] openvswitch и etcnet Viacheslav Dubrovskyi
  2013-12-27 10:14 ` Viacheslav Dubrovskyi
@ 2013-12-27 11:25 ` Denis Ovsienko
  2013-12-27 13:05   ` Viacheslav Dubrovskyi
  1 sibling, 1 reply; 7+ messages in thread
From: Denis Ovsienko @ 2013-12-27 11:25 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[...]
> Для задания всех остальных всевозможных настроек,  должны использоваться
> переменные
> OVS_OPTIONS
> и
> OVS_EXTRA
>
> Данные переменные действуют для всех типов сетевых интерфейсов ovs*.
>
> Буду рад услышать вопросы или замечания.

Привет.

Если в эти переменные предполагается записывать списки команд, может иметь смысл использовать для этого файлы вместо переменных. Например, команды brctl записываются в файл brctl.

-- 
    Denis Ovsienko


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [devel] openvswitch и etcnet
  2013-12-27 11:25 ` Denis Ovsienko
@ 2013-12-27 13:05   ` Viacheslav Dubrovskyi
  2013-12-30 12:53     ` Denis Ovsienko
  0 siblings, 1 reply; 7+ messages in thread
From: Viacheslav Dubrovskyi @ 2013-12-27 13:05 UTC (permalink / raw)
  To: devel

27.12.2013 13:25, Denis Ovsienko wrote:
> [...]
>> Для задания всех остальных всевозможных настроек,  должны использоваться
>> переменные
>> OVS_OPTIONS
>> и
>> OVS_EXTRA
>>
>> Данные переменные действуют для всех типов сетевых интерфейсов ovs*.
>>
>> Буду рад услышать вопросы или замечания.
> Привет.
Привет

> Если в эти переменные предполагается записывать списки команд, может иметь смысл использовать для этого файлы вместо переменных. Например, команды 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

Правильно?

-- 
WBR,
Viacheslav Dubrovskyi



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [devel] openvswitch и etcnet
  2013-12-27 13:05   ` Viacheslav Dubrovskyi
@ 2013-12-30 12:53     ` Denis Ovsienko
  2013-12-30 14:49       ` Viacheslav Dubrovskyi
  0 siblings, 1 reply; 7+ messages in thread
From: Denis Ovsienko @ 2013-12-30 12:53 UTC (permalink / raw)
  To: ALT Linux Team development discussions

> Привет
>
>>  Если в эти переменные предполагается записывать списки команд, может иметь смысл использовать для этого файлы вместо переменных. Например, команды 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-странице.

-- 
    Denis Ovsienko


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [devel] openvswitch и etcnet
  2013-12-30 12:53     ` Denis Ovsienko
@ 2013-12-30 14:49       ` Viacheslav Dubrovskyi
  0 siblings, 0 replies; 7+ messages in thread
From: Viacheslav Dubrovskyi @ 2013-12-30 14:49 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 4931 bytes --]

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


[-- Attachment #2: Криптографическая подпись S/MIME --]
[-- Type: application/pkcs7-signature, Size: 3738 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2013-12-30 14:49 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-12-27  0:13 [devel] openvswitch и etcnet Viacheslav Dubrovskyi
2013-12-27 10:14 ` Viacheslav Dubrovskyi
2013-12-27 10:17   ` Aleksey Novodvorsky
2013-12-27 11:25 ` Denis Ovsienko
2013-12-27 13:05   ` Viacheslav Dubrovskyi
2013-12-30 12:53     ` Denis Ovsienko
2013-12-30 14:49       ` Viacheslav Dubrovskyi

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git