在这节课中,你将学习边界网关协议(BGP)。
完成本课后,你应该能够达到这张幻灯片上所示的目标。
通过展示BGP能力,你将能够为BGP配置FortiGate,监控和检查BGP通信的状态,并排除最常见的外部BGP问题。
在本节中,你将回顾BGP以及如何在FortiGate上配置BGP。
AS是在同一管理下的一组路由器和网络。每个自治系统都有一个唯一的编号,通常运行内部网关协议,如OSPF或RIP。
BGP有两种用途:EBGP和IBGP。
外部网关协议(EGP)在自治系统之间交换路由信息。BGP4是目前主要的EGP协议,运行在Internet上。EBGP通常用于需要对大量路由进行严格控制的场合。
两台EBGP路由器交换目的地前缀或子网的AS路径信息。当两台路由器开始EBGP通信时,整个BGP路由表就会发生交换。之后,只发送网络更新。
BGP speaker或peer是一台发送和接收BGP路由信息的路由器。BGP对等体之间的连接称为BGP会话。
有三种类型的自治系统:
● 存根AS只处理和路由本地流量,并且只有一个到另一个AS的连接。一个例子是一家运行BGP的公司,它有自己的AS号和一个ISP连接。
● 多宿AS也只处理和路由本地流量,但它有多个连接到不同的自治系统。一个例子是一家运行BGP的公司,它有自己的AS号和多个ISP连接。
● 过境AS处理和路由本地流量以及流量的起源和终止在不同的自治系统(过境流量)。ISP就是一个例子。
在运行IBGP时,通常需要在所有路由器之间配置全网对等。在大型网络中,路由器之间的全网状对等很难管理,而且不可扩展。
RR有助于减少AS内部的IBGP会话数。RR将从一个对等体学到的路由转发给其他对等体。如果配置了RR,则不需要创建一个全网状IBGP网络。路由反射器将路由更新信息传递给自治系统内的其他路由反射器和边界路由器。
在BGP RR配置中,AS被划分为不同的集群,每个集群包含一个RR和客户端。客户端路由器只向集群中的RR通信路由更新。RR与其他RR和边界路由器通信。FortiGate既可以配置为RR也可以配置为客户端。
BGP路由器将路由信息存储在三个逻辑表中。在任何过滤之前,RIB-in表包含了从其他BGP路由器接收到的所有路由信息。在筛选之后,本地RIB表包含相同的信息。RIB-out表中包含了BGP路由信息,这些信息被选择发布给其他BGP路由器。
这张幻灯片展示了一个总结BGP流程的流程图。BGP路由器将从其他路由器接收到的BGP路由存储在RIB-in表中。BGP路由器应用过滤器,生成的路由存储在本地RIB表中。然后,BGP路由器添加从路由表中重新分配的路由,并应用另一个过滤器(出站)。BGP路由器将生成的路由发布出去。
BGP基于AS路径对流量进行路由。每条AS路径都包含属性,BGP使用这些属性来选择到达各个目的地的最佳路由。其中一个属性是AS列表,它包含流量到达目的地必须通过的自治系统。
BGP有四种属性:
● 公认强制
● 公认自选
● 可选传递,可以从一个AS传递到另一个AS
● 可选非传递,不能从一个AS传递到另一个AS
这张幻灯片显示了FortiGate支持的BGP属性及其属性类型的列表。
FortiGate在路由选择过程中使用一些属性。如果到达同一目的地的多条路由的所有属性都匹配,并且启用了ECMP,那么FortiGate最多可以在10条BGP路由中共享流量。如果不启用ECMP,FortiGate将使用到达BGP路由器ID最低的路由器的路由。
当你在FortiGate上实现BGP时,有三件重要的事情需要考虑。
第一,没有硬性编码的限制。邻居、路由和策略的数量限制完全由系统可用内存决定。
第二,默认情况下,FortiGate不产生任何前缀。你必须启用再分发,或手动指示FortiGate产生的前缀。
第三,默认情况下,FortiGate接受它接收到的所有前缀。你还可以选择过滤或修改某些前缀。
缺省情况下,FortiGate BGP不发布前缀。可以使用redistribution命令配置FortiGate发布前缀。可以将已连接的路由、静态路由以及从其他路由协议学到的路由重新分配到BGP中。还可以通过添加路由映射对前缀进行过滤,或者修改路由映射的BGP属性。
还可以使用network命令配置FortiGate BGP发布前缀。但是,network命令中前缀的精确匹配必须在路由表中激活。如果路由表中不包含目的子网与该前缀匹配的活动路由,FortiGate就不会发布该前缀。你可以通过禁用network-import-check设置来更改此行为。禁用该配置后,无论路由表中有多少活跃的路由,FortiGate都会发布BGP网络表中的所有前缀。
缺省情况下,使用config network命令配置的子网,以及从其他路由协议重新分配的子网,都会通告给所有邻居。
使用前缀列表,你可以更有选择性地将哪些前缀发布到每个邻居。此外,前缀列表允许你选择希望从每个邻居使用哪些前缀。在本例中,我们创建了一个允许前缀10.0.0.0/8的前缀列表,阻断前缀10.1.0.0/16。缺省情况下,拒绝所有未匹配前缀列表的流量。前缀列表应用于邻居10.3.1.254的入方向。本地FortiGate对所有来自的前缀通告应用此过滤器10.3.1.254。
在应用前缀列表时,默认情况下拒绝所有与列表中某个表项不匹配的前缀。
这张幻灯片展示了一个FortiGate基本配置的例子。此时remote-as和local as相同,即为IBGP配置。
在实现RR时,只在RR上进行配置。你可以使用这个幻灯片上显示的命令来配置将参与RR集群的每个邻居。
缺省情况下,BGP路由反射器为每个前缀只传播一条路径。如果启用了additional-path,一个FortiGate作为RR可以为同一个前缀传播多条路径。这允许更有效地使用BGP,同时它可以防止次优路由。
ADVPN要求所有hub都配置为BGP RR。另外,你想要结合ADVPN和SDWAN的场景需要BGP额外的路径。在ADVPN和SDWAN场景下,两个位置之间通常会有多个冗余的IPsec隧道。BGP附加路径是指ADVPN hub将所有冗余路径通过BGP动态传播到各个远端位置。
在本场景中,Spoke-1和Hub之间有两条冗余的IPsec隧道。在Spoke-2和Hub之间也有一条IPsec。BGP over IPsec传播路由信息。Hub是一个启用了BGP附加路径的路由反射器。
由于开启了BGP附加路径,Spoke-2从Hub收到两条BGP路由通告:一条是多余的隧道。ADVPN可以利用这条路由在Spoke-2和Spoke-1之间动态创建按需的IPsec隧道。
在本节中,你将了解BGP故障排除的工具和技巧。
这张幻灯片展示了BGP邻居状态及其变化的流程图:
● Idle:初始状态
● Connect:等待三路TCP连接成功
● Active:无法建立TCP会话
● OpenSent:等待对端打开的消息
● OpenConfirm:等待对端发送的keepalive消息
● Established:对等体已经成功交换了OPEN和keepalive消息
这张幻灯片展示了你通常首先使用的调试命令,以获得BGP状态和所有邻居状态的概述。这张幻灯片显示了本地路由器ID和AS。对于每个邻居,输出结果还显示如下:
● AS
● 数据包记数器
● 这个邻居睡了多久了
最后一列是邻居状态和前缀数量。如果状态为没有建立,则显示BGP的状态。如果状态为建立,则显示本地FortiGate从邻居接收到的前缀数量。
你可以使用这张幻灯片上显示的命令来获取每个BGP邻居的详细信息。这些信息包括对端IP、对端路由器ID、远端自治系统、BGP状态、各种定时器和消息计数器。
该信息还显示已宣布和接受的前缀数量、会话被删除的次数以及最后一次重置的时间。
这张幻灯片显示了一个命令,你可以用它来获取关于本地路由器正在发布的前缀的详细信息。状态码标识与路由项相关联的代码。对于每个前缀,该命令显示如下:
● 下一跳IP
● 本地优先值
● 权重
● AS路径
本幻灯片显示显示邻居发布的路由信息的命令。
本幻灯片展示了打开和关闭BGP实时调试开关的命令。注意,这个示例启用了事件和级别信息的调试输出。
接下来的两张幻灯片展示了成功建立BGP会话后实时调试输出的例子。在本例中,输出显示了会话进入Opensent状态的时间。
这张幻灯片显示了从邻居接收到keepalive以及建立连接后的实时调试输出,其中包含OpenConfirm。
输出信息还列出了BGP会话建立后收到的前缀FortiGate。
幻灯片中显示的命令用于重启对等体之间的BGP会话。还可以使用此命令进行BGP软复位,强制对等体之间交换完整的BGP路由表。
现在FortiGate可以记录路由事件,这使你能够获得以前只有在运行BGP实时调试时才可用的信息。缺省情况下,BGP事件日志记录功能处于开启状态。你可以使用幻灯片上显示的命令禁用BGP事件日志记录。
通过GUI界面可以查看与BGP相关的路由器事件。你可以单击任何记录条目查看详细信息。
通过以下步骤可以排除对等体之间的BGP问题:
● 检查本地路由器是否可以到达对端
● 检查TCP会话
● 检查BGP会话
● 如果BGP会话建立成功,则检查对等体收到并发布的前缀
这张幻灯片展示了你在这节课中所学到的目标。