您的当前位置:首页正文

距离向量路由协议应用中的问题分析

来源:华佗健康网
维普资讯 http://www.cqvip.com 2007年6月 济南职业学院学报 Jun.2007 第3期(总第61期) Journal of Jinan Vocational College No.3(Seiral N0.61) 距离向量路由协议应用中的问题分析 肖仁锋王婷婷 (济南职业学院计算机系, 山东济南250100) 摘要:本文主要介绍了距离向量协议的工作原理,详细描述了距离向量算法的工作过程,提出了工作过 程中出现的问题,并且描述了相应的解决方法。 关键词:动态路由;跳数 中图分类号:TP3 文献标识码:B 一、引言 在通信过程中,为通信结点寻找一条最佳路径是非常 重要的,通常都是通过路由器来完成这项工作,在路由器 中,有两种方法可以选择,一种是设置静态路由;二是通过 动态协议来完成,因为静态协议需要人为配置的工作量 大,不够灵活,所以,动态协议就显得尤为重要。动态路由 协议主要分为三类:距离向量路由算法,链路状态路由算 法,平衡混合路由算法。其中,距离向量算法也称为Bell— 图1 ITlm'l—Ford算法,主要用跳数等参数的大小来计算最佳路 邻居的端口,在这个过程中,收到路由表的路由器完全相 由。要求每个路由器周期性发送其路由表全部或部分信 信自己的邻居,这个过程被称为“谣言规则”。我们以RIP 息(仅发送到邻近结点上),来维护路由器的路由表,下面 协议为例,如图2中所示,每一个路由器中都含有一张路 将主要讨论距离向量算法中存在的问题和解决方法。 由表,记录着到各个网段的距离,其中直连网段的距离为 二、距离向量协议的工作过程 0。在网络初始化的时候,每个路由器中只含有自己的直 .o—毒 sO 在网络中,从一个站点到达另一个站点可能存在多条 路由,如图1所示,从站点A到站点B就存在两条路由,距 lo_l _。 ”t 了10. ̄O,0_埔 。 离向量路由算法的宗旨是根据相应的参数,计算各条路由 的综合代价,然后根据计算出的代价选取最佳路由放到路 I匮巫  Routi珥T出 二]= l I R西匝 耳 叫“ T.ble I 匦互正疆耳目 l R。utI珥Tsble l 由表中,通常代价越小,路径越优秀。在计算过程中,不同 I !: 塾!l竺l l l 竺!: !i: I 2} l!!:!:垒 l!!l } 的距离向量协议采用不同的参数,常见的有如下几个:(1) 图2 跳数(2)带宽(3)延迟(4)负载(5)可靠性(6)MTU。在常见 连网段,因为DV算法中每个路由器要发送自身全部的路 的几种动态路由协议中,RIP(路由信息协议)和IGRP(内 由表给所有的邻居,所以,在初始化过程中,各个路由器都 部网关路由协议)都是距离向量路由协议,简称为DV(Dis— 向周围发送自己的路由表,当路由器收到邻居发来的更 tance Vector)协议,其中RIP协议是根据跳数来计算代价 新,首先将各个网段的代价加1,然后与自身的路由表相 的;而IGRP是根据其余五个参数来计算的,计算出的代价 比较,如果更新中有比自己路由表代价小的路径,则更新 是一个复合度量值。 自身的路由表。路由表项中除了记录目标网段和代价外, 在纯距离路由向量协议环境中,要求每个路由器周期 还记录了第一跳的出口,这也是路由器相信的端口,除非 性广播发送整个路由表给自己的邻居,收到路由表的邻居 有更优秀的路由,在周期性的更新中,路由器会无条件相 路由器,查看其中的每个路由表项,对自身的路由表做出 信这个端口的路由信息。通过从B中学到的消息,A学到 相应的修改,并记下该路由的来源,即连接发送路由表的 了到达10.3.0.0和10.4.0.0两个未知网段的路由,并且 作者简介:肖仁锋(1979一),男,山东诸城人,济南职业学院计算机系助教; 王婷婷(1983一),女,山东陵县人,济南职业学院计算机系助教。 ・58・ 维普资讯 http://www.cqvip.com 通过累加来计算到未知网段距离值,例如:10.3.0.0是B 的直连网段,距离为0,当A收到B的路由表时距离为I, 同样,10.4.0.0的距离在A中应该是2。 当网络稳定以后,各个路由器都从邻居那儿学到了到 使用过程中很容易被欺骗,造成了一定的安全隐患。 四、分析解决问题 对于路由环路和收敛变慢的原因主要有两条,一是 “谣言规则”,二是路由更新的周期性发送。如果我们通过 达其他未知网段的路由,形成图3所示的路由表。 簟I sO sO sl sm—m— O eO Routh T出le ~ Routin毫T曲 e 10 1.0.0 0O 0 10.3.0.0 sO O i0.2.0.0 gO O 10 4.0.0 sO O 10.3.0.0 sO 1 lO.2.n0 s0 l 10 4 0.0 sO 2 10.1.0.0 sO 2 图3 . 三、提出问题 从DV协议的工作过程中看出,协议算法要求每一个 路由器周期性向自己的邻居发送全部的路由表,所以,与 链路状态协议相比,距离路由向量协议发送更新流量更 多,只是不向所有的路由器发送,而只发送到自己的邻居 而已,当网络规模变大后,DV协议的缺点便会暴露出来: 1)出现路由环路; 2)收敛将会变慢; 3)存在安全漏洞; 如图4中所示:假设10.4.0.0网段出现问题,C探测 到并停止向eID发送数据,而且将路由表中10.4.0.0对应 的距离值改为down,然而因为周期性发送,A和B还没有 收到通知,这时A和B仍然认为自己可以到达10.4.0.0, 如果在C通知B之前,A和B先发送更新给C,由于B中 现在的路由比C中的路由更好,所以C相信B,并将10.4. 0.0 e0 0改为10.4.0.0 sO 2,然后C再发送更新给B,因为 B这条路由是从C学来的,所以B依然相信C将路由表更 新为10.4.0.0 e0 3,随着,路由表周期性更新的继续,这种 状况会不停的进行下去,造成路由环路,除非有外力,这种 情况会造成路由表代价无限增大,形成计数到无穷,在传 送数据的过程中会消耗掉路由器的大量带宽,是我们所不 希望看到的。而且由于是周期性更新,不能及时发送更新 信息,造成收敛变慢。 ∞ 高瞄 !一一 ‘。』:蔓 ,。— 艺 。o 匪圈 图4 另外,在实际的应用中,我们发现DV协议没有验证 机制,并且采用的是不可靠的UDP协议进行传输,以RIP 协议为例,我们只需要通过检测UDP协议的520端口,就 能发现路由器是否采用了RIP协议,然后截获RIP的报 文,读取其中的密码信息并通过验证。这使得RIP协议在 一定的手段,消除这两个不利的因素,问题也就自然迎刃 而解。 综合了路由器的工作过程和造成问题的原因,在距离 向量路由算法的使用过程中一般是通过如下手段,消除路 由环路和收敛变慢问题的: 1.水平分割:当从一个路由器学习到某条路由后,该 路由不能再传向原路由器,即当路由器在传送路由表的时 候不再是传送整个路由表,而是有选择的传送。 2.路由毒化:一旦网络出现问题,便将代价置为无穷, 即代价为16,则路由器再收到不正确路由更新时,不会随 之改变。当然实际实现其来,路由毒化一般是与“水平分 割”相结合的,称为“带逆向毒化的水平分割”,当网络出现 问题时,如图4所示,当B收到10.4.0.0网段出问题的路 由更新时,便逆向毒化C中关于10.4.0.0的路由代价为 无穷,显然这样做违反了“水平分割”原则,但却是客观存 在。 3.抑制时钟:当一个路由器探测到一个网段不能访 问,便将到达该网段的路由项改为“possibly down”,并启用 一个时钟,在时钟超时之前,除非收到更好的路由,否则收 到任何等值的或者更高代价的路由是不会采用的。 4.触发更新:当路由器监测到问题时,立即通告周围 路由器,该网段不可达,不必等待周期性更新,这样减少了 网络的收敛时间。 当然,要解决路由环路的问题,还必须将这几个措施 有机的结合起来,如图5所示A,B,D和E都能到达10.4. 0.0,只要B监测到10.4.0.0失效,立刻删除对应的路由 项,并触发更新到A和D,毒化10.4.0.0的路由项,即将代 价置为16,D和A收到更新后,立刻启用时钟,标记对应路 由为possibly down,D和A依次发送更新给E,E也启用时 钟。A和D收到更新后逆向毒化B,E同样逆向毒化A和 D 嗣譬|l、 二 /二叠、 、1曩i 图5 在此期间,除非出现下列情况: 1)时钟超时 1)收到更好的路由 3)删除路日 路由表不更新,即使此时10.4.0.0已经变好,也只能 等到超时才更新。 经过上述的步骤,基本解决了路由 (下转第62页) ・59・ 维普资讯 http://www.cqvip.com 与这个数据包的源地址相同的Sourcelnfo结构,如果没找 到就调用AddSource()函数生成一个以该地址为标识的 输出模块即高层模块,是系统在对事件进行了嗅探、 解码和检测后对它们进行有意义的记录和显示,输出模块 SourceInfo结构并加入到ScanList链表中。如果找到了就 在这个SoureeInfo结构中搜索与这个数据包的目的地址相 同的DestinafionInfo结构,如果没找到就调用AddDestina. 与sn0rt中的其他部件相同,不同的部分会在不同的阶段 使用输出插件。数据包解码引擎会使用到输出插件,预处 理器程序会使用输出插件对事件进行报警。 IPv6下的输出模块,可以利用IPv4下的输出模块来进 tionInfo()函数生成一个以该地址为标识的DestinationInfo 结构并加入到Soureelnfo链表中。如果找到了就在这个 行。当我们检测到攻击行为时就根据系统设置的报警级 DestinationInfo结构中搜索这个数据包的源端口地址和目 别调用不同的输出函数。用来输出的模块有:快速报警模 的端口号相同的ConneetionInfo结构,如果没找到就调用 块、完全报警模块、UnixSocket报警模块、SMB报警模块、输 AddConnecfion函数生成一个以该源端口号和目的端口号 出日志到数据库模块、以tcpdump格式记录日志模块等。 为标识的ConneetionInfo结构并加入到DestinationInfo链表 根据实际情况对快速报警模块、完全报警模块和以tcp. 中,如果找到了就更新时间戳DestinationInfo等信息。 dump格式记录日志模块进行改造,使之具有处理IPv6信 ParsePortsean6Args():该函数解析传送来的参数,第一 息的输出能力。 个参数为II)地址,第二个为最大端口数,第三个为最大时 间间隔值,单位为秒,第四个为输出文件名。 参考文献 Portscan6PreprocFunction(Packet P):该函数进行端121 [1]李家春,李之棠.入侵检测系统[J].计算机应用研究,2001, 扫描检测。首先判断是否需要检测,如果需要就继续,否 11. 则就退出,这样可以提高效率。 [2]韩东海,王超,李群.入侵检测系统实例剖析[M].北京:清华 CheckAddPort6():该函数详细检测数据包的地址和端 大学出版社,2002. 121。接下来调用ExpirConneetions()函数,该函数搜索整个 [3]唐正军.黑客入侵防护系统源代码分析[M].北京:机械工业 ScanList链表,删除那些已经超过最大间隔时间的连接。 出版社,2OOO. NewScan():该函数搜索ScanList表并把新的数据包的 [4]蒋建春,冯登国.网络入侵检测原理与技术[M].北京:国防工 业出版社,2001. 信息加入到适当的链中。最后根据前面的检测结果来记 (责任编辑:王振平) 录到日志文件或者发送警报。 4输出模块 (上接第59页)环路的问题,减少了网络的收敛时问,提 法,计算出相应的结果,并将结果发送给接收方; 高了带宽的有效利用率。 最后,接收方根据收到的结果和自己计算的结果进行 而形成安全漏洞则主要是由于DV协议算法自身的 比较(采用约好的算法),决定是否通过验证。 原因,同样,我们以RIP协议为例,协议本身没有验证机制 在这个方案中始终没有传送相应的密码信息,所以当 并采用了不可靠的UDP协议进行传输。虽然RIPv2的分 有人想通过截获密码从而登录使用RIP协议的路由器时, 组格式中包含了一个选项可以设置l6个字符的明文密码 便行不通了,也就解决了协议中的安全漏洞问题。 字符串或者MD5签字,使得欺骗不再那么容易,但是实际 上还是没有解决安全问题,因为不管是明文密码还是MD5 签字,都不是绝对的安全,都可以被截获或者是破译,所 参考文献 以,我们采用增加验证机制的方式,保证密码的安全,解决 [1][美]希尔(Hill,B.).Cisco完全手册.北京:电子工业出版社, 方案如下: 2006. 首先,由发送方发出请求信息,但是不发送密码; [2][美].麦格雷戈.CCNP思科网络技术学院教程(第五学期)实 其次,当接收方收到请求后,发出一个随机信息; 验手册高级路由.北京:人民邮电出版社,2OO0. 再次,发送方收到返回的随机信息后,根据约好的算 (责任编辑:王振平) ・62・ 

因篇幅问题不能全部显示,请点此查看更多更全内容