版权声明:原创作品,谢绝转载!否则将追究法律责任。
 
    3.对bgp不够了解
    4.as间带宽太小
----------------------------------------------------------------------------------
bgp的防环机制:bgp是通过as-path来做路由策略,到达目标网络时每经过一个AS,就把AS号记录到它的path中,如果路由器收到一个路径中含有他本地的AS号,这就出现了环路。
----------------------------------------------------------------------------------
bgp表只能看到AS树,也就是到达目的网段所经过的AS号,以及下一跳等信息,而IGP表是显示域内拓扑结构,可以通过命令show ip bgp命令查看,*表示这条路由可得,>表示这是最佳的,i是域内的网段
----------------------------------------------------------------------------------
bgp可以支持负载均衡,一般情况下,当某个特殊目的网络有并列的,等开销的路径时,cisco缺省执行ebgp只选择一条路径,可以使用命令 maximum-paths 改变,注意只能对ebgp有效
---------------------------------------------------------------------------------
bgp表:
     邻居表:列出周围的邻居,可以是直连也可以不直连
     转发表:从邻居那学习到的,包含到达某个目的的多条路径
     路由表:最好的路径
----------------------------------------------------------------------------------
bgp具有4种包的类型:
open:hello,是我
                   keepalive: 我还活着,
                   update: 有新东西了,
                   notification:我不和你玩了
bgp的open包:发送bgp版本(默认为V4),as号,holdtime(180s),router-id(最高的loopback ip值), 其它的操作特性
keepalive:保持时间,默认位60秒,是不可靠传输
update:包括到达目标网络的路径和属性network layer reachability information(NLRI)网络层可靠信息,公布ip前缀和前缀的字节数
       path attribute:属性:起点,as路径,邻居,as间的度等
       withdrawn routes:不可达的路由撤消的目的地址字节组(长度和前缀)
notification:出现错误,监测到后断开连接并发送通知给对方
----------------------------------------------------------------------------------
bgp和isis一样以链路为边界,ebgp的peer邻居在不同的as之间的路由器,必须要求直连,ibgp的邻居peer要求在同一as中的路由器,不要求直连的,但必须建立tcp连接bgp路由一般不会再发布到igp中去,因为bgp的内容太庞大,但可以使用静态路由或默认路由,但igp会再发布
到bgp中,以便告诉外部如何进入内部网络
----------------------------------------------------------------------------------
bgp的启动机制:
1,idle states:开始状态
2,connect state:连接状态,如果建立连接成功,向邻居发open消息,转入open状态。如果不成功,继续监听发出的连接,重置计时器并转移到active状态。如果在连接状态下,连接计时器超时后将重新开始,并再次与邻居建邻居
3,active激活状态:试图与邻居建立tcp连接的过程
4,open send状态:open消息发送状态,发送open消息,bgp等待邻居发来的open消息
                 收到open消息,发现差错,将发notification消息并转入idle状态
                 收到open消息,没有发现差错,将发送keepalive消息并将此计时器清零
                 收到tcp断开消息,本地断开bgp连接,重置connect计时器,转入active状态
5,open confirm状态:open消息确认状态,等待一个keepalive消息或notification消息
                 收到一个keepalive消息,转移到establish状态
                 收到一个notification消息,转入idle状态,断开tcp连接
                 holdtime超时,发送notification并断开连接,转入idle状态
