Closed hezhiye closed 5 months ago
这个有些困难,因为路由选择的时候skb还没有构造出来,因此无法进行跟踪。
这个有些困难,因为路由选择的时候skb还没有构造出来,因此无法进行跟踪。
skb这个时候应该构造出来了吧,要实现的话理论上应该是可行的。
已经有bpf_fib_lookup
这样的函数了
我再找找有没有相应的hook
这个有些困难,因为路由选择的时候skb还没有构造出来,因此无法进行跟踪。
skb这个时候应该构造出来了吧,要实现的话理论上应该是可行的。
已经有
bpf_fib_lookup
这样的函数了我再找找有没有相应的hook
大概搞明白了,现有的nettrace代码是围绕struct skb
工作的,而想要追踪ip rule,就需要追踪fib。fib这里传递基本都是处理struct net
。也就是说我们可能需要一个对标DEFINE_KPROBE_SKB
的宏(比如叫它DEFINE_KPROBE_NET
),那现有框架下确实做不到,需要进一步扩展才行。
这个有些困难,因为路由选择的时候skb还没有构造出来,因此无法进行跟踪。
skb这个时候应该构造出来了吧,要实现的话理论上应该是可行的。 已经有
bpf_fib_lookup
这样的函数了 我再找找有没有相应的hook大概搞明白了,现有的nettrace代码是围绕
struct skb
工作的,而想要追踪ip rule,就需要追踪fib。fib这里传递基本都是处理struct net
。也就是说我们可能需要一个对标DEFINE_KPROBE_SKB
的宏(比如叫它DEFINE_KPROBE_NET
),那现有框架下确实做不到,需要进一步扩展才行。
是我学艺不精了,struct net
只是个namespace的结构体,应该是fib_compute_spec_ds
这个函数里,skb会被转换成flowi4
然后传给fib_lookup
。但是这样还是拿不到fib_lookup
的fib_result
。
Hi: 目前似乎没有办法显示主机发出去的包是哪个ip rule 策略路由的table选中。这样对于配置路由表不是很方便,希望nettrace能显示 具体哪个路由表被选中而输出