首页
学习
活动
专区
工具
TVP
发布

专注网络研发

专栏作者
33
文章
119571
阅读量
53
订阅数
Linux内核那些事之连接跟踪
连接跟踪(也叫会话管理)是状态防火墙关键核心,也是很多网元设备必不可少的一部分。各厂商的实现原理基本雷同,只是根据各自的业务进行修改和优化。其中,还有不少厂商干脆是基于Linux内核实现的。下面,我们就来看看Linux内核中连接跟踪的几个要点。
glinuxer
2020-12-08
2.4K0
揭开服务程序“被杀”之谜
对于第一种情况,一般可以通过coredump看出。第二个种情况,也可以通过dmesg找到线索(一般是被oom killer杀掉)。但是当后两种情况出现时,往往是大家最抓瞎最手足无措的时候。
glinuxer
2020-06-05
1.5K0
Linux网络性能优化相关策略
1. rx-checksumming:校验接收报文的checksum。
glinuxer
2020-02-10
5.1K0
系统编程语言Rust特点介绍(2)—— 所有权系统
很抱歉,第2篇距离第1篇长达3个月。。。工作繁忙加上家里事多。。。不找客观原因了,咱们开始聊聊Rust的所有权系统。
glinuxer
2020-02-03
1.2K0
系统编程语言Rust特点介绍(1)
最近在学习Rust语言,感觉这门语言有点意思,因此写一篇文章分享。我不会去介绍Rust的基本语法,什么变量声明,if..else..,循环等等。这些东西,文档介绍的很清楚,何必多此一举。本文主要介绍Rust这门语言的特点,和其它语言的对比。
glinuxer
2019-11-06
1.7K0
系统编程语言Rust特点介绍(1)
最近在学习Rust语言,感觉这门语言有点意思,因此写一篇文章分享。我不会去介绍Rust的基本语法,什么变量声明,if..else..,循环等等。这些东西,文档介绍的很清楚,何必多此一举。本文主要介绍Rust这门语言的特点,和其它语言的对比。
glinuxer
2019-09-28
1.5K0
DPDK之KNI原理
DPDK是一个优秀的收发包kit,但它本身并不提供用户态协议栈,因此由将数据报文注入内核协议栈的需求,也就是KNI(Kernel NIC Interface)。作为用户态和内核的接口,其因为没有系统调用和内存拷贝,因此比传统的tun/tap设备要更高效。
glinuxer
2019-04-26
11.6K1
多线程下的fwrite和write
Linux下的文件操作,有人喜欢用C库的文件流操作,有人喜欢用Linux的原生的系统调用。一般来说,C库的文件操作会更高效一些,因为C库自己做了文件缓存的处理。今天,主要研究多线程下的fwrite与write,每个线程都对相同的FILE*或者fd进行写操作,看看结果是否为预期行为。
glinuxer
2019-04-10
5.6K1
内核net_device设备框架的一个缺陷
前几天在看Linux内核源码时,发现一个net_device设备框架的一个问题,以至于upstream的内核源码中,至少有12个设备驱动和虚拟设备存在内存泄漏的风险。
glinuxer
2019-04-10
1.6K0
避免遗忘UNLOCK的小技巧
C++程序可以通过封装来实现RAII,从而避免一切资源泄漏,包括忘记unlock。当时就为了这点,我就特别想推动用C++写C代码,C++只做封装,其它逻辑还是使用C编写。这样对于大部分程序员来说,基本上就没有学习C++的成本,同时还可以享受到高级语言的便利。真希望早日可以尝试这个实践 —— 去年底已经要求本厂的C语言程序员,学习一点C++概念,并开始进行本厂C++底层库的封装实现。
glinuxer
2019-04-10
5340
以讹传讹的“tcp_tw_reuse”
因为Linux是一个通用的操作系统,所以其运行环境也是为了通用环境设计的,不会太好,也不会太坏,因为其要默认兼容大部分环境。因此在做服务端部署的时候,都需要对Linux的系统参数进行一番调整。
glinuxer
2019-04-10
8.2K3
Linux内核数据包skb的流程图(1)
最近要给团队做一个长期的内部分享,主题就是Linux内核中数据包的处理流程。
glinuxer
2019-04-10
4K3
nfconntrack全局锁的优化
nfconntrack是netfilter中的重要模块,很多netfilter的功能都依赖于这个模块,如NAT等。而利用linux来构建的网络设备,可以说,其80%的功能都依赖于nfconntrack实现的会话管理。所以,会话管理的性能优劣会对网络设备的性能产生直接的影响。
glinuxer
2019-04-10
1.3K0
register_netdevice引发的panic“陷阱”
上次在内核net_device设备框架的一个缺陷文章中,描述了当前内核net_device框架的一个缺陷。后来内核的net模块的负责人David提交了一个commit “net: Fix inconsistent teardown and release of private netdev state”。这个commit关键的一点,就是给已经很庞大的net_device结构新增一个布尔变量“needs_free_netdev”。这个变量用于在函数netdev_run_todo中,判断是否需要释放netdev。这个变量的赋值,一般是在驱动的setup回调函数中赋值为true。
glinuxer
2019-04-10
1.7K0
应用层如何强制发送RST即相关内核实现
前几天群里有个同学问,“如何让应用层强制发送RST中止连接”,而不是通过FIN包的四次交互来关闭连接。当时,我只是凭借以往的经验,猜测使用linger选项可以做到。之所以这么猜测,完全是出于对TCP和linger的理解。
glinuxer
2019-04-10
1.7K0
一道腾讯面试题目:没有listen,能否建立TCP连接
这个题目是之前在我的QQ群里一个同学在腾讯面试过程中被问到的。当时在群里做了简单的讨论,今天系统的把这个问题分析一遍。
glinuxer
2019-04-10
1.9K0
Python与Golang的网络IO性能对比
近期,在做未来服务端新业务的技术语言选型。之前我们的服务端都是使用C++开发,充分榨干了服务器的系统资源 —— 创业公司嘛,服务器也是不小的开销,能节省就节省一点吧。后面考虑到要快速的开发新业务,可能需要使用更高级语言。
glinuxer
2019-04-10
2.9K0
Linux数据报文的来龙去脉
作为网络领域的开发人员,我们经常要与Linux的数据报文打交道,一定要搞清楚数据报文是从何而来,又是如何离去。以前针对这个主题写过一些文章(主要是从源码角度),这次会更重视流程示意图(在细节上必然有所简化),争取在一篇文章中,就让大家理清数据报文的来龙去脉。
glinuxer
2019-04-10
1.7K0
RPS与RFS实现分析
RPS和RFS是google贡献的两个补丁,在2.6.35版本中,正式被合并入了内核。这两个补丁总体来说,并不算复杂,实际上很多网络设备厂商早已在自己的产品中,有了类似的应用。但这个涉及到厂商的主营业务,所以不会做任何开源。
glinuxer
2019-04-10
2.5K0
DPDK之PMD原理
PMD是Poll Mode Driver的缩写,即基于用户态的轮询机制的驱动。本文将介绍PMD的基本原理。
glinuxer
2019-04-10
9K0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档