BGP基本配置

BGP基本配置,第1张

EBGP

[R1]bgp 100

[R1-bgp-default]peer 100.1.1.2 as-number 200

[R1-bgp-default]address-family ipv4 unicast

[R1-bgp-default-ipv4]peer 100.1.1.2 enable

[R2]bgp 200

[R2-bgp-default]peer 100.1.1.1 as-number 100

[R2-bgp-default]address-family ipv4 unicast

[R2-bgp-default-ipv4]peer 100.1.1.1 enable

IBGP

[R2]bgp 200

[R2-bgp-default]peer 4.4.4.4 as-number 200

[R2-bgp-default]peer 4.4.4.4 connect-interface LoopBack 0

[R2-bgp-default]address-family ipv4 unicast

[R2-bgp-default-ipv4]peer 4.4.4.4 enable

[R2-bgp-default-ipv4]peer 4.4.4.4 next-hop-local

[R4]bgp 200

[R4-bgp-default]peer 2.2.2.2 as-number 200

[R4-bgp-default]peer 2.2.2.2 connect-interface LoopBack 0

[R4-bgp-default]address-family ipv4 unicast

[R4-bgp-default-ipv4]peer 2.2.2.2 enable

[R4-bgp-default-ipv4]peer 2.2.2.2 next-hop-local

display bgp peer ipv4

在 RTC 的 BGP 路由表中,可以看到路由 1.1.1.1/32 的 LOCAL_PREF 值为 100 ,那么要使 RTC 优选 RTD 为下一跳,只需要设置 RTD 发送给 RTC 的 BGP 路由的 LOCAL_PREF 大于 100 即可。

在 RTD 上 BGP 的 IPv4 单播地址族视图下配置 LOCAL_PREF 值:

[RTD]bgp 65300

[RTD-bgp-default]address-family ipv4 unicast

[RTD-bgp-default-ipv4]default local-preference 300

[RTD]bgp 65300

[RTD-bgp-default]address-family ipv4 unicast

[RTD-bgp-default-ipv4]default local-preference 300

越大越优先

[RTB]bgp 65300

[RTB-bgp-default]address-family ipv4 unicast

[RTB-bgp-default-ipv4]default med 100

越小越优先

开启tracert信息

ip unreachablles enable

ip ttl-expires enable

沿途的每个路由器都要开启次功能才行(源和目的也要)

BGP路由技术和配置这边就不介绍了,本章主要介绍在BGP邻居建立成功的情况下启用BFD链路检测功能。

BFD(Bidirectional Forwarding Detection,双向转发检测)协议提供一种轻负载、快速检测两台邻接路由器之间转发路径连通状态的方法。协议邻居通过该方式可以快速检测到转发路径的连通故障,加快启用备份转发路径,提升现有网络性能。

BFD报文有两种类型分别是控制报文和回声报文。其中回声报文只有BFD会话本端系统关心远端不关心,因此协议没有规定其具体格式。协议只规定了控制报文的格式,目前控制报文格式有两个版本(版本0和版本1),BFD会话建立缺省采用版本1,但如果收到对端系统发送的是版本0的报文,将自动切换到版本0来建立会话,可以通过show bfd neighbors命令察看采用的版本。版本1的格式如图表1:

Vers:BFD协议版本号,目前为1

 Diags:给出本地最后一次从UP状态转到其他状态的原因,包括:

0—没有诊断信息

1—控制超时检测

2—回声功能失效

3—邻居通告会话Down

4—转发面复位

5—通道失效

6—连接通道失效

7—管理Down

 Sta:BFD本地状态,取值为:0代表AdminDown,1代表Down,2代表Init,3代表Up;

 P:参数发生改变时,发送方在BFD报文中置该标志,接收方必须立即响应该报文

 F:响应P标志置位的回应报文中必须将F标志置位

 C:转发/控制分离标志,一旦置位,控制平面的变化不影响BFD检测,如:控制平面为OSPF,当OSPF重启/GR时,BFD可以继续检测链路状态

 A:认证标识,置位代表会话需要进行验证

 D:查询请求,置位代表发送方期望采用查询模式对链路进行检测

 M:用于将来应用点到多点时使用,目前必须设置0

 Detect Mult:检测超时倍数,用于检测方计算检测超时时间

 Length:报文长度

 My Discreaminator:BFD会话连接本端标识符

 Your Discreaminator:BFD会话连接远端标识符

 Desired Min Tx Interval:本地支持的最小BFD报文发送间隔

 Required Min RX Interval:本地支持的最小BFD报文接收间隔

 Required Min Echo RX Interval:本地支持的最小Echo报文接收间隔(如果本地不支持Echo功能,则设置0)

 Auth Type:认证类型(可选),目前协议提供有:

