您的位置:首页 > 编程语言

11 个高效的同行代码评审最佳实践

2012-08-11 18:56 302 查看
链路状态路由协议的工作过程

距离矢量路由中,路由互相之间传递路由表来学习路由信息,距离矢量协议的路由器只知道某个网段可以通过哪个下一跳到达和到达这个网络有多远等这样的信息,而不了解整个网络的拓扑结构; 而链路状态路由协议通过与直连的路由器建立邻接关系,互相传递链路状态信息,互相传递链路状态信息,来了解整个网络的拓扑结构 在链路状态信息中,包含有哪些链路,这些链路与那个路由器相连,连接的路径成本是多少等信息,因此,在链路状态路由协议收敛后,一个路由器可以了解本区域完整的链路信息(运行链路状态路由协议的路由器就好像各自“绘制”自己所了解的网段信息,然后通过与临近的路由器建立邻接关系,互相“交流”链路信息,学习整个区域内的链路信息,来“绘制”出整个区域内的链路图,在一个区域内的所有路由器都保存着完全相同的链路状态信息)
Router ID
因为运行ospf的路由器要了解每条链路是连接在哪个路由器上的,因此就需要有一个唯一的标识来标记ospf网路中的路由器,这个标识就是Router ID

首先,路由器选取他所有loopback接口上数值最高的IP地址,如果路由器没有配置loopback接口IP,那么就在所有活动物理端口上选一个数值最高的IP作为路由器的Router ID,用作Router ID的路由器接口不一定非要运行ospf协议
使用loopback作为router id的好处是loopback接口比任何其他的物理端口更稳定,一旦路由器启动成功,这个环回接口就处于活动状态,只有整个路由器失效时他才会失效
OSPF的工作过程
运行rip的路由器只需要保存一张路由表,而是用ospf路由协议的路由器需要保存3张表
邻居列表 列出每台路由已经连理邻接关系的全部邻居路由器
链路状态数据库(LSDB) 列出网络中其他路由器的信息,由此显示了全网的网络拓扑
路由表 列出通过SPF算法(Shortest Path Tree;最短路径优先算法)计算出的到达每个相连网络的最佳路径
3张表的作用和他们之间的关系如下图





OSPF路由协议路由表的形成
OSPF的路由器试图与临近的路由器建立邻接关系,在邻居之间互相同步链路状态数据库,使用最短路径算法(ospf依据Dijkstra算法),从链路状态信息计算得到一个以自己为树根的“最短路径树” 到最后,每一台路由器都将从最短路径树中构建出自己的路由表

OSPF的度量值
Ospf的用来度量路径优劣的度量值称为cost(代价),是指从该接口发送出去的数据包的出站接口代价,使用16位的无符号的整数表示 范围是1~65535
Cisco使用的默认代价是10^8 /BW; BW是指在接口上配置的带宽
10^8是cisco使用的参考带宽
使用10^8作为接口的参考带宽在现代一些带宽高于100Mb/s的网络介质中会产生一个问题; 10^8 /100M = 1 (俩参数都换算成字节,然后相除得到1的) 这就意味着更高带宽的传输介质在ospf协议中将会计算出一个小于1的数,这在ospf协议中是不允许的,因此从IOS 11.2版开始,cisco可以在ospf进程模式下使用命令 auto-cost reference-bandwidth 修正这个问题,这个命令允许管理者更改默认的参考带宽
Ospf与rip的比较(协议运行有差别)
运行rip时,首先向邻居发送请求报文, 其他运行rip的路由器收到请求报文后,马上把自己的路由表发送过去, 在没收到请求报文时,定期(30s)广播自己的路由表

运行ospf时,用hello报文(ospf协议的一种报文)同邻居建立连接,然后迅速建立邻接关系,只在建立了邻接关系的路由器中发送路由信息, 以后靠定义发送hello报文来维持连接,相对rip的路由表报文来这个hello报文要小的多,网络拥塞也就少了 hello报文在广播网上一般每10s发送一次,若在一定时间内(4倍于hello间隔)没有收到hello报文,便认为对方已经死掉,从路由表中去掉,而在链路状态数据库中给他置位为无穷大,并没有真正去掉它,以备它在启用时减少数据传输量,但在它达到3600s时便真正去掉它,ospf的LSA也会重发,重发间隔为1800s
OSPF区域
Ospf路由协议与rip相比,ospf适合更大型的网络环境,那么ospf是如何实现适合大型网络环境的要求的呢?
第一 ospf是一种链路状态型的路由协议,不会产生环路问题,因此不需要使用最大跳数等限制来防止环路的产生
第二 ospf将自制系统分割成多个小的区域,ospf的路由器只在区域内部学习完整的链路状态信息,而不必了饥饿整个自治系统内部所有的链路状态
如下图 区域0为骨干区域,它用来连接自治系统内部的所有其他区域, ,,用来连接骨干区域, 用来连接骨干区域和其他区域的路由器叫做区域边界路由器, 他了解所连接的两个区域的完整的链路状态信息,并将链路状态信息汇总后发给区域内的其他路由器, 这样减少了路由器保存的链路状态数据库的大小,可以解决路由器内存容量有限的问题





区域ID

区域是通过一个32位的区域ID来标识的,可以表示成一个十进制的数字,也可以表示成一个点分十进制的数字
区域0(或者区域0.0.0.0)是为骨干区域保留的区域ID号, 骨干区域的任务是汇总每一个区域的网络拓扑路由到其他所有的区域, 正是由于这个原因, 所有的域间通信量都必须通过骨干区域, 非骨干区域之间不能直接交换数据包
骨干区域是一个特殊的ospf区域,它担负着区域间路由信息传播的重任

路由器链路状态通告列表
是指区域内的每台路由器产生的链路状态通告, 他描述了连接到区域的路由器接口状态

OSPF的基本配置命令
1> 配置loopback,为运行ospf的路由器配置一个loopback接口,用来作为Router ID

Router(config)# interface loopback 0
Router(config-if)# ip address ip-address netmask

2> 启动OSPF进程, 与配置rip不同的是,在配置ospf的时候需要配置进程号,进程号是本地路由器的进程号, 用来标识一台路由器上的多个ospf进程,其值范围 1~65535

Router(config)# router ospf process-id

3> 指定ospf协议运行的接口和所在的区域

Router(config-router)# network address inverse-mask area area-id

Address 网络号,可以是网段地址,子网地址或者一个路由器接口的地址,用于指出路由器所要通告的链路
4> 修改接口的cost值

Router(config-if)# ip ospf cost cost

用于诊断的查看命令

查看路由表 show ip route
查看ospf的配置 show ip ospf
查看ospf接口的数据结构 show ip ospf interface type number
查看ospf指定进程的信息 show ip ospf process-id

本文出自 “地铁” 博客,请务必保留此出处http://ditie.blog.51cto.com/5224908/955185
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: