fdfdfdf
       
   

* BGP 的工作原理:

  BGP使用TCP作为它的传输协议,端口179. 两个BGP路由器在他们交换信息前首先必须建立TCP连接。在两个BGP自治域之间,通常是用静态路由确认两个自治域的TCP连接的。在每对BGP对等体之间保持着完全相同的BGP表的一个版本号。Keepalive packets 用来确认连接是否依旧存在,或者出现错误

* eBGP and iBGP
  在一个单一的AS中可以出现多个BGP连接。在这种情况下,有多个B G P连接的AS可以用作一个转接AS(transit AS)。当实现B G P时有两种类型的B G P会晤:外部B G P(E B G P)和内部的B G P(I B G P)会晤。 EBGP会晤在两个唯一A S网络之间建立。如果连接是在一个AS网络内的多个路由器之间实现的,可以使用IBGP交流 BGP 路由表。在同一个AS中的路由器之间出现的是IBGP会晤。这允许IBGP路由器协调和同步AS的路由策略。IBGP对等连接不需要彼此邻接。IBGP的对等连接可以有几个跳跃但必须维持在AS内部。

* Enabling BGP Routing

  router bgp autonomous.system

例:Router(config)# router bgp 200
  说明Router是运行bgp路由协议,并且是在自治域200中.

* Forming BGP Neighbors

  neighbor ip.address remote-as number 

例:Router(config)# router bgp 200
  Router(config-router)neighbor 1.1.1.1 remote-as 100
  1.1.1.1所在的路由器是Router的bgp邻居,它所在的自治域号为100

  Router# clear ip bgp address 删除某个bgp邻居
  Router# clear ip bgp  *   删除全部的bgp邻居

* BGP and Loopback Interfaces

  使用loopback地址通常是用在ibgp而不是用在ebgp。告诉对等体自己将使用loopback作为互连的端口.
  neighbor ip.address update-source interface

例:Router(config)#router bgp 100
  Rouger(config-router)#neighbor 190.225.11.1 remote-as 100
  Rouger(config-router)#neighbor 190.225.11.1 update-source loopback 1

* eBGP Multihop

  当EBGP TCP连接不是直接连接的IP地址时,会出现一些情况。当外部BGP AS使用一个单一路由器以连接到内部BGP AS时,或者当外部BGP使用一个回送接口作为邻居I P地址用以将TCP连接到EBGP路由器时,就会发生上述情形。

  前提:只能用于Ebgp,不能用于ibgp.用途:在不是直联的(中间经过ISP或有其他非ciscos设备)时使用.
  
   neighbor [ip-address | peer-group-name] ebgp-multihop [ttl]

  ip-address参数是一个已定义的BGP邻居的IP地址值,该值必须是点分十进制的I P地址格式。 参数peer-group-name值是赋予BGP对等组的标号,这些BGP对等集中作为一个组。ip-address和peer-group-name参数是互斥的。可选的ttl变量跟在ebgp-multihop关键字后面,提供一种机制,以确定为定义的邻居IP地址创建的TCP连接超时。可选的ttl变量值的范围是1~2 5 5。
  
  注意如果到达所定义的邻居的唯一可选值是缺省的0.0.0.0路由,那么Cisco IOS不会建立多跳跃对等连接。

  图例:

  RTA(config)# router bgp 100
  RTA(config-router)#neighbor 180.225.11.1 remote.as 300
  RTA(config-router)#neighbor 180.225.11.1 ebgp.multihop
  
  RTB(config)# router bgp 300
  RTB(config-router)#neighbor 129.213.1.2 remote.as 100

  RTA is indicating an external neighbor that isn't directly connected. RTA needs to indicate that it's using ebgp.multihop. On the other hand, RTB is indicating a neighbor that is directly connected (129.213.1.2), which is why it doesn't need the ebgp.multihop command. You should also configure an IGP or static routing to allow the non.connected neighbors to reach each other. The following example shows how to achieve load balancing with BGP in a particular case where we have eBGP over parallel lines.

* eBGP Multihop (Load Balancing)
  通过使用回送接口作为邻居IP地址,可以在不同自治系统中的两个路由器之间的并行链路上实现负载平衡。因为回送接口不是一个直接连接到EBGP的接口,所以需要使用多跳跃。
  下图说明了这种情况。在标准的EBGP连接中,BGP将选择一条链路来发送报文。但是,通过使用EBGP多跳跃和回送接口, BGP进程可以使用物理连接和执行负载平衡。

路由器R1的配置:

  ip sub-zero
  !
  interface s0
  ip address 192.168.1.1 255.255.255.252
  !
  interface s1
  ip address 192.168.1.5 255.255.255.252
  !
  interface loopback 0
  ip address 192.168.254.254 255.255.255.0
  !
  router bgp 10
  neighbor 192.168.253.253 remote-as 20
  neighbor 192.168.253.253 ebgp-multihop
  neighbor 192.168.253.253 remote-source loopback 0
  !
  ip route 192.168.253.0 255.255.255.0 192.168.1.2
  ip route 192.168.253.0 255.255.255.0 192.168.1.6