Simple Password

Keyed MD5

Meticulous Keyed MD5

Keyed SHA1

Meticulous Keyed SHA1

 Auth Length:认证数据长度

 Authentication Data:认证数据区

BFD会话建立包含如下几种模式

主动模式

在建立会话前不管是否收到对端发来的建立BFD会话的控制报文,都会主动发送建立BFD会话的控制报文。

被动模式

在建立对话前不会主动发送建立BFD会话的控制报文,直到收到对端发送来建立BFD会话的控制报文。

BFD可以包含如下几种检测模式:

异步模式

在异步模式下,系统之间相互周期性地发送BFD控制报文,如果某个系统在检测时间内没有收到对端发来的BFD控制报文,就宣布会话为Down

查询模式

在查询模式下,假定每个系统都有一个独立的方法用来确认它连接到其他系统。这样一旦一个BFD会话建立起来以后,系统停止发送BFD控制报文,除非某个系统需要显式地验证连接性,在需要显式验证连接性的情况下,系统发送一个短序列的BFD控制包,如果在检测时间内没有收到返回的报文就宣布会话为Down,如果收到对端的回应报文,表示转发路径正常。

回声功能

本地系统周期性的发送BFD 回声报文,远端系统通过它的转发通道将它们环回回来。如果本地在检测周期内连续几个回声报文都没有接收到,会话就被宣布为Down。回声功能可以和上述两种检测模式一起使用。采用回声报文的检测功能,不需要远端系统的控制面参与,报文通过远端系统的转发面转回,减少了延迟,相对于发送控制报文可以更快的检测到故障。如果在异步模式下启用回声功能,可以大大减少了控制报文的发送,因为检测工作由回声功能完成;如果在查询模式下启用回声功能,在会话建立后可以完全取消发送控制报文。BFD会话两点必须同时启用回声功能,否则回声功能将不生效。

在BFD会话建立以后,可以修订BFD会话参数(如Desired Min Tx Interval,Required Min RX Interval,Detect Mult等),修订后BFD会话将重新协商并采用最新参数进行会话检测,修订过程会话可以继续保持UP状态。

BFD协议允许采用如下方式进行认证:

1.Simple Password

2.Keyed MD5

3.Meticulous Keyed MD5

4.Keyed SHA1

5.Meticulous Keyed SHA1

BGPv4应用场景绝大部分是企业边界设备互联采用运营商固定互联网ip进行建立邻居关系,另一种就是企业各分部通过运营商专线进行互联, 其实际就是一条就可以抵达。

本章主要介绍后者,企业各分部通过运营商专线进行互联建立BGP邻居关系,优化主备线路切换原则。

BGP是触发式更新,主线中断切换至备线,默认情况下需要180s来识别并切换。或者当你发现中断告警可以通过手工去clear ip bgp *硬清或clear ip bgp * soft软清邻居关系来收敛路由条目。

这种冗余架构应该都能看得懂吧,这边用GNS画了一张简单的拓扑图。

要实现A部门PC1和B部门PC2之间能够正常访问,当AB部门主路由之间的链路断开后能无感知切换到备线进行通讯。

首先A部门IBGP要通,B部门IBGP也要通。AB部门主备路由器EBGP邻居关系要建立。

备路由器的邻居状态就不show出来了。

我的实际环境是,各部门数据中心采用的是运营商主备线路冗余。逻辑上就是一跳。我们的边界设备都是cisco的,但是不是同一型号,有2900,2800,3900,4300系列的。所以在配置过程中出现了 state bit状态是admin down 。当时也是比较郁闷都是参照了配置手册进行的配置,为什么状态不是up而是admin down。

