0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

BGP进阶:BGP基础实验配置

网络技术干货圈 来源:网络技术干货圈 作者:圈圈 2022-11-14 11:01 次阅读

实验拓扑

实验需求

R1、R2、R3属于AS123,R4属于AS 400;

AS123内的R1、R2、R3运行OSPF,通告各自直连接口,注意OSPF域的工作范围;

R3-R4之间建立eBGP邻居关系,R2暂时不运行BGP,R1-R3之间建立iBGP邻居关系,所有的BGP邻居关系基于直连接口建立;在R4上创建Loopback0接口并将接口IP地址设置为4.4.4.4/32,同时将该条直连路由通告到BGP,要求R1的路由表中能看到4.4.4.4/32;

修改BGP配置,使得R1、R3基于Loopback接口建立iBGP邻居关系,R1、R3的Loopback接口地址分别为1.1.1.1/32及3.3.3.3/32;

要求R1能够ping通4.4.4.4。

实验步骤及配置

所有设备完成接口IP地址的配置(这部分配置不再贴出)

R1、R2、R3运行OSPF;R1、R3建立IBGP邻居关系,R3、R4建立EBGP邻居关系

R1的配置如下

[R1]ospf1router-id1.1.1.1
[R1-ospf-1]area0
[R1-ospf-1-area-0.0.0.0]network10.1.12.00.0.0.255
[R1-ospf-1-area-0.0.0.0]quit
[R1-ospf-1]quit

[R1]bgp123#进入BGP进程,AS号为123
[R1-bgp]router-id1.1.1.1#配置BGProuterID
[R1-bgp]peer10.1.23.3as-number123#配置BGP邻居,由于邻居的AS号与本地一致,因此两者之间为iBGP邻居关系

R2的配置如下(R2先不运行BGP)

[R2]ospf1router-id2.2.2.2
[R2-ospf-1]area0
[R2-ospf-1-area-0.0.0.0]network10.1.12.00.0.0.255
[R2-ospf-1-area-0.0.0.0]network10.1.23.00.0.0.255
[R2-ospf-1-area-0.0.0.0]quit
[R2-ospf-1]quit

R3的配置如下:

[R3]ospf1router-id3.3.3.3
[R3-ospf-1]area0
[R3-ospf-1-area-0.0.0.0]network10.1.23.00.0.0.255
[R3-ospf-1-area-0.0.0.0]quit
[R3-ospf-1]quit

[R3]bgp123
[R3-bgp]router-id3.3.3.3
[R3-bgp]peer10.1.34.4as-number400#配置eBGP邻居R4
[R3-bgp]peer10.1.12.1as-number123#配置iBGP邻居R1

R4的配置如下:

[R4]interfaceloopback0
[R4-loopback0]ipaddress4.4.4.432

[R4]bgp400
[R4-bgp]router-id4.4.4.4
[R4-bgp]peer10.1.34.3as-number123
[R4-bgp]network4.4.4.432#把本地直连路由network进BGP
d8b97fdc-62e2-11ed-8abf-dac502259ad0.png
[R3]displaybgprouting-table
BGPLocalrouterIDis10.1.23.3
Statuscodes:*-valid,>-best,d-damped,
h-history,i-internal,s-suppressed,S-Stale
Origin:i-IGP,e-EGP,?-incomplete
TotalNumberofRoutes:1
NetworkNextHopMEDLocPrfPrefValPath/Ogn
*>4.4.4.4/3210.1.34.400400i

我们看到R3已经学习到了R4传递过来的BGP路由4.4.4.4/32。并且该条BGP路由的NextHop属性值为10.1.34.4,这个下一跳是可达的,因此该条路由在R3的BGP表里有标记“* >”,其中“*”号表示这条路由是可用(Valid)的,而“>”则表示这条路由是去往该目的地最优(Best)的路由。再到在R3上查看路由表:

