自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(2124)
  • 资源 (4)
  • 收藏
  • 关注

原创 关于ICMP Redirect路由的一个不是bug的bug

在新公司碰到的第一个网络问题竟然是关于重定向路由的,这个不常被关注的问题竟然花费了我整整一下午时间来整理,本文介绍Linux协议栈是如何对待重定向路由的。路由项的生成方式任何具备网络功能的设备在内部都有有一张路由表,该表指示数据包如何从该设备发出以及下一站发送到哪里。路由表由一项一项组成,每一项称为一条路由项,这些路由项有以下的生成方式:1.自动发现的路由项网卡启动并且配置上IP地址的时候,会自动

2015-11-22 14:31:10 8397 3

原创 当心!TCP本机客户端连接本机服务器

上周,在我们进行性能测试的时候,发现了一个问题。我们的服务器上启了一个redis服务端,侦听0.0.0.0的1234端口,同处在本机的另外一个进程会频繁发起到该服务端的短连接,结果导致了两个问题:1.大量的TIME_WAIT状态的连接;2.发起连接的进程的CPU占用率接近100%。这两个结果严重影响了我们网关的性能,在分析具体原因之前,首先做一个提倡,那就是:本机连接本机,首选UNIX域套接字而不

2015-09-27 23:07:30 9935 9

原创 Linux内核中几个比较有意思的解释(进程调度算法,页面调度算法,非线性工作集)

1.O(1)调度器的时间计算公式与CFS调度器Linux 2.6.23之前普遍采用了O(1)调度器,它是一种基于优先级的时间片调度算法,所谓的O(1)只是它的一些精巧的数据结构使然,在不考虑动态补偿/惩罚的情况下,只要优先级确定,那么时间片就是固定的。2.6.23以后的CFS呢,它是一种基于权重的非时间片调度算法,进程每次执行的时间并不是固定的,而是根据进程数在一个准固定周期内按照其权重比例的时间

2015-09-26 12:31:34 8718 3

原创 Linux TCP实现优化的背后想法

想象一下当初为什么不让多个进程/线程在一个相同的IP地址和端口上侦听,很简单,这是因为TCP/IP模型将一个端口作为一个四层复用解复用的唯一标识,也就是一个四层地址,正如IP地址属于一个主机一样(属于一块网卡?),一个IP/端口对属于一台主机上一个特定的进程,它只是一个保证唯一性的静态标识。世界上不同的主机不能有相同的IP地址,一台主机上绑定特定IP地址的不同进程也不能有相同的端口,否则就不知道一

2015-09-25 00:03:33 7973 7

原创 同样思路解决不同的问题,集大成者

1.BFS调度器与O(1)调度器O(1)调度器采用二级分类,第一级是CPU,即每一个CPU一个队列,第二级是优先级,每CPU队列又细分为140个优先级队列。第一级采用负载均衡调度,第二级采用优先级调度。虽然很清晰,但是要加入“小手段”来补偿/惩罚。本质上CFS调度器也一样,只是采用了红黑树以及新增了一个虚拟时钟层屏蔽了补偿/惩罚操作。BFS调度器同样采用二级队列,第一级是优先级分类,第二级是个简单

2015-09-24 09:25:05 4785 1

原创 上海虹桥机场点烟器与UNIX哲学

今天外出,资深烟民在机场安检后怎能不找吸烟室...上海虹桥机场,我看到了下面的设施:很简单,不先进,也许你会说我孤陋寡闻,但我不反驳。这个装置真的让我怦然心动,真的!这种设计不会出自传统中国设计师之手,因为传统设计师希望让自己的设计很复杂以提高门槛,觉得自己很牛X。这个设计组合了最简单的几个小物件,一把锁,几个打火机,一个固定铁架子,足够了,难道不是吗?很美!       我老婆质问我:谁会去拿几

2015-09-23 23:59:01 7678 3

原创 多核心Linux内核路径优化的不二法门之-多核心平台TCP优化

本文可以作为《Linux转发性能评估与优化(转发瓶颈分析与解决方案)》的姊妹篇,这两篇文章结合在一起,恰好就是整个Linux内核协议栈的一个优化方案。事实上Linux协议栈本来就是面向两个方向的,一个是转发,更多的是本地接收。目前大量的服务器采用Linux作为其载体,更加体现了协议栈本地处理相对于转发的重要性,因此本文就这个问题扯两句,欢迎拍砖!0.声明:0).关于来源昨天就答应皮鞋厂老板了,只是

