<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[maimang1001的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/maimang1001</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; maimang1001]]></copyright><item><title><![CDATA[Linux kernel 网络数据包接收流程]]></title><link>https://blog.csdn.net/maimang1001/article/details/147127703</link><guid>https://blog.csdn.net/maimang1001/article/details/147127703</guid><author>maimang1001</author><pubDate>Thu, 10 Apr 2025 21:08:51 +0800</pubDate><description><![CDATA[图1原图链接：https://thelinuxchannel.org/2024/10/network_data_flow_through_kernel-api-map/注，本文基于 2.6.20 内核。]]></description><category></category></item><item><title><![CDATA[LoRaWAN™ 是什么？LoRa 与 LoRaWAN 技术概述]]></title><link>https://blog.csdn.net/maimang1001/article/details/147053390</link><guid>https://blog.csdn.net/maimang1001/article/details/147053390</guid><author>maimang1001</author><pubDate>Mon, 07 Apr 2025 21:29:27 +0800</pubDate><description><![CDATA[LoRa® 是用于创建远距离通信链路的物理层或无线调制技术。许多传统无线系统采用频移键控（FSK）调制作为物理层，因为它是一种实现低功耗的高效调制方式。LoRa® 基于线性调频扩频(CSS:chirp spread spectrum)调制，它保留了与 FSK 调制相同的低功耗特性，但显著增加了通信距离。由于能够实现长距离通信且抗干扰能力强，线性调频扩频技术已在军事和太空通信领域应用了数十年，而 LoRa® 是首个用于商业用途的低成本实现方案。]]></description><category></category></item><item><title><![CDATA[如何使用队列规则（Qdisc）发送数据包]]></title><link>https://blog.csdn.net/maimang1001/article/details/145094177</link><guid>https://blog.csdn.net/maimang1001/article/details/145094177</guid><author>maimang1001</author><pubDate>Sun, 12 Jan 2025 16:07:45 +0800</pubDate><description><![CDATA[函数 __dev_queue_xmit 用于将数据包从网络层发送到网络设备的传输队列中。该函数在内核网络子系统中扮演着重要角色，负责将数据包从上层协议（如 IP 层）传递到网络设备（如以太网卡）进行发送。在这个过程中，__dev_queue_xmit 会处理各种情况，如流量控制、队列管理等，以确保数据包能够有效地发送到目标设备。]]></description><category></category></item><item><title><![CDATA[高速网络数据包处理中的内核旁路技术]]></title><link>https://blog.csdn.net/maimang1001/article/details/144918583</link><guid>https://blog.csdn.net/maimang1001/article/details/144918583</guid><author>maimang1001</author><pubDate>Fri, 03 Jan 2025 21:38:55 +0800</pubDate><description><![CDATA[该PPT详细介绍了Linux网络栈中数据包的传输路径、内核旁路技术的必要性以及具体的内核旁路技术，包括用户空间数据包处理和用户空间网络栈。数据包在Linux网络栈中的旅程：描述了数据包从发送到接收的完整路径，包括各个网络层的处理。内核旁路技术的必要性：解释了为什么需要内核旁路技术来处理数据包，特别是在高速网络环境中。]]></description><category></category></item><item><title><![CDATA[TCP 小队列的设计原理]]></title><link>https://blog.csdn.net/maimang1001/article/details/144781927</link><guid>https://blog.csdn.net/maimang1001/article/details/144781927</guid><author>maimang1001</author><pubDate>Sat, 28 Dec 2024 09:24:12 +0800</pubDate><description><![CDATA[解决这一问题的方法是在任意两个端点之间的每个系统中减少缓冲的数据量——这项任务听起来简单，但事实证明远比人们预期的更具挑战性。实际上，缓冲可以在网络协议栈的许多意想不到的地方出现；《TCP small queues》由 Jonathan Corbet 于2012年7月17日发表在 LWN.net 上，主要讨论了网络堆栈中的“缓冲区膨胀”（bufferbloat）问题。这个问题是由于在网络传输过程中，数据包在网络设备中被过度缓存导致的，从而在整个网络中引起较长时间的延迟和较差的可靠性。]]></description><category></category></item><item><title><![CDATA[Linux 网络栈中的队列机制]]></title><link>https://blog.csdn.net/maimang1001/article/details/144678908</link><guid>https://blog.csdn.net/maimang1001/article/details/144678908</guid><author>maimang1001</author><pubDate>Mon, 23 Dec 2024 22:15:55 +0800</pubDate><description><![CDATA[包队列是任何网络栈或设备的核心组件。它们允许模块之间进行异步通信，提高性能，并具有影响延迟的副作用。本文旨在解释IP数据包在Linux网络栈中的排队位置，如何操作诸如BQL这种有趣的缓解延迟的新特性，以及如何控制缓冲以减少延迟。]]></description><category></category></item><item><title><![CDATA[开始探索XDP：开启Linux高性能网络编程的新篇章]]></title><link>https://blog.csdn.net/maimang1001/article/details/144640032</link><guid>https://blog.csdn.net/maimang1001/article/details/144640032</guid><author>maimang1001</author><pubDate>Sun, 22 Dec 2024 08:48:37 +0800</pubDate><description><![CDATA[XDP（eXpress Data Path）是 Linux 中的一项强大新网络功能，它允许在数据包进入网络栈之前以高性能可编程的方式访问这些数据包。许多开发者已经为这项功能撰写了入门博客，例如 Paolo Abeni 的《使用 XDP 实现高性能、低延迟网络：第一部分》和 Toke 的《在 Red Hat Enterprise Linux 8 中使用 eXpress Data Path (XDP)》。因此，开发人员正在创建工具和框架，使编写 eBPF 和 XDP 应用变得容易。]]></description><category></category></item><item><title><![CDATA[关于UDP缓冲区和丢包统计]]></title><link>https://blog.csdn.net/maimang1001/article/details/144623914</link><guid>https://blog.csdn.net/maimang1001/article/details/144623914</guid><author>maimang1001</author><pubDate>Sat, 21 Dec 2024 07:26:34 +0800</pubDate><description><![CDATA[每个套接字默认会获得 wmem_default 大小的发送缓冲区，可以通过setsockopt 选项SO_SNDBUF 请求设置最多 wmem_max 大小的缓冲区。每个套接字默认会获得 rmem_default 大小的接收缓冲区，可以通过setsockopt 选项SO_RCVBUF 请求设置最多 rmem_max 大小的缓冲区。UDP 缓冲区由 7 个 sysctl 参数控制。控制套接字默认和最大发送缓冲区大小，单位为字节。控制套接字默认和最大接收缓冲区大小，单位为字节。调整和观察 UDP 缓冲区。]]></description><category></category></item><item><title><![CDATA[netfilter简介及流程图]]></title><link>https://blog.csdn.net/maimang1001/article/details/144618914</link><guid>https://blog.csdn.net/maimang1001/article/details/144618914</guid><author>maimang1001</author><pubDate>Fri, 20 Dec 2024 20:23:21 +0800</pubDate><description><![CDATA[Netfilter 是 Linux 内核中用于网络包过滤和操作的框架，由 Rusty Russell 于1998年创立，旨在改进旧的 ipchains 和 ipfwadm 实现。它采用模块化设计，具有良好可扩展性，并在2000年3月合并进Linux 2.3.x内核版本。]]></description><category></category></item><item><title><![CDATA[TCP小队列与WiFi聚合]]></title><link>https://blog.csdn.net/maimang1001/article/details/144532213</link><guid>https://blog.csdn.net/maimang1001/article/details/144532213</guid><author>maimang1001</author><pubDate>Tue, 17 Dec 2024 12:31:01 +0800</pubDate><description><![CDATA[作者们在测试中使用了带有 Atheros 芯片组的 USB/WiFi 802.11ab/g/n设备，具体型号包括AR9271（使用ath9k_htc驱动程序）、AR9580（ath9k驱动程序），以及 QCA9880v2（ath10k驱动程序）。在初步测试期间，他们遇到了一个问题：尽管这些 dongles 的标称传输速率为150Mb/s，但通过 iperf进行的上传连接仅能达到大约 40Mb/s。因此，如果遇到类似的性能问题，确保您的内核是最新的非常重要。]]></description><category></category></item><item><title><![CDATA[Linux 网络流量控制 - 实现概述]]></title><link>https://blog.csdn.net/maimang1001/article/details/144464697</link><guid>https://blog.csdn.net/maimang1001/article/details/144464697</guid><author>maimang1001</author><pubDate>Sat, 14 Dec 2024 09:21:56 +0800</pubDate><description><![CDATA[Linux 提供了一整套丰富的流量控制)功能。本文档概述了相应的内核代码设计，描述了其结构，并通过描述一种新的排队策略来说明新元素的添加。]]></description><category></category></item><item><title><![CDATA[Linux 高级路由教程]]></title><link>https://blog.csdn.net/maimang1001/article/details/144414669</link><guid>https://blog.csdn.net/maimang1001/article/details/144414669</guid><author>maimang1001</author><pubDate>Thu, 12 Dec 2024 07:11:21 +0800</pubDate><description><![CDATA[这本文是一个关于Linux高级路由的教程，主要讨论了如何使用Linux来构建一个能够根据数据包的目的地选择不同链路的路由器。详细解释了如何使用BGP（边界网关协议）来获取国内IP地址的路由信息，并介绍了如何在Linux系统中使用多个路由表和路由规则来实现复杂的路由策略。此外，还讨论了如何为DMZ（非军事化区）设置特殊的路由表和规则，以确保来自DMZ的流量通过特定的链路发送。本文的目的是帮助读者理解如何在Linux系统中实现高级路由策略，以及如何利用BGP等网络协议来优化网络性能。]]></description><category></category></item><item><title><![CDATA[深入探讨 AF_PACKET 套接字]]></title><link>https://blog.csdn.net/maimang1001/article/details/144321946</link><guid>https://blog.csdn.net/maimang1001/article/details/144321946</guid><author>maimang1001</author><pubDate>Sun, 08 Dec 2024 10:03:21 +0800</pubDate><description><![CDATA[AF_PACKET 套接字是一种用于直接访问网络接口(即网卡)的套接字类型，通常用于网络数据包捕获和分析。它允许应用程序直接与网络接口卡（NIC）交互，而不需要通过网络协议栈。从而可以发送和接收以太网帧。它提供了比普通TCP/UDP套接字更低级别的网络访问。通常用于需要直接处理网络帧的应用，如抓取网络数据包、入侵检测系统、自定义协议实现等。]]></description><category></category></item><item><title><![CDATA[iproute和路由表]]></title><link>https://blog.csdn.net/maimang1001/article/details/144305112</link><guid>https://blog.csdn.net/maimang1001/article/details/144305112</guid><author>maimang1001</author><pubDate>Sat, 07 Dec 2024 09:31:06 +0800</pubDate><description><![CDATA[我们将开始详细讨论路由策略数据库（RPDB: Routing Policy DataBase）三要素中的第一个组件：路由（另外两个组件是 ip rules 和 ip tables）。路由路由由 ip route（iproute2）和 route 工具进行管理。两者的区别在于 ip route 是当前版本（iproute2），而 route（iproute）已经被弃用很长时间了。尽管如此，后者在某些任务中（特别是只读查询）仍然有用，并且在更广泛的Linux社区中仍然具有相关性。]]></description><category></category></item><item><title><![CDATA[IEEE 802.11s wifi mesh网络]]></title><link>https://blog.csdn.net/maimang1001/article/details/144149997</link><guid>https://blog.csdn.net/maimang1001/article/details/144149997</guid><author>maimang1001</author><pubDate>Sat, 30 Nov 2024 09:29:54 +0800</pubDate><description><![CDATA[IEEE 802.11s 是对 IEEE 802.11 标准的扩展，允许多个无线节点相互连接，而无需在它们之间有接入点（AP）。例如，如果您家里有一个 AP，您想将文件复制到另一台连接到相同 AP 的笔记本电脑 B（与您的笔记本电脑 A 连接），那么笔记本电脑 A 会将数据传输到 AP，AP 再将数据传输给笔记本电脑 B。不过，IEEE 802.11s 的真正优势在于存在多个无线节点的情况下。使用 802.11s 网状(mesh)网络标准，这些节点可以形成一个多跳网络，网络中的所有连接都是无线的。]]></description><category></category></item><item><title><![CDATA[使用 XDP 实现高性能、低延迟的网络：第一部分]]></title><link>https://blog.csdn.net/maimang1001/article/details/144101120</link><guid>https://blog.csdn.net/maimang1001/article/details/144101120</guid><author>maimang1001</author><pubDate>Thu, 28 Nov 2024 07:06:37 +0800</pubDate><description><![CDATA[尽管在多个领域都取得了可测量的进步，但新的一波与架构相关的安全问题及相应的对策几乎抹杀了所有的这些进步，对于一些需要处理大量数据包的工作负载，纯内核解决方案仍然落后于绕过（bypass）内核的解决方案，如数据平面开发套件（Data Plane Development Kit, DPDK），几乎落后一个数量级。但是，内核社区从不停息（几乎是字面上的意思），基于内核的网络性能圣杯已经被发现，它的名字叫做XDP：即eXpress Data Path。]]></description><category></category></item><item><title><![CDATA[关于网络缓冲区膨胀 bufferbloat]]></title><link>https://blog.csdn.net/maimang1001/article/details/143931360</link><guid>https://blog.csdn.net/maimang1001/article/details/143931360</guid><author>maimang1001</author><pubDate>Thu, 21 Nov 2024 08:52:28 +0800</pubDate><description><![CDATA[在 2014 年的 Linux Plumbers Conference 上，Stephen Hemminger 以一种非常独特的方式介绍了关于网络缓冲区膨胀（bufferbloat）的问题。Stephen 在会议中使用了几加仑的水和一个小的充气游泳池来形象地展示网络排队和缓冲区膨胀的概念。他这样做是为了更直观地解释当前与缓冲区膨胀斗争的状态。虽然有一些好消息可以分享，但不幸的是，在很多方面，人们对此问题的理解和解决仍然处于“湿透”的状态，即还存在许多未解决的问题。Bufferbloat 是指在网络传输过程中]]></description><category></category></item><item><title><![CDATA[IPv6 邻居发现]]></title><link>https://blog.csdn.net/maimang1001/article/details/143907595</link><guid>https://blog.csdn.net/maimang1001/article/details/143907595</guid><author>maimang1001</author><pubDate>Wed, 20 Nov 2024 12:05:02 +0800</pubDate><description><![CDATA[本文介绍IPv6邻居发现（Neighbor Discovery）过程。邻居发现协议是IPv6中用于解决网络层相邻节点之间通信问题的一套协议，它是IPv6协议栈中的一个关键部分，主要用于替换IPv4中的ARP（地址解析协议）、ICMP路由器发现和ICMP重定向消息等功能。]]></description><category></category></item><item><title><![CDATA[Linux 数据包快速路径: XDP 轻松入门指南]]></title><link>https://blog.csdn.net/maimang1001/article/details/143612511</link><guid>https://blog.csdn.net/maimang1001/article/details/143612511</guid><author>maimang1001</author><pubDate>Fri, 08 Nov 2024 08:20:40 +0800</pubDate><description><![CDATA[XDP（即 eXpress Data Path）是一个 Linux 网络功能，使您能够在内核中创建高性能的包处理程序。XDP 在 Linux 4.8 中引入，建立在扩展的 Berkeley 包过滤器（eBPF）之上，提供了一种比经过本地内核网络协议栈更早、更快地处理网络数据包的机制。如何构建一个简单的 XDP 程序。XDP 内核中数据包的路径。传统网络协议栈面临的挑战。]]></description><category></category></item><item><title><![CDATA[使用BPF进行网络数据包464转换]]></title><link>https://blog.csdn.net/maimang1001/article/details/143584470</link><guid>https://blog.csdn.net/maimang1001/article/details/143584470</guid><author>maimang1001</author><pubDate>Thu, 07 Nov 2024 08:31:24 +0800</pubDate><description><![CDATA[在这里，我们将尝试使用 BPF 做一些神奇的事情；我们将会把我们在网络上收到的 IPv4 数据包转换为IPv6 数据包然后送入 Linux 网络栈 ，这样接收的 TCP/IP 栈只会看到 IPv6 流量，然后我们在出站时反转这个技巧。因此，运行 BPF 的系统在网络栈中只会看到 IPv6的数据包，而 IPv4 流量将是在网络上看到的内容。所以远程的 ping 应用程序认为它在和一个 IPv4 端点通信，而本地的 Linux TCP/IP 协议栈则认为它在和一个远程的 IPv6 ping 客户端通信！]]></description><category></category></item></channel></rss>