写在前面:
帮助函数的介绍是根据其引入内核的时间来排序介绍的,从前面包括本篇博客的介绍我们可以看到bpf最初的设计就是为网络而生的。
我们继续来介绍。
术语
- skb
Linux网络核心数据结构是套接字缓存(socket buffer),简称skb。它代表一个要发送或处理的保文,并贯穿于整个协议栈。
- off-cpu 火焰图
线程在i/o,锁,计时器,分页/交换等阻塞等待的时间
- on-cpu火焰图
线程在CPU上运行所花费的时间
- qdisc
队列规则,queueing discipline,Linux流量控制体系的核心。
21.long bpf_skb_set_tunnel_key(struct sk_buff *skb, struct bpf_tunnel_key *key, u32 size, u64 flags)
描述:填充skb关联的数据包的隧道元数据。隧道元数据被设置为key一定size大小的内容,可以将flags设置为以下值的组合:
- BPF_F_TUNINFO_IPV6:指示隧道基于 IPv6 协议而不是 IPv4。
- BPF_F_ZERO_CSUM_TX:对于 IPv4 数据包,向隧道元数据添加一个标志,以表示应跳过checksum的计算并将checksum设置为零。
- BPF_F_DONT_FRAGMENT:向隧道元数据添加一flag,以表示该数据包不应分段。
- BPF_F_SEQ_NUMBER:向隧道元数据添加一个标志,以表示