00:47:37: BGP: 2.2.2.2 OPEN has ROUTE-REFRESH capability(new) for all address-families
00:47:37: BGP: 2.2.2.2 went from OpenSent to OpenConfirm
00:47:37: BGP: 2.2.2.2 send message type 1, length (incl. header) 45
00:47:37: BGP: 2.2.2.2 send message type 4, length (incl. header) 19
00:47:37: BGP: 2.2.2.2 rcv message type 4, length (excl. header) 0
00:47:37: BGP: 2.2.2.2 went from OpenConfirm to Established
00:47:37: %BGP-5-ADJCHANGE: neighbor 2.2.2.2 Up
----------------------------------------------------------------------------------
ibgp的水平分割:在一个as中,从ibgp学习到的路由绝对不会传递给其它的邻居,igp是基于端口的水平分割,而ibgp是基于邻居的水平分割
----------------------------------------------------------------------------------
ibgp的全网连接:在一个as中,bgp的邻居路由器通常要求全互连,但是如果有n个路由器,就必须建立n(n-1)/2个连接,将会加大巨大的成本,如果不建立全互连,将会出现丢包的现象。
解决方法:将bgp重分布到igp中,但我们一般不建议这么做。加入到远端的静态路由,然后再发布到igp中
----------------------------------------------------------------------------------
bgp的属性
公认必遵:
 origin:可信度,0-igp学到,1-egp学到,3-incomplete其它手段学到,igp>bgp>重分布
 as-path:as路径,逐级逐级的叠加,如果发现有自己的as存在,就有可能出现环路
 next-hop:下一跳路由器的地址,
 如果宣告路由器和接收路由器在不同as中,下一跳为正在宣告的路由器接口的ip
 如果宣告路由器和接收路由器在同一个as中,并且更新的目的地也在同一as中,下一跳为宣告路由的邻居的ip
 如果宣告路由器和接收路由器是内部peer,但更新消息指向不同AS,下一跳为学习到路由的外部peer的ip
公认可遵:
 local-pref:本地优先级,只在本地有效,不会传到其他区域,值越高优先级越高,默认为100,是控制流出区域的
 automic_aggre:警告下游路由器聚合时产生路径信息丢失,可设置属性aggregate通告
可选传输:
 aggregator:通告汇聚点,采用rid作为汇聚的地址
 community:团队,相当于一个模板,一组成员使用相同的策略,由4个字节构成,前面两个是as号,后面两个定义表示符,cisco正好反过来,你可以用ip bgpcommuity new-format修改
 NO_EXPORT:允许在邻居as内公布但不允许邻居as在发布其它的as
 NONE:删除现有的团队属性
 NO_ADVERTISE:不在ibgp邻居间传递带有该属性的路由
 DELETE:值删除匹配特定团队列表的属性
可选非传递:
 originator_id:由rp使用,一个32比特的值,记录本地as离路由发起者的rid
 cluster_list:路由反射簇的序号,由rp路由反射器使用,如果一个簇中有多个rp,需要bgp cluster-id手工指定id
 multi_exit_disc:用于影响流入as的数据,它允许一个as将其首选入口通知给另一个as,可以在as间传输,最低med值被选择,默认为0
cisco专有:weight:权重,离开as的报文,来选择那一条。它是不传递,从peer学到的所有路由器的权重值为0,由本地路由其产生的所有路由的权重值为32768,值越高越会被选择
r5#show ip bgp
BGP table version is 21, local router ID is 5.5.5.5
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete
   Network          Next Hop            Metric LocPrf Weight Path
*> 1.1.1.0/24       196.1.1.4                              0 65101 65100 i
*> 2.2.2.0/24       196.1.1.4                              0 65101 i
*> 4.4.4.0/24       196.1.1.4                0             0 65101 i
*> 5.5.5.0/24       0.0.0.0                  0         32768 i            
----------------------------------------------------------------------------------
RIB:BGP路由信息库
      Adj-RIB-IN                      Loc-RIB                     Adj-RIB-OUT
    ----------------------> |  ------------------------- | ---------------------->
  判断优先级,做出选择 进入        最优的路由路径                适合的路由   出
---------------------------------------------------------------------------------
bgp选路原则:
                         |权重weight(越大越好)
                         |local-pref本地优先级(越大越好)
                         |本地路由优先(0.0.0.0)
                         |as-path(越短越好)
                         | 起源(igp>bgp>重分布)
                         | MED (越低越好)
                         | ebgp>ibgp
                         | 下一跳igp度量值(越低的)
                         | 越老的路径会被选择
                         | bgp邻居的RouterID(越小越好)
                         > ip地址(最小的)
