« 2013年3月 | トップページ | 2013年5月 »

2013年4月

2013年4月25日 (木)

◆ Linux のネットワークネームスペース機能と Open vSwitch で仮想ネットワーク(ルータ追加)

前回の記事の仮想ネットワークに仮想ルータを追加してみました。仮想ルータといってもネットワークネームスペースを1つ追加してそこに2つの仮想ネットワークインターフェースをつなげただけ。

こんなに簡単に仮想ルータができて驚いた。

■今回作成した仮想ネットワークの論理構成図

Kousei2_2


■今回作成した仮想ネットワークの構成図(物理?)

各 vhost のIPアドレスは振りなおした上で、vrouter1を追加しています。

Kousei1_6

■動作確認

(1) vhost1(192.168.1.1) から vhost2(192.168.2.1)へ

$ sudo ip netns exec vhost1 ping 192.168.2.1 -c 3
PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.
64 bytes from 192.168.2.1: icmp_req=1 ttl=63 time=0.720 ms
64 bytes from 192.168.2.1: icmp_req=2 ttl=63 time=0.145 ms
64 bytes from 192.168.2.1: icmp_req=3 ttl=63 time=0.117 ms

--- 192.168.2.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.117/0.327/0.720/0.278 ms

(2) vhost1(192.168.1.1) から vhost3(192.168.1.2)へ

$ sudo ip netns exec vhost1 ping 192.168.1.2 -c 3
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
64 bytes from 192.168.1.2: icmp_req=1 ttl=64 time=0.122 ms
64 bytes from 192.168.1.2: icmp_req=2 ttl=64 time=0.095 ms
64 bytes from 192.168.1.2: icmp_req=3 ttl=64 time=0.120 ms

--- 192.168.1.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.095/0.112/0.122/0.015 ms

(3) vhost1(192.168.1.1) から vhost4(192.168.2.2)へ

$ sudo ip netns exec vhost1 ping 192.168.2.2 -c 3
PING 192.168.2.2 (192.168.2.2) 56(84) bytes of data.
64 bytes from 192.168.2.2: icmp_req=1 ttl=63 time=1.32 ms
64 bytes from 192.168.2.2: icmp_req=2 ttl=63 time=0.183 ms
64 bytes from 192.168.2.2: icmp_req=3 ttl=63 time=0.131 ms

--- 192.168.2.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 0.131/0.545/1.323/0.550 ms

■今回の仮想ネットワークの作成・削除用シェルスクリプト

引数 delete で削除、add で追加です。

ルータ用の設定箇所、ルーティング情報の設定箇所を赤字にしています。

#!/bin/sh

delete() {
    sudo ovs-vsctl del-br vswitch1
    sudo ovs-vsctl del-br vswitch2
    sudo ip netns delete vhost1
    sudo ip netns delete vhost2
    sudo ip netns delete vhost3
    sudo ip netns delete vhost4
    sudo ip link delete vlink5-0
    sudo ip link delete vlink5-1
    sudo ip netns delete vrouter1

}

