2016年9月28日水曜日

Open vSwitchのREADME

Open vSwitchを調べていた時、どうも情報量が少なく感じた。
それもあって、中々設定が出来なかった。

で、よくよく考えてみたら、UbuntuのベースであるDebian GNU/Linuxは、ドキュメント類もある程度揃っていることを思い出した。
なので、そのドキュメントをチェックしてみればヨカッタ。

ドキュメントは、以下のpathに存在している。(パッケージはopenvswitch-switch(2.5.0-0ubuntu1)のものを見ている。)
/usr/share/doc/openvswitch-switch/README.Debian.gz

で、コイツは英語で書かれているので、以下にメモとして記載するのと併せて、超意訳しておくことにする。
--ココから
README.Debian for openvswitch-switch
---------------------------------

The Linux kernel 3.3 or later has an integrated Open vSwitch kernel module.  Theis Linux kernel module lacks a few features that are in the third-party module.  For details, please see the FAQ, "What features are not available in the Open vSwitch kernel datapath that ships as part of the upstream Linux kernel?".  If you need the additional features, you will need to build and install a Linux kernel module by hand from the openvswitch source package.

Linuxカーネル3.3以降の便利なOpen vSwitchのカーネルモジュールがあります。これらのLinuxカーネルモジュールは、サードパーティのモジュールにあるいくつかの機能を欠いています。詳細については、「What features are not available in the Open vSwitch kernel datapath that ships as part of the upstream Linux kernel?」というFAQをご覧ください。これらの機能が必要な場合は、openvswitchソースパッケージからLinuxカーネルモジュールの構築とインストールする必要があります。

Debian network scripts integration
----------------------------------
This package lets a user to optionally configure Open vSwitch bridges and ports from /etc/network/interfaces. Please refer to the interfaces(5) manpage for more details regarding /etc/network/interfaces.

Open vSwitchのブリッジとポート設定を、どのように/etc/network/interfacesへ記載するのか、そのオプションについて記述しています。その他の/etc/network/interfacesの記載内容については、interfaces(5)のman pageを参照してください。

The stanzas that configure the OVS bridges should begin with "allow-ovs" followed by name of the bridge. Here is an example.
allow-ovs br0

OVSブリッジを設定をするには、"allow-ovs"で始まり、対象ブリッジの名前が続く記述が必要です。こちらは一例です。
allow-ovs br0

The stanzas that configure the OVS ports should begin with "allow-${bridge-name}" followed by name of the port. Here is an example.
allow-br0 eth0

OVSポートを設定するには、"allow-ブリッジ名"で始まり、ポートの名前が続く記述になります。こちらは一例です。
allow-br0 eth0

The following OVS specific "command" options are supported:
これらの定義には、以下に記載するコマンドオプションがあります。

    - ovs_type: This can either be OVSBridge, OVSPort, OVSIntPort, OVSBond, OVSPatchPort or OVSTunnel depending on whether you configure a bridge, port, an internal port, a bond, a patch port or a tunnel. This is a required option.
    - ovs_type: 設定する対象を指定します。設定したい内容に応じてOVSBridge、OVSPort、OVSIntPort、OVSBond、OVSPatchPortまたはOVSTunnelのいずれかを指定します。これは必須です。

    - ovs_ports: This option specifies all the ports that belong to a bridge.
    - ovs_ports: このオプションでは、ブリッジに属するすべてのポートを指定します。

    - ovs_bridge: This options specifies a bridge to which a port belongs. This is a required option for a port.
    - ovs_bridge: このオプションは、ポートが所属するブリッジを指定します。これは、ポートの必須オプションです。

    - ovs_bonds: This option specifies the list of physical interfaces to be bonded together.
    - ovs_bonds: このオプションは、複数の物理インターフェイスをbondする場合に使用します。複数の物理インターフェースを指定することで、結合された1つのインターフェースに出来ます。

    - ovs_patch_peer: For "OVSPatchPort" interfaces, this field specifies the patch's peer on the other bridge.
    - ovs_patch_peer: ovs_typeが"OVSPatchPort"の場合、このフィールドは、他のbridgeを指定することで、そのスイッチと結合出来ます。

    - ovs_tunnel_type: For "OVSTunnel" interfaces, the type of the tunnel. For example, "gre", "vxlan", etc.
- ovs_tunnel_type: ovs_typeが"OVSTunnel"の場合、"gre"、"vxlan"など、そのトンネルの種類を指定します。

    - ovs_tunnel_options: For "OVSTunnel" interfaces, this field should be used to specify the tunnel options like remote_ip, key, etc.
    - ovs_tunnel_options: "OVSTunnel"の場合、このフィールドはREMOTE_IP、キーなどのようなトンネルオプションを指定します。

    - ovs_options: This option lets you add extra arguments to a ovs-vsctl command. See examples.
    - ovs_options: このオプションは、ovs-vsctlコマンドに追加の引数を追加することができます。例を参照してください。

    - ovs_extra: This option lets you run additional ovs-vsctl commands, separated by "--" (double dash). Variables can be part of the "ovs_extra" option. You can provide all the standard environmental variables described in the interfaces(5) man page. You can also pass shell commands.
    - ovs_extra: このオプションにより、"--"(ハイフン2つ)で区切られた、追加のOVS-vsctlコマンドを実行することができます。変数は"ovs_extra"オプションの一部とすることができます。interfaces(5)のマニュアルページに記載されているすべての標準環境変数を提供することができます。また、シェルコマンドを渡すことができます。

More implementation specific details can be seen in the examples.
いくつかの例を挙げておきます。

Examples:
--------
ex 1: A standalone bridge.
(単純なブリッジの例。物理インターフェースへの接続が無いローカルブリッジになります。)

