必威体育Betway必威体育官网
当前位置:首页 > IT技术

路由协议

时间:2019-11-07 18:15:48来源:IT技术作者:seo实验室小编阅读:86次「手机版」
 

路由协议

1. 路由协议

穿梭在互联网中的一个个IP包,如同高速公路上的一辆辆小汽车,如何到达目的地呢?对于汽车大家都很熟悉,即使不知道目的地,也有电子导航可以带领我们到达目的地,那IP包是不是也需要类似的导航信息呢?是的,在IP包进入互联网的那一刻,导航信息已经在路上,静静地等待着IP包的到来,在每一个通向目的地的路由器上,只要查询IP包中的目的地地址,就可以查询导航信息(路由表)来决定最近的路线,就这样一跳一跳的方式到达目的地。

1.1 路由表生成

读到这里,您一定会有一个问题:每台路由器的路由表是如何生成的?先不来回答这个问题,还是拿电子导航来分析,当你输入目的地信息,电子导航系统依靠自己地图数据库来计算最短路线,这个地图数据库是预先装载在导航系统中的,每隔一段时间你可能还需要升级这个地图数据库,因为中国的道路发展的很快,不更新可能把你导入河流中、或大海中…

记得最早上海通往洋山港的东海大桥,有些汽车的接收的定位信息精度不高,结果显示汽车不是在桥上跑,而是在海上飞…

如果每台路由器能够有类似地图数据库的链路信息,也可以运用最短算法完成导航,每台路由器之间完成链路信息交换的一个协议,我们称之为:路由协议!其实如果最初翻译成选路协议,对于我们国人会更好地理解,车小胖也不需要花那么大的篇幅来介绍这个所谓的路由协议,目前你应该明白了什么是路由,那协议呢?协议就是先规定好,如何表示这些链路信息,通过这个链路需要多少成本(cost),这条链路两端是什么节点路由器,有了这些信息,路由器就可以动态地画一张全网的地图(拓扑图),对于每一个目的地,按照最短路径算法动态生成一个路由条目,放入到一个表中,我们称这张表为路由表。

熟悉路由协议的童鞋很容易就猜到我所表述的路由协议是:OSPF,IS-IS。它们非常相似,都是链路状态协议,都是先收集路由器之间的链路信息,比如成本、两端连接的节点、链路的类型,然后运行类似最短路径的算法,生成路由表信息。

既生瑜,何生亮?

即然如此相似,为何呢?!这是两个不同的组织平行开发的两个协议,谁也没有绝对的优势胜出,那就由市场来考验它们吧!从协议的开发性、扩展性来说,IS-IS更有优势,OSPF可能慢慢被边缘化。

今天先不来讨论谁将胜出,先来面对第一个问题,如果OSPF,IS-IS在同一台路由器上运行,对于同一个目的地(网络地址相同,网络掩码相同)它们都生成了路由表,那用谁的呢?这是一个艰难的优先级抉择,每家厂家有自己的抉择,cisco使用了一个听起来很奇怪的名字:管理距离AD(AdMinistration distance)来区分大家的优先级,优先级0为最高优先级,而优先级为255为最低优先级,而OSPF默认的优先级位110,而IS-IS默认优先级为115,显然OSPF路由信息胜出,举个例子来说明:

OSPF route : 10.1.1.0/24 next-hop a.a.a.a AD 110

IS-IS route : 10.1.1.0/24 next-hop b.b.b.b AD 115

那么进入路由表的就是:

OSPF route : 10.1.1.0/24 next-hop a.a.a.a AD 110

一定不要有这样的错觉,OSPF的AD优先级高,IS-IS的AD优先级低,如果同时运行OSPF和IS-IS,则IS-IS所有路由条目都不会进入路由表。这是错误的!一定要注意只有同等的路由条目才可以使用AD值的优先级来决定去留,如果不是同等的路由条目,压根不会去比较AD优先级。

当然能够竞争进入路由表的协议还有:RIP(120),EIGRP(90),BGP(20,200),还有直连路由(0)以及静态路由(1),括号里为它们AD优先级,外部BGP

为20,内部BGP为200,目前常用路由协议的AD优先级为:

直连路由> 静态路由 > EBGP > EIGRP > OSPF > ISIS > RIP > IBGP

1.2 路由查找

谈完了路由表,接下来谈谈IP包到达路由器,如何查找路由表,完成IP包的导航任务。如何查找可以达到最高效率、最准确地找到下一跳?

如果路由表有以下五个条目,IP包的目的地址为10.1.1.1,那路由表会选择哪一个条目呢?按照最长匹配原则,会选择10.1.1.1/32,因为是完全匹配,即32位匹配。

