linux内核之——丢包分析
来源:互联网 发布:出差 知乎 编辑:程序博客网 时间:2024/05/17 07:32
内核丢包分析主要就是对流经网卡设备的数据包进行分类的分析,如何获得接受多少包,丢失多少包,错误多少包等状态进行简要的分析。
对于丢包的分析,我从两个方面来说:1、关于内核网卡的收包时丢包原因;2、分析pcap的丢包原因。本章主要是分析一下网卡的丢包以及如何获取包状态的方式。
cpu对外围设备的基本上都是通过中断方式进行调度,网卡也不例外,通过中断的方式通知cpu,得知什么时候发送数据包,什么时候接受数据包。在网卡驱动中,我们采用了这种思想,采用软中断的方式,调用发送和接受函数,来实现网卡的基本功能,接受和发送数据。当然,网卡驱动并不是这样就实现了,还需要对一些内存空间映射,寄存器的配置等等。我们现在只是对一个正常工作的网卡进行分析。
在网卡驱动中有一个结构体,struct net_device结构体(include/linux/netdevice.h),我们主要是对该结构体的字段进行分析。现在就对该结构体的字段进行分析。
rx_packets: 它是对网卡设备收到得数据包进行统计,他统计的包都是好的数据包,也就是说,该字段统计的数据包,都是上交到协议栈中的数据包。执行代码为:
rx_bytes: 它是对网卡设备收到得一个包(好包)的长度进行统计,但是该长度并不是就是指一个纯数据的长度,该长度应该包括:
insb(DATAPORT, skb_put(skb,pkt_len), pkt_len); //网卡上读取数据包
skb->protocol=eth_type_trans(skb,dev); //获取帧类型字段
netif_rx(skb); //上交协议栈
dev->last_rx = jiffies; //时间戳
lp->stats.rx_packets++; //接受包数统计
lp->stats.rx_bytes+=pkt_len; //接受字节统计
- linux内核之——丢包分析
- linux系统内核UDP丢包原因分析
- linux系统内核UDP丢包原因分析
- Linux系统内核UDP丢包原因分析
- linux系统内核UDP丢包原因分析
- Linux系统内核UDP丢包原因分析
- linux内核分析之调度——实时调度算法
- Linux内核分析之九——课程总结
- Linux内核分析之七——Linux内核如何装载和启动一个可执行程序
- ARM-Linux内核移植之(一)——内核启动流程分析 .
- linux内核启动过程分析之内核启动——阶段1
- ARM-Linux内核移植之(一)——内核启动流程分析
- linux 内核分析之list_head
- linux 内核分析之list_head
- linux 内核分析之list_head
- linux 内核分析之list_head
- linux 内核分析之list_head
- linux 内核分析之list_head
- -Xlint:unchecked
- “燕云十六将”之毛毛杜倩(7)
- IP子网划分
- 以IT治理取代经验型管理
- Setting an Accessible Name for an Image Button
- linux内核之——丢包分析
- S3c2440A WINCE平台HIVE注册表+binfs的实现
- 从2.4 到2.6:Linux 内核可装载模块机制的改变对设备驱动的影响
- [经验随笔]其实可以做的更好(一)
- 栈(stack)与堆(heap)区别以及Java的string变量赋值的内部工作机制(精典转载贴)
- 天鸣科技笔试
- UTF-8与UNICODE的关系及代码转换
- 让你的对象支持事务
- Unicode和UTF-8之间的转换详解