配置过程中要注意的是端口的协商,比如全双工,速率要匹配。运营商专线以前配置双工会断,现在电信联通已经修补相关bug。

这边还有就是cisco4300,接口下配置了neg auto,自动协商,no不掉的情况。需要在接口下配置media-type rj45,然后在no neg auto,在敲上duplex full,speed 100。

这个时候基本大功告成,这个时候就要将设备进行重启。

重启完后就可以看见bfd邻居建立。bfd具体参数根据自己企业的需求来定。我的配置参数基本可以达到无感知切换。

R1、R2、R3属于AS 123;R4属于AS 400;

R1、R2、R3运行OSPF,运行OSPF的目的是为了打通AS 123内的路由;

R3-R4之间建立EBGP邻居关系,R2不运行BGP;

R1-R3之间建立IBGP邻居关系;

在R4上,将路由4.4.4.0/24发布到BGP。

R1的配置如下(省略接口IP地址的配置):

R2的配置比较简单,就是运行OSPF而已,这部分配置不再赘述。

R3的配置如下:

R4的配置如下:

完成上述配置后,在R3上查看BGP路由表:

我们看到R3已经学习到了R4通告过来的BGP路由4.4.4.0/24。并且该条BGP路由的NextHop属性值为10.1.34.4,这个下一跳地址是路由可达的。该条路由在R3的BGP路由表里有“* >” 标记,其中“*”表示这条路由是可用的(valid),只有当BGP路由的NextHop为路由可达时,该BGP路由才会被视为可用;而“>”则表示这条路由是被优选的路由,或者说是到达该目的网络的最优路由。

BGP路由的NextHop属性是一个非常重要的属性,它是所有BGP路由都会携带的路径属性,它指示了到达目的网络的下一跳地址。

在R3上查看路由表:

R3已经将到达4.4.4.0/24的BGP路由加载到了全局路由表中。

对于R3而言,到达4.4.4.0/24的路由已经被优选,接下来,它会将该路由通告给IBGP邻居R1。

在R1上查看BGP路由表:

我们看到,R1的BGP路由表中已经出现了4.4.4.0/24路由,而这条路由的NextHop属性值是10.1.34.4,但是R1在本地路由表中没有到达10.1.34.4的路由,因此10.1.34.4不可达,如此一来,该BGP路由也就不可用了(在BGP路由表中没有*号标记),既然不可用,自然就不能装载进路由表中使用。

那么怎么解决这个问题呢?一个最简单的方法是,为R1配置一条静态路由:ip route-static 10.1.34.0 24 10.1.23.3,这样一来R1的路由表里就有了到达10.1.34.4的路由,那么BGP路由4.4.4.0/24的下一跳地址就可达了,对应的BGP路由自然也就可用了。但是这种方法太“笨拙”。另一种方法是,在R3的OSPF进程中将10.1.34.0/24网段也注入进去,使得R1能够通过OSPF学习到10.1.34.0/24路由,这种方法也是可行的。但是由于R3-R4之间的互联链路被视为AS外部链路,因此10.1.34.0/24作为外部网段往往不会被宣告进AS内的IGP。那么还有什么其他办法能解决这个问题么?

BGP路由器在向EBGP对等体发布某条路由时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。如下图所示,R4将4.4.4.0/24通告给R3时,下一跳为10.1.34.4,也就是R4的GE0/0/0接口地址。

BGP路由器将本地始发路由发布给IBGP对等体时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。

BGP路由器在向IBGP对等体发布从EBGP对等体学来的路由时,并不改变该路由信息的下一跳属性。

例如下图所示,R3收到R4通告的EBGP路由,该路由的下一跳属性值为10.1.34.4,它将该条路由通告给IBGP对等体R1的时候,路由的下一跳属性值不会发生改变,仍然为10.1.34.4。

这就造成了我们上面所述的问题,由于R1没有到达10.1.34.0/24的路由,因此下一跳地址10.1.34.4不可达,从而导致BGP路由4.4.4.0/24不可用。