----------------------------------------------------------------------------------
ibgp和igp的同步:一个从ibgp邻居学习到的路由信息在进入igp表或发布给其他bgp对等体之前,igp必须知道这条路由信息,否则不会发布
r2#show ip bgp
BGP table version is 7, local router ID is 172.16.3.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
* i100.100.100.0/24 172.16.4.5               0    100      0 300 i
r>i172.16.1.0/24    172.16.2.1               0    100      0 i
* i172.16.2.0/24    172.16.2.1               0    100      0 i
*>                  0.0.0.0                  0         32768 i
* i172.16.3.0/24    172.16.3.3               0    100      0 i
*>                  0.0.0.0                  0         32768 i
r>i172.16.4.0/24    172.16.3.3               0    100      0 i
* i200.200.200.0    172.16.1.4               0    100      0 200 i
r2#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route
Gateway of last resort is not set
     172.16.0.0/24 is subnetted, 4 subnets
R       172.16.4.0 [120/1] via 172.16.3.3, 00:00:20, Serial0
R       172.16.1.0 [120/1] via 172.16.2.1, 00:00:05, Serial1
C       172.16.2.0 is directly connected, Serial1
C       172.16.3.0 is directly connected, Serial0
r2中的bgp表中有100.100.100.0和200.200.200.0网络,虽然它们都是全网互连,但它的ibgp和igp没有同步,所以它无法将路由发布给其他的peer,这样,r4和r5都没有学到对方的路由
解决方案:
       1,将bgp重发布到igp中,一般我们不建议
          我们分别在r1和r3上做重发布操作(只需要在边界上)
          如:
              router rip
                 redistribute bgp 100 metric 5
r2#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route
Gateway of last resort is not set
R    200.200.200.0/24 [120/5] via 172.16.2.1, 00:00:14, Serial1
     100.0.0.0/24 is subnetted, 1 subnets
R       100.100.100.0 [120/5] via 172.16.3.3, 00:00:07, Serial0
     172.16.0.0/24 is subnetted, 4 subnets
R       172.16.4.0 [120/1] via 172.16.3.3, 00:00:07, Serial0
R       172.16.1.0 [120/1] via 172.16.2.1, 00:00:14, Serial1
C       172.16.2.0 is directly connected, Serial1
C       172.16.3.0 is directly connected, Serial0
r5#show ip bgp
BGP table version is 9, local router ID is 100.100.100.100
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete
   Network          Next Hop            Metric LocPrf Weight Path
*> 100.100.100.0/24 0.0.0.0                  0         32768 i
*> 172.16.1.0/24    172.16.4.3                             0 100 i
*> 172.16.2.0/24    172.16.4.3                             0 100 i
*> 172.16.3.0/24    172.16.4.3               0             0 100 i
*  172.16.4.0/24    172.16.4.3               0             0 100 i
*>                  0.0.0.0                  0         32768 i
*> 200.200.200.0    172.16.4.3                             0 100 200 i
      
       2.ibgp邻居全网连接,关闭自动同步的功能
         router bgp 100
            no syn
-------------------------------------------------------------------------------
路由反射器RP:
在大型网络中,as间要建立一个全互连的关系,一是成本大,二是工作量大,要有n台路由器,你要建立n*(n-1)/2,当你使用RP技术,提供了C/S机制,建立邻居的条目是N-1。
规则:
    1,如果路由是从非客户的 IBGP对等学习到的,只将它反射给客户
    2,如果路由是从客户处学习到的,将它反射给除了发起该路由的客户外所有的客户以及非客户
    3,如果路由是从 EBGP邻居学来的,将它反射给所有的客户和非客户
