bpftrace对udp及内核函数dev_queue_xmit及sk_buff的解析

本文通过BPFTrace工具追踪Linux内核中与UDP数据包处理相关的函数,包括ip_finish_output2、udp_sendmsg及__dev_queue_xmit。特别关注发送到特定IP的数据包,并解析其头部信息。

bpftrace对udp及内核函数dev_queue_xmit及sk_buff的解析

#!/usr/bin/bpftrace
#include <linux/skbuff.h>
#include <linux/ip.h>
#include <linux/udp.h>
#include <linux/socket.h>


kprobe:ip_finish_output2
{
	// 获取ip_finish_output2函数的调用次数
	@ip_finish_output2[tid]=count();
}

kprobe:udp_sendmsg
{
	// 保存tid
	@udp_tid[tid]=tid
}

kprobe:__dev_queue_xmit
{
	//获取调用次数
	@dev_queue_xmit[tid]=count();
	@skb[tid]=(struct sk_buff *)arg0;
}

kr:__dev_queue_xmit
/@skb[tid]/
{
	// 过滤udp的进程
	if (tid == @udp_tid[tid]){ 
		$skb = @skb[tid];
		// get IPv4 header; see skb_network_header():
		$iph = (struct iphdr *)($skb->head + $skb->network_header);
		$sip = ntop(AF_INET, $iph->saddr);
		$dip = ntop(AF_INET, $iph->daddr);
         //id 为ip数据包标识
        $id = (($iph->id & 0x00ff) << 8) | (($iph->id & 0xff00) >> 8);
        $tot_len = (($iph->tot_len & 0x00f
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值