内核网络

Linux内核网络数据发送(六)——网络设备驱动

由 梁金荣 | 3300字 | 阅读大约需要7分钟 | 归档于内核网络

2020年11月23日

本文主要介绍设备通过 DMA 从 RAM 中读取数据并将其发送到网络,主要分析dev_hard_start_xmit 通过调用 ndo_start_xmit来发送数据的过程。

继续阅读

Linux内核网络数据发送(五)——排队规则

由 梁金荣 | 7400字 | 阅读大约需要15分钟 | 归档于内核网络

2020年11月9日

本文将分析通用的数据包调度程序(generic packet scheduler)的工作过程,通过分析 qdisc_run_begin()qdisc_run_end()__ qdisc_run()sch_direct_xmit() 函数,了解内核如何一层层将数据传递给驱动程序,最后进行了监控和调优。

继续阅读

Linux内核网络数据包发送(四)——Linux netdevice 子系统

由 梁金荣 | 5200字 | 阅读大约需要11分钟 | 归档于内核网络

2020年11月2日

本文主要分析 dev_queue_xmit 发送数据包的过程,并进行调优。

继续阅读

Linux内核网络数据包发送(三)——IP协议层分析

由 梁金荣 | 5800字 | 阅读大约需要12分钟 | 归档于内核网络

2020年10月26日

Linux内核网络 UDP 协议层通过调用 ip_send_skb 将 skb 交给 IP 协议层,本文通过分析内核 IP 协议层的关键函数来分享内核数据包发送在 IP 协议层的处理,并分享了监控IP层的方法。

继续阅读

Linux内核网络数据包发送(二)——UDP协议层分析

由 梁金荣 | 6800字 | 阅读大约需要14分钟 | 归档于内核网络

2020年10月6日

本文分享了Linux内核网络数据包发送在UDP协议层的处理,主要分析了 udp_sendmsg 和 udp_send_skb 函数,并分享了UDP层的数据统计和监控以及socket发送队列大小的调优。

继续阅读

Linux内核网络数据包发送(一)

由 梁金荣 | 2400字 | 阅读大约需要5分钟 | 归档于内核网络

2020年9月28日

本文首先从宏观上概述了数据包发送的流程,接着分析了协议层注册进内核以及被socket的过程,最后介绍了通过 socket 发送网络数据的过程。

继续阅读

Linux内核网络中数据报在协议层的处理

由 梁金荣 | 4100字 | 阅读大约需要9分钟 | 归档于内核网络

2020年9月21日

本文主要分析数据报从 IP 协议层进入协议栈,通过udp协议层,到达 socket,最终被用户程序读取的过程。在此过程中,介绍了 IP 协议层和 UDP 协议层中监测数据和网络调优的方法。

继续阅读

内核网络中的GRO、RFS、RPS技术介绍和调优

由 梁金荣 | 5200字 | 阅读大约需要11分钟 | 归档于内核网络

2020年9月15日

本文主要介绍内核网络中GRO、RFS、RPS等技术,并针对其对应的规则进行网络调优。重点对RPS的工作过程和内核代码进行了分析,分析了数据如何从网卡进入到协议层。

继续阅读

Linux网络设备子系统

由 梁金荣 | 5500字 | 阅读大约需要11分钟 | 归档于内核网络

2020年9月1日

本文主要介绍Linux网络设备子系统的数据处理,从网络设备子系统的初始化开始,从硬中断到软中断,分别介绍了NAPI 和 napi_schedule、数据在网络设备子系统的监测和调优以及网络数据的处理。

继续阅读

socket基础与socket创建过程的相关函数分析

由 董旭 | 6100字 | 阅读大约需要13分钟 | 归档于内核网络

2020年8月24日

在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。本文从socket基础入手,然后走进内核,对socket建立过程的部分函数进行分析

继续阅读