首页 > TAG信息列表 > skb

Linux 内核对交换芯片上送的协议报文的处理

           1. 应用场景              对于数据报文,交换芯片完成硬件转发,即转发层面,无须cpu的参与。              对于协议报文,例如L2 的 EAPS环网检测,需要上送cpu,由应用层处理,即控制层面。           2. 内核接收报文处理            在交换芯

Generic Netlink内核实现分析(二):通信详解

转载自:https://blog.csdn.net/luckyapple1028/article/details/51232582#t6 代码路径:https://github.com/luckyapple1028/demo-genetlink 前一篇博文中分析了Generic Netlink的消息结构及内核初始化流程,本文中通过一个示例程序来了解Generic Netlink在内核和应用层之间的单播通信

Linux 网络栈监控和调优:发送数据(2017)

转载 https://arthurchiao.art/blog/tuning-stack-tx-zh/ [译] Linux 网络栈监控和调优:发送数据(2017) 译者序 本文翻译自 2017 年的一篇英文博客 Monitoring and Tuning the Linux Networking Stack: Sending Data。如果能看懂英文,建议阅读原文,或者和本文对照看。 这篇文

Linux网络技术学习(一)—— sk_buff数据结构解析

文章目录 Linux网络代码中结构体套接字缓冲区:sk_buff数据结构sk_buff数据结构定义文件位置sk_buff数据结构分布sk_buff数据结构在传输中的流程 网络选项以及内核结构布局字段sk_buff_head结构体struct sock *skunsigned int lenunsigned int data_lenunsigned int mac_lena

linux netlink实现机制:通信

目录 1 netlink 通信数据结构 1.1 netlink 消息报头:struct nlmsghdr 1.2 socket 消息数据包结构:struct msghdr 1.3 netlink消息处理宏 2 应用层向内核发送netlink消息 3 内核向应用层发送netlink消息 4 应用层接收内核netlink消息 1 netlink 通信数据结构 1.1 netlink 消息报

linux源码解读(二十一):网络通信简介——tcp三次握手

  前面介绍了用来管理存放网络数据包的sk_buff,以及描述通信协议的socket和sock结构体,现在终于轮到怎么和远程的计算机通信了!从常识上讲,通信之前必须要建立连接,比如有线的键盘给电脑发送信号,需要先让键盘通过usb接口连接到电脑,否则电脑怎么接受键盘的电信号了?同理:我要想使用鼠标,

IP Tunnel one-to-many用法

Linux IP Tunnel有IPIP、Gre、Sit,使用虚拟网络中常用的overlay技术,一般需要直接配置local 和 remote address,但是在一些SDN的虚拟网络中常常会存在大量的对端,这就需要配置很多Tunnel口。管理起来比较麻烦。 解决这个问题的一个办法,就是在配置IP Tunnel时,不指定remote address

Linux网络协议栈6--ipvlan

本来想将macvlan和ipvlan放一起写,但是在测试过程中发现,ipvlan使用起来还是挺复杂的,于是单独作为一章来写。 ipvlan 和 macvlan 类似,都是从一个主机接口虚拟出多个虚拟网络接口。一个重要的区别就是所有的虚拟接口都有相同的 macv 地址,而拥有不同的 ip 地址。 ipvlan 有两种不

linux源码解读(十九):网络通信原理简介&sk_buff结构体介绍

  1、时至今日,已经找不到单机设备了,所有的IT硬件设备都会联网和其他的IT设备通信。设备之间传递数据总要遵守特定的协议规范吧,避免出现“鸡同鸭讲”的尴尬局面,这个就是至今世界范围内最流行的tcp/ip协议! 为了简化,又被分成了5层,各种体系的对应关系如下图:               

连接跟踪SIP协议

ip_conntrack_sip模块用于为SIP协议建立所需的连接跟踪。支持指定最大8个监听端口,多个端口号使用逗号分隔。另外在加载模块时可指定的参数有: sip_timeout 主SIP会话的超时时长,默认3600秒sip_direct_signalling 仅接受注册服务器发出的呼叫,默认为1sip_direct_media 仅在交互信

端口转发 局域网数据包在桥上DNAT后无法forward

问题: 端口转发,内网设备2的端口5555绑定WAN端口2222。内网设备1访问WAN口端口2222,在桥上pre链执行了DNAT操作,但是数据包最终未转发到内网设备2的5555端口上。如果开启tcpdump抓包工具就正常转发,关闭后还是无法转发。 原因分析: 内核的桥代码在处理pre链上的数据包DNAT后,不会将数据

linux内核协议栈说明

root@ubuntu:~/rtk-9310/kernel/uClinux/linux-3.18.24.x# grep “\bstruct list_head ptype_all\b” ./ -nR ./net/core/net-procfs.c:12:extern struct list_head ptype_all __read_mostly; ./net/core/dev.c:149:struct list_head ptype_all __read_mostly; /* Taps */

内核full nat 简析

