内核路由表:fib_table
路由表项的增加和查询,fib_table_insert和fib_table_lookup。
跟踪fib_table_insert和fib_table_lookup两个接口。
#!/usr/bin/env bpftrace
#include <linux/pci.h>
#include <linux/netdevice.h>
kprobe:fib_table_insert {
printf("fib_table_insert\n");
@[kstack]=count();
}
kprobe:fib_table_lookup {
printf("fib_table_lookup\n");
@[kstack]=count();
}
在创建路由的时候,可以捕获到fib_table_insert接口的使用。
正常的接受报文会触发路由表的查询。
1)一个是接收报文路径,会有入向input路由表的查找;
2)一个是用户态发起connec/bind,或者内核tcp接受路径回复ack的时候,会有出向output路由表的创建和查找。
[root@localhost leiyanjie]# bpftrace route.bt
Attaching 2 probes...
fib_table_lookup
fib_table_lookup
fib_table_lookup
fib_table_lookup
fib_table_lookup
fib_table_lookup
fib_table_lookup
fib_table_lookup
fib_table_lookup
fib_table_lookup
fib_table_lookup
fib_table_lookup
fib_table_lookup
fib_table_lookup
fib_table_lookup
fib_table_lookup
fib_table_loo