举例:只需要在服务端设置就可以了
    router bgp 100
      no synchronization
      bgp log-neighbor-changes
      network 172.16.2.0 mask 255.255.255.0
      network 172.16.3.0 mask 255.255.255.0
      neighbor 172.16.2.1 remote-as 100
      neighbor 172.16.2.1 route-reflector-client
      neighbor 172.16.3.3 remote-as 100
      neighbor 172.16.3.3 route-reflector-client
      no auto-summary
----------------------------------------------------------------------------------
启用bgp进程
       router bgp AS号
一个路由器只能启用一个bgp实例,不会把路由器放入到多个bgp中
----------------------------------------------------------------------------------
建立对等体关系:
1)neighbor 邻居地址/邻居组名 remote-as AS号
 ebgp邻居必须是路由器直连的那个地址,如果是ibgp邻居,就不一定是直连的,可以是as中任意一个地址,但必须保障tcp连通。
 ibgp一般用loopback端口来作为邻居的地址
2)neighbor 邻居地址/邻居组名 shutdown
         暂时的邻居关系不可用,但邻居关系并没有删除,用于维护和策略
3)neighbor 邻居地址 update-source loopback接口
       如果用物理接口指定为邻居的地址,必须要求源地址匹配,如果不匹配会出现数据包丢失的问题,或者网络出现问题,源地址出现问题,这样邻居关系将不稳定,为了保障邻居关系稳定,一致不变,最好用loopback接口,对于ebgp邻居来说,必须还要额外加命令(还必须能够访问到,比如使用静态路由或者路由)
 4)neighbor 邻居地址 ebgp-multihop 跳数值(默认为255)
 5)neighbor 邻居地址 next-hop-self
       ebgp到ibgp,下一跳地址是不会改变的,这样对于像帧中继网络(hub-to-spoke)来说,可能会造成网络不可达的问题,这时候需要修改下一跳地址
 6)neighbor 对等体组名 peer-group
       创建对等体组
 7)neighbor 邻居地址 peer-group 对等体组名
       添加成员到对等体组中
----------------------------------------------------------------------------------
宣告网络:
        network 网络号 mask 子网掩码
        bgp支持vlsm和cidr,所以网络和子网掩码可以使用VLSM,但是要注意宣告的网络如果和接口的IP地址掩码不匹配,将不会进入到BGP表中,如果希望能进入BGP表,需要添加一条命令如:ip route 192.1.1.0 255.255.255.0 null0,这个命令还可以进行网络的汇总
--------------------------------------------------------------------------------
         bgp log-neighbor-changes
         network 200.200.200.0
         redistribute static
         neighbor 10.1.1.9 remote-as 100
         default-information originate
         no auto-summary
      !
      ip route 0.0.0.0 0.0.0.0 Ethernet0
     
      r4#show ip bgp
      BGP table version is 7, local router ID is 200.200.200.201
      Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
      Origin codes: i - IGP, e - EGP, ? - incomplete
      Network          Next Hop            Metric LocPrf Weight Path
      *> 0.0.0.0          0.0.0.0                  0         32768 ?
      *>i192.168.193.0    10.1.1.9                 0    100      0 50 i
      *>i192.168.194.0    10.1.1.9                 0    100      0 50 i
      *>i192.168.196.0    10.1.1.9                 0    100      0 200 i
      *>i192.168.198.0    10.1.1.9                 0    100      0 200 i
      *> 200.200.200.0    0.0.0.0                  0         32768 i
      r3#show ip route
      Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route
       Gateway of last resort is 10.1.1.10 to network 0.0.0.0
       ......
            10.0.0.0/30 is subnetted, 3 subnets
       C       10.1.1.8 is directly connected, Serial1
       C       10.1.1.0 is directly connected, Serial0
       C       10.1.1.4 is directly connected, Ethernet0
       B*   0.0.0.0/0 [200/0] via 10.1.1.10, 00:03:43
       B    192.168.192.0/21 [200/0] via 0.0.0.0, 02:23:03, Null0
----------------------------------------------------------------------------------