对网络传输 ”突然中断“的一次分析

 

目前是直接使用systemp 工具 检查ip_output部分逻辑:简写代码如下所示

复制代码
#! /usr/bin/env stap
%{
#include <linux/in.h>
#include <linux/inet.h>
#include <net/inet_sock.h>
#include <linux/string.h>
#include <linux/errno.h>
#include <linux/highmem.h>
#include <linux/slab.h>

#include <linux/socket.h>
#include <linux/sockios.h>
#include <linux/in.h>
%}

function get_sock_tproxy:long(sock:long)
{
    sk = sock;
    val = @cast(sk, "inet_sock")->transparent;

    return val;
}

probe kernel.function("ip_finish_output2@net/ipv4/ip_output.c:282"){
    tmpsk = $skb->sk;
    val = get_sock_tproxy(tmpsk)
    printf("%6d %16s %6d 0X%6x %16s -> %s  tarnsp:%d \n", uid(), execname(), pid(),
           tmpsk->sk_protocol, inet_get_ip_source(tmpsk), probefunc(), val)
#printf("dump stack: %s\n", print_backtrace())
}
复制代码

编译方式:

stap -v -r /home/public/linux-4.4.131/ -a arm64 -B CROSS_COMPILE=aarch64-linux-gnu- -g -p 4 -m ip_out_fin.ko ./share/systemtap/examples/network/ip_finish_output2.stp

根据其skb相关值判断出问题

由于涉及公司相关信息 就简单的写一写了! 此文章只是为了展示处理问题的相关方法技巧

关于使用systemp hack malloc 以及free 晚点加上

 test

posted @   codestacklinuxer  阅读(114)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示