ODL Yang UI界面下发流表

  • VM实验环境
    • Tips1
    • Tips2
  • 实验目的
  • 实验原理
  • 实验一步骤
    • Step1 开ODL 控制器
    • Step2 VM ifconfig查看地址,电脑登陆页面
    • Step3 Mininet连接ODL(指定协议openflow1.0),查看topo结构
    • Step4 Yang UI下找到opendaylight-inventory rev.2013-08-19模块目录
    • Step5 从上到下依次点小**+**号,“config ——> nodes ——> node{id} ——> table{id} ——> flow{id}”
    • Step6 补全node id、table id和flow id的值
    • Step7 单击flow list后面的“+”,展开流表相关的参数,flow id会自动同步,然后match ——> ethernet-match ——> ethernet -type”,填写“type”为“0x0800(IPv4)
    • Step8 在“layer-3-match”后面的下拉框中选择“ipv4-match”,使用IP匹配, 展开“layer-3-match”,填写源IP地址和目的IP地址,如下图所示。
    • Step9 配置instructions,这里的动作时丢包drop
    • Step10 设置“priority”为27,“idle-timeout”为0,“hard-timeout”为0,“cookie”为100000000,“table_id”为0
    • Step11 发送流表
    • Step12 测试流表下发效果
  • 实验二步骤
    • STEP 1 清除实验一的布置的topo,指定OpenFlow1.3版本连接ODL
    • STEP2 删除实验一ODL配置流表的信息
    • STEP3 pingall查看下流表
    • STEP4 下发流表
    • 查看流表,测试hi ping h3连通性
    • 利用goto命令将table0 转到table2
    • 查看流表,测试hi ping h3连通性

VM实验环境

设备 软件环境 硬件环境
Controller Ubuntu 14.04 OpenDaylight Lithium CPU:2核 内存:4G 磁盘:20G
Mininet Ubuntu 14.04 Mininet 2.3.0 CPU:2核 内存:4G 磁盘:20G

Tips1

大家首先注意本实验只开了一个VM,不需要开多个VM,然后ODL DLUX页面是在你电脑的网页页面(不是VM,不是VM,已经有人问过,这里就提一嘴)

Tips2

先熟练掌握实验一,再去实验二,让如果有什么问题不清楚的,私信和留言都行。

实验目的

1、使用YANG UI下发流表的方法
2、通过YANG UI下发流表控制主机之间的连通性
3、分别基于OpenFlow1.0协议和OpenFlow1.3协议下发流表,经过下流表的过程了解单级流表和多级流表的概念

实验原理

YANG UI是OpenDaylight中一款基于DLUX的应用,旨在简化、激励应用的开发与测试。YANG UI通过动态封装、调用YANG模型和相关REST APIs,生成并展示一个简单的UI界面。开发人员可以通过API请求获取交换机信息,并且以JSON格式展示。YANG UI主要面向上层应用开发,为应用开发人员提供了很多相关工具,有效的节约了开发人员的时间。

OpenFlow1.0仅仅单流表的概念,到了OpenFlow1.3有了组表和流水线式
处理数据分组,且1.3版本有了指令集这一说,比当初的1.0版本动作集的
只有一些动作指令功能更加强大

OpenFlow1.0协议处理数据包的流程相对简单,因为1.0版本只支持单流表。交换机接收到数据包后解析数据包,数据包解析后就开始匹配,从table 0 开始匹配,如果匹配成功则对该数据包执行相应的动作,更新相应的计数器。如果没有找到匹配项则将数据包交给控制器。

OpenFlow1.3协议支持多流表匹配,即一个交换机只会有多个流表,因此数据包处理过程相对复杂。首先解析进入设备的报文,然后从table 0开始匹配,按照优先级高低依次匹配该流表中的流表项,一个报文在一个流表中只会匹配上一条流表项。通常根据报文的类型,报文头的字段例如源MAC地址、目的MAC地址、源IP地址、目的IP地址等进行匹配,大部分匹配还支持掩码进行更精确、灵活的匹配。也可以通过报文的入端口或元数据信息来进行报文的匹配,一个流表项中可以同时存在多个匹配项,一个报文需要同时匹配流表项中所有匹配项才能匹配该流表项。报文匹配按照现有的报文字段进行,比如前一个流表通过apply actions改变了该报文的某个字段,则下一个表项按修改后的字段进行匹配。如果匹配成功,则按照指令集里的动作更新动作集,或更新报文/匹配集字段,或更新元数据和计数器。根据指令是否继续前往下一个流表,不继续则终止匹配流程执行动作集,如果指令要求继续前往下一个流表则继续匹配,下一个流表的ID需要比当前流表ID大。当报文匹配失败了,如果存在无匹配流表项(table miss)就按照该表项执行指令,一般是将报文转发给控制器、丢弃或转发给其他流表。如果没有table miss表项则默认丢弃该报文。