add() {
    sudo ovs-vsctl add-br vswitch1
    sudo ovs-vsctl add-br vswitch2
    
    sudo ip link add name vlink1-0 type veth peer name vlink1-1
    sudo ip link add name vlink2-0 type veth peer name vlink2-1
    sudo ip link add name vlink3-0 type veth peer name vlink3-1
    sudo ip link add name vlink4-0 type veth peer name vlink4-1
    sudo ip link add name vlink5-0 type veth peer name vlink5-1
    sudo ip link add name vlink6-0 type veth peer name vlink6-1
    sudo ip link add name vlink7-0 type veth peer name vlink7-1
    
    sudo ip link set vlink1-0 up
    sudo ip link set vlink2-0 up
    sudo ip link set vlink3-0 up
    sudo ip link set vlink4-0 up
    sudo ip link set vlink6-0 up
    sudo ip link set vlink7-0 up
    
    sudo ip link set vlink1-1 up
    sudo ip link set vlink2-1 up
    sudo ip link set vlink3-1 up
    sudo ip link set vlink4-1 up
    sudo ip link set vlink6-1 up
    sudo ip link set vlink7-1 up
    
    sudo ip netns add vhost1
    sudo ip netns add vhost2
    sudo ip netns add vhost3
    sudo ip netns add vhost4
    sudo ip netns add vrouter1
    
    sudo ip netns exec vhost1 ifconfig lo 127.0.0.1
    sudo ip netns exec vhost2 ifconfig lo 127.0.0.1
    sudo ip netns exec vhost3 ifconfig lo 127.0.0.1
    sudo ip netns exec vhost4 ifconfig lo 127.0.0.1
    sudo ip netns exec vrouter1 ifconfig lo 127.0.0.1

    sudo ip link set vlink1-0 netns vhost1
    sudo ip link set vlink2-0 netns vhost2
    sudo ip link set vlink3-0 netns vhost3
    sudo ip link set vlink4-0 netns vhost4

    sudo ip link set vlink6-0 netns vrouter1
    sudo ip link set vlink7-0 netns vrouter1
    
    sudo ip netns exec vhost1 ifconfig vlink1-0 192.168.1.1 netmask 255.255.255.0
    sudo ip netns exec vhost2 ifconfig vlink2-0 192.168.2.1 netmask 255.255.255.0
    sudo ip netns exec vhost3 ifconfig vlink3-0 192.168.1.2 netmask 255.255.255.0
    sudo ip netns exec vhost4 ifconfig vlink4-0 192.168.2.2 netmask 255.255.255.0

    sudo ip netns exec vrouter1 ifconfig vlink6-0 192.168.1.3 netmask 255.255.255.0
    sudo ip netns exec vrouter1 ifconfig vlink7-0 192.168.2.3 netmask 255.255.255.0
    
    sudo ovs-vsctl add-port vswitch1 vlink5-0
    sudo ovs-vsctl add-port vswitch2 vlink5-1
    
    sudo ovs-vsctl add-port vswitch1 vlink1-1 tag=10
    sudo ovs-vsctl add-port vswitch1 vlink2-1 tag=20
    
    sudo ovs-vsctl add-port vswitch2 vlink3-1 tag=10
    sudo ovs-vsctl add-port vswitch2 vlink4-1 tag=20

    sudo ovs-vsctl add-port vswitch1 vlink6-1 tag=10
    sudo ovs-vsctl add-port vswitch1 vlink7-1 tag=20

    sudo ip link set vlink5-0 up
    sudo ip link set vlink5-1 up

    sudo ip netns exec vhost1 route add default gw 192.168.1.3
    sudo ip netns exec vhost2 route add default gw 192.168.2.3
    sudo ip netns exec vhost3 route add default gw 192.168.1.3
    sudo ip netns exec vhost4 route add default gw 192.168.2.3
}

case "$1" in
add)
    set -x
    add
    ;;
delete)
    delete > /dev/null 2>&1
    ;;
*)
    echo "usage: $0 (add|delete)"
esac

2013年4月22日 (月)

◆ Linux のネットワークネームスペース機能と Open vSwitch で仮想ネットワーク

Linux のネットワークネームスペースと、Open vSwitch、ip link コマンドを組み合わせたら仮想ネットワークを Linux 内に作って遊べそうだと思ってシェルスクリプトを作って確認してみました。
今回は1例を試しただけですが、さらに色々な仮想ネットワークを Linux 内に作って遊べそうだという感触を得ることができました。Open vSwitch を OpenFlow スイッチとして用いるのも面白いでしょう。

■確認に用いた環境
  Lubuntu 12.04 (i386)

  Lubuntu 12.10 で試される場合は、NetworkManagerが邪魔すると思うので停止しておいた方がよいと思います。以下の記事の「■回避策」を参考にしてくださ:
記事: 「Lubuntu 12.10 で Trema の仮想ネットワーク機能を使うときはネットワークマネージャーを止めましょう」
http://ranosgrant.cocolog-nifty.com/blog/2013/01/lubuntu-1210-tr.html

■今回作成する仮想ネットワークの構成図

VLAN スイッチが2つ、ホストは4台。
VLAN スイッチは Open vSwitch を使用。
ホストは、ネットワークネームスペースを使用。

vhost1 と vhost3 は、tag=10 の VLAN に接続。
vhost2 と vhost4 は、 tag=20 の VLAN に接続。

Photo
■Open vSwitch のインストールについて

