OpenvSwitch系列之五 网桥特性功能配置

Open vSwitch系列之一 Open vSwitch诞生 

Open vSwitch系列之二 安装指定版本ovs

Open vSwitch系列之三 ovs-vsctl命令使用

Open vSwitch系列之四 ovs-ofctl命令使用

Open vSwitch系列之五 网桥特性功能配置

Open vSwitch系列之六 vlan隔离

Open vSwitch系列之七 meter表限速

OpenvSwitch系列之八 vxlan隧道 

OpenvSwitch系列之九 Group表

Open vSwitch系列之十 调用北向接口下发流表

Open vSwitch系列之十一 ovs-dpdk

查看网桥mac学习地址表

ovs作为一个交换机,既可以工作在SDN模式也可以工作在普通交换机模式。工作在普通交换机模式下就有mac自学习功能。和普通的交换机一样,ovs交换机也能查看mac和端口关系的对应表。

ovs-appctl fdb/show s1

设置网桥不连接控制器的转发模式

ovs 交换机在连接不上控制器时有一个fail_mode的标志,所谓fail_mode就是故障模式,意思是SDN控制器故障时,交换机未连接控制器时的模式。

fail_mode 故障模式有两种状态,一种是standalone,一种是secure状态。

如果是配置了standalone mode,在三次探测控制器连接不成功后,此时ovs-vswitchd将会接管转发逻辑(后台仍然尝试连接到控制器,一旦连接则退出fail状态),OpenvSwitch将作为一个正常的mac 学习的二层交换机。

如果是配置了secure mode,则ovs-vswitchd将不会自动配置新的转发流表,OpenvSwitch将按照原先有的流表转发。

简单来说:

standalone(default):清除所有控制器下发的流表,ovs自己接管 
secure:按照原来流表继续转发

ovs-vsctl get-fail-mode br0

ovs-vsctl set-fail-mode br0 secure 

再次查看交换机,可以看到交换机的fail_mode已经变成standalone模式。这里有一点需要说明,fail_mode连不上交换机之后的ovs的转发模式,跟当前ovs交换机连没连控制器没有关系。

 

 同样也可以删除fail_mode

ovs-vsctl del-fail-mode br0 

 

开启STP 生成树协议

STP是Spanning Tree Protocol的缩写,意思是指生成树协议,可应用于计算机网络中树形拓扑结构建立,主要作用是防止网桥网络中的冗余链路形成环路工作。

在上面的拓扑中,交换机之间形成环路,交换机中的广播数据包会形成广播风暴,而STP生成树的作用就是经过计算阻塞交换机的部分端口,使得交换机之间不会形成环路。

查看ovs交换机是否开启stp协议。

ovs-vsctl get bridge s1 stp_enable

设置交换机开启stp协议

ovs-vsctl set bridge br0 stp_enable=true

查看网桥配置信息

对于一个网桥来说有很多特性,比如前面提到的是否开启STP生成树,当控制器故障时的fail-mode是standalone还是secure。网桥的特性远不止于此,可以命令查看到一个网桥的配置信息。

ovs-vsctl list bridge s1

  

查看端口配置信息

网桥的配置信息可以查看到,同样端口的配置也可以查看到。端口是否有vlan,tag号多少等。通过命令能够查看到端口的特性。

ovs-vsctl list port s1 s1-eth1 

 

网卡加入网桥IP失效的解决办法

 在ovs操作中常常有这么一个现象,将本机的网卡加入到网桥之中后就发现机器的ip地址失效了,不能ssh,不能ping通。这是因为当网卡加入网桥之后,网卡就是交换机上的一个端口,交换机作为二层设备,其端口是不可能有IP地址的,所以本机的IP地址失效。

那么这样的情况如何处理?处理方法还是有的,关键点就在网桥的一个端口。网桥创建成功后会默认带一个与网桥同名的port,并且这个port的类型是比较特殊的Internal。

ovs中port有四种类型

  类型       说明
Normal                             用户可以把操作系统中的网卡绑定到ovs上,ovs会生成一个普通端口处理这块网卡进出的数据包。
Internal                   端口类型为internal时,ovs会创建一块虚拟网卡,虚拟网卡会与端口自动绑定。当ovs创建一个新网桥时,默认会创建一个与网桥同名的Internal Port。
Patch 当机器中有多个ovs网桥时,可以使用Patch Port把两个网桥连起来。Patch Port总是成对出现,分别连接在两个网桥上,在两个网桥之间交换数据。
Tunne 隧道端口是一种虚拟端口,支持使用gre或vxlan等隧道技术与位于网络上其他位置的远程端口通讯。

 

 

 

 

 

 

 

Internal 类型可以看做每个OVS交换机有个可以用来处理数据报的本地端口,可以为这个网络设备配置 IP 地址。当创建ovs网桥时会自带一个同名的端口,该端口就是类型为Internal 端口。解决的思路就是Internal类型的port会生成一个虚拟网卡,将绑定到网桥的网卡的IP地址转移到该虚拟网卡上,然后配置路由即可。

解决步骤:

1.查看当前网卡ip地址

查看路由

 

2.创建网桥,绑定端口

当创建网桥之后网桥自带一个类型为Internal的port,该port就是一个虚拟网卡。使用ifconfig能够查看得到,网卡名字就叫做s1.

  

3.将网卡eth0的ip地址转移到网卡s1上

由于我是ssh远程到虚拟机上操作,当将eth0绑定到网桥上之后ip失效,所以ssh断开,只能在虚拟机上操作。

 

 

 4.查看路由

当前路由中已经没有发往外网的路由

5.添加新路由

为新网卡s1添加网关路由 

route add default gw 30.0.0.1

 

6.测试生效

添加好路由之后可以发现能够重新通外网。网卡eth0的ip在新网卡s1上生效

 

 

 

 

 

posted @ 2019-11-30 22:09  金色旭光  阅读(21510)  评论(16编辑  收藏  举报