为了方便大家理解,流表呢,简单来说提取了传统网络各个层的网络特征,
比如说MAC地址,IP地址。1.3版本的流水线式处理流表,从优先级最高的
table 0开始,依次匹配,这里其实用了Goto指令,每次跳转更大的流表号
的流表
字段名称 table=number 说明
in_port=port 传递数据包的端口的OpenFlow端口编号
dl_vlan=vlan 数据包的VLAN Tag值,范围是0-4095,0xffff代表不包含VLAN Tag的数据包
dl_src= dl_dst= 匹配源或者目标的MAC地址 01:00:00:00:00:00/01:00:00:00:00:00 代表广播地址 00:00:00:00:00:00/01:00:00:00:00:00 代表单播地址
dl_type=ethertype 匹配以太网协议类型,其中: dl_type=0x0800 代表IPv4协议; dl_type=0x086dd 代表IPv6协议; dl_type=0x0806 代表ARP协议;
nw_src=ip[/netmask] nw_dst=ip[/netmask] 当 dl_typ=0x0800 时,匹配源或者目标的IPv4地址,可以使IP地址或者域名
table=number 指定要使用的流表的编号,范围是0-254。在不指定的情况下,默认值为0。通过使用流表编号,可以创建或者修改多个Table中的Flow。

实验一步骤

Step1 开ODL 控制器

#cd distribution-karaf-0.3.0-Lithium/
#./bin/karaf

如下:

Tips:
切记这里多等一会不要着急登录页面

Step2 VM ifconfig查看地址,电脑登陆页面


看到这里有两个地址,请记住它,
我这里第一个是192.168.137.143,第二个都是127.0.0.1

然后用你的电脑登录网址http:// [IP address]:8080/index.html,username 和 password 都是admin。(不是VM 里的firefox的浏览器)

登录结果如下:

Step3 Mininet连接ODL(指定协议openflow1.0),查看topo结构

#mn --custom example1.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow10
这里拓扑是事先准备好的,拓扑结构是一个交换机下挂三个host

这里注意看自己有么有连上ODL controller,还有就是地址注意是127.0.0.1,
没有连接上控制器的同学还有不知道为什么两个地址是这样分配的评论区问。

在上面界面下pingall下

mininet>pingall

返回本机电脑网页reload下可以看到topo


补充:

node下可以看节点信息,端口地址,就不细说,自己点进去自行体会。

Step4 Yang UI下找到opendaylight-inventory rev.2013-08-19模块目录

Step5 从上到下依次点小**+**号,“config ——> nodes ——> node{id} ——> table{id} ——> flow{id}”

Step6 补全node id、table id和flow id的值


这里node id 自己在查看node节点时或者看topo都能看到,table流表号,flow 流表的流

Step7 单击flow list后面的“+”,展开流表相关的参数,flow id会自动同步,然后match ——> ethernet-match ——> ethernet -type”,填写“type”为“0x0800(IPv4)

Step8 在“layer-3-match”后面的下拉框中选择“ipv4-match”,使用IP匹配, 展开“layer-3-match”,填写源IP地址和目的IP地址,如下图所示。

这里IP地址怎么知道的呢?
你可以返回电脑的网页看topo图,然后把鼠标移到host主机上就能显示。
我这里host1到host3依次IP地址是10.0.0.1,10.0.0.2,10.0.0.3

Step9 配置instructions,这里的动作时丢包drop

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

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

Step10 设置“priority”为27,“idle-timeout”为0,“hard-timeout”为0,“cookie”为100000000,“table_id”为0

 这些字段什么意思,自己去查,不细说了,评论区问我也可以

Step11 发送流表

向右滚动Actions栏,在路径后面有动作类型GET、PUT、POST、DELETE,下发流表则选择PUT动作,然后单击“Send”,如下图所示。最后会显示request sent successfully 发送成功。

Step12 测试流表下发效果

回到VM的Mininet端口,输入命令查看下发流表

mininet>sh ovs-vsctl dump-flows s1


测试h1 发给 h2 的数据包是不是drop丢弃了

