Linux内核协议栈skb成员
struct __sk_buff {
__u32 len;
__u32 pkt_type;
__u32 mark;
__u32 queue_mapping;
__u32 protocol;
__u32 vlan_present;
__u32 vlan_tci;
__u32 vlan_proto;
__u32 priority;
__u32 ingress_ifindex;
__u32 ifindex;
__u32 tc_index;
__u32 cb[5];
__u32 hash;
__u32 tc_classid;
__u32 data;
__u32 data_end;
__u32 napi_id;
__u32 family;
__u32 remote_ip4;
__u32 local_ip4;
__u32 remote_ip6[4];
__u32 local_ip6[4];
__u32 remote_port;
__u32 local_port;
__u32 data_meta;
union {
struct bpf_flow_keys *flow_keys;
};
__u64 tstamp;
__u32 wire_len;
__u32 gso_segs;
union {
struct bpf_sock *sk;
};
__u32 gso_size;
__u8 tstamp_type;
__u64 hwtstamp;
};
字段 |
类型 |
含义 |
len |
__u32 |
报文的大小,包括以太网头的字节数。 |
protocol |
__u32 |
协议 |
ingress_ifindex |
__u32 |
接收此skb的网络接口索引。当报文从network namespace发送到另一个network namespace时,ingress_ifindex将保存原始network namespace中的网络接口索引。 |
ifindex |
__u32 |
发送或接收此skb的网络接口索引。 |
tc_index |
__u32 |
流量控制(Traffic Control,TC)索引,分类或过滤skb,由tc_index决定把skb发送到哪个队列,或者应用哪种流量控制策略。 |
data |
__u32 |
报文起始地址 |
data_end |
__u32 |
报文结束地址 |