Open vSwitch のインストール方法は以下の記事の「■ステップ3. OpenVSwitch のインストール」を参照ください:
記事: 「2万円で OpenFlow スイッチを自作しよう」
http://ranosgrant.cocolog-nifty.com/blog/2013/02/2-openflow-4b98.html

■動作確認結果

vhost1 からは、同じ VLAN タグを持つ vhost3 としか通信できないことを確認してみます。

まずは、vhost1 から vhost3 へ ping で通信できることを確認。

$ sudo ip netns exec vhost1 ping 192.168.1.3
PING 192.168.1.3 (192.168.1.3) 56(84) bytes of data.
64 bytes from 192.168.1.3: icmp_req=1 ttl=64 time=1.29 ms
64 bytes from 192.168.1.3: icmp_req=2 ttl=64 time=0.121 ms
64 bytes from 192.168.1.3: icmp_req=3 ttl=64 time=0.100 ms
^C
--- 192.168.1.3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.100/0.504/1.292/0.557 ms

vhost1 から vhost4 への ping は VLAN が異なるので通信ができず、Ctrl-C で中断。

$ sudo ip netns exec vhost1 ping 192.168.1.4
PING 192.168.1.4 (192.168.1.4) 56(84) bytes of data.
^C
--- 192.168.1.4 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2001ms

■仮想ネットワークの作成用シェルスクリプト

引数は、delete で削除、add で作成。

#!/bin/sh

delete() {
    sudo ovs-vsctl del-br vswitch1
    sudo ovs-vsctl del-br vswitch2
    sudo ip netns delete vhost1
    sudo ip netns delete vhost2
    sudo ip netns delete vhost3
    sudo ip netns delete vhost4
    sudo ip link delete vlink5-0
    sudo ip link delete vlink5-1
}

add() {
    sudo ovs-vsctl add-br vswitch1
    sudo ovs-vsctl add-br vswitch2
    
    sudo ip link add name vlink1-0 type veth peer name vlink1-1
    sudo ip link add name vlink2-0 type veth peer name vlink2-1
    sudo ip link add name vlink3-0 type veth peer name vlink3-1
    sudo ip link add name vlink4-0 type veth peer name vlink4-1
    sudo ip link add name vlink5-0 type veth peer name vlink5-1
    
    sudo ip link set vlink1-0 up
    sudo ip link set vlink2-0 up
    sudo ip link set vlink3-0 up
    sudo ip link set vlink4-0 up
    
    sudo ip link set vlink1-1 up
    sudo ip link set vlink2-1 up
    sudo ip link set vlink3-1 up
    sudo ip link set vlink4-1 up
    
    sudo ip netns add vhost1
    sudo ip netns add vhost2
    sudo ip netns add vhost3
    sudo ip netns add vhost4
    
    sudo ip netns exec vhost1 ifconfig lo 127.0.0.1
    sudo ip netns exec vhost2 ifconfig lo 127.0.0.1
    sudo ip netns exec vhost3 ifconfig lo 127.0.0.1
    sudo ip netns exec vhost4 ifconfig lo 127.0.0.1

    sudo ip link set vlink1-0 netns vhost1
    sudo ip link set vlink2-0 netns vhost2
    sudo ip link set vlink3-0 netns vhost3
    sudo ip link set vlink4-0 netns vhost4
    
    sudo ip netns exec vhost1 ifconfig vlink1-0 192.168.1.1
    sudo ip netns exec vhost2 ifconfig vlink2-0 192.168.1.2
    sudo ip netns exec vhost3 ifconfig vlink3-0 192.168.1.3
    sudo ip netns exec vhost4 ifconfig vlink4-0 192.168.1.4
    
    sudo ovs-vsctl add-port vswitch1 vlink5-0
    sudo ovs-vsctl add-port vswitch2 vlink5-1
    
    sudo ovs-vsctl add-port vswitch1 vlink1-1 tag=10
    sudo ovs-vsctl add-port vswitch1 vlink2-1 tag=20
    
    sudo ovs-vsctl add-port vswitch2 vlink3-1 tag=10
    sudo ovs-vsctl add-port vswitch2 vlink4-1 tag=20

    sudo ip link set vlink5-0 up
    sudo ip link set vlink5-1 up
}

case "$1" in
add)
    set -x
    add
    ;;