mininet>h1 ping h2

实验二步骤

STEP 1 清除实验一的布置的topo,指定OpenFlow1.3版本连接ODL

mininet>mn -c

#mn --custom example1.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13

STEP2 删除实验一ODL配置流表的信息

指定node id,table id ,分别通过GET SEND,DELETE SEND,查看配置流表信息和删除流表信息


STEP3 pingall查看下流表

mininet>pinall
mininet>sh ovs-vsctl dump-flows -O OpenFlow13 s1

STEP4 下发流表

整个下发流表的过程和实验一差不错,这里就直接上图。





PUT SEND 再回mininet下查看流表

以上是发送的第一条流表,h1 发送给 h3 的流表,actions=drop丢弃

查看流表,测试hi ping h3连通性

发现 h1 发送 h2 的包并没有丢弃,是因为有优先级更高的table先执行,导致h1 ping 通 h2

利用goto命令将table0 转到table2







PUT SEND 再回mininet下查看流表,然后h1 ping h3测试连通性。

查看流表,测试hi ping h3连通性


这里就能看到h1 ping h2丢包100%,试验成功,且能看到priority=23的流表项。

本实验在【实验参考】进行了改进优化并更加完整,且比原实验更加节约资源

实验参考:https://www.51openlab.com/platform/curriculum/cfc9c7ba99244419bc8eeed6b2354a0d/b8de3ab0-4b51-442f-b146-b2ce122381c5/detail/

有什么问题都可以私信我或评论区见,长期在线。
私信的同学们不要着急哟,稍后就会回私信。

ODL(OpenDayLight)Yang UI界面下发流表(ODL+mininet)相关推荐

  1. 使用OpenDaylight界面下发流表

    使用OpenDaylight界面下发流表 任务目的 1.通过Mininet模拟搭建基于不同数据中心的网络拓扑: 2.掌握多数据中心网络拓扑的构建: 3.熟悉网络性能测试工具Iperf,根据实验测试SD ...

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

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

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

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

  4. mininet中下发流表

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

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

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

  6. Cadence Allegro学习之UI界面+创建常见表贴封装

    1界面设置 1.1删除不常用toolbar view-->custom 1.2开启stroke 2创建表贴焊盘 保存到库中:后面封装会调用 thermal 和anti是在通孔热风焊盘和反焊盘才设 ...

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

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

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

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

  9. Open vSwitch流表应用实战

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

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

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

最新文章

  1. Android零基础入门第38节:初识Adapter
  2. iframe父页面获取iframe子页面的元素 与 iframe子页面获取父页面元素
  3. ubuntu云主机上Flask+uwsgi+Nginx配置
  4. 蓝桥杯入门训练圆的面积c语言,蓝桥杯-入门训练-圆的面积
  5. np.where与np.argwhere共同点与区别分析
  6. 关于心理的二十五种倾向(查理#183;芒格)-2
  7. EMC变得更有中国味儿
  8. 添加solr库工具类
  9. Linux安装wget
  10. 用python分析股票收益影响因素的方法_Python3对股票的收益和风险进行分析
  11. python如何安装pdfminer_为什么PIP安装不能为PDFMiner工作?
  12. 360无线wifi电脑怎样连接到服务器,360随身Wifi能连接上但是电脑无法上网怎么办...
  13. GWAS 教程之QC
  14. 苹果软件测试的电池损耗准确,电池不耐用?教你如何检测iPhone电池损耗!
  15. CHAPTER 2 Docker镜像
  16. 名字解析/DNS服务
  17. rsa java模数_使用模数和指数的RSA解密
  18. python-字符串容器
  19. 智搜荣获用友·华为云杯开发者大赛“优秀商业应用奖”
  20. javascript的基本数据类型有哪些?

热门文章

  1. Win10系统Ctrl键锁定无法使用解决方法
  2. bof - pwnable
  3. PI AAE (Advanced Adapter Engine) 介绍一
  4. sql server 使用 top WITH TIES
  5. 黑客用恶意软件Dropper攻击了Pale Moon存档服务器
  6. 【一款弹窗表白的pyqt5界面化小程序,完全零基础的你也可以用他追女生了】
  7. Chuck语言学习笔记——1.环境搭建与程序运行
  8. Docker数据卷映射
  9. 画皮用计算机怎么弹山妖,山妖(翻自 小星星Aurora)歌词
  10. 创新实训(11)——推荐系统实现之基于流行度和新鲜度的推荐