小编给大家分享一下wireshark如何解析ceph网络通信,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
一、安装wireshark
wireshark从2.0版开始支持ceph协议解析
下载地址:https://www.wireshark.org/download/
二、ceph网络抓包
使用tcpdump在ceph集群上抓包,e.g.:tcpdump -i ens33 -s 0 -w 3ceph.pcap host 172.16.134.95 and host 172.16.134.96 ,
ens33是网络接口名字,3ceph.pcap是保存的抓包的文件名字,host 172.16.134.95 and host 172.16.134.96是在这两个节点之间流动的数据包
注意:tcpdump抓包要从ceph集群会话开始抓,否则在会话中间抓包,wireshark不识别。
三、wireshark架构
1、GUI处理在页面上所有用户的显示包块对话框,源码在ui/qt下面
2、core主要的“胶水”模块,把别的模块整合到一起,源码在根目录下
3、Epan包分析引擎,用协议书的形式分析包。源码在epan目录下
4、Wiretap用于读、写捕获的文件,源码在wiretap目录下
5、Capture捕获网络数据的接口模块,源码在capture下
参考:https://www.wireshark.org/docs/wsdg_html_chunked/ChWorksOverview.html
四、wireshark 解析包流程
当Wireshark从文件加载数据包时,每个数据包都会被解析。 Wireshark尝试检测数据包类型,并从数据包中获取尽可能多的信息。在此运行中,只需要包列表窗格中显示的信息。
当用户在数据包列表窗格中选择特定数据包时,将再次解析该数据包。 这一次,Wireshark尝试获取每一条信息并将其放入数据包详细信息窗格中。
每个解剖器解码其协议的一部分,然后将解码交给后续解剖器以获得封装协议。
参考:https://www.wireshark.org/docs/wsdg_html_chunked/ChapterDissection.html
五、wireshark dissector源码分析
wireshark根目录下epan/dissectors/packet-ceph.c是分析ceph网络协议的源码
10514行,注册解析器函数,
10516行,创建ceph_handle,如果有相应的包调用dissec_ceph_old函数解析.
10518行,在启发式解析器中加添dissect_ceph_heur,dissect_ceph_heur判断是不是ceph的网络包。wireshark分为普通字符串表,整数表和启发式解析表,
启发式解析器的特点是:一旦特定“连接”的数据包被识别为属于对于特定的协议,Wireshark应该始终直接调用该解析器解析此协议。
7091行,判断是不是ceph网络协议,其中C_BANNER定义在830行,C_BANNER_SIZE_MIN定义在833行
可见wireshark根据网络包中的ceph v标志,判断是否为ceph网络协议。
7099行,如果判断是ceph协议,调用ceph_handle处理。在10516行中创建了ceph_handle。
7081行,调用dissect_ceph函数,解析网络包
07019行,在网络包列表protocol字段中,设置Ceph字段
当在一个网络包列表中点击一个网络包时,下方的网络包详细信息中,以树形详细列出网络包的详细信息。
用proto_item_add_subtree注册下层的协议
c_dissect_xxx解析子树。
以上是“wireshark如何解析ceph网络通信”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注天达云行业资讯频道!