delete)
    delete > /dev/null 2>&1
    ;;
*)
    echo "usage: $0 {add|delete}"
esac

2013年4月 9日 (火)

Trema のコントローラと仮想ネットワークをそれぞれ別々に動かす

[2013/04/13 追記: 間違い訂正しました。誤った記載箇所を取消線で消して青字で新しく書き直しています。試そうとしてうまく動かなかった方、すみません m(_ _)m]
[2013/04/13 22:00 追記: 書き直し箇所でまた訂正 orz。誤: class Empty.rb、正: class Empty]

OpenFlow フレームワーク Trema を、コントローラと仮想ネットワークそれぞれ別々に動かすと便利そうだと思い調べてみたらできたのでやり方を書いておきます。

確認は、Trema 0.3.16 と 0.3.19 でしています。

■やりたいこと
Trema はコントローラの起動・停止で、仮想ネットワークも同時に起動・停止します。
それをあえて、Trema コントローラと Trema の仮想ネットワークを別々に起動・停止したい。

■背景
Trema コントローラの開発中は頻繁にバグで停止してしまうことがあります。
Trema の仮想ネットワーク設定ファイルのネットワークネームスペースの機能は非常に便利ですが、そのネットワークネームスペースでサーバープロセスを動かしているときは、Trema コントローラが停止しても動き続けて欲しい(再起動が面倒なので)。また、ネットワークネームスペースで動いているプロセスが残っていると Trema 終了時にネットワークネームスペースの削除に失敗してしまい、次の起動がおかしくなることもあります。

過去に書いた関連記事:
「Trema の仮想ネットワーク機能には『OpenFlow実践入門』に書いてない強力な機能がありました。」
「ネットワークネームスペース機能使用時の Trema 停止エラー軽減方法」

■解決案
2つOSを用意して、片方はコントローラ用、もう片方は仮想ネットワーク用と役割を分けて用いる。

■コントローラを動かす側
何もする必要はありません。
普通に trema run でコントローラを起動するだけです。

■仮想ネットワークを動かす側
(1)何もしないコントローラを用意する。
(1)空のファイルを用意してコントローラとして用いる。
(2)仮想ネットワーク設定ファイルにおいて、vswitch に ip アドレスとしてコントローラを動かす側の OS の IP アドレスを指定する。

■仮想ネットワーク側の例
コントローラ側が IPアドレス 192.168.83.156 とします。

・仮想ネットワーク設定ファイル vnet.conf

  vswitch("swtich0") {
    datapath_id "0x1"
    ip "192.168.83.156"
  }
  vhost("host1") {
    ip "192.168.0.1"
    netmask "255.255.255.0"
  }
  vhost("host2") {
    ip "192.168.0.2"
    netmask "255.255.255.0"
  }
  link "host1", "switch0"
  link "host2", "switch0"

・何もしないコントローラ empty.rb

   class Empty < Controller
   end

・空のコントローラ empty.rb
  空ファイルは以下のようにすれば作れます:

   touch empty.rb        # (empty.rb が存在しない場合のみ使える方法)

     または

   cp /dev/null emtpy.rb

・起動方法

   trema run empty.rb -c vnet.conf

trema dump_flows や trema send_packet など仮想ネットワークに対する操作は普通に実行できます。

■おまけ

vswitch を複数書くときにそれぞれに同じ IP アドレスを書くのは保守性に欠けます。仮想ネットワーク設定ファイルが実は ruby のプログラムであることを利用して関数化してみてはどうでしょう。

  def config_vswitch( name, dpid )
    vswitch("#{ name }") {
      datapath_id "#{ dpid }"
      ip "192.168.83.156"
    }
  end
  config_vswitch "switch1", "0x1"
  config_vswitch "switch2", "0x2"
  config_vswitch "switch3", "0x3"

もっと?

  def config_vswitch( name, dpid )
    vswitch("#{ name }") {
      datapath_id "#{ dpid }"
      ip "192.168.83.156"
    }
  end
  1.upto(3) do | each |
    config_vswitch "switch#{ each }", "#{ each }"
  end

2013年4月 7日 (日)

Trema を改造して仮想ネットワーク機能にポート番号指定を追加

