使用OpenDaylight界面下发流表

任务目的

1、通过Mininet模拟搭建基于不同数据中心的网络拓扑; 2、掌握多数据中心网络拓扑的构建; 3、熟悉网络性能测试工具Iperf,根据实验测试SDN网络的性能; 4、通过程序生成真实网络流量。

任务环境

设备名称 软件环境 硬件环境
主机 Mininet_2.2.0_desktop_cv1.1 CPU:1核内存2G磁盘:20G

注:系统默认的账户为: 管理员权限用户名:root,密码:root@openlab; 普通用户用户名:openlab,密码:user@openlab。

任务内容

1、比较使用YANG UI下发流表的方法,与直接在交换机中通过命令下流表的方方法,总结两者的异同点。

2、通过YANG UI下发流表控制主机之间的连通性,并且利用scapy工具进行测试验证。

3、分别基于OpenFlow1.0协议和OpenFlow1.3协议下发流表,经过下流表的过程了解单级流表和多级流表的概念。

实验步骤

一、 *实验环境检查*

步骤1 登录OpenDaylight控制器,执行命令netstat -an|grep 6633查看端口是否处于监听状态。


步骤2 在保证控制器6633端口处于监听状态后,使用root用户登录交换机,执行以下命令连接控制器(注意30.0.1.3是控制器的ip地址):

# ovs-vsctl del-controller br-sw# ovs-vsctl set-controller br-sw tcp:30.0.1.3:6633

步骤3 当交换机与控制器连接成功后,登录主机,执行ifconfig命令,配置主机ip地址

手动配置主机1的IP地址(eth1)如下图所示。


手动配置主机2的IP地址(eth1)如下图所示。


手动配置主机3的IP地址(eth1)如下图所示。


一、 *基于OpenFlow1.0协议下发流表*

步骤1 切换到交换机,执行以下命令设置OpenFlow协议版本为1.0。

$ ovs-vsctl set bridge br-sw protocols=OpenFlow10

步骤2 选择控制器,单击浏览器图标,打开浏览器。

步骤3 访问OpenDaylight Web页面,url是http://127.0.0.1:8080/index.html ,用户名和密码是admin/admin,如下图所示。


步骤4 单击左侧的“Nodes”查看节点信息。其中尤其需要关注Node Id,下发流表的时候会用到Node Id,如下图所示。


步骤5 单击上图中的“Node Connectors”列的数据即“9”,可以查看具体节点连接信息,如下图所示。


步骤6 选择左侧的“Yang UI”,单击“Expand all”展开所有目录,查看各种模块,如下图所示。


步骤7 展开“opendaylight-inventory rev.2013-08-19”,选择“config ——> nodes ——> node{id} ——> table{id} ——> flow{id}”,如下图所示。


步骤8 补全node id、table id和flow id的值。

其中node id参见之前查询到的Node Id。table id和flow id可以自定义。由于OpenFlow1.0协议只支持单流表,所以这里的table id设置为0,如下图所示。


步骤9 单击flow list后面的“+”,展开流表相关的参数。填写第一个框id,路径中的flow id也会随之同步,如下图所示。

步骤10 展开“match ——> ethernet-match ——> ethernet -type”,填写“type”为“0x0800”,如下图所示。

说明:由于使用IP地址进行匹配,所以需要设置以太网协议类型。


步骤11 填写匹配参数,在“layer-3-match”后面的下拉框中选择“ipv4-match”,使用IP匹配。

步骤12 展开“layer-3-match”,填写源IP地址和目的IP地址,如下图所示。


其中源地址填写主机1的IP地址,目的地址填写主机2的IP地址。

步骤13 展开“instructions”,并单击“instruction list”后面的“+”,在“instruction”后面下拉框中选择“apply-actions-case”,如下图所示。


步骤14 展开“apply-actions”,单击“action list”后面的“+”,在action后面的下拉框中选择“drop-action-case”,action order和instruction order都设置为0,如下图所示。


步骤15 设置“priority”为27,“idle-timeout”为0,“hard-timeout”为0,“cookie”为100000000,“table_id”为0,如下图所示。


说明:priority设置的比已有流表项的高,而idle-timeout和hardtimeout都设置为0则代表该流表项永远不会过期,除非被删除。

步骤16 向右滚动Actions栏,在路径后面有动作类型GET、PUT、POST、DELETE,下发流表则选择PUT动作,然后单击“Send”,如下图所示。

步骤17 如果下发成功会出现下面的提示,如果下发不成功则会弹出相应的错误信息。


步骤18 切换到交换机,执行如下命令查看流表,确保刚刚下发的流表已经下发到交换机。如下图所示。

$ ovs-ofctl dump-flows br-sw

步骤19 登录主机1,执行如下命令向主机2、主机3发送数据包,测试主机间的连通性。

`# scapy`

