欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SDN-openflow1.0抓包分析

程序员文章站 2022-07-06 19:08:25
...

目录

Wireshark

Wireshark启动

wireshark配置

选择端口

 选择筛选器

对称消息

Hello消息

OFPT_HELLO

ERROR消息

OFPT_ERROR

ECHO消息

OFPT_ECHO_REQUEST

 OFPT_ECHO_REPLY

控制器/交换机配置消息

Features消息

CONFIGS消息

OFPT_SET_CONFIG

统计消息

OFPT_STATS_REQUEST

OFPT_STATS_REPLY

障碍消息

OFPT_BARRIER_REQUEST

OFPT_BARRIER_REPLY

控制器命令消息

OFPT_PACKET_OUT

OFPT_FLOW_MOD

 异步消息

OFPT_PACKET_IN


博主使用的是opendaylight氮版本,miniedit进行的网络构建,wireshark进行抓包,一些配置等请查看本专栏其他文章。

Wireshark

Wireshark启动

使用

sudo wireshark

启动wireshark,一段时间后打开界面

SDN-openflow1.0抓包分析
打开wireshark

wireshark配置

选择端口

SDN-openflow1.0抓包分析
选择抓包接口

博主的控制器和Mininet在一台虚拟机中,所以选择的lo,读者根据自己情况选择。

 选择筛选器

SDN-openflow1.0抓包分析
筛选openflow1.0协议的消息

选择openflow_v1筛选of1.0协议的消息,否则有ICMP、ARP等协议的消息,列表过长。

使用

tshark -g protocols | grep -i openflow

查看你的wireshark支持的openflow协议版本

SDN-openflow1.0抓包分析
wireshark版本

对称消息

Hello消息

OFPT_HELLO

SDN-openflow1.0抓包分析
OFPT_HELLO数据包

这是由交换机向控制器发送的HELLO消息,对称消息的一种,用于协商版本号,建立连接。

ERROR消息

OFPT_ERROR

SDN-openflow1.0抓包分析
OFPT_ERROR数据包

这是由交换机向控制器发出的ERROR消息,对称消息的一种。返回码为1表示没有问题,建立连接成功,若为0则失败。

ECHO消息

OFPT_ECHO_REQUEST

SDN-openflow1.0抓包分析
OFPT_ECHO_REQUEST数据包

当没有其他的数据包进行交换时,交换机会定期循环给控制器发送OFPT_ECHO_REQUEST来确保与控制器的连接。

 OFPT_ECHO_REPLY

SDN-openflow1.0抓包分析
 OFPT_ECHO_REPLY数据包

控制器对交换机进行回应,确保连接没有问题。

控制器/交换机配置消息

Features消息

OFPT_FEATURES_REQUEST

SDN-openflow1.0抓包分析
OFPT_HELLO和OFPT_FEATURES_REQUEST数据包

这是控制器发给交换机的两个数据包,Hello是对称消息,交换机之前给控制器发了,控制器要回一下,可以看到控制器还支持openflow1.3版本。Request消息用于控制器向交换机请求信息,希望交换机告知控制器自身信息。

OFPT_FEATURES_REPLY

SDN-openflow1.0抓包分析
OFPT_FEATURES_REPLY数据包

交换机向控制器发出,告知控制器自身的信息。

Datapath unique id:交换机标识符。
        n_buffers:一次最多缓存的数据包数量。
        n_tables:表示交换机支持的流表数量。每个流表可以设置不同的通配符和不同数量的流表项。控制器和交换机第一次通信的时候,控制器会从OFPT_FEATURES_REPLY消息中找出交换机支持多少流表,如果控制器还想了解大小、类型和流表查询的顺序,就发送一个OFPT_STATS_REQUEST消息,交换机必须按照数据包遍历流表的顺序把这些流表回复给控制器,并且精确匹配流表排在通配流表前。

CONFIGS消息

OFPT_SET_CONFIG

SDN-openflow1.0抓包分析
OFPT_SET_CONFIG数据包

控制器发出的消息,用于对交换机进行配置。

统计消息

OFPT_STATS_REQUEST

SDN-openflow1.0抓包分析
OFPT_STATS_REQUEST数据包

控制器想了解更多交换机的信息时发出。

OFPT_STATS_REPLY

SDN-openflow1.0抓包分析
OFPT_STATS_REPLY数据包

障碍消息

OFPT_BARRIER_REQUEST

SDN-openflow1.0抓包分析
OFPT_BARRIER_REQUEST数据包

控制器向交换机发送该消息,询问之前的命令是否正确运行。

OFPT_BARRIER_REPLY

SDN-openflow1.0抓包分析
OFPT_BARRIER_REPLY数据包

交换机向控制器报告命令运行结果。

控制器命令消息

OFPT_PACKET_OUT

SDN-openflow1.0抓包分析
OFPT_PACKET_OUT数据包

控制器响应交换机,用于命令交换机将某一数据包进行转发。可以看到动作是Output,端口号是2,也就是命令交换机从端口2将数据包转发出去。

OFPT_FLOW_MOD

SDN-openflow1.0抓包分析
OFPT_FLOW_MOD

        Cookie为流表项标识符
        Command是flow-mod的类型
        Idle time-out是流表项的空闲超时时间
        hard time-out是流表项的最大生存时间
        Priority为流表项的优先级,交换机优先匹配高优先级的流表项;
        Buffer Id为交换机中的缓冲区ID,flow-mod消息可以指定一个缓冲区的ID,该缓冲区的数据包会按照此flow-mod消息的action列表处理。如果是手动下发的流,buffer_id应填-1,即0xffff,告诉交换机这个数据包并没有缓存在队列中。
        Out port为删除流表的flow_mod消息提供的额外的匹配参数。
        Flags为flow-mod命令的一些标志位,可以用来指示流表删除后是否发送flow-removed消息,添加流表时是否检查流表重复项,添加的流表项是否为应急流表项。
                当OFPFF_SEND_FLOW_REM 被设置的时候,表项超时删除会触发一条表项删除的信息。
                当OFPFF_CHECK_OVERLAP 被设置的时候,交换机必须检查同优先级的表项之间是否有匹配范围的冲        突。
                当OFPFF_EMERG_被设置的时候,交换机将表项当作紧急表项,只有当与控制器连接断的时候才启用。

 异步消息

OFPT_PACKET_IN

SDN-openflow1.0抓包分析
OFPT_PACKET_IN数据包

        Buffer Id是packet-in消息所携带的数据包在交换机中的缓存ID
        Total_length为data段的长度
        In port数据包进入交换机的入端口号
        Reason为packet-in事件的产生原因(OFPR_NO_MATCH和OFPR_ACTION)

部分消息在抓包时没有体现,可以查看文章

SDN-OpenFlow1.0协议分析

更多SDN相关内容,请查看:SDN-自学笔记

有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。

相关标签: SDN