BGP常见使用技巧
  
  一,黑洞的解决方案
  1.使用环回口建立邻居
  在使用bgp建立邻居时,有时会有多条冗余链路,为防止单点故障和路由表抖动,建议使用环回口建立邻居关系。
  方法很简单,建立邻居时填写对方环回口地址,然后指定更新源是环回口(neighbor X.X.X.X update-source loopback X),记得要有路由哦。
  如果是EBGP的话,还要指定跳数(neighbor [ip] ebgp-multihop X)
  
  BGP路由黑洞的解决方案:
   1:选择性重分布(Redistribute Selected BGP Route into IGP);
   2:冗余的IBGP(Full-mesh IBGP);
   3:路由反射器(Part-mesh IBGP+Refilector);
   4:联邦(Confederation);
   5:(MPLS)。
  
  
  
  
  
  
  
  二,使用手工汇聚路由条目和简单的认证
  同上为了防止单点故障造成的抖动,可以将多条路由汇聚成一条。
  有两种办法 一种是 通过指向NULL0 口的静态路由进行汇总。但这种不利于排错
  二是 通过汇聚命令 aggregate-address [network] [mask] summary-only。此命令只起汇聚不添加路由,比较好
  在BGP建立邻居时可使用简单的认证如:neighbor [ip] password [password] 两端需一致哦
  
  
  
  
  
  
  四,使用本地优先级操纵离开BGP的数据流
  如图:
  http://www.douban.co​m/photos/photo/88620​3721/
  
  1.当R4想访问130.130.1.0 时,是这样走的:R4——R3——R1——130.130.1.1
  主要原因是,BGP在选择最佳路由时,并不会考虑具体带宽。为解决此问题,可以配置本地优先级来操纵路由,使其按照需求选择路径。
  如果需要使R4的数据流:R4——R2——R1——130.130.1.1
  可以在R2上的BGP进程里将本地优先级设成200(值越高优先级越高)
  R2(config-router)#bgp default local-preference 200
  然后通告R4下一跳是自己
  r2(config-router)#neighbor 10.1.1.1 next-hop-self
  就OK了
  
  2.如果R4想访问130.130.1.0和150.150.1.0,并希望去130.130.1.0通告R2走,去150.150.1.0是通过R3走怎么办?
  因为在默认情况下都是通过R3走的,所以我们只需要把去往130.130.1.0的流量单独提出来就好了。
  在R2上建一个访问列表匹配去130.130.1.0的网段
  r2(config)#access-list 1 permit 130.130.1.0 0.0.0.255
  然后用route-map调用它,设一个名为set_lp的route-map,匹配允许,进程为10
  r2(config)#route-map set_lp permit 10
  当匹配访问列表1时
  r2(config-route-map)#match ip address 1
  设置本地优先级为200
  r2(config-route-map)#set local-preference 200
  当出现其他情况时,按默认方式进行
  r2(config)#route-map set_lp permit 20
  在进程下指定方向并套用route-map
  R2(config-router)#neighbor 192.168.2.2 route-map set_lp in
  将下一跳指为自己
  r2(config-router)#neighbor 10.1.1.1 next-hop-self
  就OK了
  
  
  
  
  
  
  五,使用MED(多出口鉴别器)操纵流入BGP的数据流
  http://www.douban.co​m/photos/photo/88620​3721/
  根据以上例子,想让R4通过R2访问130.130.1.0,让R4通过R3访问150.150.1.0。
  通常访问这两个网段 都从R3走,那么需要将去往130.130.1.0网络的流量改成从R2走
  因为MED是操纵流入的流量,我们只要将R2通过R3去往130.130.1.0流量的metric值提高。那么它自然会从R2走了
  下面是命令:
  和上一个例子一样,设置一个访问列表,route-map匹配它时执行MED,然后在BGP进程下套用。
  在R3上输入
  access-list 1 permit 130.130.1.0 0.0.0.255
  
   route-map set-med permit 10
   match ip address 1
   set metric 100
   route-map set-med permit 20
  
   router bgp 64512
   neighbor 192.168.1.2 route-map set-med out
  最后记得在R2上nei 10.1.1.1 next-hop-self
  
  
  
  
  
  
  六,使用weight(权重)在本地路由器上操纵去往多个AS的流量
  如图
  http://www.douban.co​m/photos/photo/88620​3773/#next_photo
  R2要去往150.150.1.0。由于R4的route-id比较小,根据BGP选路原则可能会选R4,但我们想让去150.150.1.0的流量从R1走。所以我们必须人为操纵。使用weight是一种办法。当然,就像前面两个例子一样,我们也使用route-map,因为route-map可以精确匹配。
  在R2上输入
  access-list 1 permit 150.150.1.0 0.0.0.255
  
   route-map weight permit 10
   match ip address 1
   set weight 100
   route-map weight permit 20
  
   router bgp 64512
   neighbor 192.168.4.1 route-map weight in
  
  
  
  
  
  
  七,使用AS_path(路径欺骗)在本地路由器上操纵去往多个AS的流量
  还是如上图
  http://www.douban.co​m/photos/photo/88620​3773/#next_photo
  其实AS-path和MED差不多,可以算是MED的一种替代解决方法,但是它适用范围不大
  access-list 1 permit 150.150.1.0 0.0.0.255
  
   route-map as-path permit 10
   match ip address 1
   set as-path prepend 64514 64514
  在set as-path prepend后添加的AS号,最好是本地自治系统号,否则可能会产生无效路由
   route-map as-path permit 20
  
   router bgp 64514
   neighbor 192.168.2.1 route-map as-path out