\>>> result,unanswered=sr(IP(dst=”10.0.0.10”,ttl=(3,10))/ICMP())

\>>> result,unanswered=sr(IP(dst=”10.0.0.14”,ttl=(3,10))/ICMP())


由上图可知,主机1与主机2之间不通,主机1与主机3通,新下发的流表项生效。

说明:如果主机之间通则能够收到answer,如果主机之间不通那么就无法收到answer,当主机之间不通时scapy就会一直发送数据包,如果需要停止可以使用Ctrl+c。

步骤20 切换到交换机,执行以下命令删除刚刚下发的流表项,并查看流表确保成功删除。

\# ovs-ofctl del-flows br-sw dl_type=0x0800,nw_src=10.0.0.9,nw_dst=10.0.0.10

\# ovs-ofctl dump-flows br-sw

步骤21 切换到主机1执行如下命令,测试主机1和主机2是否连通。

\>>> result,unanswered=sr(IP(dst=”10.0.0.10”,ttl=(3,10))/ICMP())


由上图可知,主机1与主机2之间就通了。

三、 *基于OpenFlow1.3协议下发流表*

****

步骤1 登录交换机,设置OpenFlow协议版本为1.3。执行以下命令:

# ovs-vsctl set bridge br-sw protocols=OpenFlow13

步骤2 与OpenFlow1.0下发流表的过程解基本一致。展开opendaylight-inventory rev.2013-08- 19,选择“config ——> nodes ——> node{id} ——> table{id} ——> flow{id}”。

步骤3 补全Actions栏中的路径,其中node id参见之前查询到的Node Id。table id和flow id可以自定义。由于OpenFlow1.3协议支持多级流表,所以这里的table id设置为2。

步骤4 单击flow list后面的“+”,流表相关的参数就会展开。设置id为1,路径中的flow id也会随之同步,如下图所示。


步骤5 展开“match ——> ethernet-match ——> ethernet -type”,填写“type”为0x0800,如下图所示。

步骤6 在“layer-3-match”后面的下拉框中选择“ipv4-match”。

步骤7 展开“layer-3-match”,填写源IP地址和目的IP地址。以主机1的IP为源IP,以主机3的IP为目的IP

步骤8 展开“instructions”,并单击“instruction list”后面的“+”,在“instruction”后面下拉框中选择“apply-actions-case”,

步骤9 展开“apply-actions”,单击“action list”后面的“+”,在“action”后面的下拉框中选择“drop-action-case”,“action order”和“instruction order”都设置为0,

步骤10 设置“priority”为25,“idle-timeout”为0,“hard-timeout”为0,“cookie”为10000000,“table_id”为2

步骤11 向右滚动Actions栏,选择“PUT”动作,然后单击“Send”下发流表。PUT成功就会弹出“Request sent successfully”,否则弹出错误信息。

步骤12 切换到主机1,执行如下命令,向主机3发送数据包,测试主机1和主机3的连通性。

>>> result,unanswered=sr(IP(dst=”10.0.0.14”,ttl=(3,10))/ICMP())

由上图可知,主机1与主机3之间是连通的,新下发的流表没有发挥作用。原因是数据包在table 0中能够匹配到相应流表就不会被转发到table2,想要table2的流表项发挥作用就需要向table0增加一条流表,将源IP为10.0.0.3,目的IP为10.0.0.2的数据包转发到table2中处理。

步骤13 选择“config ——> nodes ——> node{id} ——> table{id} ——> flow{i}”。node id参见之前查询到的Node Id、table id设为0、flow id设为1。

步骤14 展开“match ——> ethernet-match ——> ethernet -type”,填写“type”为0x0800。

步骤15 匹配参数保持不变,以主机1的IP为源IP,以主机3的IP为目的IP。

步骤16 展开“instructions”,并单击“instruction list”后面的“+”,在“instruction”后面下拉框中选择“go-to-table-case”,如下图所示。


步骤17 展开“go-to-table”,table_id填写为2,即将符合匹配条件的数据包根据table2中的流表项处理。instruction order依旧设为0,如下图所示。



步骤18 设“priority”置为23,“idle-timeout”为0,“hard-timeout”为0,“cookie”为1000000000,“table_id”为0,如下图所示。


步骤19 向右滚动Actions栏,选择“PUT”动作,然后单击“Send”下发流表。

步骤20 切换到交换机,执行以下命令查看新下发的流表项。

\# ovs-ofctl -O OpenFlow13 dump-flows br-sw

步骤21 切换到主机1,执行如下命令发送数据包,测试主机之间的连通性。

\>>> result,unanswered=sr(IP(dst=”10.0.0.10”,ttl=(3,10))/ICMP())

\>>> result,unanswered=sr(IP(dst=”10.0.0.14”,ttl=(3,10))/ICMP())


由上图可知,主机1与主机3之间不通,而主机1与主机2之间通,流表发挥作用。

