SDN-openflow1.0抓包分析
目录
博主使用的是opendaylight氮版本,miniedit进行的网络构建,wireshark进行抓包,一些配置等请查看本专栏其他文章。
Wireshark
Wireshark启动
使用
sudo wireshark
启动wireshark,一段时间后打开界面
wireshark配置
选择端口
博主的控制器和Mininet在一台虚拟机中,所以选择的lo,读者根据自己情况选择。
选择筛选器
选择openflow_v1筛选of1.0协议的消息,否则有ICMP、ARP等协议的消息,列表过长。
使用
tshark -g protocols | grep -i openflow
查看你的wireshark支持的openflow协议版本
对称消息
Hello消息
OFPT_HELLO
这是由交换机向控制器发送的HELLO消息,对称消息的一种,用于协商版本号,建立连接。
ERROR消息
OFPT_ERROR
这是由交换机向控制器发出的ERROR消息,对称消息的一种。返回码为1表示没有问题,建立连接成功,若为0则失败。
ECHO消息
OFPT_ECHO_REQUEST
当没有其他的数据包进行交换时,交换机会定期循环给控制器发送OFPT_ECHO_REQUEST来确保与控制器的连接。
OFPT_ECHO_REPLY
控制器对交换机进行回应,确保连接没有问题。
控制器/交换机配置消息
Features消息
OFPT_FEATURES_REQUEST
这是控制器发给交换机的两个数据包,Hello是对称消息,交换机之前给控制器发了,控制器要回一下,可以看到控制器还支持openflow1.3版本。Request消息用于控制器向交换机请求信息,希望交换机告知控制器自身信息。
OFPT_FEATURES_REPLY
交换机向控制器发出,告知控制器自身的信息。
Datapath unique id:交换机标识符。
n_buffers:一次最多缓存的数据包数量。
n_tables:表示交换机支持的流表数量。每个流表可以设置不同的通配符和不同数量的流表项。控制器和交换机第一次通信的时候,控制器会从OFPT_FEATURES_REPLY消息中找出交换机支持多少流表,如果控制器还想了解大小、类型和流表查询的顺序,就发送一个OFPT_STATS_REQUEST消息,交换机必须按照数据包遍历流表的顺序把这些流表回复给控制器,并且精确匹配流表排在通配流表前。
CONFIGS消息
OFPT_SET_CONFIG
控制器发出的消息,用于对交换机进行配置。
统计消息
OFPT_STATS_REQUEST
控制器想了解更多交换机的信息时发出。
OFPT_STATS_REPLY
障碍消息
OFPT_BARRIER_REQUEST
控制器向交换机发送该消息,询问之前的命令是否正确运行。
OFPT_BARRIER_REPLY
交换机向控制器报告命令运行结果。
控制器命令消息
OFPT_PACKET_OUT
控制器响应交换机,用于命令交换机将某一数据包进行转发。可以看到动作是Output,端口号是2,也就是命令交换机从端口2将数据包转发出去。
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
Buffer Id是packet-in消息所携带的数据包在交换机中的缓存ID
Total_length为data段的长度
In port数据包进入交换机的入端口号
Reason为packet-in事件的产生原因(OFPR_NO_MATCH和OFPR_ACTION)
部分消息在抓包时没有体现,可以查看文章
更多SDN相关内容,请查看:SDN-自学笔记
有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。
上一篇: 不堪回首的童年往事图片,童年大幸啊
推荐阅读
-
go for range坑和闭包坑的分析
-
Java日期时间API系列8-----Jdk8中java.time包中的新的日期时间API类的LocalDate源码分析
-
[日常] 使用TCPDUMP和Ethereal抓包分析HTTP请求中的异常情况
-
javascript闭包功能与用法实例分析
-
利用Fiddler对手机进行抓包的实现方法
-
python实现linux下抓包并存库功能
-
python调用tcpdump抓包过滤的方法
-
.net core使用HttpClient发送代理请求_程序内抓包_Fiddler抓包
-
Python之数据分析工具包介绍以及安装【入门必学】
-
JavaScript闭包原理与用法实例分析