路由器R2的配置:

  ip sub-zero
  !
  interface s0
  ip address 192.168.1.2 255.255.255.252
  !
  interface s1
  ip address 192.168.1.6 255.255.255.252
  !
  interface loopback 0
  ip address 192.168.253.253 255.255.255.0
  !
  router bgp 20
  neighbor 192.168.254.254 remote-as 10
  neighbor 192.168.254.254 ebgp-multihop
  neighbor 192.168.254.254 remote-source loopback 0
  !
  ip route 192.168.254.0 255.255.255.0 192.168.1.1
  ip route 192.168.254.0 255.255.255.0 192.168.1.5
  
   在每个路由器中使用ip route命令,可以在配置中引入静态路由。这允许每个路由器能够创建两条到达BGP邻居地址的等开销路径。I G P也能够用于建立等开销路径。

* Route Maps

  route-map配置命令用于BGP上下文中以定义如下的两种情况:将路由信息重分发到其他路由协议中,或者控制路由信息入界或出界BGP自治系统。该命令格式如下:

  route-map map-tag [[permit | deny] | [sequence-number]]

  map-tag变量值是与路由映射相关的一个名称。相同map-tag值的多个实例能够定义于路由器中。在使用相同的map-tag值配置的路由映射列表中,sequence-number变量值定义了route-map的入口位置。
  
  例如,下面的配置标识了名为M A P 1的一个单一路由映射,它带有两个实例。第一个实例使用顺序号10定义,第二个使用顺序号20定义:
  
  route-map MAP1 permit 10
  ( )
  ( )
  ( )
  route-map MAP1 permit 20
  ( )
  ( )
  ( )
  在route-map命令之后的语句描述了应用于map-tag的sequence-number的条件集合。在本例中,如果在MAP1实例10后面的条件不满足,则IOS前进到下一个更高的使用相同map-tag值的实例,在这种情况下,使用MAP1实例20及其相关的条件。route-map命令的permit和deny关键字,标识在路由信息上所做的动作。
  在一个route-map命令后的条件使用match和set配置命令进行定义:
  match命令定义了用于确定路由信息是否感兴趣的标准,而set命令指定在路由信息上所采取的动作。
  
  例如,如果route-map条件是:
  
  match ip address 10.1.20.100
  set metric 10

  如果我们在route-map中使用的是permit并且符合match中所要求的条件的时候,则路由相应地根据match命令后面的set命令而被重分发或控制。

  如果我们在route-map中使用的是deny并且符合match中所要求的条件的时候,则路由不被重分发或控制

  如果匹配根本不能满足,并且在route-map命令上既不指定permit也不指定deny,则检查route-map的下一个实例。这种检查会持续到直到列表满足匹配为止。万一在列表中没有发现任何匹配,则路由将不会被接受,也不会转发。

  例子:

  Assume RTA and RTB are running rip; RTA and RTC are running BGP. RTA is getting updates via BGP and redistributing them to rip. If RTA wants to redistribute to RTB routes about 170.10.0.0 with a metric of 2 and all other routes with a metric of 5 then we might use the following configuration:
  在如下的路由器配置实例中,一个典型的配置是:一个AS运行RIP并且使用BGP完成到另一个AS的连接。如图所示,路由器RTA和路由器RTB在它们的AS内部使用RIP,AS100的路由器RTA和AS200的路由器RTC使用BGP进行路由信息的更新。路由器RTA重新分配从路由器RTC接收的BGP更新报文,将其转换成RIP并分配到路由器RTB。如果RTA倾向于将再发布到RTB的172.10.0.0的度量值设置为2,而其他的度量值设置为5。



  RTA#
  router rip
  network 3.0.0.0
  network 2.0.0.0
  network 150.10.0.0
  passive.interface Serial0
  redistribute bgp 100 route.map SETMETRIC
  router bgp 100
  neighbor 2.2.2.3 remote.as 300
  network 150.10.0.0
  route.map SETMETRIC permit 10
  match ip.address 1
  set metric 2
  route.map SETMETRIC permit 20
  set metric 5
  access.list 1 permit 170.10.0.0 0.0.255.255

  这种情况发生在过渡的自治域的情况,也就是

  a------b<------as100
  |    |
  d~200 e~300
  三台路由器其中a&b在同一个自治域,他们之间是ibgp的关系,如果e想从b上收所有来自于as200的路由,其他as的陆由并不关心,就需要在b上作redistribute
  在bgp,默认的metric 是20

  

 

  
    
     

<>  www.rosyou.com <>