技福小咖
作者技福小咖·2022-09-20 17:10
网络工程师·技福小咖

OSPF与BGP两个路由协议的应用场景

字数 7218阅读 2378评论 0赞 0

OSPF的定义

OSPF (Open Shortest Path First 打开最短路径 )是内部网关协议。内部网关协议(IGP)工作组的成立是为了设计基于最短路径优先(SPF)算法的IGP,以便在Internet协议网络中使用,它使用链接状态路由。具有路由变化收敛速度快、无路由环路、支持变长子网掩码(VLSM)和汇总、层次区域划分等优点。

在网络中使用OSPF协议后,大部分路由将由OSPF协议自行计算和生成,无须网络管理员人工配置,当网络拓扑发生变化时,协议可以自动计算、更正路由,极大地方便了网络管理。OSPF是一种可以在层次结构中运行的链路状态路由。层次结构中最顶层和最大的实体是自治系统。OSPF调用分层区域内的路由器以链接状态通告。OSPF是由于RIP的限制而创建的。RIP协议服务大型异构Internetworks的能力有限。

BGP的定义

BGP (Border Gateway Protocol 边界网关协议 ),是用于交换Internet路由信息的外部网关协议。通过使用任意拓扑,BGP可以连接自治系统的任何互联网络。BGP是唯一的一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。BGP构建在EGP的经验之上。BGP系统的主要功能是和其他的BGP系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了AS互联的拓扑图并由此清除了路由环路,同时在AS级别上可实施策略决策。它仅需要在每个自治系统上至少具有一台具有运行BGP的能力的路由器,而该BGP必须连接到至少一个其他自治系统的BGP路由器。

BGP可以管理以任何配置(例如全网状,部分网状)连接的一组AS,并且还可以处理随着时间推移拓扑中发生的更改。 BGP系统基本上与其他BGP系统交换网络可达性信息,并在BGP路由器上使用接收到的可达性信息创建自治系统图。路径向量路由机制之所以用于BGP系统中,是因为当操作范围变大时,距离向量路由和链接状态路由变得棘手。

联系和区别

OSPF和BGP都是用于互联网选路的协议。是目前世界上最流行的两种基于标准的 动态路由协议 。它们代表了一组规则或者算法,可以指导路由器之间相互通信,以便它们将流量定向到最佳路径。BGP在大型网络中具有动态路由优势,而OSPF具有更高效的路径选择和收敛速度。虽然BGP和OSPF都是动态路由协议,执行类似的任务,但它们计算路由策略和发布路由的方式不同。

如果要进行内部路由,即在站点,企业或某个独立网内进行路由,则需要使用OSPF。一般来说,在站点边缘需要BGP,您可以在其中路由到公共互联网上。在中小型网络中,到外部的静态路由通常比建立BGP更可取。如果您有一个复杂的多宿主站点,无论其大小如何,都可以考虑使用BGP。

OSPF和BGP路由协议之间最主要的区别是前者属于IGP(内部网关协议),而后者则属于EGP(外部网关协议)。OSPF是以链路状态为根据进行选路,一般运行在AS自治系统内部,而BGP协议是建立在IGP协议基础之上的高级路由选择协议,一般是由ISP服务提供商运用在各个AS自治系统之间。

下表总结了OSPF和BGP之间的区别:

名称OSPFBGP
协议类别内部网关协议路由操作在自治系统内部执行外部网关协议能够在两个自治系统之间执行
协议IP协议TCP协议
设计分层网络可能完全网格化即网状
设备资源需求内存和CPU密集型,扩展性优于OSFP尽管BGP依赖于路由表的大小,但伸缩性更好。
实施难度易于实施实施复杂
使用的算法Dijkstra算法最佳路径算法
功能最快的路线优先于最短的路线。确定数据报的最佳路径。
类型链接状态,即使用链接状态路由路径向量路由
收敛速度快速
协议号协议号89端口号179
网络规模主要用于规模较小的网络,可以集中管理。在更大的网络中使用,通常用于大型网络,例如互联网。

对于大多数项目,我都不推荐使用IS-IS。IS-IS是一种类似于OSPF的链路状态协议,但很少使用,通常仅在ISP时代才使用。

场景使用

( 一)OSPF区域场景

OSPF区域划分

