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

报文结束地址

posted on 2024-04-14 14:10  王景迁  阅读(28)  评论(0编辑  收藏  举报

导航