[R3]displayiprouting-tableprotocolbgp
Destination/MaskProtoPreCostFlagsNextHopInterface
4.4.4.4/32EBGP2550D10.1.34.4GigabitEthernet0/0/1

该条BGP路由由于是best,因此被装载进了路由表。那么,既然在R3上,这条BGP路由是best的,它就会传递给自己的iBGP邻居R1,在R1上查看BGP表。

[R1]displaybgprouting-table
NetworkNextHopMEDLocPrfPrefValPath/Ogn
i4.4.4.4/3210.1.34.401000400i

我们看到,R1的BGP表里,已经有4.4.4.4/32的路由,而这条路由NextHop属性值是10.1.34.4,但是R1在本地路由表中没有到达10.1.34.0/24的路由,因此此时BGP路由4.4.4.4/32的下一跳不可达,该BGP条目则不可用(在BGP表中没有“ * ”星号标记),既然不可用,自然就不能装载进路由表中使用。那么怎么解决这个问题呢?一个最简单的方法是,为R1配置一条静态路由,ip route-static 10.1.34.0 24 10.1.23.3,这样一来R1的路由表里就有了到达10.1.34.0/24网段的路由,那么BGP路由4.4.4.4/32的下一跳就可达了,路由自然也就可用了。但是这种方法有点钻空子、取巧。另一种方法是,在R3上OSPF进程中将10.1.34.0/24网段也注入到OSPF,使得R1能够通过OSPF学习到10.1.34.0/24网段的路由,但是由于R3-R4之间的互联链路被视为AS外部链路,因此10.1.34.0/24作为外部网段往往不会被宣告进AS内的IGP。那么还有什么其他办法能解决这个问题?

修改下一跳为自身

BGP是AS-by-AS的路由协议,而不是router-by-router的路由协议。在BGP中,next-hop并不意味着是下一台路由器,而是到达下一个AS的IP地址。当一台BGP路由器将路由传递给自己的eBGP邻居时,该路由的NextHop属性值为其BGP更新源地址。如下图,R4将4.4.4.4/24传递给R3时,下一跳为10.1.34.4,也就是R4的GE0/0/0口地址。

当一台BGP路由器将eBGP路由传递给自己的iBGP邻居时,默认情况下这些eBGP路由的NextHop属性值保持不变。因此R3收到R4传递过来的eBGP路由,下一跳属性值为10.1.34.4,那么它将该条路由传递给iBGP邻居R1的时候,路由的下一跳属性值不会发生改变,仍然为10.1.34.4。

d8d523a4-62e2-11ed-8abf-dac502259ad0.png

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

有一个方法可以解决这个问题:在R3上使用next-hop-local命令,可修改BGP路由的下一跳属性值为自身。在下图中,我们在R3上增加了peer 10.1.12.1 next-hop-local命令,这样一来当R3再更新eBGP路由给R1的时候,这些路由的下一跳属性值就会被修改为R3自己的更新源地址,而这个地址,R1能够通过OSPF学习到,因此是可达的。

d8ee4abe-62e2-11ed-8abf-dac502259ad0.png

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

[R1]displaybgprouting-table
NetworkNextHopMEDLocPrfPrefValPath/Ogn
*>i4.4.4.4/3210.1.23.301000400i

R3将EBGP路由4.4.4.4/32传递给R1时,将路由的下一跳属性值改成了自身的IP(10.1.23.3),而这个IP对于R1来说是路由可达的,因此路由优化了,并被装载进了路由表。

指定更新源IP