[ 2013/04/07 21:00 追記: すみません。公開後にバグを見つけたのでパッチファイル trema.diff を差し替えました。詳細は本記事の最後を見てください ]

OpenFlow フレームワーク Trema (0.3.19)を改造してみました。
改造内容は、仮想ネットワーク機能において仮想スイッチで使われるポート番号を指定できる機能の追加です。実装を楽にするため制約をつけてはいますが、それでも十分使えると思います。

ちなみに、GitHub 上の Trema の Issue リストには、ポート番号指定について以下があがっていて現時点ではまだクローズしていない状態です:
https://github.com/trema/trema/issues/52
https://github.com/trema/trema/issues/286
ここで議論されているポート番号の表記方法をパクりました(^^;

動作確認は、Lubuntu 12.04 Desktop (i386) で確認しています。

■ポート番号を指定できると何が嬉しいか?

当たり前のことですが、どのポートに何がつながっているかの構成が決まっていて、その構成に依存してなにかしたいときにポート番号指定が必要です。
たとえば、ロードバランサをOpenFlow で作ることを考えると、どのポートにサーバがつながっているのか分かっていないと振り分け先を決めるのに困ります。

また、書籍『OpenFlow実践入門』「第7章 インテリジェントなパッチパネル」(初版 P.105)はポート番号を利用した例ですがテストには実機を必要としています。ポート番号指定ができれば仮想ネットワーク機能だけで試すことができます。

書籍『OpenFlow実践入門』(初版)の出版後にサポートされた機能でポート番号を指定して port_up, port_down する機能を使うにも仮想ネットワーク設定ファイルでポート番号が指定できれば便利です。
以下が port_up/port_down についての Trema プロジェクトの Issue:
https://github.com/trema/trema/issues/253

■使い方

仮想ネットワーク設定ファイルにて link 文でスイッチ名を指定するときに名前の後ろに「コロン+OpenFlowでのポート番号」を追加します。
以下に使用例を示します。赤字がポート番号指定箇所です:

例:

  vswitch("sw1") {
    datapath_id "1"
  }
  vhost("host1") {
    ip "192.168.0.1"
    netmask "255.255.255.0"
  }
  vhost("host2") {
    ip "192.168.0.2"
    netmask "255.255.255.0"
  }
  link "sw1:1","host1"
  link "sw1:2","host2"

制約:
  1) 仮想スイッチ名、仮想ホスト名、ネットワークネームスペース名にコロンを使わないこと。
  2) 指定するポートの番号は各スイッチごとに以下を守ること:
   a) 指定するポート番号のうち一番小さい番号は 1 であること。
   b) 指定するポート番号に抜けがないこと。

  NG: ポート番号 2を飛ばして 3 を使っているのでダメ
    link "sw1:1", "host1"
    link "sw1:3", "host2"
  NG: 一番小さいポート番号が 1 ではないのでダメ
    link "sw1:2", "host1"
    link "sw1:3", "host2"
  OK: ポート番号は 1,2, 3, ... と昇順で出現する必要はありません。
    link "sw1:2", "host1"
    link "sw1:1", "host2"
  OK: ポート番号指定の有り無しが混在しても構いません。
    link "sw1:1", "host1"
    link "sw1", "host2"

■改造版 Trema の作り方

Trema でソースからビルドする方法についての説明は省きます。書籍『OpenFlow実践入門』(初版  P.70)などを参照ください。

今回改造した箇所のパッチファイルは下記においておきます:
 http://ranosgrant.cocolog-nifty.com/trema-port/trema.diff

改造版を作る上での手順の違いは、ソースからビルドする手順において、./build.rb を実行する前にこのパッチをあてる手順を追加で実施するだけです。

wget http://ranosgrant.cocolog-nifty.com/trema-port/trema.diff
patch -p0 < trema.diff
./build.rb

パッチ作成に使った Trema は 2013年4月5日頃のものです。
バージョンは、trema version 0.3.19

本改造版 Trema が既存機能に悪さしていないことは Trema が提供する cruise.rb を実行し全テストケースがパスしたことで確認してあります(ただし、spec を一部修正してあります)。
[ 2013/04/07 追記: パスしたのですがバグありました。過信は禁物ですね ]

■改造版 Trema の起動方法

ソースからビルドした Trema はビルド環境に置いたまま使います。