2015-09-23 23:03:00 12279 3

原创 多核心Linux内核路径优化的不二法门之-slab与伙伴系统

作为这个系列的第一篇,我先来描述一下slab系统。因为近些天有和同事,朋友讨论过这个主题,而且觉得这个主题还算比较典型,所以就作为第一篇了。其实按照操作系统理论来讲,进程管理应该更加重要些,按照我自己的兴趣来讲,IO管理以及TCP/IP协议栈会更加有分量,关于这些内容,我会陆续给出。       Linux内核的slab来自一种很简单的思想,即事先准备好一些会频繁分配,释放的数据结构。然而标准的s

2015-09-16 05:08:00 9075 4

原创 多核心Linux内核路径优化的不二法门-序

提到这个主题,我感到愤怒,我觉得自己被玩了一万次还保持着君子的无谓。其实内心充满了邪火!也许我应该放弃,也许应该看看这个世界,我无法。何时?何地?何人?何事?何苦!何如!何妨!何必!走过,遇见,相知,相恋!相亲,黯淡,相顾,长叹!十年!又有谁知道我的罪?!燃尽的激情让我选择放弃;然而是意义让我重新开始!是什么力量让崩溃来的如此彻底,然而又是什么证据表明苏醒是如此的无疑!心缥缈,人逍遥,悲欢泪,何足

2015-09-13 11:02:42 4504

原创 协议栈植入芯片势在必行,IPSec就是个错误

这篇文章有点极端,但也可能迎合某些个人或者组织的意思。这篇文章较短,稍后我会继续写这个话题。心太痛,人太衰。1.协议栈植入芯片如果你认为协议栈植入芯片是在消耗物资,磨灭成本,那你就错了。TCP/IP/Ethernet协议栈如今已经成了事实上的标准,多少年都没有变过。固化的东西鉴于电路设计,开模,硅晶片工艺等开销,一般都是越不变的东西才考虑固化,否则你要付出巨大的代价,且不利于保护客户的投资。实际上

2015-08-02 00:19:27 9486 3

原创 一个Netfilter nf_conntrack流表查找的优化-为conntrack增加一个per cpu cache

独悲需要忍受,快乐需要分享对Linux协议栈多次perf的结果,我无法忍受conntrack的性能,然而它的功能是如此强大,以至于我无法对其割舍,我想自己实现一个快速流表,但是我不得不抛弃依赖于conntrack的诸多功能,比如state match,Linux NAT等,诚然,我虽然对NAT也是抱怨太多,但不管怎样,不是还有很多人在用它吗。       曾经,我针对conntrack查找做过一个

2015-08-01 23:28:12 7576

原创 本地自旋锁与信号量/多服务台自旋队列-spin wait风格的信号量

周日傍晚,我去家附近的超市(...)买苏打水,准备自制青柠苏打,我感觉我做的比买的那个巴黎水要更爽口。由于天气太热,很多人都去超市避暑去了,超市也不撵人,这仿佛是他们的策略,人过来避暑了,走的时候难免要买些东西的,就跟很多美女在公交地铁上看淘宝消磨时光,然后就下单了...这是多么容易一件事,反之开车的美女网购就少很多。对于超市的避暑者,要比公交车上下单更麻烦些,因为有一个成本问题,这就是排队成本。

2015-07-28 05:39:17 4840

原创 TCP Segment Offload(TSO)的实现原理浅析

早上太燥热,突然想起三周前有人跟我交流了TSO的问题,我也描述了其原理,这个原理说来也是特别简单,无非就是靠网卡硬件来分段,计算checksum,从而解放CPU周期。其实只要说一个就够了,既然靠硬件来分段,那么只能由硬件来计算checksum了,因为你根本就不知道硬件的分段细节,所以你也没法在分段前计算好每一个段的checksum....       TSO的原理几乎每个人都知道,事实上它是怎么实

2015-07-25 11:57:41 11993 3

原创 IP网络,光网络以及轨道交通的高速卸载随想

凌晨3点钟,半夜睡眼朦胧,忽然听到左右两耳嗡嗡,身下的榻榻米垫沙沙作响,以为在梦境,然而睁眼清醒过来,发现并没有看见什么,依然在黑夜,于是确认这不是在在梦。于是开灯,发现一只蟑螂趴在垫子上,两只蚊子却早已不知所踪。旁边睡着小小,我怒抓起蟑螂跑到卫生间好一顿蹂躏,然后本想继续梦里那些个没有完成的各种约,可是却再也睡不着了。       一想到一会儿就要坐528路公交车穿过可恶的沪太路,心里就很是不爽