内部网关协议例如RIP、OSPF等,能够自动在接口上发现直连邻居,但是BGP在这点上却大不相同,BGP无法自动发现邻居,必须手工使用peer命令指定邻居。BGP路由器之间交互BGP报文时,报文的目的地址就是peer命令所配置的地址,而源地址默认则是数据包出接口的地址。iBGP邻居在一个AS内部被部署,一般而言,AS内部的网络是具有一定冗余性的,例如下图所示,我们在本实验拓扑的基础上做了一点小小的修改,在AS123中增加了一台路由器:R5。R1、R2、R3、R5运行了OSPF。现在设想一下,如果R1与R3之间的iBGP邻居关系使用物理接口来建,例如R1使用GE0/0/0接口,R3使用GE0/0/0接口的话,则一旦R2发生故障,R1、R3的GE0/0/0接口都会DOWN掉,于此同时R1、R3的BGP邻居也就DOWN掉了。但是仔细观察我们就会发现,其实R1、R3之间的IP连通性其实还是存在的,经过R5的这条冗余路径完全可以在R2发生故障时实现R1、R3之间的数据互通。因此为了保障iBGP邻居关系的稳定性,我们提倡在建立iBGP邻居关系时,使用Loopback来建立,而不是物理接口。

d90c644a-62e2-11ed-8abf-dac502259ad0.png

思路很简单,就是在R1及R3上各开设一个Loopback接口并为这个接口配置IP地址,然后在各自的Loopback接口上激活OSPF,使得OSPF域能够获知这两条Loopback路由。接下来R1、R3之间部署iBGP邻居时,使用Loopback地址来建,如此一来,即使R2发生故障,由于R1、R3双方依然可以通过OSPF学习到对端的Loopback路由,所以故障发生时,R1、R3的BGP邻居关系不会DOWN。

回到本实验,在上文的配置中,我们在R1-R3之间建立iBGP邻居关系时,使用的就是物理接口,现在我们将配置做些修改:

d927f8e0-62e2-11ed-8abf-dac502259ad0.png

在R1及R3上创建loopback0,地址分别为1.1.1.1/32及3.3.3.3/32,然后各自将loopback0宣告进OSPF,使得彼此都能通过OSPF学习到对方的Loopback0路由,再修改BGP的配置,使得R1-R3之间的iBGP邻居关系基于Loopback0来建立。

peerx.x.x.xconnect-interfaceintf[ipv4-src-address]

上面这条命令用于指定BGP的更新源地址或接口。

R1增加的配置如下:

[R1]interfaceloopback0
[R1-LoopBack0]ipaddress1.1.1.132
[R1-LoopBack0]quit

[R1]ospf1
[R1-ospf-1]area0
[R1-ospf-1-area-0.0.0.0]network1.1.1.10.0.0.0
[R1-ospf-1-area-0.0.0.0]quit
[R1-ospf-1]quit

[R1]bgp123
[R1-bgp]undopeer10.1.23.3
[R1-bgp]peer3.3.3.3as-number123
[R1-bgp]peer3.3.3.3connect-interfaceLoopBack0

由于R1、R3现在是使用Loopback接口来建立邻居关系,因此在R1上使用peer命令指定邻居的时候,必须使用R3的Loopback地址作为邻居IP。同时使用connect-interface关键字指定本设备用于和对端建立邻居关系的接口,这个接口的地址将作为更新源。

R3的关键性配置如下:

[R3]interfaceloopback0
[R3-LoopBack0]ipaddress3.3.3.332
[R3-LoopBack0]quit

[R3]ospf1
[R3-ospf-1]area0
[R3-ospf-1-area-0.0.0.0]network3.3.3.30.0.0.0
[R3-ospf-1-area-0.0.0.0]quit
[R3-ospf-1]quit

[R3]bgp123
[R3-bgp]undopeer10.1.12.1
[R3-bgp]peer1.1.1.1as-number123
[R3-bgp]peer1.1.1.1connect-interfaceLoopBack0
[R3-bgp]peer1.1.1.1next-hop-local

完成上述配置后,R1与R3即会基于Loopback0接口建立邻居关系。

完成这个实验

d94a3bc6-62e2-11ed-8abf-dac502259ad0.png

