自治系统:autonomous system。在互联网中,一个自治系统(AS)是一个有权自主地决定在本系统中应采用何种路由协议的小型单位。这个网络单位可以是一个简单的网络也可以是一个由一个或多个普通的网络管理员来控制的网络群体,它是一个单独的可管理的网络单元(例如一所大学,一个企业或者一个公司个体)。一个自治系统有时也被称为是一个路由选择域(routing domain)。一个自治系统将会分配一个全局的唯一的16位号码,有时我们把这个号码叫做自治系统号(ASN)
内部网关协议(Interior Gateway Protocol,简称IGP)运行在AS内部的路由协议,主要解决AS内部的选路问题,发现、计算路由。
主要有: RIP1/RIP2、 OSPF、ISIS、EIGRP (思科私有协议)
外部网关路由协议,运行在AS与AS之间的路由协议,他解决AS之间选路问题。
主要有:BGP 边界网关协议(Border Gateway Protocol,BGP)
RIP1/2、 BGP (路径矢量协议)、EIGRP (高级距离矢量协议)路由器对全网拓扑不完全了解。是“传说的路由”,A发路由信息给B,B加上自己的度量值又发给C,路由表里的条目是听来的。
OSPF、 ISIS路由器对全网拓扑完全了解。是“传信的路由”,A将信息放在一封信里发给B,B对其不做任何改变,拷贝下来,并将自己的信息放在另一封信里,两封信一起给C,这样,信息没有任何改变和丢失,最后所有路由器都收到相同的一堆信,这一堆信就是LSDB。然后,每个路由器运用相同的SPF算法,以自己为根,计算出SPF Tree (即到达目的地的各个方案),选出最佳路径,放入路由表中。
OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。著名的迪克斯彻(Dijkstra)算法被用来计算最短路径树。OSPF支持负载均衡和基于服务类型的选路,也支持多种路由形式,如特定主机路由和子网路由等。
作为一种链路状态的路由协议,OSPF将链路状态组播数据LSA(Link State Advertisement)传送给在某一区域内的所有路由器,这一点与距离矢量路由协议不同。运行距离矢量路由协议的路由器是将部分或全部的路由表传递给与其相邻的路由器。
注意:OSPF是间接设置了周期性更新路由的规则,因为所有路由都是有刷新时间的,当达到刷新时间阀值时,该路由就会产生一次更新,默认时间是1800秒。
1、建立邻居表
2、形成链路状态数据库
3、形成路由表
建立邻接关系(学习链路状态信息)—>链路状态数据库(–Dijkstra算法)—>最短路径树—>路由表
简单说就是两个相邻的路由器通过发报文的形式成为邻居关系,邻居再相互发送链路状态信息形成邻接关系,之后各自根据最短路径算法算出路由,加入OSPF路由表,OSPF路由与其他路由比较后优的加入全局路由表。
OSPF的简单说就是两个相邻的路由器通过发报文的形式成为邻居关系,邻居再相互发送链路状态信息形成邻接关系,之后各自根据最短路径算法算出路由,放在OSPF路由表,OSPF路由与其他路由比较后优的加入全局路由表。整个过程使用了五种报文、三个阶段、三张表。
hello包的作用有3个:
(1)发现、建立、维护邻居关系
(2)选举DR与BDR:
为减小多路访问网络中OSPF流量,OSPF会选择一个指定路由器(DR)和一个备份指定路由器(BDR)。当多路访问网络发生变化时,DR负责更新其他所有OSPF路由器。BDR会监控DR 的状态,并在当前DR发生故障时接替其角色。
(3)确保双向通信
2. DBD(Database Description):
LSDB的描述信息,主从关系,包含路由的摘要信息。
3. LSR(Link state request):
用于向相邻的OSPF路由器请求部分或全部的数据,这种数据包是在当路由器发现其数据已经过期时才发送的。 在收到对方的DD报文之后,和本地进行比较DD报文就会知道我缺少什么路由条路(某条LSA信息),这个时候本路由器会发送LSR请求具体的LSA。
4. LSU(Link state update):
用来回应LSR该条路由的完整信息。在OSPF中,只有LSU需要显示确认。
5. LSAck:
用来对LSU确认
注:OSPF只能使用接口的Primary地址建立邻居,不能使用secondary建立邻居。路由器双方接口要么都为手工配置地址(numbered)要么都为借用地址(umnumbered),否则无法建立邻居
刚刚连接,还没有发送hello包的状态。
发送hello包,但是没有收到对方的hello包(attempt:NBMA特有)
收到hello包,接着发送hello包,建立邻居关系,
选举DR与BDR,但OSPF邻居不一定会交换LSA,如果不需要交换LSA,则永远停留在此状态。(比如:Drother与Drother之间将永远停留在two-way状态,因为它们之间不需要交换LSA) 达成邻接状态。
使用DBD包选举主从关系,ROUTER-ID数字大的为主路由器,另一端的为从路由器,由主路由器先向从路由器发送信息。在选举DR和BDR的网络环境中,并不一定DR就是主路由器,BDR就是从路由器,因为DR和BDR可以通过调整接口优先级来控制,所以DR也许是因为优先级比BDR高,而router-id并不比BDR高。在任何网络环境下,OSPF在交换LSA之前,都需要确定主从关系。这里的DBD包只有包头,如果MTU不匹配,就会卡在这个状态。
交换DBD的过程,DBD只是LSA的简单描述,只包含LSA的一些头部信息,收到DBD的路由器会和自己的链路状态数据库做对比,确定需要哪些LSA的完整信息,就会发送LSA请求给邻居。LSAck包,此时知道自己缺少什么
使用LSR,LSU,LSAck包,进行LSA的交流,邻居根据收到的LSR,向对方回复LSU,LSU包中包含的就是LSA的信息,真正的数据同步过程
完全临接关系,此时LSDB是同步的。等到OSPF都收到了邻居回复的所有LSU,那么此时的数据库状态就变成了收敛状态,即FULL状态,但此时只是数据库已经同步,路由表却还在计算当中。
注意点:
邻居:物理上直连,只交换hello包
邻接(adjacency):建立逻辑上关系,two-way,不仅交换hello包,还要交换LSA
完全邻接:拓扑数据库同步,full
在OSPF路由协议的数据包中,其数据包头长为24个bit,包含如下8个字段:
Database Description:两台路由器进行数据库同步时,用DD报文来描述自己的LSDB,内容包括LSDB中每一条LSA的Header(LSA的Header可以唯一标识一条LSA)。LSA Header只占一条LSA的整个数据量的一小部分,这样可以减少路由器之间的协议报文流量,对端路由器根据LSA Header就可以判断出是否已有这条LSA。
Link State Request :用于向相邻的OSPF路由器请求部分或全部的数据,这种数据包是在当路由器发现其数据已经过期时才发送的。 在收到对方的DD报文之后,和本地进行比较DD报文就会知道我缺少什么路由条路(某条LSA信息),这个时候本路由器会发送LSR请求具体的LSA。
Link state update:这是对LSR的响应,即通常所说的LSA数据包。
Link state acknowledgment:是对LSA数据包的响应。
LSAck报文用来对接收到的LSU报文进行确认,内容是需要确认的LSA的Header。一个LSAck报文可对多个LSA进行确认。
为减小多路访问网络中OSPF流量,OSPF会选择一个指定路由器(DR)和一个备份指定路由器(BDR)。当多路访问网络发生变化时,DR负责更新其他所有OSPF路由器。BDR会监控DR 的状态,并在当前DR发生故障时接替其角色。
BDR和DR/DRother建立完全邻接关系(Full),而其他非指定路由器DRother之间建立部分连接关系,也称为双向邻居关系(Two-Way)。
自动选举
网段上Router ID最大的路由器将被选举为DR,第二大的为BDR。
手工选举
如果没有路由器宣称自己是DR,那么选举的BDR会成为DR
OSPF协议号89 组播地址224.0.0. 5和224.0.0.6
1、DRothers向DR/ BDR发送DBD、LSR或者LSU时目标地址是224.0.0.6 (AllDRouter) ;或者理解为: DR/BDR侦听224.0.0.6
2、DR/BDR向DRothers发送更新的DBD、LSR或者LSU时目标地址是224.0.0.5 (AllSPFRouter) ;或者理解为: DRothers侦听224.0.0.5
OSPF路由协议引入区域的概念。区域:有相同的区域标志的一组路由器和网络的集合,在同一个区域内的路由器有相同的链路状态数据库。就是把运行在同一个ospf AS内的路由器分割成多个区域。这样便于结构化网络的设计和管理。当然这个不是主要目的,主要目的是控制我整个ospf网络的LSA的泛洪和路由条目的有效发送。ospf的区域范围是0-4294967295。
骨干区域负责区域间路由信息传播。作为中央实体,其他区域与之相连,骨干区域编号为 0,在该区域中,各种类型的 LSA 均允许发布。
传播信息要经过骨干区域转发;
除骨干区域外的默认的区域类型,在该类型区域中,各种类型的 LSA 均允许发布。
即 STUB 区域,该类型区域中不接受关于 AS外部的路由信息,即不接受类型 5 的 AS 外部LSA,需要路由到自治系统外部的网络时,路由器使用缺省路由(0.0.0.0),末梢区域中不能包含有自治系统边界路由器 ASBR。
该类型区域中不接受关于 AS 外部的路由信息,同时也不接受来自 AS 中其他区域的汇总路由,即不接受类型 3、类型 4、类型 5 的 LSA,完全末梢区域也不能包换有自治系统边界路由器 ASBR。
内容:路由器直连接口和COST值
内容:拓扑信息和掩码
Type-1 LSA( Router LSA ,路由器 LSA )和 Type-2 LSA( Network LSA ,网络 LSA )是描述区域内的网络拓扑和 IP 网段信息,只能在区域内泛洪。有了这两种 LSA ,区域内的路由器就可以计算出区域内各个网段的路由,这些路由叫做区域内部路由
Type-3 LSA( Network Summary LSA ,网络汇总 LSA )用于描述一个区域内的路由信息,并在其它区域内传递。也就是说,这种 LSA 用来告诉其它区域到达生成 LSA 这个区域的路由,这些路由叫做区域间路由。
通过show ip ospf border-routers看
重分布试验,看路由表是O E2,表示5类LSA的2类路由条目,OIA是3类LSA
OE1和OE2的区别:OE2不累加COST值,整个不同路由协议重分布进OSPF时间,有一个SEED COST值,是恒为20的,不进行累加,所以OE2没办法体现路由的路径开销。若想知道实际的COST值则改为OE1路由:redistribute rip subnets metric-type 1
在重分布的时候,如果命令为redistribute rip subnets 就为OE2
如果是redistribute rip subnets metric-type 1,就会成为OE1
串口COST会64的进行累加,以太网为10
(1)由ASBR产生 oe2
(2)整个OSPF域内有效(除了stub totally stub nssa)
R3(config)#router ospf 1
R3(config-router)#redistribute rip subnets 默认OE2
R3(config-router)#redistribute rip subnets metric-type 1 改成OE1
由谁产生:ASBR产生。可以穿越全网
LSA6 MOSPF中使用,思科的路由器不支持MOSPF 多协议ospf
LSA8 在BGP中作为扩展属性
LSA9-11 在MPLS中使用 多协议标签交换
区域内部路由器也有可能是ASBR
区域规则:
区域的作用:
在STUB区域的基础上把区域间的路由也过滤掉
可以由SHOW看到,出现了一条默认路由为N2开头的路由,此为7类的路由。通过在ABR上SHOW 路由表可以看到,此条路由的COST值为一,由于不累加,此COST值得默认是恒为一。在ASBR上可以看到数据库,有7类的LSA,并且会显示所在区域,和5类LSA不同。
在show ip ospf border-routers?
可以看到,NSSA区域的ABR,在列表中显示变成ASBR,是因为虽然7类LSA变成了5类LSA,它也是通过这个ABR变的,只要这个设备发送了5类LSA,那它就是ASBR,所有ABR的设备会变成ASBR。虽然他仍然在OSPF中,也没外界不同的路由协议。
注意:
1.在末节区域下,ABR自动发出的默认路由,metric值默认为1,可通过命令area area-id default-cost cost修改,默认路由除了默认的cost以外,还会累加真实接口的cost值
2.骨干区域不能配置为任何末节区域
3.当将某个区域配置为末节区域后,则区域中所有路由器都必须为末节区域,因为配置为末节区域的路由器上所有接口发出的hello包中都会有末节标签,所以如果对方没有末节标签,则不能成为邻居
作用 | 是否下放默认路由 | 接收区域间路由 | 是否可以重分布外部路由 | |
---|---|---|---|---|
Stub | 过滤LSA4/5 | 是(LSA3)SEED COST=1 | 是 | 否 |
Totally Stub | 过滤LSA3/4/5 | 是(LSA3)SEED COST=1 | 否 | 否 |
NSSA | 过滤LSA4/5 | 否(defult:LSA7)COST=1 | 是 | 是 |
Totally NSSA | 过滤LSA3/4/5 | 是(no-su:LSA3)COST=1 | 否 | 是 |
总结四种特殊区域:E-bit位设置为0
1.凡是带totally的是思科私有的
2.默认情况下,stub,totally stub,totally nssa区域默认会产生O*IA,nssa区域不会产生缺省路由
3.如果想让nssa区域产生缺省路由,在ABR上打:area 1 nssa default-information-originate
4.准则:特殊区域的ASBR不会告诉给其他区域,其他区域的ASBR也不会告诉给特殊区域
参考自:
https://zhuanlan.zhihu.com/p/463267606
https://blog.csdn.net/qq_47855463/article/details/115122239
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。