Linux的高级路由和流量控制:其它可能性

这章列出了一些有关Linux的高级路由和流量整形的计划。其中有些链接应该单独写一章,有些本身的文档十分完整,不需要更多的HOWTO。

1Q VLAN在Linux上的实现(网站)

VLAN是一种使用非物理方法把网络划分成多个部分的技术。这里可以找到很多有关VLAN的信息。利用这个实现,你可以让你的Linux机器与VLAN设备(比如">Cisco Catalyst,3Com: <Corebuilder, Netbuilder II, SuperStack II switch 630>,Extreme Ntwks Summit 48,Foundry: <ServerIronXL, FastIron>)交流。

这里有关于VLAN非常好的HOWTO。

更新:这个计划已经归入了2.4.14 (也可能是13)版的内核。

1Q VLAN在Linux上的另一个实现(网站)

如题。这个计划从一开始与已经确立的vlan计划的体系和编码风格并无不协调之处,结果可以有一个非常干净的整体设计。

Linux虚拟服务器(网站)

这些人很聪明。Linux虚拟服务器是由一个Linux系统的负载均衡器把多个真实服务器组织起来,成为一个高度可伸缩、高可靠服务器方案。对于最终用户而言,集群的内部结构识完全透明的,他们只能看到一个单一的虚拟服务器。

简单地说,无论你针对哪一层流量和是否需要负载均衡,LVS总有方法来实现。他们的一些技术非常绝妙!比如,让同一网段上的几台机器使用相同的IP,但是关闭它们的ARP。只有LVS服务器才使用ARP——由它来决定哪个后端服务器来处理到来的数据包,然后把它发送给对应后端服务器的MAC地址。出去的数据包则直接发给路由器,而不必经过LVS机器,也就是LVS不会看到你那发到全世界的5Gbps数据流,从而避免了成为瓶颈。

LVS在Linux2.0和2.2上以内核补丁的方式实现,而在2.4/2.5上则以Netfilter模块的方式实现,不需要内核补丁。他们的2.4支持尚处在早期开发,希望大家捧场并给出回馈和补丁。

CBQ.init (site)

配置CBQ确实令人厌烦,尤其当你仅仅是想把路由器后面的几台机器进行流量整形的时候。CBQ.init可以帮助你用很简单的语法来配置你的Linux路由器。

比如,你想把192.168.1.0/24子网(连接在10Mbps的eth1)的下载速率限制在28kbps上,只要把这些行放在CBQ init配置文件中即可:

DEVICE=eth1,10Mbit,1Mbit
RATE=28Kbit
WEIGHT=2Kbit
PRIO=5
RULE=192.168.1.0/24

如果你对于“如何?为什么?”这类问题不感兴趣的话,一定得用它。我们在产品中使用了CBQ init,情况良好。他还可以做一些高级配置,比如整形时间表。文档嵌入在脚本中,所以你找不到单独的README。

Chronox easy shaping scripts (site)

Stephan Mueller (smueller@chronox.de) 写了两个有用的脚本,“limit.conn”和“shaper”。第一个让你轻松地限制一个下载会话,象这样:

# limit.conn -s SERVERIP -p SERVERPORT -l LIMIT

工作于Linux 2.2和2.4/2.5。

第二个脚本稍稍复杂些,可用于在iptables规则上生成很多不同的队列(利用标记和整形)。

虚拟路由器冗余协议的实现(网站)

这纯粹是为了冗余。两台机器,用他们各自的IP地址和MAC地址构造出第三个虚拟的IP地址和MAC地址。最初纯粹为需要固定MAC地址的路由器而设计,其实也可以用在服务器上。

它的可爱之处在于配置异常简单。不需要补丁和编译内核,全是用户级的。

在共同提供一个服务的服务器上运行:

# vrrpd -i eth0 -v 50 10.0.0.22

就可以用了!10.0.0.22现在代表你的一台服务器,可能是运行vrrp守护程序的第一台机器。现在把这台机器从网络上断开,令一台机器会迅速接管10.0.0.22这个地址及其MAC地址。

我这里做了一个试验,并持续运行了1分钟。不知为什么,总是drop my 缺省网关,但是可以用-n选项避免。

这就是失效恢复现场:

64 bytes from 10.0.0.22: icmp_seq=3 ttl=255 time=0.2 ms
64 bytes from 10.0.0.22: icmp_seq=4 ttl=255 time=0.2 ms
64 bytes from 10.0.0.22: icmp_seq=5 ttl=255 time=16.8 ms
64 bytes from 10.0.0.22: icmp_seq=6 ttl=255 time=1.8 ms
64 bytes from 10.0.0.22: icmp_seq=7 ttl=255 time=1.7 ms

一个ping包也没有丢!在第4个包之后我从网络上断开了我的P200,然后我的486来接管,你可以看出延迟提高了。

时间: 2024-10-27 03:40:28

Linux的高级路由和流量控制:其它可能性的相关文章

Linux的高级路由和流量控制:介绍iproute2

希望这篇文档能对你更好地理解Linxs2.2/2.4的路由有所帮助和启发.不被大多数使用者所知道的是,你所使用工具,其实能够完成相当规模工作.比如route 和ifconfig,实际上暗中调用了非常强大的iproute 2的底层基本功能. Linux能为你做什么 一个小列表: • 管制某台计算机的带宽• 管制通向某台计算机的带宽• 帮助你公平地共享带宽• 保护你的网络不受DoS攻击• 保护Internet不受到你的客户的攻击• 把多台服务器虚拟成一台,进行http://www.aliyun.co

Linux的高级路由和流量控制:多播路由

Multicast-HOWTO已经很古老了(相对而言) ,而且不够准确甚至会因此而误21136.html">导读者. 在你开始进行多播路由之前,你需要重新配置你的Linux内核来支持你想实现的多播路由类型.这一步需要你来决定使用何种类型的多播路由.基本上有这么四种:DVMRP (RIP单播协议的多播版本),MOSPF(同理,只不过是OSPF),PIM-SM ("Protocol Independent Multicasting - Sparse Mode",协议无关多播

Linux的高级路由和流量控制:动态路由OSPF和BGP

当你的网络变得确实比较大,或者你开始考虑成为国际互联网的一部分的时候,你就需要能够动态调整路由的工具了.站点之间经常由越来越多个链路互相连接. OSPF和BGP4几乎已经成了Internet的实际标准.通过gated和zebra,Linux全都能支持. 因为这些内容暂时没有包括进本文档,我们在此仅给出具体的学习方向: 纵览: Ciscohttp://www.aliyun.com/zixun/aggregation/9344.html">系统设计大规模的IP网络 对于OSPF: Moy, J

Linux的高级路由和流量控制:构建网桥以及用ARP代理构建伪网桥

网桥是一种安装在网络中,不需要任何后续配置的设备.网络交换器基本上就是一个多口网桥.也就是说网桥就是一个两口的交换器.而Linux能支持多个接口的网桥,成为一个真正的交换器. 网桥经常被用于改进那些http://www.aliyun.com/zixun/aggregation/7317.html">工作状态不佳但是又不能改造的网络.因为网桥是一个2层设备(IP下面的那一层),路由器和服务器意识不到它的存在.也就意味着你可以完全透明地阻挡或者修改数据包,甚至流量整形. 另一件好事是,假如一个

Linux的高级路由和流量控制:路由策略数据库

如果你有一个大规模的路由器,你可能不得不同时满足不同用户对于路由的不同需求.路由策略数据库可以帮助你通过多路由表技术来实现. 如果你想使用这个特性,请确认你的内核配置中带有 "IP: advanced router" 和 "IP: policy routing" 两项. 当内核需要做出路由选择时,它会找出应该参考哪一张路由表.除了 "ip" 命令之外,以前的 "route" 命令也能修改 main 和 local 表. 缺省规

Linux的高级路由和流量控制:内核网络参数

内核有很多可以在不同环境下调整的参数.通常,预设的缺省值可以满足99%的环境要求,we don't call this the http://www.aliyun.com/zixun/aggregation/3415.html">Advanced HOWTO for the fun of it! 有个很有趣的地方:/proc/sys/net,你应该看看.这里一开始并没有把所有的内容归档,但我们正在尽力如此. 有时候你需要看看Linux的内核源代码.读读Documentation/files

Linux的高级路由和流量控制:GRE和其他隧道

Linux有3种隧道.它们是: IP-in-IP 隧道. GRE 隧道和非内核隧道(如PPTP). 1. 关于隧道的几点注释 隧道可以用于实现很多非常不一般而有趣的功能.但如果你的配置有问题,却也会发生可怕的错误.除非你确切地知道你在做什么,否则不要把缺省路由指向一个隧道设备.而且,隧道会增加协议开销,因为它需要一个额外的IP包头.一般应该是每个包增加20个字节,所以如果一个网络的MTU是1500字节的话,使用隧道技术后,实际的IP包长度最长只能有1480字节了.这倒不是什么原则性的问题,但如果

Linux的高级路由和流量控制:用Cisco和6bone实现IPv6

1. http://www.aliyun.com/zixun/aggregation/9485.html">IPv6隧道 这是Linux隧道能力的另一个应用.这在IPv6的早期实现中非常流行.下面动手试验的例子当然不是实现IPv6隧道的唯一方法.然而,它却是在Linux与支持IPv6的CISCO路由器之间搭建隧道的常用方法,经验证明多数人都是照这样做的.八成也适合于你. 简单谈谈IPv6地址: 相对于IPv4地址而言, IPv6地址非常大,有128bit而不是32bit.这让我们得到了我们

Linux的高级路由和流量控制:对包进行分类的高级过滤器

就象在分类的队列规定一段中解释的,过滤器用与把数据包分类并放入相应的子队列.这些过滤器在分类的队列规定内部被调用. 下面就是我们可用的分类器(部分): fw 根据防火墙如何对这个数据包做标记进行判断.如果你不想学习tc的过滤器语法,这倒是一个捷径.细节请参见队列那一章. u32 根据数据包中的各个字段进行判断,如源IP地址等等. route 根据数据包将被哪条路由进行路由来判断. rsvp, rsvp6 根据数据包的RSVP情况进行判断.只能用于你自己的网络,互联网并不遵守RSVP. tcind