经过前面的讲解,我们的环境现在是这样的:R1-R3之间建立基于Loopback的iBGP邻居关系;R3对R1配置了next-hop-local;R3与R4之间仍然是建立基于直连的eBGP邻居关系;R4在BGP中network本地的4.4.4.4/32路由。

现在R1是能够学习到BGP路由4.4.4.4/32的,并且该路由在BGP表中也是优化的,这条路由就会被装载进R1的路由表。那么是不是意味着R1就能够ping通4.4.4.4了呢?经过测试你可能会发现,R1虽然有了4.4.4.4/32网段的路由,但是无法ping通,为什么?因为数据包在R2这里就被丢弃了,还记得么,R2并没有运行BGP,因此它无法学习到BGP路由4.4.4.4/32,现在问题来了,怎么让R1 ping通R4呢?方法之一是在R3上将BGP路由重发布进OSPF,使得R2能够通过OSPF学习到BGP路由,但是这种方法存在一定的风险,因为我们知道BGP承载的前缀数量往往是非常庞大的;另一种方法是,让R2也运行BGP,并与R3建立iBGP邻居关系,这样一来问题就解决了。那么BGP邻居关系就变成了这样:

d9758d44-62e2-11ed-8abf-dac502259ad0.png

R3增加如下配置:

[R3]bgp123
[R3-bgp]peer2.2.2.2as-number123
[R3-bgp]peer2.2.2.2connect-interfaceLoopBack0

R2增加如下配置:

[R2]interfaceloopback0
[R2-LoopBack0]ipaddress2.2.2.232
[R2-LoopBack0]quit

[R2]ospf1router-id2.2.2.2
[R2-ospf-1]area0
[R2-ospf-1-area-0.0.0.0]network2.2.2.20.0.0.0
[R2-ospf-1-area-0.0.0.0]quit
[R2-ospf-1]quit
[R2]bgp123
[R2-bgp]peer3.3.3.3as-number123
[R2-bgp]peer3.3.3.3connect-interfaceLoopBack0

完成上述配置后,R1、R2和R3就都学习到了4.4.4.4/32的BGP路由。最后要实现R1能够ping通4.4.4.4,则要求R4的路由表中也有10.1.12.0/24的路由,以保证数据包的回程。因此在R1上增加如下配置:

[R1]bgp123
[R1-bgp]network10.1.12.024

也就是将10.1.12.0/24这条路由注入到BGP,如此一来R4就能通过BGP学习到这条哦路由,那么当R1去ping 4.4.4.4时,报文能够顺利到达4.4.4.4,并且回程的报文能顺利地回来。

学会看三张表

查看BGP邻居表:

d993269c-62e2-11ed-8abf-dac502259ad0.png

查看BGP表:

d9b49124-62e2-11ed-8abf-dac502259ad0.png

查看BGP路由条目的详细信息

d9cc16a0-62e2-11ed-8abf-dac502259ad0.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    7972

    浏览量

    149245
  • BGP
    BGP
    +关注

    关注

    0

    文章

    81

    浏览量

    15250

原文标题:BGP进阶:BGP 基础实验配置

