剪不断理还乱缺省路由第三篇Word格式文档下载.docx
《剪不断理还乱缺省路由第三篇Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《剪不断理还乱缺省路由第三篇Word格式文档下载.docx(9页珍藏版)》请在冰豆网上搜索。
骨干层和汇聚层分别是两个自治系统,AS100有两个出口路由器RTC,RTD上行到AS200。
骨干层RTE和RTF之间运行OSPFarea0
;
汇聚层RTA、RTB、RTC、RTD之间运行OSPFarea0。
AS200与AS100建立EBGP邻居关系,即RTE与RTC,RTF与RTD建立EBGP邻居关系;
RTC与RTD,RTE与RTF建立IBGP邻居关系。
骨干层通过RTE、RTF下发BGP缺省路由引导汇聚层流量出AS,汇聚层将OSPF明细路由引入BGP通告给骨干层。
汇聚层出口设备RTC、RTD通过OSPF强制下发缺省路由给汇聚层各个设备,引导汇聚层流量上行。
2、发布缺省路由
骨干层不希望汇聚层知道它的明细路由,因此骨干层通过RTE、RTF下发BGP缺省路由引导上行流量。
为减少汇聚层各设备的路由表规模,汇聚层ASBR通过OSPF给汇聚层各个下挂设备强制下发缺省路由引导上行流量。
如图3所示,AS200与AS100间通过BGP下发缺省路由的方式向汇聚层下发缺省路由,AS100内部ASBR通过OSPF强制下发方式分别下发缺省路由。
图3
发布缺省路由
配置完成后,RTC上通过EBGP学习到一条指向RTE的缺省路由,RTD上通过EBGP学习到一条指向RTF的缺省路由。
RTA和RTB都是通过OSPF学习到两条等价的缺省路由,负载分担。
详细如下所示:
<
RTC>
displayiprouting-table
RouteFlags:
R-relay,D-downloadtofib
------------------------------------------------------------------------------
RoutingTables:
Public
Destinations:
24
Routes:
26
Destination/Mask
Proto
Pre
Cost
FlagsNextHop
Interface
EBGP
255
0
D
GigabitEthernet1/0/0
……
RTD>
RTA>
18
21
O_ASE
150
1
GigabitEthernet0/0/0
GigabitEthernet0/0/1
RTB>
业务流向
如图4所示,按照上述组网规划进行业务部署以后,上行流量依靠RTA和RTB、及RTC和RTD的缺省路由引导出去,RTA和RTB上行的流量负载分担。
图4
OSPF强制下发时的业务流向
OSPF强制下发缺省路由可能产生环路和次优路由的问题
特殊场景下产生次优路由
如图5
所示,RTD的上行链路故障后,RTD不能从RTF学到BGP缺省路由,但由于RTC和RTD是IBGP邻居关系,所以RTD可以通过RTC学习到缺省路由。
而RTD上依然给下挂设备下发缺省路由,所以RTA的出流量负载分担,有部分流量发往RTD,这条转发路径并不是最优的,产生了次优路由。
图5
OSPF强制下发缺省路由-特殊场景下产生次优路由
特殊场景下产生环路
如图6所示,RTD的上行链路以及RTD连接RTC的横穿链路故障以后,RTD不能从RTF学到BGP缺省路由,但还可以通过RTA、RTB学到IBGP缺省路由(因为RTC和RTD是IBGP邻居关系,而BGP基于TCP的连接,所以只要还有路由能通即可建立IBGP邻居关系),形成负载分担;
该缺省路由经过一次迭代,实际下一跳指向了RTA和RTB。
而RTA的缺省路由下一跳指向RTC和RTD。
按照上述缺省路由的指引,RTA的部分流量发往RTD,RTD的部分流量又重新发回RTA,在RTA和RTD之间形成环路。
问题主要是链路故障以后,RTD依然“固执”的给RTA和RTB下发缺省路由导致的。
图6
OSPF强制下发缺省路由-特殊场景下产生环路
详细的路由表如下:
[RTD]display
iprouting-table
verbose
RoutingTable:
SummaryCount:
1
Destination:
Protocol:
IBGP
ProcessID:
0
Preference:
255
Cost:
NextHop:
Neighbour:
State:
ActiveAdvRelied
Age:
00h01m16s
Tag:
0
Priority:
low
Label:
NULL
QoSInfo:
0x0
IndirectID:
0x1
RelayNextHop:
Interface:
GigabitEthernet0/0/1
TunnelID:
0x0
Flags:
RD
GigabitEthernet0/0/2
OSPF强制下发缺省路由存在的问题总结
特殊场景下产生环路和次优路由的根本原因是OSPF配置了强制下发缺省路由,这样无论RTC、RTD本机是否存在激活的非OSPF缺省路由,都会产生并发布一个描述缺省路由的LSA。
说的通俗一点就是RTC、RTD在下发OSPF缺省路由的时候太固执,不够灵活。
可以通过配置OSPF非强制下发,同时配合修改路由协议优先级来解决上述问题,具体细节在下面的章节中进行讲解。
OSPF非强制下发缺省路由解决环路和次优路由的问题
OSPF非强制下发缺省路由的规则
根据上一节的分析,特殊场景下产生次优路由和环路的根本原因是OSPF配置了强制下发缺省路由,这样无论RTC、RTD本机是否存在激活的非OSPF缺省路由,都会产生并发布一个描述缺省路由的LSA。
能否让OSPF下发缺省路由灵活一点,不那么固执呢?
可以通过配置OSPF非强制下发缺省路由,同时配合修改路由协议优先级来实现。
图7
OSPF非强制下发缺省路由
如图7所示,通过ospf进程视图下配置default-route-advertise命令实现OSPF非强制下发缺省路由,此时RTC和RTD上面OSPF遵循如下原则下发缺省路由:
当RTC和RTD都满足非强制下发的条件(即当前路由表中存在激活的非OSPF缺省路由时),同时下发缺省路由LSA时,相互不学习到对方的OSPF缺省路由(OSPF路由表中不生成缺省路由)。
此时即使手工调高OSPF外部路由的优先级(如改为10)使其优于当前路由表中的缺省路由,路由器也不学习到对方的OSPF缺省路由。
当其中一台路由器(RTD)不满足非强制下发的条件时(即当前路由表中不存在激活的非OSPF缺省路由时),会计算、学习到对方的OSPF缺省路由。
当RTD上再次通过其它路由协议(包括静态)学习到缺省路由后,除非该路由的协议优先级高于OSPF外部路由,否则仍不会触发RTD下发OSPF缺省路由(这一点在后面会详细讲解,并给出解决方案)。
此时业务流向图如图8所示:
图8
OSPF非强制下发缺省路由时的业务流向
特殊场景下次优路由的消失
如图9
所示,当RTD的上行链路故障时,
RTD上不存在激活的非OSPF进程的缺省路由了,此时RTD不再给汇聚层设备下发OSPF缺省路由,这样RTA的上行流量只有一个出口。
虽然此时RTD的缺省路由指向RTC,但是由于RTA没有发往RTD的流量,所以不会形成次优路由。
此时,整个汇聚层以RTC为出口。
图9
OSPF非强制下发缺省路由-次优路由消失
详细路由表项如下:
display
20
23
特殊场景下环路的消失
如图10所示,当RTD的上行链路以及RTD和RTC互联的链路同时故障时,RTD上不存在激活的非OSPF进程的缺省路由了,此时RTD不再给汇聚层设备下发OSPF缺省路由,这样RTA的上行流量都只有一个出口。
同时RTD从RTA和RTB上学习到两条OSPF缺省路由,负载分担。
但是由于这样RTA的上行流量都只有一个出口,不会有流量发往RTD,因此不会形成环路。
图10
OSPF非强制下发缺省路由-环路消失
[RTD]disiprouting-table
GigabitEthernet0/0/2
修改EBGP默认路由优先级使之优于O_ASE
在IP网络规划设计的时候,针对本文所描述的组网场景,一般建议修改EBGP默认路由优先级使之优于O_ASE。
那么为什么会有这样的建议呢?
下面通过实验详细说明。
在前面的讨论中,当RTD的上行链路故障时,在OSPF非强制下发的时候不会形成次优路由,RTD不具备下发缺省路由的条件了,因此不再下发缺省路由,RTA和RTB上行只有一条下一跳指向RTC的缺省路由。
那么当RTD的上行链路恢复正常的时候,是不是应该重新恢复成原来的流量模型?
即RTA和RTB都是有两条缺省路由。
把RTD的上行链路shutdown以后,路由表项如下:
[RTC]display
25
[RTD]displayiprouting-table
从上述表项可以看出,RTD不具备下发缺省路由的条件以后,不再下发缺省路由,RTA和RTB上都只有一条下一跳指向RTC的缺省路由。
接下来,把RTD的上行链路恢复正常,可以发现虽然RTD重新从EBGP学习到了缺省路由,但是仍然没有触发RTD下发OSPF缺省路由,RTA、RTB、RTC、RTD的路由表项仍然和链路没恢复的时候是一样的。
这是为什么呢?
按照网络规划这显然不是理想的可靠性要求,这样会导致当链路恢复正常的时候所有AS100的流量都以RTC为出口,给RTC带来的极大的流量压力。
产生上述现象的原因在“OSPF非强制下发缺省路由的规则”小节里面已经讲过,当RTD上再次通过其它路由协议(包括静态)学习到缺省路由后,除非该路由的协议优先级高于OSPF外部路由,否则仍不会触发RTD下发OSPF缺省路由。
默认情况下EBGP的优先级为255,低于O_ASE路由的优先级150,这样当然就不能触发RTD重新下发缺省路由。
在IP网络规划设计中建议修改EBGP默认路由优先级使之优于O_ASE主要目的就是为了解决上述问题的。
配置方法是在BGP进程下配置preference120255255,配置EBGP的优先级为120,高于O_ASE的优先级150。
这样,当RTD上行链路恢复正常的时候,RTD就重新具备了下发缺省路由的条件,就会重新触发RTD下发缺省路由。
对于RTC也需要做同样的配置,避免RTC上行链路故障的时候出现上述问题。
OSPF下发缺省路由时网络规划建议
建议一、建议采用非强制方式下发OSPF默认路由
通过上述分析可以看出,OSPF强制下发缺省路由在特殊场景下会产生次优路由和环路的问题,所以一般建议使用OSPF非强制下发缺省路由的方式,即对于自治系统边界路由器(ASBR),一旦失去对外的连接(例如依赖的外部路由消失),那么就要停止发布缺省路由。
这主要用于解决当OSPF路由域存在多个出口的ASBR时,可以通过别的ASBR出口继续转发报文。
建议二:
建议修改EBGP协议优先级优于O_ASE的协议优先级。
OSPF非强制下发缺省路由其中一个原则是,当ASRB不具备下发缺省路由的条件时(即当前路由表中存