在ubuntu上使用wireshark对some/ip协议进行抓包

环境

  • Ubuntu20.04
  • Wireshark 3.6.5
  • AUTOSAR Adaptive Platform Demonstrator(APD) R21-11
  • vsomeip

背景

做研究生毕设需要对AUTOSAR Adaptive Platform进行研究学习,通过成为AUTOSAR的Attendee会员,获取了其参考实现AUTOSAR Adaptive Platform Demonstrator(APD)的访问权限,并在Ubuntu20.04平台上进行了构建运行。研究课题主要关注AP的Communication Management模块。CM提供了ara:com API供上层应用实现SOA服务通信需求,ara::com继承了SOME/IP的基本通信模式,起初也仅支持SOME/IP网络绑定作为底层通信中间件。单纯学习网络协议规范过于枯燥,学习效率不高,结合抓包实践可以加深理解,提高学习效率,故尝试运行APD提供的sample application:radar- fusion,并对客户端与服务器两节点之间的通信过程进行抓包,结合SOME/IP协议规范进行对比分析,熟悉协议通信流程。

环境配置流程

1. 安装Ubuntu 20.04环境

对于APD R21-11版本,官方使用Ubuntu 20.04发行版作为基础环境,推荐安装desktop版本,因为开发过程中APD的应用节点通常以qemu模拟器的形式运行,带有图形界面的方便一些。另外,wireshark的运行也需要图形界面。
还有因为APD采用的构建方式很占空间,建议安装Ubuntu的时候分配100G以上的空间(推荐150G)

2. 安装wireshark

wireshark在3.2以后的版本原生支持对SOME/IP协议报文的解析,而直接通过APT安装的版本可能较老,所以这里建议通过添加ppa源的方式,安装最新版的wireshark。具体参考Ubuntu 上 Wireshark 的安装与使用

3. 构建APD

由于APD采用了Yocto来实现嵌入式Linux系统的裁剪定制,故流程较为繁琐,有一定的学习成本。

镜像构建

该步骤直接按照官方wiki文档操作即可:https://wiki.autosar.org/doku.php?id=apd_user_guide:build:general
为了尽量符合远程调用的场景,需要构建core-image-apd-devel-radar和core-image-apd-devel-fusion两个镜像(minimal版本也可),分别运行在两个节点上,前者运行radar- fusion应用的radar service,后者运行fusion部分,作为客户端,获取radar service的数据,并进行fusion。

镜像运行

在安装官方文档运行之前,需要先进行额外操作,即进行网络配置,因为默认的自动网络配置有一些问题。配置方式如下:

sudo apt-get install uml-utilities # 安装tunctl工具
sudo ip link add br0 type bridge # 创建虚拟网桥br0
sudo tunctl -u $(whoami) # 创建一个虚拟网卡tap0
sudo ip link set tap0 master br0 # 将tap0与br0相连
sudo tunctl -u $(whoami) # 创建虚拟网卡tap1
sudo ip link set tap1 master br0 # 将tap1与br0相连
sudo ip addr add 192.168.7.10/24 dev br0 # 给br0指定IP
sudo ip link set dev tap0 up # 启动设备
sudo ip link set dev tap1 up
sudo ip link set dev br0 up                            

分别运行radar和fusion端后可以看到如下输出:

radar端

重点看[FIELD…],[Callback…]日志输出,表明serice的相应服务被调用成功了,若没有出现这类日志,说明调用失败,网络配置有问题
在ubuntu上使用wireshark对some/ip协议进行抓包_第1张图片

fusion端

可以看到有Event和Method调用成功
在ubuntu上使用wireshark对some/ip协议进行抓包_第2张图片

4. 用Wireshark抓包

打开Wireshark,双击br0(或者tap0、tap1),对两节点之间收发的报文进行抓包。首先可以看到UDP协议的报文在两个节点之间收发,但是Wireshark貌似没有识别出SOME/IP协议,这可以通过右键任意一个UDP的报文,点击Decode as,然后在Current栏选择SOME/IP即可识别,后续的所有SOME/IP报文均会被解析为SOME/IP类型。
在ubuntu上使用wireshark对some/ip协议进行抓包_第3张图片

你可能感兴趣的:(ubuntu技巧,科研,环境配置,ubuntu,wireshark,tcp/ip)