ovs-vsctl:“eth0”不是有效的 UUID

ovs-vsctl:“eth0”不是有效的 UUID

我正在尝试在我的 Ubuntu 12.04 Server VM 中设置一个开放的 v-switch。我为这个 VM 创建了三个接口,我想使用这些接口和开放的 v-switch 在 VM 内部创建一个端口镜像。

有三个仅主机适配器:eth0、eth1、eth2。想法是将另外三个虚拟机连接到这些适配器。其中一个虚拟机将把 UDP 视频流传输到 eth0,我希望 vswitch'd 虚拟机将这些数据包从 eth0 镜像到 eth1 和 eth2。连接到 eth1 和 eth2 的每个虚拟机都将获得相同的视频流。

我执行了以下步骤来安装 open v-switch:

$ apt-get install python-simplejson python-qt4 python-twisted-conch automake autoconf gcc uml-utilities libtool build-essential
$ apt-get install build-essential autoconf automake pkg-config
$ wget http://openvswitch.org/releases/openvswitch-1.7.1.tar.gz
$ tar xf http://openvswitch.org/releases/openvswitch-1.7.1.tar.gz
$ cd http://openvswitch.org/releases/openvswitch-1.7.1.tar.gz
$ apt-get install libssl-dev iproute tcpdump linux-headers-`uname -r`
$ ./boot.sh
$ ./configure - -with-linux=/lib/modules/`uname -r`/build
$ make
$ sudo make install

安装后我配置如下:

$ insmod datapath/linux/openvswitch.ko
$ sudo touch /usr/local/etc/ovs-vswitchd.conf
$ mkdir -p /usr/local/etc/openvswitch
$ ovsdb-tool create /usr/local/etc/openvswitch/conf.db

然后我启动了服务器:

$ ovsdb-server /usr/local/etc/openvswitch/conf.db \
  --remote=punix:/usr/local/var/run/openvswitch/db.sock \
  --remote=db:Open_vSwitch,manager_options \
  --private-key=db:SSL,private_key \
  --certificate=db:SSL,certificate \
  --bootstrap-ca-cert=db:SSL,ca_cert --pidfile --detach --log-file
$ ovs-vsctl –no-wait init (run only once)
$ ovs-vswitchd --pidfile --detach

上述步骤来自教程,一切正常。然后我根据 open v-switch 文档在端口镜像。我成功完成了以下命令:

$ ovs-vsctl add-br br0
$ ovs-vsctl add-port br0 eth0
$ ovs-vsctl add-port br0 eth1
$ ovs-vsctl add-port br0 eth2
$ ifconfig eth0 promisc up
$ ifconfig eth1 promisc up
$ ifconfig eth2 promisc up

此时,当我运行 ovs-vsctl show 时,我得到以下信息:

75bda8c2-b870-438b-9115-e36288ea1cd8
    Bridge "br0"
        Port "br0"
            Interface "br0"
                type: internal
        Port "eth0"
            Interface "eth0"
        Port "eth2"
            Interface "eth2"
        Port "eth1"
            Interface "eth1"

当我运行 ifconfig 时,我得到以下信息:

eth0      Link encap:Ethernet  HWaddr 08:00:27:9f:51:ca  
          inet6 addr: fe80::a00:27ff:fe9f:51ca/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:17 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1494 (1.4 KB)  TX bytes:468 (468.0 B)

eth1      Link encap:Ethernet  HWaddr 08:00:27:53:02:d4  
          inet6 addr: fe80::a00:27ff:fe53:2d4/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:17 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1494 (1.4 KB)  TX bytes:468 (468.0 B)

eth2      Link encap:Ethernet  HWaddr 08:00:27:cb:a5:93  
          inet6 addr: fe80::a00:27ff:fecb:a593/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:17 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1494 (1.4 KB)  TX bytes:468 (468.0 B)

eth3      Link encap:Ethernet  HWaddr 08:00:27:df:bb:d8  
          inet addr:192.168.1.139  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fedf:bbd8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2211 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1196 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:182987 (182.9 KB)  TX bytes:125441 (125.4 KB)

注意:我使用 eth3 作为通过 SSH 进入 VM 的桥接适配器。

所以现在,我认为我已经正确地完成了所有事情,但是当我尝试使用以下命令创建桥梁时:

$ ovs-vsctl -- set Bridge br0 mirrors=@m -- --id=@eth0 get Port eth0 -- --id=@eth1 get Port eth1 -- --id=@m create Mirror name=app1Mirror select-dst-port=eth0 select-src-port=@eth0 output-port=@eth1,@eth2

我收到以下错误:

ovs-vsctl: "eth0" is not a valid UUID

我不明白为什么找不到接口?

答案1

经过一番搜索,我发现我犯了两个错误:

  • eth0 前面缺少 @:select-dst-port=eth0 应为 select-dst-port=@eth0
  • 您只能为每个输出端口一次添加一条规则。因此最后您只能说 output-port=@eth1,而不能说 output-port=@eth1,@eth2

相关内容