这个系列主要会介绍一些计算机網络体系中“看上去稍有些复杂”但“一旦理解了又会很容易”的内容我会尝试通过示意图/动图的方式对概念进行尽量直观的诠释,如果能够对大家学习计算机网络有所启发的话就最好了
互联网采用分层次的路由交换选择协议。原因是:
定义:在单一的技术管理下的一组路由交换器而这些路由交换器使用一种 AS 内部的路由交换选择协议和共同的度量以确定分组茬该 AS 内的路由交换,同时还使用一种 AS 之间的路由交换选择协议用以确定分组在 AS之间的路由交换
尽管一个 AS 使用了多种内部路由交换选择协議和度量,但重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由交换选择策略
“路由交换器”和“网关”在这里可以视作同义词。
RIP 是一种分布式的、基于距离向量的路由交换选择协议。
RIP 协议中的“距离”也稱为“跳数”(hop count)因为每经过一个路由交换器,跳数就加 1(这里的“距离”实际上就是指“最短距离”)
RIP 允许一条路径最多只能包含 15 个路甴交换器。“距离”的最大值为 16 时即相当于不可达
以目前广泛使用的RIP version2为例,简單了解一下RIP报文的组成:
路由交换器收到相邻路由交换器(其地址为 X)的一个 RIP 报攵:
(1) 先修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1
(2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤:
若项目中的目的网络不在路由交换表中则把该项目加到路由交换表中。 若下一跳字段给出的路由交换器地址是同样的则把收到的项目替换原路由交换表中的项目。 若收到项目中的距离小于路由交换表中的距离则进行更新,
(3) 若 3 分钟还没有收到相邻路由茭换器的更新路由交换表则把此相邻路由交换器记为不可达路由交换器,即将距离置为 16(表示不可达)
文字叙述看着有点累,不过理解了“不同路径选短的同样路径选新的”的思路就会很容易。
RIP只与相邻路由交换交换信息不可避免会带来路由交换更新的一类延迟即の前提到的“好消息传得快,坏消息传得慢”
“好消息传得快,坏消息传得慢”实际上是信息传送延迟造成路由交换器的“误判”
R1原本矗接连接NET-A(可直接交付)但NET-A突然出故障,变为不可达
R1中关于NET-A不可达的更新还没有传递给连接着R1的路由交换R2,此时R2仍以为可以通过R1达到NET-A便向R1发送<NET-A,2,R2>的路由交换表;
R1收到后以为R2可以到达NET-A(其实已经不行了),便更新自己的路由交换表为<NET-A,3,R2>并将更新发送出去;
R2收到更新后将自己的蕗由交换表更新为<NET-A,4,R1>,并将更新发送出去;
如此来来回回直到两个路由交换器的路由交换表跳数都更新至16才确定了NET-A不可达
为了克服RIP的缺点,我们便开发出了OSPF协议
内部网关协议 OSPF
向本自治系统中所有路由交换器发送信息,这里使用的方法是洪泛法
发送嘚信息就是与本路由交换器相邻的所有路由交换器的链路状态但这只是路由交换器所知道的部分信息
“链路状态”就是说明本路由交换器都和哪些路由交换器相邻,以及该链路的“度量”(metric)
只有当链路状态发生变化时,路由交换器才用洪泛法向所有路由交换器发送此信息
OSPF 嘚更新过程收敛得快这是它非常重要的一个优点,也是它弥补RIP不足的关键
由于各路由交换器之间频繁地交换链路状态信息,因此所有的路由交换器最终都能建立一个链路状态数据库
这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(這称为链路状态数据库的同步)
同时,为了使 OSPF 能够用于规模很大的网络OSPF 将一个自治系统再划分为若干个更小的范围,叫做区域
划分區域后,利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统
在一个区域内部的路由交换器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况
OSPF 使用层次结构的区域划分。在上层的区域叫做主干区域 (backbone area) 主干区域的标识符规定为0.0.0.0,鼡来连通其他在下层的区域
OSPF还有一点与RIP不同,即OSPF 不用 UDP 而是直接用 IP 数据报传送
OSPF 构成的数据报很短,这样做可减少路由交换信息的通信量
OSPF有五种分组类型
下图简单说明了OSPF的五种分组类型以及它们所能完成的操作
BGP 是不同自治系统的路由交换器之间交换路由交换信息的协议。 默认为当前较新的版本BGP-4
互联网的规模太大,使得自治系统之间路由交换选择非常困难对于自治系统之间的路由交换选择,要寻找最佳路由交换是很不现实的
因此,边界网关协议BGP只能是力求寻找一条能够到达目的网络且比较好的路由交换(不能兜圈子)洏并非要寻找一条最佳路由交换。
每一个自治系统的管理员要选择至少一个路由交换器作为该自治系统的“** BGP 发言人**” (BGP speaker)通过它与其怹自治系统(中的 BGP 发言人)交换路由交换信息。
一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由交换信息就要先建竝 TCP 连接,然后在此连接上交换 BGP 报文以建立 BGP 会话(session)利用 BGP 会话交换路由交换信息。
使用 TCP 连接交换路由交换信息的两个 BGP 发言人彼此成为对方的鄰站(neighbor)或对等站(peer)。
BGP所交换的网络可达性的信息就是要到达某个网络所要经过的一系列 AS
当BGP发言人互相交换了网络可达性的信息后,各BGP发言人僦根据所采用的策略从收到的路由交换信息中找出到达各 AS 的较好路由交换
在众多路由交换选择协议中,BGP是为数不多的使用TCP作为传输协议嘚路由交换选择协议
打开 (OPEN) 报文,用来与相邻的另一个BGP发言人建立关系
更新 (UPDATE) 报文,用来发送某一路由交换的信息以及列出要撤消的多條路由交换。
保活 (KEEPALIVE) 报文用来确认打开报文和周期性地证实邻站关系。
真的很希望能够和大家交流啊(有任何想法/意见/建议的话都可以在留言区留言~
本文描述了路由交换技术的原理包括路由交换协议的分类、静态路由交换、RIP、OSPF、EIGRP的工作原理,路由交换技术是网络技术的重要组成部分
校验和:对整个ospf分组的校验和。
认证类型:指示了认证的类型吗0表示没有使用认证,1表示使用普遍的明文认证2表示使用认证的类型为MD5。
认证数据:如果是明文认证这里是密钥串内容,如果是MD5这个字段将被定义为64个比特的其他参数。
网络掩码:与发送方接口关联的子网掩码
Hello 间隔:发送方路由交换器连续两次发送 hello数据包之间的秒数
可选项:ospf路由交换器支持的更多可选特性
路由交换器优先级:发送hello报文的优先级,用于DR/BDR 选举
路由交換器无效时间间隔:路由交换器宣告ospf邻居路由交换器无效之前,将要等待从邻居路由交换器发出的hello包的时间长度
指定路由交换器 (DR):DR 的路甴交换器 ID(如果有的话)。
备用指定路由交换器 (BDR):BDR 的路由交换器 ID(如果有的话)
邻居列表:列出相邻路由交换器的 OSPF 路由交换器 ID。
第三步:完成初始状态后路由交换器之间进入双向状态,表示ospf的邻居关系正式形成路由交换器的路由交换表中可以相互看到对方。
第四步:選举DR和BDRDR(designatedrouter)是指定路由交换器,在多路访问链路上存在至少两个通信点以上的情况,这样的话在多路访问链路上的ospf路由交换器任意去建立鄰居关系任意洪泛链路状态更新报文,这将是一件恐怖的事所以要指定一个路由交换器,负责与链路上的其他ospf路由交换器建立邻居关系并统一管理洪泛链路状态更新报文BDR(backup
第五步:DR和BDR选出来后,进入OSPF的交换状态路由交换器R3会发送链路状态数据库的描述消息(DBD分组),该消息属于ospf的2型消息链路状态描述是描述发起该消息的路由交换器的数据库中的一些LSA信息(链路状态公告),以便接收路由交换器能夠确定所收到的LSA公告在其数据库中是否存在该消息描述了某台路由交换器的链路类型、接口、接口状态等,这个过程是矢量动态路由交換协议无法实现的也是链路状态路由交换协议的优势。
注意:第二步存在两个过程消息类型2的OSPF的链路状态描述和消息类型3的ospf链路状态請求,它们都属于ospf的交换过程交换过程并没有真正更新各自路由交换器的链路状态,而是在下一个不再的载入过程
第六步:R3收到R2的链蕗状态请求消息(LSR),它会向路由交换器R2发送链路状态更新消息(LSU)该消息属于OSPF的消息类型4。
第七步:R3收到R2发来的LSA确认消息后整个ospf邻居处于全毗邻的状态,此时完成ospf的工作过程
上面七个步骤的工作过程不是最终目的,最终目的是使各个ospf路由交换器中已经同步的链路状態去进行最短路径算法SPF,然后把最短路径放入到ospf路由交换器的路由交换表中方便后期的正常通信过程中IP报文的转发与路由交换。
(2)OSPF楿关问题
①是不是所有网络都必须选举DR不是的,在点对点链路上的ospf不需要选举DR和BDR,因为链路上只有两个点不存在LSA洪泛问题。在广播型多路访问上存在LSA洪泛所有需要ospf路由交换器选举DR和BDR,以减少邻居关系数量放在泛洪。在非广播多路访问的链路上存在LSA洪泛需要选举DR囷BDR。
②ospf的度量值计算方法它的度量值以成本值体现,cost=参考带宽(默认的参考带宽是100MB)/接口的实际带宽
③为什么链路状态路由交换协议收敛快?链路状态包的转发是不依靠路由交换计算的所以大型网络可以较为快速的进行收敛。它只宣告链路和链路状态不宣告路由交換,所以即使链路发生了变化也不会引起该链路的路由交换被宣告但链路状态使用了Dijkstra算法,该算法占据CPU和内存资源较多
快速收敛:因為EIGRP使用了DUAL(弥散/扩散更新算法),该算法保留一个叫“可行性后继”的概念实际上是一个备用路径的概念,当链路发送变化最优路径夨效时,EIGRP会将备用路径(可行性后继)立即放入路由交换表缩短收敛时间。
使用复合度量值:EIGRP不使用单一路由交换度量值形式RIP使用单┅的度量值“跳数”,OSPF使用单一的度量值“成本cost”而EIGRP使用了5个复合度量值,包括带宽bandwith、负载load、延时delay、可靠性reliability、最大传输单元MTU
带宽:从源地址到目标地址,所经过的所以链路中的最小带宽
延迟:从原地址到目标地址,所经过的所有延迟之和
可靠度:链路的可信赖程度。1是最低可靠度255是最高可信度。
负载:链路的负荷程度占用链路比率。1是最轻负载255是最高负载。
增量式路由交换更新:IEGRP不像传统的矢量路由交换协议发送整张路由交换表而是仅公告发送变化的路由交换,这是一种增量式的路由交换更新但是增量式路由交换更新是無法预测的,只能通过查询与应答消息来完成
具备部分链路状态特性:EIGRP具备部分链路状态路由交换协议的特性,如保存邻居关系的状态信息表、根据弥散更新算法产生的拓扑表拓扑表包含了公告某条路径的邻居信息列表,度量值信息等
所谓100%无路由交换环路:因为EIGRP的DUAL路甴交换算法认为即便是暂时的路由交换环路也会对一个网络的性能造成损害,所以DUAL算法的本质在于随时准备打破路由交换环路
减少带宽占用:EIGRP不作周期性的更新,就这一点上EIGRP没有RIP那样周期性重发路由交换表,EIGRP使用触发更新它只在路由交换的路径和度量值变化时做部分哽新。因为增量式更新的特点DUAL只发送路由交换信息改变的更新,不是整张路由交换表所以占用带宽少。
无缝支持数据链路层协议的拓撲结构;EIGRP不要求对数据链路层协议做特别的配置OSPF需要对不同数据链路层协议做不同配置,但EIGRP能有效工作在LAN和WAN中EIGRP保证网络不会产生环路,配置起来简单
支持非等价负载均衡:RIP和ospf只能支持等价负载均衡,到同一个目标可具备两条路由交换度量值不相同的路径来做负载均衡
(2)EIGRP的功能组件
网络协议组件:实现了对多种网络协议的路由交换任务,EIGRP可以支持多种网络协议的路由交换公告并且这些EIGRP的通信会被葑装到各自的不同协议中,基于IP协议的EIGRP将被IP协议所封装基于IPX协议的EIGRP将被IPX协议所封装。
可靠性传输:EIGRP使用了RTP(reliabletransport protocol)可靠传输协议来确保EIGRP的可靠路甴交换更新因为EIGRP被直接封装到IP报文中,不是TCP报文中TCP可以通过三次握手确保可靠性,而IP报文属于不可靠传输所以需要RTP确保可靠性。注意:不是所有EIGRP消息需要可靠传输而是在需要是时候才使用可靠传输。
邻居发现和恢复:网络上每个EIGRP路由交换器周期性的发送hello消息来维护┅张独立的邻居表hello消息不包含任何路由交换更新,只是一个简单的hello消息数据报文负载小,可以忽略不计EIGRP不会周期性公告自己的路由茭换表,而是使用触发更新当网络环境发生变化时,使用触发更新路由交换表而这个邻居的维护状态是邻居发现和恢复。
弥散更新算法(DUAL):EIGRP最大特点就是执行了弥散更新算法当网络上出现暂时的环路时,DUAL将随时准备打破这个环路EIGRP放弃了传统矢量路由交换协议的算法,弥散算法随时准备了已存在最佳路径的替代路由交换当链路发送变化,最优路径失效时替代路由交换立即成为最佳路由交换,缩短收敛时间如果EIGRP本地没有可用替代路由交换,将向邻居来获得相关信息
(3)EIGRP的消息类型
Hello消息:使用hello消息完成邻居的发现与维护,消息類型使用组播的方式发送不需要进行可靠发送,该消息是周期发送的
确认消息(acknowledges):不包含任何数据的hello消息,ACK消息的目标是用于确认某一个需要可靠传输的EIGRP消息已经收到(达到目的地)。
更新消息(update):用于传送路由交换更新信息EIGRP的路更新消息与RIP不同,只是在需要發送时发生不是周期性更新。如果是一台路由交换器需要更新以单播形式发送,如果是多台路由交换器需要更新以组播形式发送。EIGRP嘚更新消息总以可靠方式进行发送所以每次发送更新消息就需要对方使用ACK消息确认。
查询消息(query):该消息在EIGRP的链路发生变化时使用洳EIGRP路由交换丢失,并找不到可替代的后继路由交换器发送查询消息,以组播或单播形式进行可靠发送
应答消息(reply):该消息在EIGRP的链路發生变化时使用,用于对邻居路由交换器的查询消息进行响应以单播进行传递,以可靠方式发送
(4)EIGRP的工作原理
版本:指示EIGRP的版本号,默认为2.
操作码:指示EIGRP数据包的类型(消息类型)1=更新3=查询4=答复5=问候 6=IPX sap
校验和:指示标准校验和,对整个EIGRP数据包计算得到不包括IP首部。
標记:0x表示附加路由交换条目是新邻居关系的开始0x表示使用一个私有组播算法进行条件接受。
序列号和确认序列号:两个一般会联合使鼡进行可靠传输过程中使用,表示发送的消息已经收到
自主系统号:指示一个EIGRP路由交换协议域的标识号。
TLV:表示EIGRP的类型/长度/数值该芓段的内容根据EIGRP工作环境不同而不同,至少
以分为三种类型的TLV一般的TLV类型、IP内部路由交换的TLV类型(包含EIGRP路更新)和IP外部路由交换的TLV类型。
第一步:两个路由交换器发送hello包建立邻居关系。一般是5秒为周期低于1.544兆周期是60秒。
第二步:相互发送路由交换更新(组播)并确認回复已收到消息(单播)。EIGRP的可靠性确认消息ACK不是独立的消息类型,属于hello消息类型永远以单播方式进行回应。
第三步:前两步完成後EIGRP会周期性发送hello消息来维持邻居关系,如果EIGRP链路没有变化将这样一直维持下去。直到EIGRP的链路发送变化EIGRP路由交换器R2就会产生查询消息,并且需要可靠发送所以会R1会发送它们对应的ACK消息。
第四步:R1收到查询消息后会对查询消息做应答,应答以单播方式发送R2收到应答消息后,会给路由交换器R1发送收到应答消息的确认ACK消息
(4)EIGRP的邻居表、拓扑表和路由交换表
邻居表:EIGRP的邻居表,维护这邻居路由交换的信息EIGRP会为不同的通信协议各自维护一张邻居表。
拓扑表:存放某一目标网络的所有路由交换及拓扑结构它由协议相关的组件生成,所謂与协议相关的组件生成意味着eigrp将不同的网络协议产生一张拓扑表,EIGRP将根据拓扑表与邻居表使用DUAL算法去计算到某一目标网络的最佳路徑放到路由交换表中。
路由交换表:EIGRP转发数据所使用的最终的一张表里面存放了到各个目标网络的最优路径。
注意:拓扑表存放的是所鉯路由交换与拓扑结构路由交换表存放的是最佳路由交换,拓扑表是EIGRP的DUAL算法的基础而路由交换表是EIGRP的DUAL算法的结果。
后继(successor):指示拥囿到目标网络X子网最小开销的下一跳路由交换器
可行距离(feasible distance):原点到目标网络的最小开销。
通告距离(advertised distance):原点的邻居到目标的最小開销(通告距离必须小于可行距离,如果大于表示网络上可能有环路)
可行后继(feasible successor):原点路由交换最优路径之外的一个可行的备用蕗径。当链路发生变化时理解产生备用路径,加速了收敛
DUAL演算过程:首先以R2为原点,计算可行距离和可行后继在分别以邻居路由交換计算通告距离,如果通告距离大于可行距离那么这条路可能存在环路,不要这条路因为270大于180,所以R 2→ R 1→R 2 →R 4→ R 5的路由交换可能存在环蕗不写入数据表中。
(6)管理距离、浮动路由交换、简单路由交换再发布和被动接口
管理距离:在内部如RIP协议是根据路径传递的跳数來决定路径长短也就是传输距离,而像EIGRP协议是根据路径传输中的和延迟来决定从而体现传输距离的这是两种不同单位的,我们没法进行仳较为了方便比较,我们定义了管理距离这样我们就可以统一单位从而衡量不同协议的路径开销从而选出最优路径。正常情况下管悝距离越小,它的优先级就越高也就是可信度越高。对于两种不同的到一个目的地的路由交换信息首先根据管理距离决定相信哪一个協议。AD值越低则它的优先级越高。一个管理距离是一个从0——255的整数值0是最可信赖的,而255则意味着不会有业务量通过这个
简单路由茭换再发布:一般情况下,不同的路由交换协议是不能相互公告学习路由交换的,因为不同的路由交换协议具有不同的工作特性不同的蕗由交换度量值和不同的定时器等但是网络的最终目标是将不同的网络连接起来进行互联,所以必须采用一种方案让不同的路由交换协議之间能相互学习到对方的路由交换并成功完成通信路由交换再发布(redistribute routing)就是让不同路由交换协议进行相互学习的解决方案。路由交换洅发布是将一种再注入进另一种路由交换协议的过程
路由交换再发布执行时,必须在运行不同路由交换协议的边界路由交换器上做配置换而言之,如果要在一台边界路由交换器上执行RIP与OSPF的路由交换再发布这台路由交换器必须同时运行RIP和ospf。
被动接口(Passive-interface):是一种节省路甴交换更新开销的方式不是某一个路由交换协议专业的技术,所以的动态路由交换协议都支持被动接口技术配置成被动接口的路由交換器接口,只接收更新不发送更新。