Linux网络子系统
文章平均质量分 83
qq_0105
这个作者很懒,什么都没留下…
展开
-
smp irq affinity介绍
smp affinity转载 2022-12-19 10:30:25 · 1047 阅读 · 0 评论 -
【STM32】以太网DMA描述符
DMA转载 2022-12-19 00:56:57 · 2001 阅读 · 1 评论 -
NAPI(New API)的一些浅见
NAPI转载 2022-12-18 22:39:04 · 1187 阅读 · 1 评论 -
网络设备的MAC地址
内核中为网络设备定义了5中MAC地址类型,如下所示,其中NETDEV_HW_ADDR_T_SLAVE类型目前没有使用。局域网LAN类型与存储SAN类型的MAC地址保存在net_device结构体的dev_addrs链表中;UNICAST与MULTICAST类型的MAC地址分别保存在uc和mc链表中。 #define NETDEV_HW_ADDR_T_LAN 1...转载 2022-02-14 10:18:09 · 1352 阅读 · 1 评论 -
bridge转发eapol包
最近开发有需求需要linux bridge能够转发EAPOL 和BPDU 多播包,EAPOL Multicast 包的dst mac 地址为: 01-80-C2-00-00-03。BPDU包的目的mac地址为:01-80-C2-00-00-00。在设置 sys/class/net/br-lan/bridge/group_fwd_mask 为0x9将这两种多播mac地址fwd enable的时候,发现以下error。echo 9 > sys/class/net/br-lan/bridge/gro原创 2022-02-13 23:12:26 · 453 阅读 · 0 评论 -
网桥本地链路组播控制group_fwd_mask
在创建网桥时,可指定组播转发掩码值group_fwd_mask,如下0xff00。掩码中的位表示的为链路本地地址(01:80:C2:00:00:0X)的最后一个4位的值,即X的值,其范围为0到15,所以,group_fwd_mask的值为16比特。 网桥下的子接口...转载 2022-02-13 21:27:18 · 401 阅读 · 0 评论 -
Linux内核参数group_fwd_mask-设置bridge过滤MAC地址范围
笔者在利用gns3模拟器搭建网络实验时,发现交换机设备和服务器之间无法成功协商LACP协议,CISCO NEXUS 9K互相之间却可以成功协商LACP, 在交换机和服务器上抓包发现,Nexus 9K发出的LACP报文中的目的MAC地址为00:01:02:03:04:05(而标准LACP协议中规定的是01:80:c2:00:00:02),服务器发出的LACP报文的目的MAC是01:80:c2:00:...转载 2022-02-13 21:14:46 · 1023 阅读 · 0 评论 -
网络协议栈收包之接口层——设备驱动到内核协议栈
学习Linux-4.12内核网路协议栈(2.1)——接口层加快传输速率的特性学习Linux-4.12内核网路协议栈(2.2)——接口层数据包的接收(上半部)学习Linux-4.12内核网路协议栈(2.3)——接口层数据包的接收(下半部)网卡驱动收发包过程NAPI(New API)的一些浅见ixgbe网卡驱动(一)ixgbe网卡驱动(二)ixgbe网卡驱动(三)...原创 2020-04-19 21:57:36 · 500 阅读 · 0 评论 -
AF_PACKET raw socket实现原理分析
raw socket按照检测到的报文主要可以分两类:mac报文、IP报文、传输层报文。本文分析二层报文,例如:socket(AF_PACKET, SOCK_RAW, ETH_P_ALL)方式创建的socket,可以检测到所有的二层报文。raw socket实现的核心在于,socket的建立,并注册到相应的数据中,实现在收包阶段把报文提交给socket处理,例如ptype_all、pty...转载 2020-04-09 01:02:05 · 2184 阅读 · 0 评论 -
Linux TUN试验
#include <stdio.h>#include <string.h>#include <linux/if_tun.h>#include <sys/types.h>#include <net/if.h>#include <sys/stat.h>#include <fcntl.h>#i...原创 2020-03-12 17:25:47 · 998 阅读 · 0 评论 -
Linux TC(traffic control)
Linux网络之设备接口层:发送数据包流程dev_queue_xmitlinux TC设计与实现Linux Tc原创 2020-03-12 10:05:47 · 489 阅读 · 0 评论 -
module_init机制的理解
我们在学习Linux驱动开发时,首先需要了解Linux的模块化机制(module),但是module并不仅仅用于支撑驱动的加载和卸载。一个最简单的模块例子如下:// filename: HelloWorld.c #include <linux/module.h>#include <linux/init.h> static int hello_init(void){ ...转载 2020-02-02 23:03:42 · 352 阅读 · 0 评论 -
module_init解析
module_init这个函数的具体功能和执行过程在kernel源码目录中找到include\linux\init.h文件 #define module_init(x) __initcall(x); 有对module_init 的定义,我们发现module_init(x)是一个宏定义,那么_initca...转载 2020-02-02 18:16:15 · 992 阅读 · 1 评论 -
学习Linux-4.12内核网路协议栈(1.5)——协议栈的初始化(inet_init主要数据结构)
前面了解到网络初始化申请了两块skb高速缓存和创建了一个/proc/net/protocols文件,现在开始重头戏,网络协议栈的初始化。这篇文章主要介绍网络栈中使用到的主要数据结构。网络协议栈的内核实现和理论上的分层有些不一样,在代码里面的分层如下图:开始前,先回顾一下应用层socket函数的调用,它会创建一个socket并返回对应的描述符:int socket(int doma...转载 2020-01-13 11:40:51 · 630 阅读 · 0 评论 -
网络模块初始化
初始化相关的文件include/linux/init.h 初始化相关的宏定义include/asm-generic/vmlinux.lds.h 编译链接相关的宏定义init/main.c 启动时的高级初始化net/core/dev.c 网络设备注册、输入和输出等接口drivers/net/e100.c e100驱动程序初始化...转载 2020-01-09 15:39:28 · 369 阅读 · 0 评论 -
Linux内核很吊之 module_init解析 (下)
Linux内核很吊之 module_init解析 (下)个人笔记,欢迎转载,请注明出处,共同分享 共同进步 http://blog.csdn.net/richard_liujh/article/details/46758073 -- 刘金辉忙了一段时间,终于有时间把inux内...转载 2020-01-08 22:49:57 · 182 阅读 · 0 评论 -
linux驱动 之 module_init解析 (上)
linux内核驱动 之 module_init解析 (上)欢迎转载,相互学习,但请注明出处,非常感谢!http://blog.csdn.net/richard_liujh/article/details/45669207- 刘金辉写过linux驱动的程序猿都知道module_init() 这个函数。那么我们来了解一下module_init这个函数的具体功能和执行过程在kernel源码...转载 2020-01-08 18:19:40 · 311 阅读 · 0 评论 -
Linux 内核网络协议栈 ------sk_buff 结构体 以及 完全解释 (2.6.16)
在2.6.24之后这个结构体有了较大的变化,此处先说一说2.6.16版本的sk_buff,以及解释一些问题。一、先直观的看一下这个结构体~~~~~~~~~~~~~~~~~~~~~~在下面解释每个字段的意义~~~~~~~~~~~[cpp] view plain copy struct sk_buff&...转载 2020-01-08 18:15:22 · 251 阅读 · 0 评论