Open vSwitch---流表控制主机数据转发实验(一)

32 篇文章 61 订阅
29 篇文章 0 订阅

一、ovs的安装

安装ovs有两种方法,一种是源码安装(详见:Ubuntu下安装部署openvswitch和一些安装的异常处理(ovs安装)_北风-CSDN博客);

另一种是通过Ubuntu的apt进行安装,以下详解这种方式:

首先,通过命令apt search openvswitch搜索ovs,如下图所示,可以看出搜出了各种ovs的组件。

接下来,需要对ovs进行下载安装,根据上图可以看出需要安装openvswitch-switch,输入命令apt install openvswitch-switch进行安装,如下图所示。

安装完成后,输入命令ovs-vsctl show查看是否安装成功,如果安装成功如下图所示。

二、ovs命令ovs-vsctl介绍

注意:OpenvSwitch的操作命令有若干个,其中比较重要的有

ovs-vsctl   获取或者更改ovs-vswitchd的配置信息,此工具操作的时候会更新ovsdb-server中的数据库

ovs-ofctl     操作交换机里的流表

ovsdb-tool  对ovsdb数据库操作,不经过ovsdb-server模块

接下来对ovs-vsctl这个命令做一些介绍:

1.查看网桥和端口

ovs-vsctl show

2.创建一个网桥

ovs-vsctl add-br br0
ovs-vsctl set bridge br0 datapath_type=netdev
# 设置交换机的dpid
ovs-vsctl set bridge br0 other-config:datapath-id=0000000000000001
# 查看设置是否成功
ovs-ofctl show br0

3.添加/删除一个端口

# for system interfaces
ovs-vsctl add-port br0 eth1
ovs-vsctl del-port br0 eth1
# for DPDK
ovs-vsctl add-port br0 dpdk1 -- set interface dpdk1 type=dpdk options:dpdk-devargs=0000:01:00.0
# for DPDK bonds
ovs-vsctl add-bond br0 dpdkbond0 dpdk1 dpdk2 \
    -- set interface dpdk1 type=dpdk options:dpdk-devargs=0000:01:00.0 \
    -- set interface dpdk2 type=dpdk options:dpdk-devargs=0000:02:00.0
# or new version
ovs-vsctl add-port br0 dpdkbond0 \
    -- set interface dpdkbond0 type=dpdk options:dpdk-devargs=0000:01:00.0,0000:02:00.0

4.设置/清除网桥的openflow协议版本

ovs-vsctl set bridge br0 protocols=OpenFlow13
ovs-vsctl clear bridge br0 protocols

5.查看某网桥当前流表

ovs-ofctl dump-flows br0
ovs-ofctl -O OpenFlow13 dump-flows br0
ovs-appctl bridge/dump-flows br0

6.设置/删除控制器

ovs-vsctl set-controller br0 tcp:1.2.3.4:6633
ovs-vsctl del-controller br0

7.查看控制器列表

ovs-vsctl list controller

8.设置/删除被动连接控制器

ovs-vsctl set-manager tcp:1.2.3.4:6640
ovs-vsctl get-manager
ovs-vsctl del-manager

9.设置/移除可选选项

ovs-vsctl set Interface eth0 options:link_speed=1G
ovs-vsctl remove Interface eth0 options link_speed

10.设置fail模式,支持standalone或者secure

standalone(default):清除所有控制器下发的流表,ovs自己接管

secure:按照原来流表继续转发

ovs-vsctl del-fail-mode br0
ovs-vsctl set-fail-mode br0 secure
ovs-vsctl get-fail-mode br0

11.查看接口id等

ovs-appctl dpif/show

12.查看接口统计

ovs-ofctl dump-ports br0

三、数据流转发试验

本次试验利用两个network namespace作为两台主机(详见:两个network namespace通过路由实现互通_北风-CSDN博客),利用ovs作为交换机连接两台主机,新建四个网卡分别分配IP地址,具体的拓扑图如下所示。

(1)使用命令ip netns add ns,新建两个namespace,即ns1和ns2。如下图所示。

(2)使用命令iip link add veth1-ns1 type veth peer name veth2-ns,新建两对网卡,分别作为通信两天链路。如下图所示。

(3)使用命令ip link set veth1-ns netns ns,将网卡veth1-ns1和veth1-ns2分别分配给ns1和ns2。如下图所示。

(4)使用ip netns exec ns bash命令,分别进入ns1空间和ns2的空间下,对空间内的各个网卡进行启动,然后对veth分配ip地址,如下图所示,第一张图对ns1的操作,第二张图对ns2的操作。

(5)进入物理主机的终端中,启动veth2-ns1和veth2-ns2网卡,再分别为其分配IP地址。如下图所示。

(6)此时就需要新建一个ovs交换机连接两个网络空间,在物理机的终端中使用命令ovs-vsctl add-br vswitch1-2新建网桥vswitch1-2,如下图所示。

(7)为网桥新建网卡,也就是将veth2-ns1和veth2-ns2两个网卡加入网桥vswitch1-2中,使用命令ovs-vsctl add-port vswitch1-2 veth2-ns添加端口。如下图所示。

(8)添加完成后,此时由于所以的ip地址都在同一个网段之中,所以ns1和ns2之间就可以ping通,进入ns的空间下,如下图所示。

四、流表操作入门

ovs支持openflow协议,数据的转发都是按照流表进行的。

查看网桥的流表命令:

ovs-ofctl dump-flows br0
ovs-ofctl -O OpenFlow13 dump-flows br0
ovs-appctl bridge/dump-flows br0

查看网桥中端口对应的number:

ovs-ofctl show br0

添加普通流表

ovs-ofctl add-flow br0 in_port=1,actions=output:2

删除所有流表

ovs-ofctl del-flows br0

按匹配项来删除流表

ovs-ofctl del-flows br0 "in_port=1"

(1)使用命令ovs-ofctl dump-flows vswitch1-2,查看vswitch1-2的流表。如下图所示。可以看出,此时的流表优先级为零,action=normal代表ovs执行普通交换机的功能。

(2)使用命令ovs-ofctl del-flows vswitch1-2,删除流表项,此时进入ns1,查看是否还可以ping同ns2。如下图所示。

(3)添加流表项,使ns1和ns2之间能够ping通,使用命令ovs-ofctl add-flow vswitch1-2 in_port= ,actions=output: ,添加流表转发规则让1端口流入的数据从2端口转发出去,2端口流入的数据从1端口转发出去,在添加流表之前需要使用命令ovs-ofctl show vswitch1-2查看一下各个端口的number。如下图所示。

各个端口对应的number:

添加流表项:

此时,ns1和ns2就可以相互ping通了,如下图所示。

关于ovs的全部命令,可参考详细文档:ovs-commands-reference.pdf_openvswitch流表控制-网络安全文档类资源-CSDN下载 

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

楊木木8023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值