AS:autonomous system 自治系统

   自治也就是能自行决定一些东西,那这些“东西”是什么呢?

   在网络中,我们熟悉的就是路由协议一些网络的只是。在一个大的网络中,特别像大型运营商

如:电信、广电、网通,他们承载的是整个中国的整个使用他们网络服务的网络。

   所以一个运行商可以决定在他的网络中实行统一的网络技术,比如路由协议。在这里的AS就是

能自行决定使用什么样的路由协议的网络系统。

   简单一个AS理解为一个大的由专门人管理的网络,而且这个网络还不小。

BGP:用来提供AS之间进行路由选择的协议。

那它为什么就能,而别的IGP就不能支持呢?

1、在管理方面,表现出异于IGP协议的特性

2、支持更大网络,而IGP最大几万条路由

3、路由的控制更好

4、扩展应用,支持IPV6,×××V4

BGP的特性:

1、基于TCP端口179的可靠连接

   大家要理解,在进行TCP连接的双方之间只有一条TCP连接。

   所以不要理解为所有发起的目的端口都是179的

   若开始双方都发送建立改TCP的连接,成功后,会随机down掉一条

2、只能增量更新,不然一下十几万条的路由的更新,会让链路带宽不够用

3、周期60秒发送keepalive报文

   IGP中的hello的作用:

     *建立邻居关系

     *keepalive,检查邻居关系是否存活

   BGP中建立邻居是通过open报文;

   用keepalive报文查看是否是keepalive


BGP默认是不做负载均衡,它会选出一条最优的路由

四种报文:open,keepalive,update,notification


BGP建立邻居不需要直连,只需要路由可达就可以咯!


为什么路由已经传送过去了,还是会有路由黑洞呢?

路由传送的时候,是一段一段网络传送的,其中的源和目的地址都是在一个网段

数据传送的时候,源和目的IP地址是固定不变的。


解决该路由黑洞:

1、物理线路的full mesh,一般不用

2、邻居的full mesh,很常用哦

3、BGP重分布进IGP路由协议,不推荐哦!

4、MPLS,它是最好的解决方案


IBGP的水平分割原则:从IBGP学到的路由不会转发给IBGP邻居

EBGP的水平分割原则:记录所经过的AS,当记录到自己的时候,丢弃它


有条件的打破IBGP的水平分割的方法:联盟和RR


实验拓扑:

wKioL1OJT4vjJ2C1AAEsWXvk7VQ944.jpg先建立R4和R2之间的EBGP邻居关系

R4:

  router bgp 4

    bgp router-id 4.4.4.4

    neighbor 24.1.1.2 remote-as 1

R2:

  router bgp 1

    bgp router-id 2.2.2.2

    neighbor 24.1.1.4 remote-as 4

这样就可以建立EBGP邻居关系了

为什么不用loopback作为彼此的neighbor呢?

因为他们彼此路由不可达,只有直连链路


IGP的network:建立邻居;通告路由

BGP建立邻居:neighbor

BGP通告路由:network


IGP中的network宣告的是接口,而BGP中network宣告的路由表中出现的路由

show ip bgp summary 显示邻居信息简表

show ip bgp neighbor 显示邻居的详细信息

show ip bgp 显示bgp 表

show tcp brief 显示BGP的TCP连接情况


建立R2和R3之间的IBGP邻居关系

前提:必须要有到达彼此的可达路由,我们这里选择OSPF来实现

R2:

   router ospf 110

     router-id 2.2.2.2

     network 12.1.1.0 0.0.0.255 area 0

     networrk 2.2.2.2 0.0.0.0 area 0

   router bgp 1

     bgp router-id 2.2.2.2

     neighbor 3.3.3.3 remote-as 1

     光以上的命令还是不能建立IBGP邻居关系的

     neighbor 3.3.3.3 update-source l0

     指定更新源为Loopback0口

R3:

   router ospf 110

     router-id 3.3.3.3

     network 13.1.1.0 0.0.0.255 area 0

     network 3.3.3.3 0.0.0.0 area 0

   router bgp 1

     bgp router-id 3.3.3.3

     neighbor 2.2.2.2 remote-as 1

     neighbor 2.2.2.2 update-source lo0

R1:

   router ospf 110

     router-id 1.1.1.1

     network 1.1.1.1 0.0.0.0 area 0

     network 12.1.1.0 0.0.0.255 area 0

     network 13.1.1.0 0.0.0.255 area 0

     知道为什么建立IBGP邻居的时候,选择LOOPBACK口吗?因为环回口稳定,特别是在之间有多链路的时候,我们不好指定直连接口,但是我们可以指定环回口啊!不是吗?