DPVS 参考LVS设计,其核心在LVS的netfilter框架;笔者曾经做过类似的FULLNAT 满足portal 三层认证    LVS的HOOK点函数在内核中IPVS的源码在net/netfilter/ipvs目录下,LVS是以netfilter框架为基础,先看一下LVS在哪些HOOK点挂载了自己的处理函数。IPVS的处理函数在挂载在下面三个HOOK

协议栈构造skb发送udp

                      调用dev->netdev_ops->ndo_start_xmit发送直接机器挂掉       Linux Kernel 下 udp packet 的收发(sk_buff+Netfiler)

RTL8169网卡驱动

原文:http://www.bubuko.com/infodetail-844822.html 本文通过学习RealTek8169/8168/8101网卡的驱动代码(drivers/net/r8169.c),梳理一下Linux下网卡的收包过程。 在下水平相当有限,有不当之处,还请大家斧正_ 驱动的初始化 如下的rtl8169_init_module函数是此驱动的初始化代码,此

网桥

1  前言 本文的参考分析的源代码版本是2.6.15,我是边学习边总结,学习的过程中得益于Linux论坛(http://linux.chinaunix.net/bbs/)上大侠们总结分析的文档,他山之石可以攻玉,学习过程中我也会边学边总结,开源的发展在于共享,我也抛块砖,望能引到玉! 由于自身水平有限,且相关的参考资料较少,因

Linux内核网络数据结构skb_buff

sk_buff 基于linux-5.14.14版本 sk_buff结构体 struct sk_buff { union { struct { struct sk_buff *next; //双向链表头指针 struct sk_buff *prev; //双向链表尾指针 union { struct net_device *dev; //网络结构体 unsigned long dev_scratch;

网络协议栈源码分析

此网络协议栈源码分析是基于linux 1.2.13版本的内核源码进行分析的;在分析此代码的过程中,同时深入阅读了linux网络驱动和TCP-IP详解,先理解整体的网络概念和内核网络模块代码齐头并进,梳理出了如下的代码调用流程。如下的代码流程是从内核网络模块初始化,到插口层如何调用到内核的处

对Socket CAN的理解(3)——【Socket CAN发送数据流程】

转载请注明出处:http://blog.csdn.net/Righthek 谢谢!     对于本文,我们将从用户层使用Socket CAN进行数据发送时,数据从用户空间到底层驱动的整个通信流程,用户层使用Socket CAN可参考上一篇文章《对Socket CAN的理解(2)——【Socket的原理及使用】》。     当我们在用户层

图解Linux网络包接收过程

文章转载自公众号:开发内功修炼 因为要对百万、千万、甚至是过亿的用户提供各种网络服务,所以在一线互联网企业里面试和晋升后端开发同学的其中一个重点要求就是要能支撑高并发,要理解性能开销,会进行性能优化。而很多时候,如果你对Linux底层的理解不深的话,遇到很多线上性能瓶颈你

内核中的TCP的追踪分析-22-TCP(IPV4)的客户端数据的发送-续

我们今天接着看tcp_write_xmit(),在开始函数之前我想提醒朋友们,如果你是一名研发工程师的话请注意我的提醒,近来很多公司打着招聘的名义窃取项目计划和机密,这些公司在招聘人才时要求简历写出其所做过的项目情况,看似展示一个人的工作经验和才能,背后隐藏着不可告人的意图,通过与工程师

答疑解惑第一期

目录 《第 1 讲 | 为什么要学习网络协议?》课后思考题留言问题 《第 2 讲 | 网络分层的真实含义是什么?》课后思考题留言问题 《第 1 讲 | 为什么要学习网络协议?》 课后思考题 当网络包到达一个城关的时候,可以通过路由表得到下一个城关的 IP 地址,直接通过 IP 地址找就可以

图解linux netlink

原文:https://www.dazhuanlan.com/2019/10/18/5da897a5b6ff1/概述netlink协议簇 netlink初始化socket系统调用bind系统调用sendmsg系统调用recvmsg系统调用通用netlink协议 初始化收发消息netlink用户空间程序 netlink套接字库libnlnetlink消息报头和数据结构通用netlink报头和数

Linux网络收包总览

因为要对百万、千万、甚至是过亿的用户提供各种网络服务,所以在一线互联网企业里面试和晋升后端开发同学的其中一个重点要求就是要能支撑高并发,要理解性能开销,会进行性能优化。而很多时候,如果你对Linux底层的理解不深的话,遇到很多线上性能瓶颈你会觉得狗拿刺猬,无从下手。 我们

linux 网络实现的数据结构-数据包结构

基本数据结构 数据包结构  1:msghdr{}数据结构 struct msghdr {//bsd socket 层中的数据结构 void * msg_name; /* 保存的是这个套接字的名字, 一般都使用NULL初始化 */ int msg_namelen; /* Length of name */ struct iovec * msg_iov; /* 保存的屙屎发送或者接收的数据