例: ソースのありかが /home/ranosgrant/TREMA-git/trema/ の時にバージョン表示

 /home/ranosgrant/TREMA-git/trema/trema --version

または、

 cd /home/ranosgrant/TREMA-git/trema/
 ./trema --version

Ubuntu や Lubuntu のログインシェルのデフォルトである bash であればコマンドのエイリアスが使えるのでこれを使うと便利です。

例: bash で、改造版 Trema を mtrema というコマンド名で扱うための設定例
  alias mtrema=/home/ranosgrant/TREMA-git/trema/trema

これでパス名ではなく、
  mtrema --version
と呼び出せます。
.bashrc などを使って自動で alias を設定するようにしておくとよいでしょう。

■ソース改造箇所について少し説明

(1) Open vSwtich 側
vendor/openvswitch-1.2.2.trema1/tests/test-openflowd.c

  Trema が仮想スイッチとして利用している Open vSwitch (ovs-openflowd プロセス)の改造をしています。

  OpenFlow ポートとして使用する Linux のネットワークインターフェース名は、起動時のコマンドラインで --ports オプションを使ってコンマで区切って指定します。
こんな感じです: --ports=trema1-0,trema2-0,trema0-0
(trema が動いている時に ifconfig コマンドでみれば分かるように trema が使うネットワークインタフェース名は trema#-0, trema#-1 の形式です。ソースファイル ruby/trema/link.rb の initialize メソッドで名前を作っています。)
  --ports で指定された値を解析する parse_ports 関数では1つ1つ取り出したインターフェース名をハッシュに格納しています。引数で指定されたインターフェース名に対して処理をする箇所ではこのハッシュから取り出しながら処理をしています。ハッシュを使っているので取り出し順は登録順とは異なった順番になります。

  そこで、ハッシュを使わない方式に変更して --ports で指定した順に登録処理が行われるように変更しました。これで、--ports に書いた順にポート番号が1から順にふられるようになりました。

test-openflowd.c への変更分だけ抜き出した修正パッチはこちら:
http://ranosgrant.cocolog-nifty.com/trema-port/openvswitch-1.2.2-test-openflowd.diff

Trema では Open  vSwitch のソースファイルを tar.gz で固めた形で提供しているので tar.gz を展開した後にこのパッチが適用されるように Rakefile に変更を入れました。

(2) Trema 本体側

ruby/trema/dsl/parser.rb

  仮想ネットワーク設定ファイル内の link 指定にもとづいて生成した Linux のネットワークインターフェースの名前を仮想スイッチのオブジェクトに登録する処理をポート番号指定に対応するように変更しています。

ruby/trema/open-vswitch.rb

  ovs-openflowd プロセスの起動時オプションの1つ --ports に指定する文字列を生成する処理を変更しています。
  指定されたポート番号の順で、対応する Linux のインターフェース名を並べるようにしています。

(3) テストケース

spec/trema/packet-in_spec.rb
spec/trema/packet-out_spec.rb

  ポート番号を指定する機能がないのにポート番号を仮定したテストケースがあったので、今回のポート番号指定機能を使うように修正しました。

p.s.

動けば良いを優先したので、修正ソースはイマイチな感じがします...
誰かが本改造に刺激を受けてきれいに実装しなおして Trema プロジェクトに提供してくれたら嬉しいな。


■公開後のバグ修正情報

2013/04/07 21:00頃
最初に公開したパッチ trema.diff は、ruby/trema/dsl/parser.rb にバグを作りこんでいたので修正済みのものに置き換えました。
仮想ネットワーク設定ファイルで link 文に trema の仮想ネットワーク機能で作ったものではないすでに Linux にあるネットワークインタフェースを指定したときにエラーになります。具体例としては、書籍『OpenFlow実践入門』「リスト13-2 逆流防止フィルタ(OneWayBridge コントローラ)の設定ファイル」(初版 P.219)の eth0, eth1 が該当します。
すでにダウンロードしてビルドしている場合は行を1つ追加してください(赤字箇所)。
      def configure_switch(config, peer_str, ifname)
        return until peer_str
        pa = peer_str.split(PORT_DELIMITER_CHAR)

« 2013年3月 | トップページ | 2013年5月 »

最近のトラックバック

無料ブログはココログ