Linux下路由器的配置之四( 三 )


#Look at all that we created:
#
echo "---- qdisc parameters ----------"
$TC qdisc ls dev eth0
echo "---- Class parameters ----------"
$TC class ls dev eth0
echo "---- filter parameters ----------"
$TC filter ls dev eth0
测试
我们的例子当中,是有在同一个Linux服务器上有两个虚拟WWW
动态路由器的配置
基本原理介绍
先解释一下什么是动态路由 。
从前面的描述中我们可以看到,路由器的基本功能就是为IP分组寻找到达目的地址的路径 。我们前一节介绍的是人工手动静态配置路由规则,也就是人为的设定寻路方式 。但是因特网是个庞大的系统,上面跑的网络结构负责,而且拓扑结构也在随时改变,这样在某些复杂的范围里我们的静态配置就不一定能获得最佳的寻路路径了 。而且一旦网络结构发生改变,我们手动的静态配置也往往无法及时跟着改变 。在这个背景下,产生了动态路由配置的概念,也就是动态路由器 。
动态路由器上的路由表项是通过相互连接的路由器之间交换彼此信息,然后按照一定的算法优化出来的,而这些路由信息是在一定时间间隙里不断更新,以适应不断变化的网络,以随时获得最优的寻路效果 。为了实现IP分组的高效寻路,IETF制定了多种寻路协议 。其中用于自治系统(AS:Autonomous System)内部网关协议有开放式最短路径优先(OSPF:Open Shortest Path First)协议和寻路信息协议(RIP:Routing Information Protocol) 。所谓自治系统是指在同一实体(如学校、企业或ISP)管理下的主机、路由器及其他网络设备的集合 。还有用于自治域系统之间的外部网络路由协议BGP-4等 。
运行这些路由协议的软件就是我们通常说的路由软件,Linux下常见的路由软件有gated和zebra, 。前者既有GPL版本的发行,又有收费的版本;而后者则是日本某组织开发的完全GPL的高效的路由软件 。Linux的发行里面一般都缺省就有gated这个软件,我们下面主要介绍它的配置和使用方法 。
路由协议的介绍
我们这里介绍一下RIP协议 。
RIP是Routing Information Protocol的缩写,直接翻译就是"路由信息协议" 。
RIP计算路由时使用了"距离向量(distance vector)"算法,因此,它也被称作"距离向量寻路协议(distance vector routing protocol) 。
RIP的特点是路由器间定时地交换网络的整体知识,并且只和相邻路由器交换这种知识 。换句话说,路由器只和相邻路由器共享网络信息 。路由器一旦从相邻路由器获取了新的知识,就将其追加到自己的数据库中,并将该信息传递给所有的相邻的路由器 。相邻路由器做同样的操作,经过若干次传递,使自治系统内的所有路由器都能获得完整的路由信息 。
RIP报文用UDP数据报来传送 。为了区别于其他的UDP应用,规定RIPng的公认专用UDP端口号为521 。主动寻路更新报文的源/目的的端口都是RIPng端口,应答的更新报文送往发起请求的端口 。应当注意,IPv4中RIP使用的端口号是520,与RIPng的有所不同 。
定时器爱RIP中有着比较重要的作用 。在RIP中为支持寻路操作使用了三个不同的定时器 。
第一个是启动定时进行RIP更新操作的定时器 。此定时器通常设置成30秒 。在RIP标准中对其进一步加以限制,它要求路由器对更新报文的发送间隔采用随机数,将RIP更新报文的间隔选取在25秒到35秒之间 。其目的是为了避免网络上所有的路由器以相同的定时发送更新报文,大量的业务量压迫网络造成冲突 。利用随机间隔可均衡业务量,从而减少路由器的冲突 。
RIP在避免冲突方面还有一点需要注意,在触发更新中不论何时发送了报文,不对30秒定时器复位 。如果复位,多个路由器的更新报文的发送间隔就会发生冲突 。这是由于所有的路由器在发送触发更新后同时启动定时器造成的 。如不对该定时器复位,即使与在数秒前刚广播的触发更新报文的内容完全一样,定时的更新报文也照发不误 。

推荐阅读