单边指定更新源也是可以通的,但是建议双边全做。


建立R3和R5之间EBGP邻居关系,且用的环回口

首先要解决的是路由可达的问题,我们这里用静态路由先

R3:

   ip route 5.5.5.5 255.255.255.255 s0/0

R5:

   ip route 3.3.3.3 255.255.255.255 s0/0

还有就是BGP传送的报文的TTL默认都是一跳,所以需要配置EBGP的多条设置

为什么上面的IBPG建立的过程不需要设置多跳呢?在这里的一跳就是一个AS

而他们是在一个AS,不出一跳的哦!明白了吧!

R3:

   router bgp 1

     neighbor 5.5.5.5 remote-as 5

     neighbor 5.5.5.5 update-source l0  需要设置更新源的吧!

     neighbor 5.5.5.5 ebgp-multiphop 2,这里是2跳

R5:

   router bgp 5

     bgp router-id 5.5.5.5

     neighbor 3.3.3.3 remote-as 1

     neighbor 3.3.3.3 update-source l0

     neighbor 3.3.3.3 ebgp-multihop 2

邻居关系已经建立完毕了,现在我们需要将R4上的环回口网络100.1.1.0/24通告出去

R4:

   interface l100

   ip add 100.1.1.1 255.255.255.0

   router bgp 4

   network 100.1.1.0 mask 255.255.255.0

R4(config-router)#do show ip bgp

BGP table version is 2, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete


   Network          Next Hop            Metric LocPrf Weight Path

*> 100.1.1.0/24     0.0.0.0                  0         32768 i

R2#show ip bgp

BGP table version is 2, local router ID is 2.2.2.2

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete


   Network          Next Hop            Metric LocPrf Weight Path

*> 100.1.1.0/24     24.1.1.4                 0             0 4 i

R3(config-router)#do show ip bgp

BGP table version is 1, local router ID is 3.3.3.3

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete


   Network          Next Hop            Metric LocPrf Weight Path

* i100.1.1.0/24     24.1.1.4                 0    100      0 4 i

到R3接受的路由就不是最优路由了

不是最优的结果就是不放进路由表,不通告给邻居

这样的话,R5应该收不到该条路由了

R5(config-router)#do show ip bgp

为空

上面的原因就是IBGP的水平分割原则造成的

BGP路由优的条件:

1、同步:

   指的是IGP路由和IBGP路由同步的时候,才可以通告该条路由

   所以方法有两个:

   一是关闭同步,no sychronization

   二是创建一个静态路由欺骗路由器

2、下一跳因为R3和R2是属于一个AS的,所以100.1.1.0/24的路由的下一跳还是24.1.1.4

   所以为了改变下一跳,使用下面命令

   R2:

      router bgp 1

      neighbor 3.3.3.3 next-hop-self告诉下一跳路由器下一跳是自己

完成上面的两步,路由就可以变成最优


为什么需要同步的规则呢?为了防止路由黑洞,且该同步的概念针对的是IBGP来说的

现在的配置完成了100.1.1.0的路由正确的传送到R5,但是路由黑洞还是存在的哦!

回忆上面解决路由黑洞的方法,我们选择BGP邻居关系的FULL MESH


R1、R2、R3之间建立BGP邻居关系

这里需要用到peer-group命令,为了减少配置命令行的配置量

现在写下配置,peer-group 后续写

R1:

   router bgp 1

     bgp router-id 1.1.1.1

     neighbor 2.2.2.2 remote-as 1

     neighbor 2.2.2.2 update-source l0

     neighbor 2.2.2.2 next-hop-self

     no sychronization

     neighbor 3.3.3.3 remote-as 1

     neighbor 3.3.3.3 update-source l0

     neighbor 3.3.3.3 next-hop-self

     neighbor 5.5.5.5 remote-as 5

     neighbor 5.5.5.5 update-source l0

     neighbor 5.5.5.5 ebgp-multihop 2

看到了吗?是不是有很多的重复的信息,我们可以将重复的信息做成peer-group

neighbor  test  peer-group

neighbor test remote-as 1

neighbor test update-source l0

neighbor test next-hop-self

neighbor 2.2.2.2 peer-group test

neighbor 3.3.3.3 peer-group test

配置量是不是减少了啊!