随着网络规模日益扩大,当一个大型网络中的路由器都运行OSPF协议时,LSDB会占用大量的存储空间,并使得运行SPF(Shortest Path First,最短路径优先)算法的复杂度增加,导致CPU负担加重。在网络规模增大之后,拓扑结构发生变化的概率也增大,网络会经常处于“震荡”之中,造成网络中会有大量的OSPF协议报文在传递,降低了网络的带宽利用率。更为严重的是,每一次变化都会导致网络中所有的路由器重新进行路由计算。OSPF协议通过将自治系统划分成不同的区域来解决上述问题。区域是从逻辑上将路由器划分为不同的组,每个组用区域号来标识。如图所示。

OSPF区域划分

OSPF路由的计算过程

同一个区域内,OSPF路由的计算过程可简单描述如下:

⚫ 每台OSPF路由器根据自己周围的网络拓扑结构生成LSA,并通过更新报文将LSA发送给网络中的其它OSPF路由器。

⚫ 每台OSPF路由器都会收集其它路由器通告的LSA,所有的LSA放在一起便组成了LSDB。LSA是对路由器周围网络拓扑结构的描述,LSDB则是对整个自治系统的网络拓扑结构的描述。OSPF路由器将LSDB转换成一张带权的有向图,这张图便是对整个网络拓扑结构的真实反映。各个路由器得到的有向图是完全相同的。

⚫ 每台路由器根据有向图,使用SPF算法计算出一棵以自己为根的最短路径树,这棵树给出了到自治系统中各节点的路由。

区域的边界是路由器,而不是链路。一个路由器可以属于不同的区域,但是一个网段(链路)只能属于一个区域,或者说每个运行OSPF的接口必须指明属于哪一个区域。划分区域后,可以在区域边界路由器上进行路由聚合,以减少通告到其他区域的LSA数量,还可以将网络拓扑变化带来的影响最小化。

常见两种OSPF常见配置错误举例

(1)OSPF邻居无法建立

故障现象

OSPF邻居无法建立。

问题分析

如果物理连接和下层协议正常,则检查接口上配置的OSPF参数,必须保证与相邻路由器的参数一致,区域号相同,网段与掩码也必须一致(点到点与虚连接的网段与掩码可以不同)。

处理过程

1) 使用display ospf peer命令查看OSPF邻居状态。

2) 使用display ospf interface命令查看OSPF接口的信息。

3) 检查物理连接及下层协议是否正常运行,可通过ping命令测试。若从本地路由器Ping对端路由器不通,则表明物理连接和下层协议有问题。

4) 检查OSPF定时器,在同一接口上邻居失效时间应至少为Hello报文发送时间间隔的4倍。

5) 如果是NBMA网络,则应该使用peer ip-address命令手工指定邻居。

6) 如果网络类型为广播网或NBMA,则至少有一个接口的路由器优先级大于零。

(2)OSPF路由信息不正确

故障现象

OSPF不能发现其他区域的路由。

问题分析

应保证骨干区域与所有的区域相连接。若一台路由器配置了两个以上的区域,则至少有一个区域应与骨干区域相连。骨干区域不能配置成Stub区域。在Stub区域内的路由器不能接收外部AS的路由。如果一个区域配置成Stub区域,则与这个区域相连的所有路由器都应将此区域配置成Stub区域。

处理过程

1) 使用display ospf peer命令查看OSPF邻居状态。

2) 使用display ospf interface命令查看OSPF接口的信息。

3) 使用display ospf lsdb查看LSDB的信息是否完整。

4) 使用display current-configuration configuration ospf命令查看区域是否配置正确。若配置了两个以上的区域,则至少有一个区域与骨干区域相连。

5) 如果某区域是Stub区域,则该区域中的所有路由器都要配置stub命令;如果某区域是NSSA区域,则该区域中的所有路由器都要配置nssa命令。

6) 如果配置了虚连接,使用display ospf vlink命令查看OSPF虚连接是否正常。

(二) BGP的使用场景

主要介绍一下选路规则,简要地说,BGP选择路由的过程为:

1) 丢弃下一跳(NEXT_HOP)不可达的路由;

2) 优选首选值(Preferred-value)最大的路由;

3) 优选本地优先级(LOCAL_PREF)最高的路由;

4) 依次选择 network 命令生成的路由、 import-route 命令引入的路由、聚合路由;

5) 优选AS路径(AS_PATH)最短的路由;

6) 依次选择ORIGIN类型为IGP、EGP、Incomplete的路由;