2015-07-24 05:39:43 5151

原创 基于天然概率的无需人为平衡的skiplist的美之展现

任何事情都无法阻挡我对一种简单之美的由衷惊叹。半夜思索,无法入眠,索性起床看会书,关于中东文明的,可是又看不进去,也许是潮热的原因吧...还不如静下心来写一篇意识流文章,我指的是不用思考的那种,我已经被近东,中东的错综复杂的历史搞的有点烦了,那真是太难了。然而你能想象我指的那个不用思考的东西是一个算法吗?算法不都是很难的吗?真的就是一个算法,也可以说是一个数据结构,这就是skiplist。    

2015-07-22 06:01:51 8088

原创 路由器,防火墙的角色

不要在网络设备中show算法,赶紧让数据包通过,否则扣留。网络设备永远都是数据包要快速离开的地方,赶紧走,越快越好。我说这话可能有点矛盾,快速离开没有可以show的算法怎么能行?!问题是,不该你做的事就别做,你根本就不是一个专业防火墙,干嘛搞什么垃圾iptables!把你自己能做的工作,做好,show完美,其他的交给行家,交给适合的设备。网络通路中的算法不限于本机,整个路径中的每一个节点之间运行的

2015-07-19 22:02:58 4555

原创 硬件处理和软件处理之间的异同与边界

