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

OpenDaylight与Mininet应用实战之OpenFlow协议分析

作者头像
SDNLAB
发布2018-04-03 13:52:24
1.3K0
发布2018-04-03 13:52:24
举报
文章被收录于专栏:SDNLABSDNLAB

1、实验目的

在实验平台上熟悉SDN原理操作,通过wireshark抓包工具可以直接看到控制器与OVS交换机的通信过程、分析OpenFlow(以下简写为OF)协议,。具体的OF官方协议及白皮书可在SDNLAB资料库栏目中下载学习。

2 实验原理

控制器与交换机之间的OpenFlow协议是应用于TCP传输层上,所以解析应用层。他们首先发送hello消息,建立初始化连接,协商使用的OpenFlow协议版本。交换机通过消息回应配置信息,回复连接控制器的交换机的一些基本设置信息,包括交换机的能力以及它的一些端口的信息等,并回应给控制器的状态信息。当交换机收到数据包后查找流表无匹配项时,将数据包封装在packet_in消息发给controller,由controller通过packet_out消息下发决策,使发送和接收数据包的两主机间进行通信。

3 实验任务

通过wireshark抓包可以直接看到控制器与OVS交换机的通信过程,分析该流程中的OF协议消息及字段。模拟拓扑如下图所示:

4 实验步骤

4.1 环境搭建

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

任意选择设备拓扑:

进行下一步配置,并点击最后“创建”,虚网创建成功; 步骤2:创建控制器,选择Floodlight控制器。

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

”按钮添加网关。

步骤4: 创建2个虚拟机,一个是选择OpenDaylight桌面版带有wireshark镜像的虚拟机,其镜像名称是odl_Li_desktop(或者odlLidesktop_postman_wireshark_linux3.12+)作为控制器(注:内存选择大于4G),另一个是选择Mininet镜像作为所需Mininet。如下图已创建虚拟机所示:

4.2 启动验证

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

步骤2:OpenDaylight启用验证:

1

ps –ef|grep karaf

OpenDaylight虚拟机IP:

Mininet虚拟机IP:

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

4.3 创建拓扑并连接控制器

1

sudo mn --topo=linear,2 --controller=remote,ip=20.0.4.4,port=6633

查看网络: 在Mininet中通过操作网络命令,可以查看OVS间及OVS与主机间的连接关系,也可以查看Mininet是否远程连接控制器。 例如,通过nodes命令可以查看网络中所有的节点。

通过net命令可以查看并确认网络连接关系是否与预期一致以及节点信息,且可以了解具体的连接端口信息。

通过下面的dump命令可以看出,交换机通过远程方式连接到控制器,且能看到控制器的IP和PORT。

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

查看交换机通信流表:

4.4 抓包并协议分析

通过wireshark抓包可以直接看到控制器与OVS交换机的通信过程,下面分析该流程中的OF消息。

1

sudo wireshark & #获取抓包

建立连接 控制器与交换机之间的OpenFlow协议是应用于TCP传输层上,所以解析应用层。他们首先发送hello消息,建立初始化连接,协商使用的OpenFlow协议版本。由下图可知,ODL与Mininet之间应用的是OpenFlow1.0版本协议

能力请求响应 该消息主要响应能力请求feature request消息,回复连接此控制器的交换机的一些基本设置信息,包括交换机的能力以及它的一些端口的信息等。

config请求回应 get config reply消息用于回应get config request消息,交换机通过该消息回应配置信息,一般是交换机的接口配置等信息。

stats状态信息 stats reply消息用于回应stats request信息,主要是交换机回应给控制器的状态信息。

flow mod消息 flow mod消息涉及到流表项的匹配信息等,下图显示的flow mod匹配项的类型信息。

packet_in、packet_out消息 在这部分流程中,当交换机收到数据包后查找流表无匹配项时,将数据包封装在packet_in消息发给controller,由controller通过packet_out消息下发决策,使发送和接收数据包的两主机间进行通信。

以上几种消息类型,可以参照OpenFlow标准协议中的类型,如下图:

我们可以用 wireshark 观察到当第一次有 ping 包从h1发到h2时,控制器如何自动添加相应的表项到交换机。

4 实验结论

此次实验主要通过Mininet搭建拓扑结构熟悉其基本操作,同时通过支持OpenFlow协议的wireshark抓包工具熟悉通信原理并分析相关的OpenFlow协议。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、实验目的
  • 2 实验原理
  • 3 实验任务
  • 4 实验步骤
    • 4.1 环境搭建
      • 4.2 启动验证
        • 4.3 创建拓扑并连接控制器
          • 4.4 抓包并协议分析
          • 4 实验结论
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档