openvswitch有port和bridge

               

在 OVS 中, 有几个非常重要的概念:

  • Bridge: Bridge 代表一个以太网交换机(Switch),一个主机中可以创建一个或者多个 Bridge 设备。
  • Port: 端口与物理交换机的端口概念类似,每个 Port 都隶属于一个 Bridge。
  • Interface: 连接到 Port 的网络接口设备。在通常情况下,Port 和 Interface 是一对一的关系, 只有在配置 Port 为 bond 模式后,Port 和 Interface 是一对多的关系。

 OVS中的bridge

上面,说到,一个桥就是一个交换机。在OVS中,

ovs-vsctl add-br brname(br-int)root@Compute2:~# ifconfig      br-int    Link encap:Ethernet  HWaddr 1a:09:56:ea:0b:49        inet6 addr: fe80::1809:56ff:feea:b49/64 Scope:Link      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1      RX packets:1584 errors:0 dropped:0 overruns:0 frame:0      TX packets:6 errors:0 dropped:0 overruns:0 carrier:0      collisions:0 txqueuelen:0       RX bytes:316502 (316.5 KB)  TX bytes:468 (468.0 B)

当我们创建了一个交换机(网桥)以后,此时网络功能不受影响,但是会产生一个虚拟网卡,名字就是brname,之所以会产生一个虚拟网卡,是为了实现接下来的网桥(交换机)功能。有了这个交换机以后,我还需要为这个交换机增加端口(port),一个端口,就是一个物理网卡,当网卡加入到这个交换机之后,其工作方式就和普通交换机的一个端口的工作方式类似了。

ovs-vsctl add-port brname port

这里要特别注意,网卡加入网桥以后,要按照网桥的工作标准工作,那么加入的一个端口就必须是以混杂模式工作,工作在链路层,处理2层的帧,所以这个port就不需要配置IP了。(你没见过哪个交换的端口有IP的吧)

那么接下来你可能会问,通常的交换机不都是有一个管理接口,可以telnet到交换机上进行配置吧,那么在OVS中创建的虚拟交换机有木有这种呢,有的!上面既然创建交换机brname的时候产生了一个虚拟网口brname,那么,你给这个虚拟网卡配置了IP以后,就相当于给交换机的管理接口配置了IP,此时一个正常的虚拟交换机就搞定了。

ip address add 192.168.1.1/24 dev brname

最后,我们来看看一个br的具体信息:

root@Compute2:~# ovs-vsctl showbc12c8d2-6900-42dd-9c1c-30e8ecb99a1bBridge "br0"    Port "eth0"        Interface "eth0"    Port "br0"        Interface "br0"            type: internalovs_version: "1.4.0+build0"

首先,这里显示了一个名为br0的桥(交换机),这个交换机有两个接口,一个是eth0,一个是br0,上面说到,创建桥的时候会创建一个和桥名字一样的接口,并自动作为该桥的一个端口,那么这个虚拟接口的作用,一方面是可以作为交换机的管理端口,另一方面也是基于这个虚拟接口,实现了桥的功能。

ovs-vsctl使用:

添加名为br0的网桥

扫描二维码关注公众号,回复: 5928139 查看本文章

ovs-vsctl
add-br br0

删除名为br0的网桥

ovs-vsctl
del-br br0

列出所有网桥

ovs-vsctl
list-br

判断网桥br0是否存在

ovs-vsctl
br-exists br0

列出挂接到网桥br0上的所有网络接口

ovs-vsctl
list-ports br0

网络接口eth0挂接到网桥br0

ovs-vsctl
add-port br0 eth0

删除网桥br0上挂接的eth0网络接口

ovs-vsctl
del-port br0 eth0

列出已挂接eth0网络接口的网桥

ovs-vsctl
port-to-br eth0

 

配置实例:

在两台xen+openvswitch的服务器上172.16.19.206和172.16.19.208,启动四个虚拟机(206:VM3, VM4; 208:VM1, VM2 ),结构图如下所示:

配置如下:

1.在206上:

Ifconfig eth1
172.16.19.206/16 up

(1)创建网桥:

Ovs-vsctl add-br ovsbr0
#注意创建网桥之后,会在网桥上创建同名的端口ovsbr0,类型为internal,用于给网桥配置IP方便管理等。

(2)让网桥ovsbr接管eth0:

Ovs-vsctl add-port
ovsbr0 eth0

(3)配置网桥的IP:

Ifconfig eth0 0.0.0.0

Ifconfig ovsbr0
172.16.19.230/16 up

(4)创建虚拟机:

Virsh create VM1.xml

Virsh create VM2.xml

(5)查看网桥:

Ovs-vsctl show ovsbr0

会发现ovsbr0下面会有6个端口ovsbr0,eth0,tap1.0,tap2.0,vif1.0,vif2.0。(关于tap和vif参见其他内容,在本服务器上起作用的是tap,具体哪个起作用还需要测试)

2. 在208上,配置类似:

3.配置VLAN

(1)VM1, VM2属于VLAN1

Ovs-vsctl set port
tap1.0 tag=1

Ovs-vsctl set port tap2.0
tag=1

之VM1和VM2之间可以互ping,

 

(2)VM1属于VLAN1,
VM2属于VLAN2

Ovs-vsctl set port
tap1.0 tag=1

Ovs-vsctl set port tap2.0
tag=2

之VM1和VM2之间无法互ping,

 

(3)VM1, VM2, VM3,VM4属于VLAN1

208上:

Ovs-vsctl set port
tap1.0 tag=1

Ovs-vsctl set port
tap1.0 tag=1

206上:

Ovs-vsctl set port tap3.0
tag=1

Ovs-vsctl set port tap4.0
tag=1

之VM1, VM2, VM3,VM4之间可以互ping,

 

(4)VM1, VM3,属于VLAN1,
VM2,VM4属于VLAN2

208上:

Ovs-vsctl set port
tap1.0 tag=1

Ovs-vsctl set port
tap2.0 tag=2

206上:

Ovs-vsctl set port
tap3.0 tag=1

Ovs-vsctl set port
tap4.0 tag=2

在我的试验中,VM1, VM2,
VM3,VM4之间无法互ping,而理论上应该是VM1和VM3可以互ping,VM2和VM4之间可以互ping。目前还不知道什么原因造成的。待续。。。

 

 

 

           

猜你喜欢

转载自blog.csdn.net/qq_44910432/article/details/89339825
今日推荐