还有一个方法可以解决这个问题:在R3上使用next-hop-local命令,可修改BGP路由的下一跳属性值为自身。在下图中,我们在R3上增加了peer 10.1.12.1 next-hop-local命令,那么这样一来,当R3再将EBGP路由通告给R1的时候,会将这些路由的下一跳属性值修改为自己的更新源地址(10.1.23.3),而R1已经通过OSPF获知到达10.1.23.0/24的路由,因此10.1.23.3是可达的。

完成配置后,我们在R1上查看BGP路由表:

可以手工指定用于建立BGP连接的源接口及源IP地址。命令如下:[Router-bgp] peer x.x.x.x connect-interface intf [ ipv4-src-address ]缺省情况下,BGP使用报文的出接口作为BGP报文的源接口。当用户完成peer命令的配置后,设备会在自己的路由表中查询到达该对等体地址的路由,并从该路由得到出接口信息。如果peer命令中没有指定接口(connect-interface)和IP地址(ipv4-src-address),那么设备将会使用前述出接口和该接口的IP地址作为BGP报文的源接口和源地址。

为了使物理接口在出现问题时,设备仍能发送BGP报文,可将发送BGP报文的源接口配置成Loopback接口。在使用Loopback接口作为BGP报文的源接口时,必须确认BGP对等体的Loopback接口的地址是可达的。由于一个AS内往往会运行IGP协议,因此AS内的设备能够通过该IGP协议获知到达其他设备的Loopback接口的路由。在AS内部,IBGP邻居关系通常基于Loopback接口建立。

EBGP邻居之间通常使用直连接口的IP地址作为BGP报文源地址,如若使用环回接口建立EBGP邻居关系,要配置peer ebgp-max-hop命令,允许EBGP通过非直连方式建立邻居关系。

同样是上面的环境,我们稍作变更,在R1及R3上创建loopback0,地址分别为1.1.1.1/32及3.3.3.3/32,然后设备各自将loopback0宣告进OSPF,使得彼此都能通过OSPF学习到对方的Loopback0路由。

我们修改BGP的配置,使得R1-R3之间的IBGP邻居关系基于Loopback0来建立。

R1的关键配置如下:

R3的关键性配置如下:

注意,务必要将R1及R3的Loopback0接口激活OSPF。

经过前面的讲解,我们的环境现在是这样的:R1-R3之间建立了基于Loopback接口的IBGP邻居关系;R3对R1配置了next-hop-local;R3与R4之间仍然维持基于直连接口的EBGP邻居关系;R4在BGP中发布路由4.4.4.0/24。

现在R1是能够学习到BGP路由4.4.4.0/24的,并且该路由也是被优选的,此时这条路由会被R1装载进全局路由表使用,但是,这是不是意味着R1就能够ping通4.4.4.4了呢?经过测试你可能会发现:无法ping通?因为数据包在R2这里就被丢弃了,R2并没有运行BGP,因此它无法学习到BGP路由4.4.4.0/24。

怎么才能让R1 ping通4.4.4.4呢?方法之一是在R3上将BGP路由重发布进OSPF,使得R2能够通过OSPF学习到BGP路由4.4.4.0/24,但是这种方法存在一定的风险,因为我们知道BGP承载的前缀数量往往是非常庞大的;另一种方法是,让R2也运行BGP,并与R1、R3建立IBGP邻居关系,这样一来问题就解决了。那么BGP邻居关系就变成了如下图所示。具体配置此处不再赘述。

通常情况下,EBGP邻居之间必须具有直连的物理链路,EBGP邻居关系也将基于直连接口来建立,如果不满足这一要求,则必须使用peer ebgp-max-hop命令允许它们之间经过多跳建立TCP连接。

peer ebgp-max-hop命令用来配置允许BGP同非直连网络上的对等体建立EBGP连接,并同时可以指定允许的最大跳数。命令格式如下:[Router-bgp] peer ipv4-address ebgp-max-hop [ hop-count ]

如上图所示,R1及R2要基于Loopback口建立EBGP邻居关系。这种情况也属于EBGP邻居之间不基于直连接口建立邻居关系的场景,必须配置peer ebgp-max-hop命令。图中R1与R2之间的两条物理链路是为了冗余性考虑。R1的关键配置如下:

R2的关键配置如下:

BGP邻居表

BGP表

查看BGP条目的详细信息:

路由表,display ip routing-table


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/11357283.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存