如何用Wireshark MATE计算SMPP submit_sm与响应包的响应时间?
用Wireshark MATE计算SMPP submit_sm与submit_sm_resp的响应时间
问题背景
需要通过Wireshark的MATE插件计算每个SMPP submit_sm(command_id=4,即0x00000004)和对应submit_sm_resp(command_id=2147483652,即0x80000004)之间的响应时间,现有MATE脚本如下:
Pdu smpp_pdu Proto smpp Transport mate { Extract cmd From smpp.command_id; Extract seq From smpp.sequence_number; }; Gop smpp_session On smpp_pdu Match (seq) { Start (cmd=4); Stop (cmd=2147483652); }; Done;
当前遇到的问题:
Delta Time Displayed列仅能显示当前数据包与前一个数据包的时间差,无法匹配请求与响应的对应关系mate.smpp_pdu.RelativeTime仅显示数据包相对于追踪开始的时间,不是请求到响应的时间差mate.smpp_session.Time无任何结果输出
解决方案
1. 修改MATE脚本,提取会话时间差
在原有脚本的Gop块中添加Extract delta From Delta;,让MATE自动计算Start(submit_sm)到Stop(submit_sm_resp)的时间差并提取:
Pdu smpp_pdu Proto smpp Transport mate { Extract cmd From smpp.command_id; Extract seq From smpp.sequence_number; }; Gop smpp_session On smpp_pdu Match (seq) { Start (cmd=4); Stop (cmd=2147483652); Extract delta From Delta; // 提取请求到响应的时间差 }; Done;
2. 添加自定义列查看响应时间
- 右键Wireshark的列标题,选择列首选项
- 点击添加按钮,配置新列:
- 标题:
SMPP响应时间(可自定义) - 字段类型:选择自定义
- 字段内容:
mate.smpp_session.delta
- 标题:
- 点击确定保存设置,返回数据包列表即可看到对应响应时间
3. 过滤已完成的会话
如果需要只查看已经匹配到请求和响应的会话,可以使用过滤条件:
mate.smpp_session.delta exists
注意事项
- 确保submit_sm和submit_sm_resp的
sequence_number严格对应(SMPP协议通过seq字段匹配请求与响应) - 修改脚本后需重新加载MATE插件,或重启Wireshark生效
内容的提问来源于stack exchange,提问作者Lucas Rey
相关产品推荐
相关产品推荐