文章出处:【微信号:网络技术干货圈,微信公众号:网络技术干货圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    bgp配置实例讲解 如何配置Cilium和BGP协同工作

      背景 官方提供了多篇文档说明如何配置 Cilium 和 BGP 协同工作,本文主要对以下部分功能进行验证: Using BIRD to run BGP[1] Using kube-router
    的头像 发表于 08-15 09:15 1439次阅读
    <b class='flag-5'>bgp</b><b class='flag-5'>配置</b>实例讲解 如何<b class='flag-5'>配置</b>Cilium和<b class='flag-5'>BGP</b>协同工作

    BGP硬核笔记分享

    BGP——边界网关路由协议,是一种基于策略的路径矢量路由协议(可以理解为距离矢量型协议的升级版),BGP在确定最佳路径时考虑的不是速度,而是让AS能够根据多种BGP属性来控制数据流的传输。
    的头像 发表于 12-11 09:15 481次阅读
    <b class='flag-5'>BGP</b>硬核笔记分享

    测量BGP传递时间

    测量BGP传递时间
    发表于 07-22 08:46

    测量BGP传递时间

    测量BGP传递时间
    发表于 07-22 10:06

    动态BGP与静态BGP的区别

    动态BGP与静态BGP的区别 动态BGP与静态BGP的区别 1.静态BGP功能简单,其带宽功能,可以实现多网接入,但路径上只有通向几大运营商
    发表于 12-01 16:55

    bgp路由协议的路由属性_BGP路由协议的优势

    BGP最新的版本是BGP第4版本(BGP4),它是在RFC4271中定义的;一个路由器只能属于一个AS。AS的范围从1-65535(64512-65535是私有AS号),RFC1930提供了AS号使用指南。
    发表于 08-20 15:00 3604次阅读
    <b class='flag-5'>bgp</b>路由协议的路由属性_<b class='flag-5'>BGP</b>路由协议的优势

    什么是BGP高防,BGP高防的优势是什么

    什么是BGP高防?BGP全称是Border Gateway Protocol,即边界网关协议,是用来连接Internet上的独立系统的路由选择协议。
    发表于 12-28 11:22 941次阅读

    如何使用自动BGP在数据中心构建最佳 ASN 配置

    NVIDIA Cumulus Linux 4.2.0 版本引入了一项名为自动 BGP (Auto BGP) 的新功能,该功能使二层叶脊网络配置中的 BGP ASN 分配变得快速而简单。
    的头像 发表于 07-28 18:10 2052次阅读

    动态BGP是什么,如何判定它的真假

    一、什么叫动态BGP: 中国电信 、中国联通、中国移动和一些拥有AS自治域的大型民营IDC运营商可以通过BGP协议来实现多线互联,这个唯一能够妥善处理不相关路由域间的多路连接的边界网关协议,是运行
    发表于 04-18 09:47 970次阅读

    使用自动BGP在数据中心构建最佳ASN配置

      NVIDIA Cumulus Linux 4.2.0版本引入了一项名为自动BGP(Auto BGP)的新功能,该功能使二层叶脊网络配置中的BGP ASN分配变得快速而简单。
    的头像 发表于 04-30 07:39 736次阅读
    使用自动<b class='flag-5'>BGP</b>在数据中心构建最佳ASN<b class='flag-5'>配置</b>

    BGP路由优选规则的深入了解

      一台BGP路由器有可能学习到关于同一个目的路由前缀的多条BGP路径,当这些BGP路径都是valid有效时,路由器将如何优选呢?BGP的众多路径属性如何影响
    的头像 发表于 11-14 09:54 2590次阅读

    跟大家聊聊BGP与OSPF

    BGP和OSPF是两种最常见的路由协议,BGP在大型网络中具有动态路由优势,而OSPF具有更高效的路径选择和收敛速度。
    的头像 发表于 01-30 11:56 3194次阅读

    BGP知识点总结

    该路由同时作为与其他BGP邻居建立邻居关系时的底层路由,那么这条BGP路由将不优,不能传递也不能加表
    的头像 发表于 04-10 10:42 1221次阅读

    如何配置Cilium和BGP协同工作呢?

    官方提供了多篇文档说明如何配置 Cilium 和 BGP 协同工作,本文主要对以下部分功能进行验证
    的头像 发表于 08-15 09:15 923次阅读
    如何<b class='flag-5'>配置</b>Cilium和<b class='flag-5'>BGP</b>协同工作呢?

    华为路由器BGP基础配置实验记录

    配置BGP的前提是要保证各个自治区域的路由均可达,所以要首先在AS 2 配置OSPF使AS 2 通畅,然后再配置BGP。由于
    发表于 01-06 10:07 374次阅读
    华为路由器<b class='flag-5'>BGP</b>基础<b class='flag-5'>配置</b><b class='flag-5'>实验</b>记录