allow-ovs br0
iface br0 inet static
    address 192.168.1.1
    netmask 255.255.255.0
    ovs_type OVSBridge

ex 2: A bridge with one port.
(単純なブリッジの例。物理インターフェース:eth0が接続されています。)

allow-ovs br0
iface br0 inet dhcp
    ovs_type OVSBridge
    ovs_ports eth0

allow-br0 eth0
iface eth0 inet manual
    ovs_bridge br0
    ovs_type OVSPort

ex 3: A bridge with multiple physical ports.
(複数の物理インターフェースを接続したブリッジの例。bondingではありません。)

allow-ovs br0
iface br0 inet dhcp
    ovs_type OVSBridge
    ovs_ports eth0 eth1

allow-br0 eth0
iface eth0 inet manual
    ovs_bridge br0
    ovs_type OVSPort

allow-br0 eth1
iface eth1 inet manual
    ovs_bridge br0
    ovs_type OVSPort

ex 4: A bridge with an OVS internal port.
(VLANタグを持ったスイッチの例。)

allow-ovs br1
iface br1 inet static
    address 192.168.1.1
    netmask 255.255.255.0
    ovs_type OVSBridge
    ovs_ports vlan100

allow-br1 vlan100
iface vlan100 inet manual
    ovs_bridge br1
    ovs_type OVSIntPort
    ovs_options tag=100
    ovs_extra set interface ${IFACE} external-ids:iface-id=$(hostname -s)

ex 5: Bonding.
(bonding例。eth2とeth3でbondingを組んだ形になります。)

allow-ovs br2
iface br2 inet static
    address 192.170.1.1
    netmask 255.255.255.0
    ovs_type OVSBridge
    ovs_ports bond0

allow-br2 bond0
iface bond0 inet manual
    ovs_bridge br2
    ovs_type OVSBond
    ovs_bonds eth2 eth3
    ovs_options bond_mode=balance-tcp lacp=active

ex 6: Patch ports.
(Patch portを使用した例。br0のpatch0ポートと、br1のpatch1ポートが接続されています。)

allow-ovs br0
iface br0 inet manual
    ovs_type OVSBridge
    ovs_ports patch0

allow-br0 patch0
iface patch0 inet manual
    ovs_bridge br0
    ovs_type OVSPatchPort
    ovs_patch_peer patch1

allow-ovs br1
iface br1 inet manual
    ovs_type OVSBridge
    ovs_ports patch1

allow-br1 patch1
iface patch1 inet manual
    ovs_bridge br1
    ovs_type OVSPatchPort
    ovs_patch_peer patch0

ex 7: Tunnel.
(トンネルモードの例)

allow-ovs br1
iface br1 inet static
    address 192.168.1.1
    netmask 255.255.255.0
    ovs_type OVSBridge
    ovs_ports gre1

allow-br1 gre1
iface gre1 inet manual
    ovs_bridge br1
    ovs_type OVSTunnel
    ovs_tunnel_type gre
    ovs_tunnel_options options:remote_ip=182.168.1.2 options:key=1

ex 8: Create and destroy bridges.
(ブリッジを作成・削除するコマンド例。)

ifup --allow=ovs $list_of_bridges
ifdown --allow=ovs $list_of_bridges

 -- Ben Pfaff <pfaffben@debian.org>, Tue, 19 Aug 2014 08:29:32 -0700

Notes on dependencies:
---------------------

openvswitch-switch depends on $network, $named $remote_fs and $syslog to start. This creates some startup dependency issues.

openvswitchスイッチは$network、$named、$remote_fs、$syslogに依存します。これらは、起動時に問題が発生する要因となりえます。

* Since openvswitch utilities are placed in /usr and /usr can be mounted through NFS, openvswitch has to start after it.  But if a user uses openvswitch for all his networking needs and hence to mount NFS, there will be a deadlock. So, if /usr is mounted through NFS and openvswitch is used for all networking, the administrator should figure out a way to mount NFS before starting OVS. One way to do this is in initramfs.

* Open vSwitchコマンド類は、/usr 以下に配置されます。そのため、/usr がNFSマウントの場合にデッドロック等の問題を引き起こします。それらの問題を回避するには、/usr がNFSマウントされてから Open vSwitchを起動する方法を検討する必要があります。initramfs等を使用することで回避が可能になります。

* Since openvswitch starts after $network, $remote_fs and $syslog, any startup script that depends on openvswitch but starts before it, needs to be changed to depend on openvswitch-switch too.

* openvswitchは$network、$remote_fs、$syslog、openvswitch及び各種スタートアップスクリプトに依存します。Open vSwitchは任意の起動スクリプトの後に起動するようにすべきかもしれません。

* Ideally, an admin should not add openvswitch bridges in the 'auto' section of the 'interfaces' file.  This is because, when ifupdown starts working on bridges listed in 'auto', openvswitch has not yet started.

* 基本的に、管理者は、"interfaces"ファイルのautoセクションにopenvswitchブリッジを追加してはいけません。 Open vSwitchがまだ起動していないタイミングで、ifupdownが開始されてしまいます。

But, if the admin wants to go down this route and adds openvswitch bridges in the 'auto' section, openvswitch-switch will forcefully be started when ifupdown kicks in. In a case like this, the admin needs to make sure that /usr has already been mounted and that a remote $syslog (if used) is ready to receive openvswitch logs.

Open vSwitchをautoセクションに入れた場合、ifupdownが起動するときにOpen vSwitchが強制的に起動されます。このようにしたい場合は、/usr が先にマウントされるように構成する必要があります。また、syslogサーバを使用している場合、そのサーバがsyslogメッセージを受け入れるように構成する必要があります。
--ココまで

0 件のコメント:

コメントを投稿