7) 优选MED值最低的路由;

8) 依次选择从EBGP、联盟EBGP、联盟IBGP、IBGP学来的路由;

9) 优选IGP Metric值最小的路由;

10) 优选迭代深度值小的路由;

11) 如果当前的最优路由为EBGP路由,则BGP路由器收到来自不同的EBGP邻居的路由后,不会改变最优路由;

12) 优选Router ID最小的路由器发布的路由。如果路由包含RR属性,那么在路由选择过程中,就用ORIGINATOR_ID来替代Router ID;

13) 优选下一跳地址为IPv4地址的路由;

14) 优选CLUSTER_LIST长度最短的路由;

15) 优选IP地址最小的对等体发布的路由。

大规模BGP网络所遇问题的解决方法

在大规模BGP网络中,对等体的数目众多,路由表庞大,配置和维护极为不便。通过如下方法,可以降低管理难度,提高路由发布效率。下面分析6种场景下的问题及解决办法。

1) 路由聚合

在大规模的网络中,BGP路由表十分庞大,使用路由聚合(Routes Aggregation)可以大大减小BGP路由表的规模。路由聚合实际上是将多条路由合并的过程。这样BGP在向对等体通告路由时,可以只通告聚合后的路由,而不是将所有的具体路由都通告出去。

目前系统支持自动聚合和手动聚合方式。使用后者还可以控制聚合路由的属性,以及决定是否发布具体路由。

2) 对等体组

在大规模BGP网络中,对等体的数量很多,其中很多对等体具有相同的策略,在配置时会重复使用一些命令。此时,将这些对等体加入一个对等体组,可以简化配置。对等体组是具有某些相同属性的对等体的集合。当一个对等体加入对等体组时,此对等体将获得与所在对等体组相同的配置。当对等体组的配置改变时,组内成员的配置也相应改变。

3) 路由衰减

路由发生变化时,路由协议会向邻居发布路由更新,收到路由更新的路由器需要重新计算路由并修改路由表。如果发生路由震荡,即路由不稳定,路由表中的某条路由反复消失和重现,则会消耗大量的带宽资源和CPU资源,严重时会影响到网络的正常工作。

通常,在多数情况下,BGP协议都应用于复杂的网络环境中,路由变化十分频繁。为了防止持续的路由震荡带来的不利影响,BGP使用衰减来抑制不稳定的路由。BGP衰减使用惩罚值来衡量一条路由的稳定性,惩罚值越高说明路由越不稳定。如下图所示,路由每次从可达状态变为不可达状态,或者可达路由的属性每次发生变化时,BGP给此路由增加一定的惩罚值(系统固定为1000,不可修改)。当惩罚值超过抑制阈值时,此路由被抑制,不参与路由选择。惩罚值达到设置的上限后,不再继续增加。

图 BGP路由衰减示意图

发生震荡的路由如果没有再次震荡,则路由的惩罚值会逐渐减少。每经过一段时间,惩罚值便会减少一半,这个时间称为半衰期(Half-life)。当惩罚值低于再使用阈值时,此路由变为可用路由,参与路由选择。

4) 路由反射器

为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。假设在一个AS内部有n台路由器,那么应该建立的IBGP连接数就为n(n-1)/2。当IBGP对等体数目很多时,对网络资源和CPU资源的消耗都很大

利用路由反射可以解决这一问题。在一个AS内,其中一台路由器作为RR(Route Reflector,路由反射器),作为客户机(Client)的路由器与路由反射器之间建立IBGP连接。路由反射器从客户机接收到路由后,将其传递(反射)给所有其他的客户机,从而保证客户机之间不需要建立BGP连接,就可以学习到彼此的路由。

图 路由反射器示意图

既不是路由反射器也不是客户机的BGP路由器被称为非客户机(Non-client)。非客户机与路由反射器之间,以及所有的非客户机之间仍然必须建立全连接关系,其示意图如上图所示。

路由反射器及其客户机形成了一个集群。通常情况下,一个集群中只有一个路由反射器,该反射器的Router ID就作为集群ID,用于识别该群。如下图所示,为了提高网络的可靠性、避免单点故障,一个集群中可以设置多个路由反射器。此时,集群中所有路由反射器上都需要配置相同的集群ID,以便集群具有统一的标识,避免路由环路的产生。

图 多路由反射器

