logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Linux Route/NAT 负载均衡

linux中如何配置路由负载均衡是一个古老的问题,可是至今仍然没有什么好的解决方案,我指的解决方案是配置意义上的,如果可以触动内核源代码的话,补丁倒是有好几个,不过很多的linux服务器是不允许给内核打补丁的,成本太高了,要停机,编译同版本内核,如果不同版本内核还要编译所有驱动,测试应用兼容性等等。因此如果有人让你配置负载均衡了,那么你能做到的也就是仅仅“看起来像那么回事”罢了,所谓看起来像的意义

#linux#负载均衡
Linux kernel 内存屏障在RCU上的应用

内存屏障主要解决的问题是编译器的优化和CPU的乱序执行。 编译器在优化的时候,生成的汇编指令可能和c语言程序的执行顺序不一样,在需要程序严格按照c语言顺序执行时,需要显式的告诉编译不需要优化,这在linux下是通过barrier()宏完成的,它依靠volidate关键字和memory关键字,前者告诉编译barrier()周围的指令不要被优化,后者作用是告诉编译器汇编代码会使内存里面的值更改

#linux#list
linux内核RCU的演变

2.6内核引入了RCU锁,这种锁十分高效,总的说来就是读时加锁,写时拷贝,读后更新。具体的流程可以参照 rcu的相关文档。本文主要谈一下rcu在linux2.6内核的演变过程,它分别经历了三个阶段,分别是传统rcu锁,可抢占rcu锁以及2.6.29 中将要引入的树形分层rcu锁。      linux中最早引入的rcu锁十分的粗糙,实现原理也是非常简单,毕竟linux中不管多复杂的机制一开始的

#linux#算法#数据结构
Linux Futex的设计与实现

引子在编译2.6内核的时候,你会在编译选项中看到[*] Enable futex support这一项,上网查,有的资料会告诉你"不选这个内核不一定能正确的运行使用glibc的程序",那futex是什么?和glibc又有什么关系呢?1. 什么是FutexFutex 是Fast Userspace muTexes的缩写,由Hubertus Franke, Matthew Kirkwo

#linux
Linux内核RCU机制的实现

一:前言RCU机制出现的比较早,只是在linux kernel中一直到2.5版本的时候才被采用.关于RCU机制,这里就不做过多的介绍了,网上有很多有关RCU介绍和使用的文档.请自行查阅.本文主要是从linux kernel源代码的角度.来分析RCU的实现.在讨论RCU的实现之前.有必要重申以下几点:1:RCU使用在读者多而写者少的情况.RCU和读写锁相似.但RCU的读者占锁

#linux#list
Linux内核中TCP的连接跟踪(2)

TCP filter的原理:当filter收到某个连接的第一个报文时,会为该连接在全局连接表中创建一个表项,并用报文中携带的源、目的IP和端口这个四元组创建original tuple和reply tuple,这两个tuple分别从不同方向来标识这个连接。后续的报文会根据其携带的四元组找到相应的连接表项,然后根据表项所记录的历史状态,检查报文所携带的ack、数据是否有效。filte

#linux
Linux connection tracking and NAT

Linux 的connection tracking和NAT都是通过netfilter框架实现的。connection tracking模块实现了防火墙的状态检测功能,包括单连接和多连接的(FTP)。NAT模块依赖于connection tracking建立的connection,在此基础上进行地址和端口的匹配和转换。PREROUTING:            ip_conntrac

#linux
Linux内核中TCP的连接跟踪

1. 前言在2.6.1*以上的Linux内核中,关于TCP连接跟踪处理有了比较大的修改,增加了TCP可能标志位组合的检查;增加了通过序列号、确认号和窗口值来判断数据包合法性的功能,支持SACK选项;状态转换数组也进行了一些修改和完善,相应程序代码量增加不少。以下2.6内核代码版本为2.6.17.11。2. 通过确认号、序列号和窗口判断数据包合法性该思路提出比

到底了