使用OpenDaylight界面下发流表相关推荐

  1. OpenDayLight+Mininet+Postman下发流表实验

    OpenDayLight+Mininet+Postman下发流表实验 VM实验环境 笔记本环境 Tips1 Tips2 任务目的 任务内容 实验原理 一. 流表结构 二. 匹配域解析流程 三. Ope ...

  2. mininet中下发流表

    mininet中下发流表 使用postman下发流表参考了这篇文章SDN-Postman及python编程对流表的操作 在mininet/custom文件夹中创建自己的拓扑,touch po.py,内 ...

  3. Openlab实验平台实验--使用Postman下发流表

    任务目的 1.掌握OpenFlow流表相关知识,理解SDN网络中L2,L3,L4层流表的概念. 2.学习并熟练掌握Postman工具下发L2,L3,L4层流表. 任务环境 注:系统默认的账户为root ...

  4. 【SDN】OpenDaylight下发OpenFlow流表实现Mininet主机通信

    目录 方式1:通过OpenFlow保留端口(NORMAL),实现传统交换机的模式. 方式2:通过match中in-port字段匹配端口,然后,实现instruction字段指定动作,将数据包通过端口转 ...

  5. OpenFlow协议Open Flow交换机跟流表(FlowTable)

    Open Flow协议.Open Flow交换机跟流表(FlowTable) 传统网络:传统网络的缺陷或者催生SDN的背景请参考链接https://www.cnblogs.com/031602523l ...

  6. 软件定义网络SDN基础实验:MiniNet常用命令、创建网络拓扑、OpenFlow流表操作

    此实验基于<软件定义网络实验1-5>,主要内容为: MiniNet常用命令 如何创建网络拓扑 OpenFlow流表操作 00x1 搭建SDN环境 SDN 环境配置:Mininet + Ry ...

  7. openvswitch 流表操作(四十八)

    流表组成 每条流表规则由一些列字段组成,可以分为基础字段.匹配字段和动作字段三部分. 在打印流表时,在流表中还存在一些显示字段,如duration,idle_age等,此处把这些字段也暂时归之于基础字 ...

  8. Mellanox CX-5网卡支持OVS流表加速功能的调研

    女主宣言 本文主要对Mellanox CX-5网卡支持OVS流表加速功能进行了调研,简单介绍了配套软件的版本要求,并描述了整体测试的步骤,另外对其支持VF热迁移也进行了初步的调研,希望对有相同需求的同 ...

  9. Open vSwitch流表应用实战

    本文参考:Open vSwitch流表应用实战 一个通过改变流表下发而实现的互相通信实验. 实验目的: 掌握Open vSwitch下发流表操作: 掌握添加.删除流表命令以及设备通信的原理. 原理:. ...

最新文章

  1. python继承父类的调用
  2. 【趋势】中国移动阅读市场AMC模型+实力矩阵+趋势预测
  3. java如何对一个表达式开根号_作为一个零基础的新手,如何系统的自学Java和JavaEE开发技术?...
  4. freopen()的重定向打开或者关闭
  5. Spring三种对象创建方式
  6. anaconda下载的python在哪_python包管理器anaconda介绍安装和使用
  7. XSSFWorkbook 设置单元格样式_openpyxl3.0官方文档(25)—— 使用样式
  8. 用户行为分析面面观之三
  9. python登录网页并操作_python 实现登录网页的操作方法
  10. 出现画面抖动_手机拍照时模糊,抖动?赶紧来拯救你的拍摄技术吧!
  11. mysql服务器相互作用的协议_以下哪个不是与mysql服务器相互作用的通讯协议
  12. 【bat批处理脚本命令】bat命令接收用户输入的内容(保姆级图文+实现代码)
  13. 【scratch案例教学】Scratch弹力球小游戏 scratch编程案例教学 少儿编程教案
  14. ubuntu 服务器 ip修改,修改Ubuntu server ip地址
  15. addClass、removeClass、toggleClass属性(方法)
  16. 根据当前时间计算年龄的函数
  17. iOS 对接TopOn聚合广告心得
  18. satisfy_dependencies_for: Cannot satisfy the following dependencies
  19. Gee引擎常用功能简介
  20. 常用CRON表达式详解

热门文章

  1. 2021-2027全球及中国G Suite教学资源软件行业研究及十四五规划分析报告
  2. C#WinForm实现对Excel的数据处理
  3. Spring的基础知识精讲,创客学院一招教你彻底掌握
  4. 【JY】滞回曲线的自我介绍
  5. 去掉json的双引号_JSON 去掉转义字符,value去掉双引号
  6. 浅谈JMS--(JMS 的简介)
  7. GitHub最常用的开源库总结
  8. 2021-11-30 vue移动端卖座电影项目(四) 当前项目代码
  9. 有助于改善睡眠的产品有哪些,效果最好的五款助眠产品
  10. 基于 MVC 模式实现简单 航班查询系统