协议栈是如何调用xdp程序处理报文的 0.1. 函数调用栈以xdp SKB模式为例, 123456789101112131415--> bpf_prog_run_generic_xdp--> --> bpf_prog_run_xdp--> --> --> u32 act = __bpf_prog_run(prog, xdp, BPF_DISPATCHER_FUNC(xdp)); 展开BPF_DIS 2019-10-27 BPF #xdp
xdp 是如何加载到内核并运行的 0.1. XDP frameworkxdp在内核里的有三个关键步骤: load: 加载到内核 attach: 绑定到一个网口 run:网口收包时候,调用并执行bpf prog 0.1.1. load加载: 通过ebpf系统调用, 把prog加载到内核fd = sys_bpf(BPF_PROG_LOAD, attr, size); 在内核里创建一个bfp_prog结构体用以存储bpf prog 2019-10-26 BPF #xdp
how tcpdump work with vlan filter 0.1. 问题场景tcpdump在网口直接抓包和读取pcap文件两种场景下,同一个filter表达式icmp,对vlan报文有不同的处理结果。 在网口上抓包可以看到vlan和非vlan两种流量 读取pcap只能看到非vlan流量一种流量 【Q1】:在读取pcap文件时候,为什么不能读取到vlan报文呢? 0.2. 分析结论内核协议栈: 过滤条件 icmp:tcpdump 解析出来的 ebpf 2019-10-09 Tcpdump #Tcpdump
tcpdump and ebpf 以内核v6.6代码,介绍tcpdump程序如何与内核交互,加载bpf程序的。 0.1. 加载:libpcap通过sockopt里的“SO_ATTACH_FILTER“,在 packet socket下的”sk_filter“挂载prog呈现。 0.2. 运行:当skb报文到达packet_rcv时候, 通过调用___bpf_prog_run函数(注意,这个函数是3个下滑线,区别于2个下划线的函数) 2019-10-08 Tcpdump #Tcpdump
how tcpdump work with cbpf tcpdump通过libpcap库以及内核的af_packet对数据包问题进行抓取。关于这两部分的如何协作抓包,之前blog里已经写过。这里主要记录分析,在ebpf之前的内核(以v3.0)如何处理tcpdump里的filter的。 1. filter编译后,如何加载到内核里的:在filter被翻译为一系列的指令后,这个指令buff被libpcap,通过sockopt里的SO_ATTACH_FILT 2019-09-25 Tcpdump #Tcpdump
tcpdump如何实现参数-报文抓取长度 0.1. 用法tcpdump -s len 0.2. 原理tcpdump会把这个长度值编译到ebpf代码中。 ebpf代码执行完后,如果filter成功,则作为返回值(return)返回给调用方(内核协议栈),内核协议栈根据返回值,修改 skb报文到指定的长度,并借助 af socket 返回给用户空间。 0.2.1. tcpdump命令解析 2019-07-15 Tcpdump #Tcpdump
xfrm: configure xfrm state and policy with iproute2 0.0.1. 测试环境1234567891011121314ip netns exec ns1 ip l s veth1 downip l delete veth0ip netns delete ns1ip l add type vethip netns add ns1ip l s dev veth1 netns ns1ip l set veth0 upip netns exec ns1 ip l 2018-10-03 XFRM #XFRM
slabinfo 惹的祸 mysql访问延迟问题分析 0.1. 问题背景收到数据库同学的问题排查的请求,同一个数据中心里,dbproxy到mysql的连接失败率偏高,其tcp connect调用的超时时间是20ms+。 2017-05-15 IRQ #memory #IPv4
WHAT is TFO 0.1. 什么是tcp fast open(TFO)0.1.1. 背景网络上有大量的短连接,传输的数据很少。google统计显示,其访问请求里有30%左右的流量是短连接。 0.1.2. 原理针对tcp 短连接的一个优化。在syn请求里携带请求数据,让server端尽早处理,进而降低一个RTT的延迟。client端发送时候在syn报文里,增加一个tcp option选项(TFO),serv 2016-11-23 TCP #IPv4
configure rss for ixgbe 0.0.1. 配置ixgbe网卡的RSS12345ethtool -K em1 ntuple onethtool --show-ntuple em1ethtool --config-ntuple em1 flow-type tcp4 dst-port 60001 action 1ethtool --config-ntuple em1 flow-type tcp4 dst-port 60002 2016-11-23 Netdev #netdev