【网络工程师路由篇】BGP 入门实验


  • 基础配置网络

  • 修改下一跳为自身app

  • 指定更新源IP地址ide

  • 完成这个实验oop

  • EBGP多跳学习

  • 学会看三张表测试

    • BGP邻居表ui

    • BGP表url

    • 路由表,display ip routing-tablespa

基础配置

图片

  • R一、R二、R3属于AS 123;R4属于AS 400;
  • R一、R二、R3运行OSPF,运行OSPF的目的是为了打通AS 123内的路由;
  • R3-R4之间创建EBGP邻居关系,R2不运行BGP;
  • R1-R3之间创建IBGP邻居关系;
  • 在R4上,将路由4.4.4.0/24发布到BGP。

R1的配置以下(省略接口IP地址的配置):3d

[R1] ospf 1 router-id 1.1.1.1
[R1-ospf-1] area 0
[R1-ospf-1-area-0.0.0.0] network 10.1.12.0 0.0.0.255
[R1] bgp 123  #建立BGP进程,AS号为123
[R1-bgp] router-id 1.1.1.1 #配置BGP Router-ID
[R1-bgp] peer 10.1.23.3 as-number 123  #配置BGP邻居(指定邻居的地址及AS号),因为该邻居的AS号与本地AS号一致,所以二者之间为IBGP邻居关系。

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

R3的配置以下:

[R3] ospf 1 router-id 3.3.3.3
[R3-ospf-1] area 0
[R3-ospf-1-area-0.0.0.0] network 10.1.23.0 0.0.0.255
[R3] bgp 123
[R3-bgp] router-id 3.3.3.3
[R3-bgp] peer 10.1.34.4 as-number 400  #配置EBGP邻居R4
[R3-bgp] peer 10.1.12.1 as-number 123  #配置IBGP邻居R1

R4的配置以下:

[R4] interface loopback 0
[R4-loopback0] ip address 4.4.4.4 24
[R4] bgp 400
[R4-bgp] router-id 4.4.4.4
[R4-bgp] peer 10.1.34.3 as-number 123
[R4-bgp] network 4.4.4.0 24  #把本地直连路由network进BGP

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

[R3] display bgp routing-table
BGP Local router ID is 10.1.23.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 4.4.4.0/24 10.1.34.4 0 0 400 i

咱们看到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] display ip routing-table protocol bgp
Destination/Mask Proto Pre Cost Flags NextHop Interface
4.4.4.0/24 EBGP 255 0 D 10.1.34.4 GigabitEthernet0/0/1

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

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

在R1上查看BGP路由表:

[R1]display bgp routing-table
Network NextHop MED LocPrf PrefVal Path/Ogn
i 4.4.4.0/24 10.1.34.4 0 100 0 400i

咱们看到,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。那么还有什么其余办法能解决这个问题么?加入交流群696283186获取更多实验详细配置

修改下一跳为自身

  • 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路由表:

图片

指定更新源IP地址

能够手工指定用于创建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的关键配置以下:

[R1] Interface loopback0
[R1-Loopback0] ip address 1.1.1.1 32
[R1] bgp 123
[R1-bgp] peer 3.3.3.3 as-number 123
[R1-bgp] peer 3.3.3.3 connect-interface LoopBack 0

R3的关键性配置以下:

[R1] Interface loopback0
[R1-Loopback0] ip address 3.3.3.3 32
[R1] bgp 123
[R1-bgp] peer 1.1.1.1 as-number 123
[R1-bgp] peer 1.1.1.1 connect-interface LoopBack 0
[R1-bgp] peer 1.1.1.1 next-hop-local

注意,务必要将R1及R3的Loopback0接口激活OSPF。加入交流群696283186获取更多实验详细配置

完成这个实验

通过前面的讲解,咱们的环境如今是这样的: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,并与R一、R3创建IBGP邻居关系,这样一来问题就解决了。那么BGP邻居关系就变成了以下图所示。具体配置此处再也不赘述。

EBGP多跳

图片

一般状况下,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的关键配置以下:

[R1] bgp 64512
[R1-bgp] peer 2.2.2.2 as-number 64513
[R1-bgp] peer 2.2.2.2 ebgp-max-hop 2
[R1-bgp] peer 2.2.2.2 connect-interface loopback0
[R1] ip route-static 2.2.2.2 32 10.1.10.2
[R1] ip route-static 2.2.2.2 32 10.1.20.2 80

R2的关键配置以下:

[R2] bgp 64513
[R2-bgp] peer 1.1.1.1 as-number 64512
[R2-bgp] peer 1.1.1.1 ebgp-max-hop 2
[R2-bgp] peer 1.1.1.1 connect-interface loopback0
[R2] ip route-static 1.1.1.1 32 10.1.10.1
[R2] ip route-static 1.1.1.1 32 10.1.20.1 80

学会看三张表

BGP邻居表

图片

BGP表

图片

查看BGP条目的详细信息:

图片

路由表,display ip routing-table

相关文章
相关标签/搜索