如果配置了路由反射器后,由于组网需要在路由反射器的客户机之间又建立了全连接,则客户机之间可以直接交换路由信息,客户机到客户机之间的路由反射是没有必要的。此时,不需要修改网络配置或改变网络拓扑,只需在路由反射器上通过相关命令禁止其在客户机之间反射路由,就可以避免路由反射,减少占用的带宽资源。

5) 团体

在大规模的网络中,如果通过地址前缀列表、ACL、AS_PATH等实现对路由的控制,不仅配置复杂,而且不方便维护。利用团体属性和扩展团体属性,可以提高路由策略配置的灵活度,简化路由策略的管理,从而降低维护管理的难度。

6) 联盟

联盟(Confederation)是处理自治系统内部的IBGP网络连接激增的另一种方法,它将一个自治系统划分为若干个子自治系统,每个子自治系统内部的IBGP对等体建立全连接关系,子自治系统之间建立联盟内部EBGP连接关系。其示意图如下图所示。

图 联盟示意图

在不属于联盟的BGP发言者看来,属于同一个联盟的多个子自治系统是一个整体,外界不需要了解内部的子自治系统情况,联盟ID就是标识联盟这一整体的自治系统号,如上图中的AS 200就是联盟ID。联盟的缺陷是从非联盟方案向联盟方案转变时,要求路由器重新进行配置,逻辑拓扑也要改变。总的来说,在大型BGP网络中,路由反射器和联盟可以被同时使用。

BGP常见错误配置举例

故障现象

使用display bgp peer ipv4 unicast命令或display bgp peer ipv6 unicast命令查看BGP对等体的信息,发现与对端的连接无法进入Established状态。

问题分析

BGP邻居的建立需要能够使用179端口建立TCP会话,以及能够正确交换Open消息。

故障处理

(1)执行display current-configuration命令查看当前配置,检查邻居的AS号配置是否正确。

(2)执行display bgp peer ipv4 unicast命令或display bgp peer ipv6 unicast命令检查邻居的IP地址/IPv6地址是否正确。

(3)如果使用Loopback接口,检查是否配置了peer connect-interface命令。

(4)如果是物理上非直连的EBGP邻居,检查是否配置了peer ebgp-max-hop命令。

(5)如果配置了peer ttl-security hops命令,请检查对端是否也配置了该命令,且保证双方配置的hop-count不小于两台设备实际需要经过的跳数。

(6)检查路由表中是否存在到邻居的可用路由。

(7)使用ping命令检查链路是否畅通。

(8)使用display tcp verbose命令或display ipv6 tcp verbose命令检查TCP连接是否正常。

(9)检查是否配置了禁止TCP端口179的ACL。

总 结

OSPF是内部网关路由协议,而BGP是外部网关路由协议。 OSPF基于链路状态路由,其中每个路由器将邻居路由器的状态传递给该区域中存在的每个路由器。另一方面,BGP是基于路径向量路由的,其中路由器具有网络列表,这些网络可以通过路径列表到达每个网络。

回顾一下OSPF与BGP有什么区别:

(一) 首先简单扼要的版本,总结来说就两点:

1、类型不同

OSPF是无类别链路状态路由协议,属于IGP,工作也在一个AS内;

BGP是无类别路径矢量路由协议,属于EGP,工作在AS间

2、作用不同

OSPF是用来发现、计算路由的;BGP是用来传递、控制路由的

(二) 详细点的说(专业点),有6点之多:

1、 描述两者的状态

BGP的6个状态:Idle、Connect、Active、Opensent、Openconfirm、Establish

OSPF的7个状态down、init、two-way、exstart、exchange、loading、full

2、 选路原则

BGP有12个供管理员可以灵活使用;而OSPF选路规则有5个人为控制的只有cost

3、 数据包

OSPF的五种数据包:Hello包、DBD包、LSR、LSU、LSACK

BGP的四种数据包:是Open、Keeplive、Update、Notification

4、 防环路机制

OSPF主要依靠它的算法本身还有区域间水平分割等;BGP的防环机制主要有IBGP水平分割和EBGP水平分割。

5、 协议的不同

OSPF属于IGP协议,追求的是收敛快、选路佳、占用资源少;BGP属于EGP,追求的是可靠性、可控性强,还有就是以一个AS为一跳,即AS-BY-AS。

6、建立邻居条件

OSPF有10个建邻条件;BGP的建邻只需要邻居间可达、路由表中有邻居路由。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

X社区推广