路由算法:RIP、OSPF、BGP

互联网发展到现在,计算机体系已经非常庞大,在数量众多的计算机里面,计算机与计算机是怎么知道哪个线路是通的,哪条路径可以选择,才能让彼此进行通信?我们知道计算机寻路是路由器来进行的,那么路由器使用了什么方法呢?主要有以下三种方法来进行路由。

内部网关协议RIP

RIP协议应该是一种最简单的内部网关协议了。
内部网关协议是跟外部网关协议相对的。在自治系统(比如校园网)里面用的路由协议就是内部网关协议,而在自治系统和自治系统之间进行路由的是外部网关协议。
RIP协议是一个距离向量路由协议,它以跳数作为评价标准,跳数越少,距离越短,当跳数为16时,表示距离不可达。因此RIP协议只适用于小型网络。

工作原理:
(1)RIP协议基于你有一个思想,我有一个思想,我们交换思想就可以得到更全面的想法一样,路由器仅和相邻的路由器交换信息;
(2)路由器交换的信息就是自己目前的路由表,具体是目的网络,最短距离,下一条网络;
(3)RIP协议按固定时间交换信息,比如30秒,就交换一次路由表信息,如果超过了某个固定时间(比如三分钟)还没有交换信息,说明目的路由器不可达,将距离设置为16。

就这样进行下去,最终就可以得到正确的路由。
需要注意的是每一个路由器的路由表是不同的,路由表并没有指出去目的网络的一个路径,而是仅给出下一条的地址。
但是RIP虽然简单,但是有个缺点,就是会以讹传讹,坏消息传的很慢。
举个例子,本来路由器A连接这网络1,路由器B连接这路由器A。突然网络1瘫痪了,那么路由器A就把网络1的路径长度设置为16,但是隔了一段时间见路由器B却跟路由器A说我到网络1的距离是2(之前的错误信息),然后A就以为到网络1的距离是3,然后又跟B交换信息,B以为到网络1的距离是4,就这样一直传递错误的信息,知道距离到了16,才知道目的网络不可达。但是知道这个事实却花了好几分钟。

RIP使用UDP数据报进行传送。

内部网关协议OSPF

OSPF同样是内部网关协议的,但是OSPF是基于链路状态的。这个链路状态包括连通性、费用、距离、时延、带宽等信息。换句话说,OSPF考虑问题更全面,因为最短路径应该是时间最短的,而路由的时间跟上面的因素而不仅仅是跳数有关。
工作原理:
(1)OSPF向所有路由器发送信息,它使用一种泛洪法(路由器的一种转发方式),向所有输出接口发送信息,这样最后所有的路由器都会得到这个消息的副本。
(2)发送的信息是与本路由器相邻的路由器的链路状态信息。
(3)只有当链路状态发生变化时,才会使用泛洪法转发信息。

经过上面的步骤,最后每个路由器都会得到一个全网的拓扑结构(注意RIP并没有这个),这个拓扑结构跟带权无向图差不多,有了这个图,就可以使用最短路径算法(比如Dijkstra提出的最短路径算法)找到一条最短路径了,不过最后填入路由表的还是下一跳的信息。

OSPF的优点在于收敛快,适用于较大型的网络。

为了减少网络上的通行量,已经减少上述全网的拓扑结构的规模,可以将一个系统划分为不同的区域,这样泛洪法交换信息只局限于一个区域。

OSPF直接使用IP数据报进行封装传送。

边界网关协议BGP

与内部网关协议不同,边界网关协议的目标并不是找到到目的网络的一个最短路径,而是找到一个合适的路径,因此BGP称为路径向量协议。
理由如下:
(1)互联网规模太大,如果使用最短路径算法计算时间将会很久。
(2)不同的自治系统有不同的策略,就好像不同的国家有不同的法律一样,有些路由器可能会过滤一些请求。
工作原理:
(1)在每个自治系统里面选择至少一个BGP发言人,这个角色是用来跟相邻自治系统来交换信息的,信息包括到达某个网络所要经过的一系列自治系统。
(2)当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达个自治系统的合适的路由。

BGP协议交换路由信息的节点数量级是自治系统的量级。

你可能感兴趣的:(计算机网络)