一、问题
我在对在对抓包获取的BGP update message进行解析的时候,发现有些时候会有部分缺失。为了修复这个bug,我重新排查BGP update message。发现:
可以看到,这里的TCP segment data有59个字节,看一下对应的报文内容,可以看出,这个应该也是一个BGP update message,但是被“截断”了。
此时,获取每一个BGP update message对我来说都是至关重要的,所以如何对于segment data要拼凑起来。
二、解决
根据对应的端口(或者seq),可以锁定下一个报文,发现:
就是所需要的数据内容:
确实的segment data直接在下一个message的数据部分开头处出现了。
因此,我只需要在代码中保存上次的端口以及segment data,就可以还原出完整的BGP update message了。