前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Floodlight+Mininet入门使用经验

Floodlight+Mininet入门使用经验

作者头像
SDNLAB
发布2018-12-27 14:36:51
2K0
发布2018-12-27 14:36:51
举报
文章被收录于专栏:SDNLABSDNLAB

1、环境介绍:

(1)Ubuntu操作系统

(2)Mininet仿真环境

(3)Floodlight1.2版本

2、使用拓扑介绍:

(1)使用的拓扑图:

在这次实战中,部署的拓扑为两个三层树形节点与一个三角形节点的结合。

(2)创建拓扑代码:

代码如下:

在命令行中使用sudo python topo.py(拓扑文件名)来创建拓扑,若出现下图则代表拓扑图创建成功。

(3)查看拓扑图

创建成功后,可以登录http://127.0.0.1:8080/ui/index.html来查看拓扑,如下图:

由于floodlight1.2版本中的拓扑图不便于观察,故绘制下图便于读者理解:

3、floodlight流表介绍

(1)Floodlight查看所有流表API:

http://127.0.0.1:8080/wm/core/switch/all/flow/json

以S4中存在流表介绍,在未下发流表的情况下,其内存在的流表如下:

(2)流表介绍

在之前看的openvswitch的文档上曾介绍了一种“table-miss”的特殊流表,该流表的特点是优先级为0并且能够通配所有的流表。该流表的作用在于将所有无法被其他流表匹配的数据包,通过controller预留端口发往控制器,由控制器决定下一步的输出动作。个人认为,上图的流表也就是“table-miss”流表。

在这里解释下floodlight流表中各个字段的含义。

Version:使用的Openflow版本

Cookie:流表规则标识

TableID:流表所属的table编号

Packetcount: 该交换机收到的数据包总数

byteCount:该交换机收到的字节数

DurationSeconds、DurationNSeconds:累加就是整个持续时间

Priority:优先级

IdleTimeoutSec:此流表项从最后一个匹配的报文到现在空闲的时间

HardTimeoutSec:此流表项从最后一次被创建或者修改到现在的时间

Flags:流表的标记

Match:匹配域,可以是输入端口与包头部,或者其他可选字段,如来自上一个包的元数据

Instruction:指明数据包的下一步处理方式

4、实验一改变流量路径

(1)实验目的:

在当前topo中,利用终端H1去ping终端H8,由于在S1,S2,S3中存在一个环路,为避免广播风暴的产生,在floodlight1.2版本的控制器中,默认情况下会将路径设定为最短路径(若环路存在,且经过的交换机数量一致,则会选择其中一条路径),故在此拓扑中经过的ICMP数据包经过的路径是H1--S5--S4--S2--S3--S7--S9--H8。此时,利用wireshark去监听S1。监听结果如图:

从S1端口的监听情况,可以进一步说明ICMP包未经过交换机S1,而该实验的目的为通过下发流表,改变数据包的走向,使数据流经过S1

(2)下发流表:

流表内容如下:

流表的含义为:数据包经过S2时,通过分析,若该数据包进入端口为3,则将其转发至S2的1端口,S2的1端口与S1相连。同时S3的下发流表同理。在下发流表后,可以通过前面介绍的API查看下此时的所有流表。

(3)实验结果

通过wireshark监听S1,此时可以发现S1收到了ICMP包。如下图:

由上图可以看出,S1接受到了由H1到H8的ICMP包,同时读者可以利用wireshark监听S2与S3之间连接的端口,可以发现这两个端口已经接受不到来自H1到H8的ICMP包。

5、实验二利用ACL实现访问控制

(3)ACL原理

可在floodlight官网当中查看详细解释

https://floodlight.atlassian.net/wiki/spaces/floodlightcontroller/pages/4882434/ACL+Access +Control+List+Dev

(4)实验目的

基于上述topo,实现让H1无法ping通H7,但是其他不影响其他主机之间利用ping命令。

(5)实验脚本

可以利用curl http://127.0.0.1:8080/wm/acl/rules/json | python -mjson.tool查看控制器中存在的ACL

该文件的作用在于下发一个流表,使得所有原地址是10.0.0.1,目的地址是10.0.0.7的ICMP数据包都会被丢弃。

下发后实验结果如下图:

(6)查看此时所有交换机中的流表,以经过的S5为例。

在上图中可以看到,S5中match字段添加了内容,其含义是若匹配到原地址为10.0.0.1,目的地址为10.0.0.7的ICMP数据包,则采取drop动作,将数据包丢弃。

6、实验三虚拟网测试

(1)虚拟网简介

可以在floodlight官网中查看:https://floodlight.atlassian.net/wiki/spaces/floodlightcontroller/pages/1343615/Virtual+Network+Filter+REST+API

(2)环境配置

若需要启用floodlight控制器的虚拟网功能,则需要更改floodlight1.2/src/main/resources/floodlightdefault.properties中的内容,更改内容为添加一行net.floodlightcontroller.virtualnetwork.VirtualNetworkFilter,\

如下图:

在添加完成后,各个节点当中默认无法ping通,只有处于同一个虚拟网当中的节点才能ping通。

(3)实验内容

创建两个虚拟网络V1,V2,并将H1,H3加入V1。H2,H4加入V2中,查看节点之间ping命令情况。

(4)实验命令

①创建虚拟网V1:

curl -X PUT -d ‘{“network”:{“gateway”:“100.0.0.254”,“name”:“v1”}}’ http://127.0.0.1:8080/networkService/v1.1/tenants/default/networks/1

②创建虚拟网V2:

curl -X PUT -d ‘{“network”:{“gateway”:“200.0.0.254”,“name”:“v2”}}’ http://127.0.0.1:8080/networkService/v1.1/tenants/default/networks/2

③添加主机至虚拟网中

添加H1、H3:

curl -X PUT -d ‘{”attachment”:{“id”:”1”,”mac”:”00:00:00:00:00:01”}}’ http://127.0.0.1:8080/networkService/v1.1/tenants/default/network/1/ports/1/attachment

curl -X PUT -d ‘{”attachment”:{“id”:”2”,”mac”:”00:00:00:00:00:03”}}’ http://127.0.0.1:8080/networkService/v1.1/tenants/default/network/1/ports/2/attachment

添加H2、H4:

curl -X PUT -d ‘{”attachment”:{“id”:”1”,”mac”:”00:00:00:00:00:02”}}’ http://127.0.0.1:8080/networkService/v1.1/tenants/default/network/2/ports/1/attachment

curl -X PUT -d ‘{”attachment”:{“id”:”2”,”mac”:”00:00:00:00:00:04”}}’ http://127.0.0.1:8080/networkService/v1.1/tenants/default/network/2/ports/2/attachment

(5)查看添加结果及实验结果:

①虚拟网结果:

可以利用浏览器访问http://127.0.0.1:8080/networkService/v1.1/tenants/default/networks进行查看添加的虚拟网,添加结果如下:

②实验结果:

从图中可以看出,只有在同一个虚拟网中的主机才能互相访问,其他主机无法访问虚拟网中的主机。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档