如果IP包目的地址是:10.1.1.100,则会选择10.1.1.0/24,这个是最长匹配,匹配了24位。

如果IP包目的地址是:10.1.2.100,则会选择10.1.0.0/16,这个是最长匹配,匹配了16位。

如果IP包目的地址是:10.2.1.100,则会选择10.0.0.0/8,这个是最长匹配,匹配了8位。

如果IP包目的地址是:192.168.1.1,则会选择0.0.0.0/0,这个是缺省路由,可以匹配任何IP目的地址。

10.1.1.1/32

10.1.1.0/24

10.1.0.0/16

10.0.0.0/8

0.0.0.0/0

2. OSPF和IS-IS

OSPF ,Open Shortest Path First,开放最短路径优先,在车小胖的眼中,OSPF其实并不开放,以OSPFv2来说,它只用来交换IPv4的路由信息,那如何交换IPv6路由信息呢?没办法!因为OSPFv2协议字段里没有这样的字段,来分辨交换得是IPv4,IPv6,CLNS,MAC,Label,这是很致命的,协议写的太死板、扩展性不好。

为了克服无法交换IPv6路由的困难,又开发了一个新的版本,OSPFv3,问题是又没有提供一个字段来提高扩展性,如果有一个字段叫 payload type 或protocol type,可以分辨IPv4,IPv6,CLNS,MAC,Label,那它的生命力就会更顽强,目前OSPF只支持IP路由的交换。

再看看同为链路状态协议的IS-IS,不仅支持IP路由交换,还支持CLNS交换,目前被数据中心二层互联新技术,OTV,TRILL用来交换MAC地址,你没有看错,是二层的MAC地址,这太神奇了!数据中心在边界设备上建立IS-IS邻接关系,然后交换各自数据中心二层的MAC地址表,然后对Ethernet Frame查找IS-IS MAC地址表,来完成二层转发。

2.1 网络收敛

如果所有的路由器都在一个区域,任何一个路由器有点风吹草动,譬如接口Down,都会扩散(flooding)到区域地每一个角落,直到所有路由器都知道了这个消息,然后update自己的链路数据库,把这个受影响的链路标示为不可用,再坐等各自运行SPF算法,生成新的路由表信息,等大家都完成了。我们可以说网络收敛了。

还没过几秒钟,那个down掉的接口又满血复活了,继续开始扩散它UP的消息,又是一番痛苦的折腾,直到大家又重新收敛结束。

2.2 快速收敛

网络收敛的过程,如同在平静的湖面丢下一粒石子,泛起一圈圈涟漪,等涟漪传导到湖面的边缘部分,湖面就静止了,网络的术语称之为网络收敛。

Hello作用是为了发现邻居,并周期性地发送和接收,为了发现邻居在或不在。如果不在,将启动超时机制,即连续4个hello时间周期内,没有收到邻居的hello,则宣布和邻居直连的链路失效,然后将这种link down 的消息扩散出去。hello缺省时间为10秒,detect time = 4 *hello,所以发现失效时间(detect time)为40秒,加上LSA update 的扩散时间,加上运算SPF算法的延迟时间,再加上SPF本身的运算时间(时间小,基本可以忽略),这整体的时间应该为:

Detect time + Flooding time + SPF Delay time + SPF time = 40 + (<1) + (<=6) + (<1)= 48秒

这整体的时间就是收敛时间,大家可以看到其中detect time占了超过了80%的份额;

如果我们调整hello time=5秒,则收敛时间= 28 秒;

调整hello time= 1秒,则收敛时间=12秒。这个hello时间在cisco平台上是最小值,通过调整hello时间来减少收敛时间到了极限值。那个flooding time 和SPF time 我们无法控制,那只有操作那个SPF delay time了,如果可以将其控制在1-2秒之内,则收敛时间将降为<8秒,这是通过修改OSPF参数能达到的极限值。

3. BGP: 一个更像应用程序的路由协议

BGP(Border Gateway Protocol),我们称之为边界网关路由协议。用于自治系统(Autonomous System)之间交换路由信息,我们称之为外部BGP,即eBGP;也可以用来在自治系统内部路由器之间来同步路由信息,称之为内部BGP,即iBGP。

3.1 BGP建立连接

BGP工作于TCP 179号端口,与其说是路由协议,不如说是一个应用程序,一个用来互相分发路由信息的应用程序。既然是应用程序,就需要底层网络可以提供在应用程序之间建立TCP连接的一切必要前提,即BGP 用来建立TCP 的 Source IP 互相可达。说了半天有的同学肯定还是晕乎乎的,用更通俗的语言来描述一下,举个例子:

