![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux networking
文章平均质量分 86
Megahertz66
前武警战士,现嵌入式壮士。
展开
-
iptables 内部调用过程
iptables 调用过程intiptables_main(int argc, char *argv[]){ // 解析用户输入的 iptables 命令,配置好 handle 参数 ret = do_command4(argc, argv, &table, &handle, false); if (ret) { ret = iptc_commit(handle); iptc_free(handle); }iptc_commit 函数实际的实现是使用 TC_COMM原创 2023-09-05 21:06:31 · 274 阅读 · 0 评论 -
Boot&Knernel 中的 Fixed-Link 代码说明
通过此文可以了解到如何配置 linux 中的 fixed-link。原创 2022-05-23 23:07:10 · 1291 阅读 · 1 评论 -
虚拟网络设备veth是如何工作的
veth源码分析环境linux kernel 4.9.37两个网络命名空间的数据是需要通过 veth 才可以进行交互的。前面分析了 网络命名空间,下面看看 veth 究竟是通过什么实现的传输。代码分析veth 实际的代码在 linux-4.9.37\drivers\net\veth.c 中。veth 是注册到 rtnetlink 中,并借助其进行交互。其各种操作都包含在 veth_link_ops 结构中。static __init int veth_init(void){ return原创 2021-07-29 16:01:34 · 1046 阅读 · 0 评论 -
从源码上分析网络命名空间如何建立
network-namespace环境linux kernel-4.9.37介绍Network namespaces网络命名空间可以理解为是完全独立丝毫没有相互影响的另一套协议栈。疑问Q1:网络命名空间之间为什么不能通讯?A1:因为没有网卡设备。真实的网卡设备一般在 根命名空间使用。需要是由 veth(virtual Ethernet) 充当网络命名空间的网卡设备。Q2:网络命名空间之间的网络通讯流程是什么样的?A1:具体就流程就是 veth 的工作流程,会将数据包直接塞到接收侧的 rx原创 2021-07-29 15:59:43 · 599 阅读 · 0 评论 -
TC源码分析二,内核中流控代码的位置
tc源码分析二,内核中流控代码的位置使用的内核版本Linux 4.3问题探索我们要研究源码除了好奇代码的书写方式之外最关心的还是代码的实际逻辑,这样就能便于我们理解内部究竟发生了什么。在研究Linux内核中关于流控的代码之前我有两个疑惑:流控的代码是如何与网卡发生关联的?流控相关代码是何时被调用的?问题分析1.关联网卡设备首先要知道的是在内核中所有的流控相关的操作都在 F:\Hert\Studycode\linux-4.9.37\net\sched 目录下。 流控子系统也是在该目录下原创 2021-06-21 20:49:24 · 1614 阅读 · 0 评论 -
TC源码分析一,tc命令
TCTraffic ControlTC 框架可以理解为一个控发不控收的框架,在 ingress 的位置只能做简单的控制,且不能有其他子项。如想对 ingress 进行控制请参考 IMQ 以及 ifb。流控方式SHAPING: 限流,平滑激增流量使得网络更加稳定。只适用于出口的流量。SCHEDULING: 调度,管理类数据包传输,按优先级分配带宽。只适用于出口流量。POLICING : 策略,用于入口流量。DROPPING : 丢弃,超过带宽的流量,可以用于入口和原创 2021-06-18 17:08:56 · 2005 阅读 · 0 评论 -
socket 源码分析
socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));arch/sparc/kernel/sys32.S +43 行 /* Each entry is exactly 32 bytes. */do_sys_socket: /* sys_socket(int, int, int) */1: ldswa [%o1 + 0x0] %asi, %o0 sethi %hi(sys_socket), %g12: ldswa [%o1 + 0x8] %asi, %o原创 2021-06-06 23:54:30 · 4299 阅读 · 1 评论 -
虚拟机无线网卡与有线网卡互相ping通(不是转载,绝对有效)
虚拟机网络设置情况目前共有三台设备,真实机(win10)、真实机内部运行的虚拟机(虚拟机)、以及开发板。真实机 IP 192.168.1.2 (无线网卡)192.168.11.123 (有线网卡)虚拟机 IP 192.168.1.5开发板 IP 192.168.11.11想要的结果虚拟机、真实机、开发板,三者互通!!方法设置 win 转发运行 cmd 输入 regedit找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\原创 2020-12-13 23:43:17 · 898 阅读 · 0 评论 -
LINUX 路由子系统流程分析
title: LINUX 路由子系统流程分析date: 2020-11-28categories:Linuxtags:LinuxRouting-Subsystem上次分析了Linux协议栈的收包过程。里面有一段是直接省略了过去,那就是linux路由子系统。本文还是提供一个大致的流程。对于详细的算法以后会慢慢补充完整。上次说道经过么一个调用关系,收包流程就可以走到 ip_local_deliver() 函数之后在进行等等的操作。ip_rcv_finish() ->ip_rou.原创 2020-11-27 18:25:24 · 1271 阅读 · 0 评论 -
Linux 网络协议栈收包过程
title: Linux-net-stackdate: 2020-10-03categories:Linuxtags:Linux-networkingLinux-net-stack重要的结构net_device & sk_buff , 这两个结构分别抽象了网络设备 和 网络数据包。是两个特别大的数据结构,分别位于 include\linux\netdevice.h 和 include\linux\skbuff.h 中。初始化过程网卡初始化从开机一直到初始化网络设备的过程.原创 2020-11-27 18:22:24 · 751 阅读 · 0 评论 -
Linux Kernel module_init执行过程
module_init 过程总的来说这个东西经过了一些列的定义,把函数放到了指定的段中。具体可以往下看,其中调用注册函数的步骤可以参考我的另一篇sock_init。#define module_init(x) __initcall(x);#define __initcall(fn) device_initcall(fn)#define device_initcall(fn) __define_initcall("6",fn,6)#define __define_initcall(lev原创 2020-07-16 14:22:52 · 353 阅读 · 0 评论 -
linux kernel3.4.11 sock_init 调用过程
Linux kernel do_initcalls() functionsock_init该函数在3.4.11版本的内核中没有直接调用。而是通过core_initcall(sock_init); /* early initcall */ core_initcalls定义如下:/*In include\linux\init.h */#define core_initcall(fn) __define_initcall("1",fn,1)#define __define_initcall(le原创 2020-06-02 16:37:04 · 403 阅读 · 0 评论