- 论坛徽章:
- 0
|
本帖最后由 flash78910 于 2017-04-19 10:42 编辑
时间戳是我自己获取的(struct timeval),在发送端获取时间戳,要在接收端提取出来另作用处。有那么几个想法:
1、sk_buff 中的 tstamp 成员。
我在发端可以修改,但是根据 sk_buff 时间戳的更新原理,这个成员在收端接收时就会更新。也就是说无法固定,想要在路由或传输过程中不更新这个成员能做到吗?这个貌似是内核通过检查 netstamp_needed 来确定时间戳的更新(参考处:http://cxw06023273.iteye.com/blog/867159)。关于这个成员我还有些疑问,是否在 skb 的传输过程中,tstamp成员不占空间?因为这个成员不属于一个完整数据包的某个字段,例如IP包等。所以说,我用这个成员承载固定的时间戳是否可行?
2、利用IP报头的选项字段。
本身IP固定报头的话20字节,在选项字段里添加时间戳,然后在收端提取。我也查阅过IP选项时间戳的一些资料,貌似还会记录路径IP,其实我用不了这么复杂,就只添加个发端时间戳就行,而且能在收端提取就行。
对于第二种想法,我不太想改动报头,但只要能实现,其他方法也可以。第一个方法我只是先用netfilter在发端试了下,收端的skb时间戳肯定会更新,这个在验证之前也料到了。我内核模块编程也是入门小白,请大家多多指教,谢谢大家!
|
|