前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenDaylight与Mininet应用实战之流表操作

OpenDaylight与Mininet应用实战之流表操作

作者头像
SDNLAB
发布2018-04-03 15:07:12
1.5K0
发布2018-04-03 15:07:12
举报
文章被收录于专栏:SDNLAB

1 实验目的

  • 掌握Open vSwitch下发流表操作;
  • 掌握添加、删除流表命令以及设备通信的原理。

2 实验原理

在SDN环境下,当交换机收到一个数据包并且交换机中没有与该数据包匹配的流表项时,交换机将此数据包发送给控制器,由控制器决策数据包如何处理。控制器下发决策后,交换机根据控制器下发的信息来进行数据包的处理,即转发或者丢弃该数据包。我们可以通过对流表操作来控制交换机的转发行为。

3 实验任务

本实验基于一台OpenDaylight Helium版本虚拟机和一台Mininet模拟实验。我们已安装相关环境的虚拟机中启动ODL和Mininet,Mininet创建一个默认树形拓扑并选择Mininet的控制器指定为ODL,进行基本的添加、删除流表操作,使网络实现网络通信和不通信。如下拓扑所示:

OpenDaylight与Mininet应用实战之流表操作 图1
OpenDaylight与Mininet应用实战之流表操作 图1

4 实验步骤

4.1 环境搭建

步骤1 :在实验平台首页单击“创建虚网”。虚网名称以“Slice1”为例,虚网名称只能包括数字,字母和下划线。

OpenDaylight与Mininet应用实战之流表操作 图2
OpenDaylight与Mininet应用实战之流表操作 图2

任意选择设备拓扑:

OpenDaylight与Mininet应用实战之流表操作 图3
OpenDaylight与Mininet应用实战之流表操作 图3

进行下一步配置,并点击最后“创建”,虚网创建成功;

步骤2:创建控制器,选择Floodlight控制器。

步骤3:在“虚网详情”页面单击网关部分的“

Firewall REST API实验 图24
Firewall REST API实验 图24

”按钮添加网关。

OpenDaylight与Mininet应用实战之流表操作 图4
OpenDaylight与Mininet应用实战之流表操作 图4

步骤4:创建2个虚拟机,一个是选择OpenDaylight镜像的虚拟机作为控制器(注:内存大于2G),另一个是选择Mininet镜像作为所需Mininet。如下图已创建虚拟机所示:

OpenDaylight与Mininet应用实战之流表操作 图5
OpenDaylight与Mininet应用实战之流表操作 图5

4.2 启动验证

步骤1:虚网详情中,右上角点击按钮启动虚网。

步骤2:OpenDaylight启用验证:

代码语言:javascript
复制
ps –ef|grep java
OpenDaylight与Mininet应用实战之流表操作 图6
OpenDaylight与Mininet应用实战之流表操作 图6

说明OpenDaylight已启动(注:虚拟机启动后,OpenDaylight进程跟随虚拟机自起)。

因选的是控制器镜像,生成的IP与Mininet是不同网段的。需将OpenDaylight的所在机器/etc/network/interfaces中,静态IP地址注释掉,修改成DHCP模式,如图:

OpenDaylight与Mininet应用实战之流表操作 图7
OpenDaylight与Mininet应用实战之流表操作 图7

修改成功后,reboot重启VM,重启后,IP即与Mininet是同一网段,且能够相互通信。

OpenDaylight所在虚拟机的IP及路由:

OpenDaylight与Mininet应用实战之流表操作 图8
OpenDaylight与Mininet应用实战之流表操作 图8

Mininet所在虚拟机的IP及路由:

OpenDaylight与Mininet应用实战之流表操作 图9
OpenDaylight与Mininet应用实战之流表操作 图9

OpenDaylight所在虚拟机和Mininet所在虚拟机能够互相通信。

OpenDaylight与Mininet应用实战之流表操作 图10
OpenDaylight与Mininet应用实战之流表操作 图10

4.3 创建拓扑并连接控制器

OpenDaylight与Mininet应用实战之流表操作 图11
OpenDaylight与Mininet应用实战之流表操作 图11
OpenDaylight与Mininet应用实战之流表操作 图12
OpenDaylight与Mininet应用实战之流表操作 图12

4.4 流表的简单操作

先查看交换机上的流表,显示的是数据流指向控制器,让控制器来下发流表:

代码语言:javascript
复制
sh ovs-ofctl dump-flows s1
OpenDaylight与Mininet应用实战之流表操作 图13
OpenDaylight与Mininet应用实战之流表操作 图13

在Mininet中pingall一下,交换机下面的两台主机h1、h2应能互相通信,如果不能通信,请检查交换机是否与ODL正确连接。

OpenDaylight与Mininet应用实战之流表操作 图14
OpenDaylight与Mininet应用实战之流表操作 图14

此时再查看交换机s1中流表应多出两条控制器下发的流表:

OpenDaylight与Mininet应用实战之流表操作 图15
OpenDaylight与Mininet应用实战之流表操作 图15

我们看到每条流规则由一系列字段组成,它们由基本字段、条件字段和动作字段三部分组成。有了流表后交换机就根据流表来进行数据包的操作,当然我们也可以人工的进行流表的新增、修改、删除操作,在我们这个环境下可直接在终端下输入命令。

4.5 添加删除流表

例如让交换机丢弃从2号端口发来的所有数据包:

代码语言:javascript
复制
# sh ovs-ofctl add-flow s1 priority=12,in_port=2,actions=drop

(注:优先级比其他流表优先级高)

OpenDaylight与Mininet应用实战之流表操作 图16
OpenDaylight与Mininet应用实战之流表操作 图16

增加这条流表以后,Mininet中h1和h2主机之间无法通信了。

OpenDaylight与Mininet应用实战之流表操作 图17
OpenDaylight与Mininet应用实战之流表操作 图17

再删除一条流规则:如将删除条件字段中包含in_port=2的所有流表,如下图所示,将含有in_port=2的所有流表被删除了。

代码语言:javascript
复制
# sh ovs-ofctl del-flows s1 in_port=2
OpenDaylight与Mininet应用实战之流表操作 图18
OpenDaylight与Mininet应用实战之流表操作 图18

因为之前添加的丢弃2号端口包的流表已被删除,这时Mininet中h1和h2主机又可以正常通信了。

OpenDaylight与Mininet应用实战之流表操作 图19
OpenDaylight与Mininet应用实战之流表操作 图19
OpenDaylight与Mininet应用实战之流表操作 图20
OpenDaylight与Mininet应用实战之流表操作 图20

查看流表后,之前删除的流表不存在,主机间能够互通。

5 实验结论

主要是对OpenFlow流表有更进一步的了解,简略介绍一些基本的流表操作。在此基础上可以进行比如改写源和目地主机的ip和mac地址、对数据包泛洪、回环等操作,用户可以根据需求通过修改流表来自主地控制转发行为,这本身也是SDN的初衷之一,也使得我们控制网络更加的便捷、灵活、多样。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SDNLAB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 实验目的
  • 2 实验原理
  • 3 实验任务
  • 4 实验步骤
    • 4.1 环境搭建
      • 4.2 启动验证
        • 4.3 创建拓扑并连接控制器
          • 4.4 流表的简单操作
            • 4.5 添加删除流表
            • 5 实验结论
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档