今天给一朋友回复邮件,主要内容是我最近两天的一个DxR Pro++的固化问题,他好像不明白我为什么一直避开查找树,其实我自己的也不明白,只是知道该避开,也就避开了,并且这还不够,同时避开的还有各种其它的查找,排序,hash算法,几乎是一切算法都尽量让我避开了。所以,最终,我的DxR Pro固化设计虽然初步完成(这个设计没有公开,也不准备公开,但是我觉得思想比方法更重要,而这种思想正是我在本文想阐述

2015-07-19 21:50:24 9581 2

原创 硬件路由转发原理浅析-清晨补充

由于昨晚实在太困了,解释问题的时候眼睛就花了,脑子也短路了。早上起来,发现家人都还在睡,就想继续述说昨晚没有说带劲的东西了。我的解释图再次给出我的硬件转发原理图:请注意,没有任何优化,你可以试着用一些小技巧将其进一步的优化,也可以直接用标准的TCAM来映射它。此图里,我详细展示了“最长前缀”逻辑是怎么做的,而在TCAM路由转发表的实例中,往往被画成了黑盒子,叫做“优先级逻辑控制器”,不过,这个逻辑

2015-07-19 08:08:09 9886

原创 硬件路由转发原理浅析

有人问我,对于路由转发,硬件转发表的性能真的要超出软件查表比如Linux系统很多吗?我怎么回答呢?给出数据吗?我没有数据,因为我的本职不是做这一块的。给出理论吗?恐怕我也没那口才。画个图?我发现我系统没有安装画逻辑电路的工具。那怎么办?这个问题的答案我真真在心里,只是难于言表,于是乎,我采用手绘图手机拍照的方式,展示一下硬件转发表的威力,由于没有实际数据,我采用相对比较的方式,让诸位看一下软件转发

2015-07-18 23:41:07 15069 13

原创 一个Linux内核的自旋锁设计-接力嵌套堆栈式自旋锁

锁的开销锁的开销是巨大的,特别是对于多核多处理来讲。       引入多处理,本身就是为了将并行化处理以提高性能,然而由于存在共享临界区,而这个临界区同时只能有一个线程访问(特别是对于写操作),那么本来并行的执行流在这里被串行化了,形象地看,这里好像是宽阔马路上的一个瓶颈,由于串行化是本质上存在的,因此该瓶颈就是不可消除的。问题是线程执行流如何度过这个瓶颈,很显然,它们谁都绕不开,现在问题是是它们

2015-07-17 06:55:24 4683

原创 Linux软防火墙ACL匹配的优化点

首先,请求不要再诬陷Netfilter!虽然它有一些固有性能损耗,但敬请不要将iptables和Netfilter等同,如果你要抓元凶,请直接说iptables,而不要说成Netfilter!       iptables真的是弱爆了!它的ipt_do_table竟然是五大元凶之一,如果规则超过了7000,那么它就是之首(其它的元凶是nf_conntrack函数,它们也是Netfilter的HOO

2015-07-12 23:32:25 5349

原创 Linux内核RCU(Read Copy Update)锁简析-前传

如果你用Linux perf tool的top命令做热点纠察时,你会发现,前10名嫌疑犯里面肯定有好几个都是锁!在进行并行多处理时,不可避免地会遇到锁的问题,这是不可避免的,因为这一直以来也许是保护共享数据的唯一方式,被保护的区域就是临界区。而我们知道,锁的开销是巨大的,因为它不可避免地要么等待,要么让别人等待,然而这并不是开销的本质,开销的本质在于很多锁都采用了“原子操作”这么一个技术,如此一个

2015-07-12 22:53:31 3512

原创 Linux内核RCU(Read Copy Update)锁简析

在很早以前,大概是2009年的时候,写过一篇关于Linux RCU锁的文章《RCU锁在linux内核的演变》,现在我承认,那个时候我虽然懂了RCU锁,但是我没有能力用一种非常简单的描述把Linux的实现给展示出来,有道是你能给别人用你自己的方式非常简洁地描述清楚,你才是真正的精通它,否则,无异于背诵。换个说法,如果你在被面试,在短时间内靠嘴说给面试官,且他还要能听明白,就说明自己真的懂了,这种时候

2015-07-12 10:36:54 10328 4

原创 为什么P2P模式下载的人越多速度越快,为什么P2P伤害机械硬盘

台风来临前的夜晚,有点激动不想睡觉,看了几个电影,日本恐怖片,台风雨夜,非常不错,P2P很流畅,观察IP地址大量也是附近的,江浙沪,难道也都在迎台风看电影?       大家都知道使用P2P模式下载速度会非常快,原理其实也并不难,毕竟P2P没有中心瓶颈,每个节点既是下载方又是上传方,一起接力努力的模型总比C/S模式对中心带宽的争抢要好吧,但是这背后有没有什么理论根据呢?本文就是描述这个理论根据的,

2015-07-11 09:47:06 25294 5

原创 为InfiniBand而哭泣

自古就不乏还没有开始就结束的那种精彩,我称之为殉道者。InfiniBand就是其中之一,虽然它有陨落之势,我依然要为它鼓掌。如果说以太网旨在将主机联系在一起,那么InfiniBand的初衷就是将其肢解,这种基因的不同,注定它们将展开一场大战,当然这是后话。服务器强大了,但是PCI总线太慢了,且其并行化设计根本不适合高速环境,正确的做法是串行化,同时提高时钟频率,因为并行化根本就经不起时钟频率的提高

2015-07-11 00:34:09 10688 3

原创 Linux内核3.11的socket busy poll机制避免睡眠切换

Linux的网络协议栈非常独立,上下通过两个接口分别和用户态以及设备相连,也可以看作是北向和南向接口...北向通过socket接口,南向通过qdisc接口(你可以认为是上层的netdev queue,对于接收接口,NAPI的poll队列则是另一个例子),不管是socket还是qdisc,都是基于队列来管理的,也就是说,三个部分是独立的,socket只能看到读写队列,而看不到协议栈本身,socket

2015-07-08 06:44:14 9550 1

原创 从Linux 2.6.8内核的一个TSO/NAT bug引出的网络问题排查观点(附一个skb的优化点)

梦中没有错与对,梦中没有恨和悔...最好闭上你的嘴,这样才算可爱...我不会说:这不公道,我不能接受。我会用朴素的文字记录点点滴滴,早上4点多起来,一气呵成近期的收获与评价,愤怒与忏悔。四年多前的一个往事大约在2010年的时候,我排查了一个问题。问题描述如下:服务端:Linux Kernel 2.6.8/192.168.188.100客户端:Windows XP/192.168.40.34业务流程

2015-07-08 06:04:17 7940 1

原创 TCP断开时的状态与Linux nf_conntrack

题目有点大了,但是难免有一些愤怒!我们的网关产品目前处在系统测试阶段,不太顺利,是太不顺利!各方面都在懈怠,包括我!我除了懈怠,还在找机会逆袭!顺便蔑视一下测试者,希望产生一种想象,即他发现的问题其实不是问题,而是因为他的无知所导致!就在昨天,机会来了,我便气扬了!       很多人觉得我是下三层网络的专家,对于TCP之类的无权问津,但是我对TCP除了辱骂还是辱骂!因为它太复杂了,作为一个低层的

2015-07-04 10:14:13 7789 1

原创 根据排队论阐述路由器和高速公路的拥堵以及拥堵缓解问题(二)

关于本文相信很多人都在节假日的高速公路上遇到过大拥堵,但是最终拥堵会解除。也有人在质疑路由器队列的长度,以为最终路由器会拒绝服务。我曾经在10年前天真地以为高速公路的设计者和路由器交换机的设计者工作是多么的轻松。然而现在,当我知道更多后,发现事实并不如此。需要更多的权衡和博弈,不仅仅是技术方面的,还涉及到了心理学,社会学,经济学。       因此本文旨在用最简单的描述分析一下排队理论对高速公路以

2015-07-04 08:34:40 8779

原创 Linux转发性能评估与优化-转发瓶颈分析与解决方案(补遗)

补遗关于网络接收的软中断负载均衡,已经有了成熟的方案,但是该方案并不特别适合数据包转发,它对服务器的小包处理非常好,这就是RPS。我针对RPS做了一个patch,提升了其转发效率。下面是我转载的我自己的原文。线速问题很多人对这个线速概念存在误解。认为所谓线速能力就是路由器/交换机就像一根网线一样。而这,是不可能的。应该考虑到的一个概念就是延迟。数据包进入路由器或者交换机,存在一个核心延迟操作,这就

2015-07-04 08:29:54 5088 1

原创 根据排队论阐述路由器和高速公路的拥堵以及拥堵缓解问题

关于本文相信很多人都在节假日的高速公路上遇到过大拥堵,但是最终拥堵会解除。也有人在质疑路由器队列的长度,以为最终路由器会拒绝服务。我曾经在10年前天真地以为高速公路的设计者和路由器交换机的设计者工作是多么的轻松。然而现在,当我知道更多后,发现事实并不如此。需要更多的权衡和博弈,不仅仅是技术方面的,还涉及到了心理学,社会学,经济学。       因此本文旨在用最简单的描述分析一下排队理论对高速公路以

2015-07-04 08:11:16 6723

原创 Linux内核软RPS实现网络接收软中断的负载均衡分发

例行的Linux软中断分发机制与问题Linux的中断分为上下两半部,一般而言(事实确实也是如此),被中断的CPU执行中断处理函数,并在在本CPU上触发软中断(下半部),等硬中断处理返回后,软中断随即开中断在本CPU运行,或者wake up本CPU上的软中断内核线程来处理在硬中断中pending的软中断。       换句话说,Linux和同一个中断向量相关的中断上半部和软中断都是在同一个CPU上执

2015-07-01 06:40:04 12803 6

原创 下一步怎么办?核心网带宽必须迅猛增长!

实在没有时间了,所以此文很短!目前OC-768都是正常的链路,更别说OC-192了!对于路由器而言,出口排队需要N加速比,以OC-192为例,4接口路由器需要40Gbps的带宽才适应排队需求,外面下着大雨,总不能让人排到外面吧。而这是一个巨大的挑战,于是全体切换到了输入排队,然而挑战推给了软件,即调度算法!目前没有什么比较好的,只能是空间换时间,但是,随着带宽的进一步提升(APP太多,移动互联网时

2015-06-28 19:38:00 6924 1

原创 叹息只因常会失落

3月底以来,持续不断地让人疯狂,几度惆怅,几度欢畅,几度凄凉...家庭,朋友,爱情,工作,前途,回忆,力量与荣耀,鲜血与雷鸣,一波未平,又起一波,君不见这是第一个让人平静的周末!期间有一个喝醉的夜晚,作诗一首:孤睹天际寒月光,垂颜依稀满地霜;回望来路无人醒,独践归途人彷徨。波动只因受到外界的骚扰,狂喜也好,愤怒也罢,就像喝醉了之后做梦,醒了之后空留悲哀,喝的时候爽,第二天难受极了。中学和大学生活是

2015-06-28 19:11:58 3102

原创 Linux内核之于红黑树and AVL树

为什么Linux早先使用AVL树而后来倾向于红黑树?       实际上这是由红黑树的实用主义特质导致的结果,本短文依然是形而上的观点。红黑树可以直接由2-3树导出,我们可以不再提红黑树,而只提2-3树,因为2-3树的操作太简单。另外,任何红黑树的操作和特性都可以映射到2-3树中。因此红黑树和AVL树的比较就成了2-3树和AVL树的比较。       它们俩的区别在哪?2-3树的平衡是完美平衡的,

2015-06-28 18:04:36 7672

原创 路由器缓冲区大小为什么如此重要

一台路由器缓冲区稍微大一点,你知道会带来多大的益处吗?稍微小一点,你知道会带来多少的悲哀吗?       跑高速的时候,有时候两辆车轻微碰擦,就会带来几十公里的拥堵....这就是局部事故引发全局连锁反应。前年,沪嘉高速施工,拆除中心绿化带,取消硬路肩,将二车道改为三车道,你可别小看这一根车道,作用大了。       对于网络而言,数据包在网线上的时候,绝对安全,绝对是全速前进,最危险的就是到达转发

2015-06-28 00:52:16 12376

原创 Linux转发性能评估与优化(转发瓶颈分析与解决方案)

线速问题很多人对这个线速概念存在误解。认为所谓线速能力就是路由器/交换机就像一根网线一样。而这,是不可能的。应该考虑到的一个概念就是延迟。数据包进入路由器或者交换机,存在一个核心延迟操作,这就是选路,对于路由器而言,就是路由查找,对于交换机而言,就是查询MAC/端口映射表,这个延迟是无法避开的,这个操作需要大量的计算机资源,所以不管是路由器还是交换机,数据包在内部是不可能像在线缆上那样近光速传输的

2015-06-28 00:22:26 25179 6

原创 真正理解红黑树,真正的(Linux内核里大量用到的数据结构,且常被二货问到)

作为一种数据结构,红黑树可谓不算朴素,因为各种宣传让它过于神秘,网上搜罗了一大堆的关于红黑树的文章,不外乎千篇一律,介绍概念,分析性能,贴上代码,然后给上罪恶的一句话,它最坏情况怎么怎么地...              我们想,一棵二叉树怎么就是最坏情况,那就是它退化为一个链表,这样查找就成了遍历。问题是,平衡二叉树怎么会退回链表!它是怎么保持平衡的?能不能简单地阐述?当然可以!一般的讲述红黑树

2015-06-27 23:45:42 12409 12

原创 海量路由表可以使用HASH表存储吗-HASH查找和TRIE树查找

千万别!很多人这样说,也包括我。Linux内核早就把HASH路由表去掉了,现在就只剩下TRIE了,不过我还是希望就这两种数据结构展开一些形而上的讨论。1.hash和trie/radixhash和tire其实是可以统一在一起的。具有相同hash值的多个项具有一个共同的特征,这个特征怎么提取呢?无疑这就是hash函数的工作。而trie树(或者radix树,管它呢)的一棵子树也有共同的特征,这个特征怎么

2015-06-27 18:20:16 8222

原创 海量路由表的快速检索问题-Hash/Trie/快速交换

在论坛上经常会有人问,到底是使用Trie算法保存路由表还是用Hash算法。那么我首先要明白,你要保存多大的路由表。简单的答案如下:少量:Hash算法大量:Trie算法但是,仅仅这么回答会显得很业余,真的很业余。但是如果回答多了,恐怕也不是什么好事,关键看问者是谁,目的做甚。因此简单且完整的回答必须毫无针对性,只能写作日志供日后回忆了。       以Linux内核为例,如果是少量的路由表,Hash

2015-06-12 06:37:10 7077 1

一个iptables的stateless NAT模块实现

如果你在寻找Linux上配置诸如Cisco设备上的static双向NAT的方法,这个或许就是你想要的; what?你觉得它完不成PAT?是的,它不行。但是想做PAT为何不使用现有的iptables实现呢?它可以自动为你解决元组唯一性问题。不要从概念上分析,事实上,static双向NAT是完全对称的,一对一的 ,也只有在BOX两边的网络在拓扑级别是完全对等的情形下,这种NAT或许才是有用的,Cisco设备经常处在这样的位置,比如一个很大的stub节点的出口位置,比如两个domain的中间位置... 我将名字取为STATIC-2-WAY-NAT,比较长也比较怪,完全不符合UNIX的小写短名传统,我的想法是:这样可以少写很多的帮助信息,因为名字就是自解释的。

2014-12-27

模块化的nf-HiPAC

原版的nf-hipac需要为内核打patch,且只支持较低版本的内核,构建起来相对比较麻烦。 模块化后的nf-hipac可以直接作为内核可加载模块编译,且适配了高版本的Linux内核。为了移植工作简化,去掉了和iptables模块的联动支持!

2014-11-21

配置文件还有一些other

代码和配置iptables配置文件,还有一些别的东西

2010-04-16

关于linux内核以及其他个人体会的文集

本文集是我用将近两年的时间写成的,大多数文章是关于linux内核的,另外还有一些我自己对计算机的理解,还有一些历史,音乐方面的东西。适合于对linux内核思想感兴趣的阅读,文章偏重于对于思想的理解。

2009-09-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除