两台电脑A与B如果直连并且在一个网段,他们之间通信需要什么路由协议吗?不需要,他们可以直接通信!那如果他们不是直连,当然也不在一个网段,如何通信?用静态路由或路由协议使得A知道如何到达B,B知道如何到达A,双向的路由都畅通了,A与B就可以顺利通信了。

如何把上面的电脑换成路由器A与B,A与B之间的通信是BGP,是不是也类似呢?其实是一样的,路由器RP其实就是一个嵌入linux操作系统的一台电脑,当路由器A与B直连时,他们之间的BGP通信只需要直连路由,即直连接口在同一个网段就可以建立BGP邻居关系。

但是用直连物理接口作为 source IP 不够健壮,一旦物理接口有 flAPPing,则容易引起BGP邻居关系的flapping,路由表也会反复重新收敛。如果能够采用软件接口,或虚拟接口loopback来建立邻居关系,A与B之间如果有多条物理连接,即使有一条链路断掉了,还可以切换到另外一条链路,这样BGP邻居关系不受任何影响。

但是不要忘记A 与B如何知道彼此loopback 的地址呢?特别是EBGP的情况下,A与B一般不会建立IGP邻居关系,所以最好的方式就是用静态路由来双向指一下,A的loopback 和B的loopback双向路由畅通,那是不是就可以顺利建立EBGP邻居关系了呢?

如果A 主动建立TCP连接,用的不是loopback,而是用物理接口的IP,而对方却限制一定要用A的loopback才可以接受连接,是不是连接就建立不起来?是的,那我们就需要用配置命令来硬性指示A与B的 updated-source

IP == loopback 不就可以了吗?那是不是完成这步就可以建立BGP了?不可以,因为TCP连接所使用的IP缺省TTL== 1,如果到达彼此loopback,需要两跳,所以需要用命令修改EBGP multi hop == 2 ,到了这里一个EBGP连接就可以顺利建立。

3.2 BGP安全保护

在开始这个话题之前,先有一个问题,TCP连接是一个什么概念?TCP连接是一个虚连接,是依靠一个个独立的TCP segment 及其状态标志位(SYN/ACK/FIN/Push/Urgent/Reset)来维系的,这种机制其实是非常脆弱的。TCP的一方如果没有一种认证机制来认证对方发送过来的数据是否合法,则第三方完全可以伪造source

IP,伪造TCP segment 的关键字段,如果这个伪造的IP包和真正的IP包没有太大区别,则很容易骗过接收端,如果数据为伪造的路由表信息,则整个BGP路由表有可能被搅得天翻地覆,所以这完全是不可接受的。

Cisco BGP采用的是TCP Option 19来应对以上的挑战,原理很简单:就是对发出的每一个TCP Segment 都有一个option 19,采用MD5 算法将 TCP segment 和 Pre-Shared Password 作为共同输入量,计算出MD5,并附在TCP segment的末尾,到达对方先校验MD5是否一致,一致则接收,否则丢弃。由于Pre-Shared Password 只有BGP Peer知晓,所以第三方无法伪造合法的MD5而被丢弃。至于Option 29 是采用SHA哈希算法,安全性更高,所以获得更多地支持。

转载自:https://zhuanlan.zhihu.com/chexiaopang

文章最后发布于: 2018-11-06 13:40:39

相关阅读

各品牌路由器默认账号密码

各品牌路由器地址/用户名/密码: TP-Link路由器 登录IP:192.168.1.1 默认登录名和密码:admin、admin Tenda路由器 登录IP:192.168.0.1

ZigBee协议栈Zstack介绍

文中所讲述的协议栈是基于ZigBee2006\Zstack-1.4.3-1.2.11.ZSTACK协议栈的架构ZigBee协议栈就是将各个层定义的协议都集合在一起

重启路由器可以换IP吗

想换IP有哪些方法可以实现?有时候IP被限制了,怎么换IP访问,重启路由器可以换IP吗?一般家庭的基于PPPOE拨号方式上网的,使用的是动态IP

安装超强信号无线路由?不如全屋WIFI信号好!

一提到办理家庭宽带,大家的第一反应就是买一个信号超强的路由器,最好是能够穿墙还能保持一定的网络信号。所以在办理宽带之后一直使

贝壳找房准备上市:会通过镜像协议把链家投资人的权益转

A5创业网(公众号:iadmin5)3月11日讯,近日有消息称,贝壳找房或已做好上市准备,原先各个投资方在链家的股份将会通过镜像协议平移到贝壳

分享到:

栏目导航

推荐阅读

热门阅读