CCNP路由实验之七 动态路由之BGP

动态路由协议能够自己主动的发现远程网络,仅仅要网络拓扑结构发生了变化,路由器就会相互交换路由信息,不仅能够自己主动获知新添加的网络,还能够在当前网络连接失败时找出备用路径。依据是否在一个自治域内部使用,动态路由协议分为内部网关协议(IGP)和外部网关协议(EGP)。这里的自治域指一个具有统一管理机构、统一路由策略的网络。自治域内部採用的路由选择协议称为内部网关协议,经常使用的有RIP、EIGRP、OSPF、IS-IS;外部网关协议主要用于多个自治域之间的路由选择,经常使用的是BGP和BGP-4。在一个路由器中,可同一时候配置静态路由和一种或多种动态路由。它们各自维护的路由表都提供给转发程序,但这些路由表的表项间可能会发生冲突。这样的冲突可通过配置各路由表的优先级来解决。通常静态路由具有默认的最高优先级,当其它路由表表项与它矛盾时,均按静态路由转发。

简单介绍

  BGP用来连接)连接,即是单播的路由协议,它们交换整个BGP路由表。从这个时候開始,在路由表发生变化时,再发送更新信号。BGP是一个距离向量协议,可是与(通告到目的地址跳数的)RIP不同的是,BGP列举了到每一个目的地址的路由(自治系统到达目的地址的序列号)。这样就排除了一些距离向量协议的问题。採用16bit数字表示自治系统标识。尽管BGP协议保持通向特定目标的全部路径的路由选择表,但在路由选择刷新消息中仅仅说明最佳路径。BGP协议的路由度量方法能够是一个随意单位的数,它指明某一个特定路径可供參考的程度,这些度量方法通常都是由网络管理人员通过配置文件来设置。可參考的程度能够基于不论什么数字准则,比如终于系统计数(计数越小时路径越佳)、数据链路的类型。

BGP 的两种邻居——IBGP和EBGP,BGP的邻居关系(或称通信对端/对等实体)是通过人工配置实现的,对等实体之间通过TCP(port179)会话交互数据。BGP路由器会周期地发送19字节的保持存活keep-alive消息来维护连接(默认周期为30秒)。在路由协议中,仅仅有BGP使用TCP作为,优先级比EBGP和不论什么内部网关协议(IGP)通告的路由都低。其它的路由器实现中,优先级顺序也是EBGP高于IGP,而IGP又高于IBGP。在建立邻居关系的时候,我们都採用Loopback地址来建立,但要保证Loopback地址可达,採用Loopback地址建立的邻居不会应为链路的down而断。

  1. IBGP路由通告:BGP Speaker 从IBGP获得的路由不会通告给它的IBGP邻居(在一定的程度上能避免AS内的环路),就会造成不是与该路由器建立邻居不能学到路由,解决方式:①採用全连接②採用RR反射器③採用联盟的方式。

  2. EBGP路由通告:BGP Speaker 从EBGP获得的路由会向全部的BGP对等体通告(包括IBGP和EBGP)

我们知道,在自治系统内部使用IGP路由协议;而在不同自治系统之间使用BGP路由协议,EBGP用于在不同自治系统之间,IBGP也是应用于自治系统内部,此时就要理解他们之间的关系:

  1. IGP的能力限制,IGP处理路由的条目有限,而眼下internet上核心路由器的路由表已经超过10万条。假如没有IBGP,那么这些路由仅仅能採取重分发的方式直接导入到IGP中,这样做的缺点非常明显:第一,IGP协议的作者并没有打算让IGP来处理如此大量的路由,IGP本身也无法处理这样大的路由数量;第二,假设非要让IGP来处理,那么依据IGP的处理原则,假如这10万路由中不论什么一条路由发生变化,那么执行IGP的路由器就不得不又一次计算路由这样的计算量对于绝大多数路由器来说是无法负担的

  2. 路由环路的问题。BGP是靠路由属性来防止路由环路的,比如AS_PATH属性,假如说没有IBGP协议,那么当全部BGP路由重分发到IGP中后,路由属性必定丢失,这就破坏了BGP的路由环路防止机制,产生了路由环路的隐患。

  3. IBGP之间是TCP连接,也就意味着IBGP邻居採用的是逻辑连接的方式,两个IBGP连接不一定存在实际的物理链路。所以须要有IGP来提供路由,以完毕BGP路由的递归查找。 BGP协议本身实际上并不发现路由,BGP将路由发现的工作全部移交给了IGP协议,它本身着重于路由的控制。因此,假设没有IGP,那么BGP也就毫无用处了。

    EBGP与IBGP的差别:

  1. 路由环路的避免措施不一样,IBGP强制规定ibgp speaker不同意把从一个ibgp邻居学习到的前缀传递给其它ibgp邻居,因此IBGP要求逻辑全连接。EBGP没有这样的要求,EBGP对路由环路的避免是通过AS_PATH属性来实现的。

  2. 使用的BGP属性不同,比如IBGP能够传递LOCAL_PREF(本地优先属性),而EBGP不行。

  3. IBGP有同步的要求,而EBGP没有同步的要求

  4. IBGP不须要IBGP邻居之间有物理连接,仅仅须要逻辑连接就可以,而EBGP下普通情况下都要求EBGP邻居之间存在物理连接。

    BGP属性:

路由器发送关于目标网络的BGP更新消息,更新的度量值被称为路径属性。属性能够是公认的或可选的、强制的或自由决定的、传递的或非传递的。属性也能够是部分的。并不是组织的和有组合的都是合法的,路径属性分为4类:公认必遵、公认自决、可选过渡、可选非过渡。当中公认必遵、公认自决为

公认属性;可选过渡、可选非过渡为非公认属性被称为可选的,可选属性能够是传递的或非传递的,可选属性不要求全部的BGP实现都支持。对于不支持的可选传递属性,路由器将其原封不动的传递给其它BGP路由器,在这样的情况下,属性被标记为部分的。对于可选非传递属性,路由器必须将其删除,而不将其传递给其它BGP路由器。

(1)公认必遵(Well-Known Mandatory)是公认全部BGP实现都必须识别的属性,这些属性被传递给BGP邻居。公认强制属性必须出如今路由描写叙述中,公认自由决定属性能够不出如今路由描写叙述中,例如以下:

ORIGIN(起源):这个属性说明了源路由是如何放到BGP表中的。有三个可能的源IGP,EGP,以及INCOMPLETE.路由器在多个路由选择的处理中使用这个信息。路由器选择具有最低ORIGIN类型的路径。

AS_PATH(AS路径):指出包括在UPDATE报文中的路由信息所经过的自治系统的序列。

Next_HOP(下一跳)声明路由器所获得的BGP路由的下一跳,对EBGP会话来说,下一跳就是通告该路由的邻居路由器的源地址。

(2)公认自决(Well-Known Discretionary)

LOCAL_PREF(本地优先级):本地优先级属性是用于告诉自治系统内的路由器在有多条路径的时候,如何离开自治系统。本地优先级越高,路由优先级越高。

ATOMIC_AGGREGATE(原子聚合):原子聚合属性指出已被丢失了的信息。

(3)可选过渡(Optional Transitive)

AGGREGATOR(聚合者):此属性标明了实施路由聚合的BGP路由器ID和聚合路由的路由器的AS号。

COMMUNITY(团体):此属性指共享一个公共属性的一组路由器。

(4)可选非过渡(Optional Nontransitive)

MED(多出口区分):该属性通知AS以外的路由器採用哪一条路径到达AS,它也被觉得是路由的外部度量,低MED值表示高的优先级。

ORIGINATOR_ID(起源ID):路由反射器会附加到这个属性上,它携带本AS路由器的路由器ID,用以防止环路。

CLUSTER_LIST(簇列表):此属性显示了採用的反射路径。

BGP术语

  1. BGP两个版本号:BGP4因特网上所用的主要区域间路由选择协议的第4版,它支持CIDR并使用路由集合机制减小路由表的大小;BGP4+使BGP4能够支持多种种状态:

      1. Idle:查找路由表,该过程BGP对它的资源进行初始化,复位一个连接重试计时器,  发起一条TCP 连接,并開始倾听远程对等体所发起的连接。

      2. Connect:找到路由表后进行TCP三次握手,TCP 连接成功,则转到OpenSent状态,TCP连接失败,则转到active 状态,将尝试再次连接。

      3. Open Sent:握上手后发送Open message消息,等待其对等体发送打开消息,假设出错,则发送一条出错消息并退回空暇状态,假设无错,则開始发送Keepalive 并复位keepalive 计时器。

      4. Open Confirm:收到对方发来的Open消息,假设收到keepalive 消息,BGP 就进入established状态,邻居关系协商完毕;假设系统收到一条更新或keepalive 消息,它将又一次启动保持计时器;假设收到Notification消息,BGP 就退回到空暇状态。

      5. Established:会话建立,邻居关系协商过程终于状态;这时BGP将開始与它的对等体交换路由更新数据包。

        BGP协议的特点

        BGP是一种AS(自治区域)外部路由协议,主要负责本自治区域和外部的自治区域间的路由可达信息的交换。因此,它所关心的拓扑结构是AS(自治区域)的拓扑结构,BGP通过UPDATE消息中路由的AS属性来构造AS的拓扑结构图,进一步通过此结构图来选择路由。

        与OSPF,RIP等IGP协议相比,BGP的拓扑图要更抽象和粗略一些。由于IGP协议构造的是AS内部的路由器的拓扑结构图。IGP把路由器抽象成若干端点,把路由器之间的链路抽象成边,依据链路的状态等參数和一定的度量标准,每条边配以一定的权值,生成拓扑图。依据此拓扑图选择代价(两点间经过的边的权值和)最小的路由。这里有一个假设,即路由器(端点)转发数据包是没有的代价的。而在BGP中,拓扑图的端点是一个AS区域,边是AS之间的链路。此时,数据包经过一个端点(AS自治区域)时的代价就不能假设为0了,此代价要由IGP来负责计算。这体现了EGP和IGP是分层的关系。即IGP负责在AS内部选择花费最小的路由,EGP负责选择AS间花费最小的路由。BGP作为EGP的一种,选择路由时考虑的是AS间的链路花费,AS区域内的花费(由BGP路由器配置)等因素。

        如上所述,内部网关协议IGP需引入AS自治区域内部网络拓扑图其它各点的路由,同一时候向其它端点发送本端点(路由器)所知的路由,如直接路由静态路由等。作为外部网关协议,BGP发送和引入路由的单位是整个AS自治区域,即BGP要发送本地路由器所在的AS内部的全部路由,引入其它AS自治区域的全部路由(假设不使用路由策略控制发送和引入)。其路由数量显然要远远大于IGP发送和引入的路由数量。因此,相似于IGP那样定时对外广播路由信息是不可取的。BGP採用发送路由增量(Incremental)的方法,完毕全部路由信息的通告和维护:初始化时发送全部的路由给BGP对端(BGP Peer),同一时候在本地保存了已经发送给BGP对端的路由信息。当本地的BGP收到了一条新路由时(如通过IGP注入了新路由或加入了新的静态路由),与保存的已发送信息进行比較,如未发送过,则发送,如已发送过则与已经发送的路由进行比較,如新路由花费更小,则发送此新路由,同一时候更新已发送信息,反之则不发送。当本地BGP发现一条路由失效时(如相应port失效),如此路由已发送过,则向BGP对端发送一个退出路由消息。

    BGP遇到的挑战和限制

    (1)I-BGP的Full-Mesh问题: BGP路由协议分为I-BGP和E-BGP两个部分。I-BGP用于自治域内的路由器之间,E-BGP用于自治域间的路由器之间。假设一个AS内部存在非bgp路由器,那么就出现了BGP和%,占用了差点儿全部的CPU资源。尽管眼下大部分的高端路由器都将路由计算的模块与转发模块分布在不同的硬件上,来降低主CPU忙导致的路由器性能下降的问题,可是路由表的频繁变化和更新,对整个设备的执行还是有一定的影响的,并且这样的计算会随着路由的收回或广播,继续向自治域内部扩展,使内部的路由器产生同样的问题。眼下解决的办法:Damping

    (3)其它因素影响路由器的性能: 如路由的数目、BGP路由表的大小和路由计算的方式等 另外,网络越大,路由条目越多,配置和管理的工作也就越复杂,这就须要在网络设计的时候尽量简化配置,降低管理人员的工作强度,避免人为原因造成故障。解决的方法有:   peer group 、路由聚合

    实验一:BGP基本配置

    R1配置:

    R1#conf t

    R1(config)#int s0/0

    R1(config-if)#ip add 192.168.12.1255.255.255.0

    R1(config-if)#clock rate 64000

    R1(config-if)#ip router isis //将接口宣告到ISIS路由进程

    R1(config-if)#no sh

    R1(config-if)#exit

    R1(config)#router isis  //开启ISIS内部路由协议

    R1(config-router)#net49.0001.1111.1111.1111.00

    R1(config-router)#exit

    R1(config)#router bgp 65501 //开启bgp进程,自治号位65501

    R1(config-router)#no synchronization //关闭同步

    R1(config-router)#network 192.168.12.0 mask255.255.255.0 //宣告网络到BGP进程

    R1(config-router)#neighbor192.168.12.2 remote-as 65501 //手动配置R2为邻居

    R1(config-router)#neighbor192.168.23.2 remote-as 65501 //手动配置R3为邻居

    R2配置:

    R2#conft

    R2(config)#ints0/0

    R2(config-if)#ipadd 192.168.12.2 255.255.255.0

    R2(config-if)#iprouter isis

    R2(config-if)#clockrate 64000

    R2(config-if)#nosh

    R2(config-if)#exit

    R2(config)#ints0/1

    R2(config-if)#ipadd 192.168.23.1 255.255.255.0

    R2(config-if)#clockrate 64000

    R2(config-if)#iprouter isis

    R2(config-if)#nosh

    R2(config-if)#exit

    R2(config)#routerisis

    R2(config-router)#net49.0001.2222.2222.2222.00

    R2(config-router)#exit

    R2(config)#routerbgp 65501

    R2(config-router)#nosynchronization

    R2(config-router)#net192.168.12.0 mask 255.255.255.0

    R2(config-router)#net192.168.23.0 mask 255.255.255.0

    R2(config-router)#neighbor192.168.12.1 remote-as 65501

    R2(config-router)#neighbor192.168.23.2 remote-as 65501

    R3配置:

    R3#conft

    R3(config)#ints0/0

    R3(config-if)#ipadd 192.168.23.2 255.255.255.0

    R3(config-if)#iprouter isis

    R3(config-if)#clockrate 64000

    R3(config-if)#nosh

    R3(config-if)#exit

    R3(config)#ints0/1

    R3(config-if)#ipadd 192.168.34.1 255.255.255.0

    R3(config-if)#iprouter isis

    R3(config-if)#clockrate 64000

    R3(config-if)#nosh

    R3(config-if)#exit

    R3(config)#routerisis

    R3(config-router)#net49.0001.3333.3333.3333.00

    R3(config-router)#exit

    R3(config)#routerbgp 65501

    R3(config-router)#nosyn

    R3(config-router)#net192.168.23.0 mask 255.255.255.0

    R3(config-router)#net192.168.34.0 mask 255.255.255.0

    R3(config-router)#nei192.168.12.1 remote-as 65501

    R3(config-router)#nei192.168.23.1 remote-as 65501

    R3(config-router)#nei192.168.34.2 remote-as 65502

    R4配置:

    R4#conft

    R4(config)#ints0/0

    R4(config-if)#ipadd 192.168.34.2 255.255.255.0

    R4(config-if)#clockrate 64000

    R4(config-if)#nosh

    R4(config-if)#exit

    R4(config)#intlo 0

    R4(config-if)#ipadd 4.4.4.4 255.255.255.255

    R4(config-if)#exit

    R4(config)#routerbgp 65502

    R4(config-router)#nosyn

    R4(config-router)#net4.4.4.4 mask 255.255.255.255

    R4(config-router)#net192.168.34.0 mask 255.255.255.0

    R4(config-router)#nei192.168.34.1 remote-as 65501

    R4(config-router)#exit

    完毕以上配置后,全网互通就能够互通了,此时我们查看下R1和R4的路由表,发现有一条带B标记的路由到达对方。同一时候查看BGP邻居

    R1#ship rou

    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 - OSPFexternal type 2

    i - IS-IS, su - IS-IS summary, L1 -IS-IS level-1, L2 - IS-IS level-2

    ia - IS-IS inter area, * - candidatedefault, U - per-user static route

    o - ODR, P - periodic downloaded staticroute

    Gatewayof last resort is not set

    C    192.168.12.0/24 is directly connected,Serial0/0

    4.0.0.0/32 is subnetted, 1 subnets

    B       4.4.4.4 [200/0] via192.168.34.2, 00:20:09

    iL1 192.168.23.0/24 [115/20] via 192.168.12.2, Serial0/0

    iL1 192.168.34.0/24 [115/30] via 192.168.12.2, Serial0/0

    R1#ship bgp summary

    BGProuter identifier 192.168.12.1, local AS number 65501

    BGPtable version is 9, main routing table version 9

    4network entries using 468 bytes of memory

    6path entries using 312 bytes of memory

    4/3BGP path/bestpath attribute entries using 496 bytes of memory

    1BGP AS-PATH entries using 24 bytes of memory

    0BGP route-map cache entries using 0 bytes of memory

    0BGP filter-list cache entries using 0 bytes of memory

    BGPusing 1300 total bytes of memory

    BGPactivity 4/0 prefixes, 6/0 paths, scan interval 60 secs

    Neighbor        V   AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

    192.168.12.2    465501      61      60       9    0    0 00:55:01        2

    192.168.23.2    465501      48      46       9    0    0 00:41:44        3

    分析:

    在自治区域65501内各路由器通过ISIS路由协议,建立到达彼此的路由条目。然后各路由器开启BGP协议,BGP协议依据路由表与其它路由器建立iBGP对等体关系(邻居),彼此交互路由信息。接着R3与物理链接的R4上的自治区域65502的BGP协议建立EBGP关系,彼此交换路由信息。

    实验二、使用环回口建立IBGP邻居关系

      事实上IBGP和EBGP都能够用环回口或者物理接口建立邻居,可是通常EBGP用物理接口建立邻居,由于EBGP之间牵扯到多跳的问题,且EBGP邻居之间没有不论什么IGP协议的支持,所以环回口是不可达的,尽管能够在临界路由器上配置一条默认路由来可达,可是还要配置nei x.x.x.x 的多跳,由于EBGP默认仅仅传一跳。
      对于IBGP之间,由于有IGP的协议支持,所以环回口都是可达的,最重要的就是环回口的稳定性大大优于物理接口。

    R1(config-router)#bgp router-id 1.1.1.1 //设置BGP路由ID

    R1(config-router)#no synchronization //关闭同步

    R1(config-router)#network 192.168.12.0 mask255.255.255.0 //宣告网络到BGP进程

    R1(config-router)#network 192.168.13.0 mask 255.255.255.0////宣告网络到BGP进程

    R1(config-router)#nei2.2.2.2 remote-as 65501 //指定与R2环回口建立邻居

    R1(config-router)#nei2.2.2.2 update-source loopback 0//指定本端更新port为环回口

    R1(config-router)#nei2.2.2.2 next-hop-self //要求下一跳更新源

    R1(config-router)#nei3.3.3.3 remote-as 65501//指定与R3环回口建立邻居

    R1(config-router)#nei3.3.3.3 update-source loopback 0//指定本端更新port为环回口

    R1(config-router)#NEI3.3.3.3 next-hop-self //要求下一跳更新源

    R2配置:

    R2#conft

    R2(config)#ints0/0

    R2(config-if)#ipadd 192.168.12.2 255.255.255.0

    R2(config-if)#iprouter isis

    R2(config-if)#clockrate 64000

    R2(config-if)#nosh

    R2(config-if)#exit

    R2(config)#ints0/1

    R2(config-if)#ipadd 192.168.23.1 255.255.255.0

    R2(config-if)#clockrate 64000

    R2(config-if)#iprouter isis

    R2(config-if)#nosh

    R2(config-if)#exit

    R2(config)#intlo0

    R2(config-if)#ipadd 2.2.2.2 255.255.255.255

    R2(config-if)#iprouter isis

    R2(config-if)#exit

    R2(config)#routerisis

    R2(config-router)#net49.0001.2222.2222.2222.00

    R2(config-router)#exit

    R2(config)#routerbgp 65501

    R2(config-router)#bgprouter-id 2.2.2.2

    R2(config-router)#nosynchronization

    R2(config-router)#net192.168.12.0 mask 255.255.255.0

    R2(config-router)#net192.168.23.0 mask 255.255.255.0

    R2(config-router)#nei1.1.1.1 remote-as 65501

    R2(config-router)#nei1.1.1.1 update-source loopback 0

    R2(config-router)#nei1.1.1.1 next-hop-self

    R2(config-router)#nei3.3.3.3 remote-as 65501

    R2(config-router)#nei3.3.3.3 update-source loopback 0

    R2(config-router)#nei3.3.3.3 next-hop-self

    R3配置:

    R3#conft

    R3(config)#ints0/0

    R3(config-if)#ipadd 192.168.23.2 255.255.255.0

    R3(config-if)#iprouter isis

    R3(config-if)#clockrate 64000

    R3(config-if)#nosh

    R3(config-if)#exit

    R3(config)#ints0/1

    R3(config-if)#ipadd 192.168.34.1 255.255.255.0

    R3(config-if)#iprouter isis

    R3(config-if)#clockrate 64000

    R3(config-if)#nosh

    R3(config-if)#exit

    R3(config)#intlo0

    R3(config-if)#ipadd 3.3.3.3 255.255.255.255

    R3(config-if)#iprouter isis

    R3(config-if)#exit

    R3(config)#routerisis

    R3(config-router)#net49.0001.3333.3333.3333.00

    R3(config-router)#exit

    R3(config)#routerbgp 65501

    R3(config-router)#bgprouter-id 3.3.3.3

    R3(config-router)#nosyn

    R3(config-router)#net192.168.23.0 mask 255.255.255.0

    R3(config-router)#net192.168.34.0 mask 255.255.255.0

    R3(config-router)#net192.168.13.0 mask 255.255.255.0

    R3(config-router)#nei1.1.1.1 remote-as 65501

    R3(config-router)#nei1.1.1.1 update-source loopback 0

    R3(config-router)#nei1.1.1.1 next-hop-self

    R3(config-router)#nei2.2.2.2 remote-as 65501

    R3(config-router)#nei2.2.2.2 update-source loopback 0

    R3(config-router)#nei2.2.2.2 next-hop-self

    R3(config-router)#nei192.168.34.2 remote-as 65502

    R4配置:

    R4#conft

    R4(config)#ints0/0

    R4(config-if)#ipadd 192.168.34.2 255.255.255.0

    R4(config-if)#clockrate 64000

    R4(config-if)#nosh

    R4(config-if)#exit

    R4(config)#intlo 0

    R4(config-if)#ipadd 4.4.4.4 255.255.255.255

    R4(config-if)#exit

    R4(config)#routerbgp 65502

    R4(config-router)#nosyn

    R4(config-router)#net4.4.4.4 mask 255.255.255.255

    R4(config-router)#net192.168.34.0 mask 255.255.255.0

    R4(config-router)#nei192.168.34.1 remote-as 65501

    R4(config-router)#exit

    此时全网已经互通,并且查看R1的BGP邻居:

    R1#ship bgp summary

    BGProuter identifier 1.1.1.1, local AS number 65501

    BGPtable version is 31, main routing table version 31

    5network entries using 585 bytes of memory

    8path entries using 416 bytes of memory

    4/3BGP path/bestpath attribute entries using 496 bytes of memory

    1BGP AS-PATH entries using 24 bytes of memory

    0BGP route-map cache entries using 0 bytes of memory

    0BGP filter-list cache entries using 0 bytes of memory

    BGPusing 1521 total bytes of memory

    BGPactivity 15/10 prefixes, 22/14 paths, scan interval 60 secs

    Neighbor        V    AS MsgRcvd MsgSent   TblVer InQ OutQ Up/Down  State/PfxRcd

    2.2.2.2         4 65501     201    197       31    0   0 03:12:37        2

    3.3.3.3         4 65501     207    207       31    0   0 03:20:41        4

    实验三、去掉私有AS

    R1配置:

    R1#conf t

    R1(config)#int lo0

    R1(config-if)#ip add 1.1.1.1 255.255.255.0

    R1(config-if)#exit

    R1(config)#int s0/0

    R1(config-if)#clock rate 64000

    R1(config-if)#ip add 192.168.12.1 255.255.255.0

    R1(config-if)#no sh

    R1(config-if)#exit

    R1(config)#router bgp 65501

    R1(config-router)#bgp router-id 1.1.1.1

    R1(config-router)#net 192.168.12.0 mask 255.255.255.0

    R1(config-router)#net 1.1.1.0 mask 255.255.255.0

    R1(config-router)#nei 192.168.12.2 remote-as 100

    R2配置:

    R2#conf t

    R2(config)#int s0/0

    R2(config-if)#clock rate 64000

    R2(config-if)#ip add 192.168.12.2 255.255.255.0

    R2(config-if)#no sh

    R2(config-if)#exit

    R2(config)#int s0/1

    R2(config-if)#clock rate 64000

    R2(config-if)#ip add 192.168.23.1 255.255.255.0

    R2(config-if)#no sh

    R2(config-if)#exit

    R2(config)#router bgp 100

    R2(config-router)#bgp router-id 2.2.2.2

    R2(config-router)#net 192.168.12.0 mask 255.255.255.0

    R2(config-router)#net 192.168.23.0 mask 255.255.255.0

    R2(config-router)#nei 192.168.12.1 remote-as 65501

    R2(config-router)#nei 192.168.23.2 remote-as 200

    R3配置:

    R3#conf t

    R3(config)#int s0/0

    R3(config-if)#clock rate 64000

    R3(config-if)#ip add 192.168.23.2 255.255.255.0

    R3(config-if)#no sh

    R3(config-if)#exit

    R3(config)#router bgp 200

    R3(config-router)#bgp router-id 3.3.3.3

    R3(config-router)#net 192.168.23.0 mask 255.255.255.0

    R3(config-router)#nei 192.168.23.1 remote-as 100

    完毕配置后,此时全网互通正常,我们来看看R3的BGP路由表,

    R3#sh ip bgp

    BGP table version is 5, local router ID is3.3.3.3

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

    r RIB-failure, S Stale

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

    Network          Next Hop            Metric LocPrf Weight Path

    *> 1.1.1.0/24      192.168.23.1                          0 100 65501 i

    *> 192.168.12.0     192.168.23.1             0             0 100 i

    * 192.168.23.0     192.168.23.1             0             0 100 i

    *>                  0.0.0.0                  0         32768 i

    此时会发现AS65501这个私有自治号(AS大于65500的都是私有).注意在公网上是不能有私有AS号的 ,此时我们使用neighbor x.x.x.x remove-private-as 命令能够强制BGP丢弃私有AS编号,通常这个命令配置在外部的BGP邻居上,当向外公布的更新路由中含有私有AS编号的时候,这个私有的AS编号将被过滤,然后再次查看R3的BGP路由表

    R2#conf t

    R2(config)#router bgp 100

    R2(config-router)#nei 192.168.23.2remove-private-as

    R2(config-router)#do clear ip bgp * soft out

    R3#sh ip bgp

    BGP table version is 6, local router ID is3.3.3.3

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

    r RIB-failure, S Stale

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

    Network          Next Hop            Metric LocPrf Weight Path

    *> 1.1.1.0/24      192.168.23.1                          0 100 i

    *> 192.168.12.0     192.168.23.1             0             0 1 00 i

    * 192.168.23.0     192.168.23.1             0             0 100 i

    *>                  0.0.0.0                  0         32768 i

    当配置这条命令的时候须要注意以下的几个注意事项.

    1. 这条命令仅仅能使用在EBGP的邻居上

    2. 假设更新路由中仅仅含有私有的AS编号那么BGP会过滤掉这些私有编号

    3. 假设在AS_PATH路径中既包括私有的又包括公有的AS编号那么BGP将不会对私有的AS编号进行过滤

    4. 假设在AS_PATH中包括有EBGP邻居的AS编号那么BGP也不会将私有的AS编号进行过滤

    5. 假设AS_PATH 包括联盟那么仅仅有当私有AS编号出如今联盟后面的时候BGP才会将私有的AS编号清除

    实验四、BGP的Weight属性 (Cisco私有)

    R1配置:

    R1#conf t

    R1(config)#int lo0

    R1(config-if)#ip add 1.1.1.1 255.255.255.0

    R1(config-if)#exit

    R1(config)#int s0/0

    R1(config-if)#ip add 192.168.12.1 255.255.255.0

    R1(config-if)#clock rate 64000

    R1(config-if)#no sh

    R1(config-if)#exit

    R1(config)#int s0/1

    R1(config-if)#ip add 192.168.13.1 255.255.255.0

    R1(config-if)#clock rate 64000

    R1(config-if)#no sh

    R1(config-if)#exit

    R1(config)#router bgp 100

    R1(config-router)#bgp router-id 1.1.1.1

    R1(config-router)#net 1.1.1.0 mask 255.255.255.0

    R1(config-router)#net 192.168.12.0 mask 255.255.255.0

    R1(config-router)#net 192.168.13.0 mask 255.255.255.0

    R1(config-router)#nei 192.168.12.2 remote-as 200

    R1(config-router)#nei 192.168.13.2 remote-as 200

    R2配置:

    R2#conf

    R2(config)#int s0/0

    1. R2(config-if)#clock rate 64000

      R2(config-if)#ip add 192.168.12.2 255.255.255.0

      R2(config-if)#no sh

      R2(config-if)#exit

      R2(config)#int s0/1

      R2(config-if)#clock rate 64000

      R2(config-if)#ip add 192.168.24.1 255.255.255.0

      R2(config-if)#no sh

      R2(config-if)#exit

      R2(config)#router bgp 200

      R2(config-router)#bgp router-id 2.2.2.2

      R2(config-router)#net 192.168.12.0 mask 255.255.255.0

      R2(config-router)#net 192.168.24.0 mask 255.255.255.0

      R2(config-router)#nei 192.168.12.1 remote-as 100

      R2(config-router)#nei 192.168.24.2 remote-as 200

      R2(config-router)#nei 192.168.24.2 remote-as 200

      R3配置:

      R3#conf t

      R3(config)#int s0/0

      R3(config-if)#clock rate 64000

      R3(config-if)#ip add 192.168.13.2 255.255.255.0

      R3(config-if)#no sh

      R3(config-if)#exit

      R3(config)#int s0/1

      R3(config-if)#ip add 192.168.34.1 255.255.255.0

      R3(config-if)#clock rate 64000

      R3(config-if)#no sh

      R3(config-if)#exit

      R3(config)#router bgp 200

      R3(config-router)#bgp router-id 3.3.3.3

      R3(config-router)#net 192.168.13.0 mask 255.255.255.0

      R3(config-router)#net 192.168.34.0 mask 255.255.255.0

      R3(config-router)#nei 192.168.13.1 remote-as 100

      R3(config-router)#nei 192.168.34.2 remote-as 200

       

      R4配置:

      R4#conf t

      R4(config)#int s0/0

      R4(config-if)#clock rate 64000

      R4(config-if)#ip add 192.168.24.2 255.255.255.0

      R4(config-if)#no sh

      R4(config-if)#exit

      R4(config)#int s0/1

      R4(config-if)#ip add 192.168.34.2 255.255.255.0

      R4(config-if)#clock rate 64000

      R4(config-if)#no sh

      R4(config-if)#exit

      R4(config)#router bgp 200

      R4(config-router)#bgp router-id 4.4.4.4

      R4(config-router)#net 192.168.24.0 mask 255.255.255.0

      R4(config-router)#net 192.168.34.0 mask 255.255.255.0

      R4(config-router)#nei 192.168.24.1 remote-as 200

      R4(config-router)#nei 192.168.34.1 remote-as 200

      查看R4的BGP路由表,我们发现R4到1.1.1.1的网络走的是R2.

      R4#sh ip bgp

      BGP table version is 9, local router ID is 4.4.4.4

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

      r RIB-failure, SStale

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

      Network          Next Hop            Metric LocPrf Weight Path

      *>i1.1.1.0/24      192.168.12.1             0    100     0 100 i

      * i                 192.168.13.1             0    100     0 100 i

      *>i192.168.12.0    192.168.24.1             0    100     0 i

      * i                192.168.13.1             0    100     0 100 i

      * i192.168.13.0    192.168.12.1             0    100     0 100 i

      *>i                192.168.34.1             0    100     0 i

      * i192.168.24.0    192.168.24.1             0    100     0 i

      *>                  0.0.0.0                  0         32768 i

      * i192.168.34.0    192.168.34.1             0    100     0 i

      *>                  0.0.0.0                  0         32768 i

      此时通过调整Weight来改变选路,使R4到1.1.1.1网络走R3,然后查看R4

      R4#conf t

      R4(config)#router bgp 200

      R4(config-router)#nei 192.168.34.1 weight 100 //设置此邻居传过来的bgp路由的权重设置成100.

      R4(config-router)#do clear ip bgp * in //不中断邻居关系,更新bgp路由

      R4(config-router)#do sh ip bgp

      BGP table version is 12, local router ID is 4.4.4.4

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

      r RIB-failure, SStale

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

      Network          Next Hop            Metric LocPrf Weight Path

      * i1.1.1.0/24      192.168.12.1             0    100     0 100 i

      *>i                192.168.13.1             0    100   100 100 i

      * i192.168.12.0    192.168.24.1             0    100     0 i

      *>i                192.168.13.1             0    100   100 100 i

      * i192.168.13.0    192.168.12.1             0    100     0 100 i

      *>i                192.168.34.1             0    100   100 i

      * i192.168.24.0    192.168.24.1             0    100     0 i

      *>                  0.0.0.0                  0         32768 i

      * i192.168.34.0    192.168.34.1             0    100   100 i

      *>                  0.0.0.0                  0         32768 i

      依据调整weight值,R4如今到1.1.1.0网络走了R3,可是这个调整同一时候影响了其它路由条目,这不是我们希望的。可见neighbor x.x.x.x weight xxx

      R4(config-route-map)#exit

      R4(config)#route-map weight_100 permit 2//、BGP协议路由更新有个前提条件:下一条路由可达,假设不可达,则不会把接受到的路由装入路由表并更新给其余的peer。而通常情况下,下一条路由可达须要依赖IGP,非常少网络会把bgp import到IGP的。
      2、依据要求1,EBGP传送路由给peer时缺省会把next-hop设定为自己。
      3、IBGP传送路由给peer时缺省不会改变next-hop,为了满足1,AS边界路由器(EBGP/IBGP)在传送路由给IBGP peer时通常须要设置next-hop-self,否则IBGP peer会因路由的下一跳不可达而拒绝IBGP Peer路由。BGP一般仅仅在解析路由的下一跳,为了防止下跳不可达的问题,就用策略了。EBGP给ibgp的时候,一般就要用这个了。但在MPLS中,有时候却不用这个也是能够的。用直连接口建立外部邻居,并把与外部邻居的直连的port执行与as一样的igp,为passive模式.能够解决。

      实验六、BGP 的MED属性和local Pref

      R1的配置:

      R1#conf t

      R1(config)#int e0/0

      R1(config-if)#ip add 192.168.12.1 255.255.255.0

      R1(config-if)#no sh

      R1(config-if)#exit

      R1(config)#int s1/0

      R1(config-if)#clock rate 64000

      R1(config-if)#ip add 192.168.13.1 255.255.255.0

      R1(config-if)#no sh

      R1(config-if)#exit

      R1(config)#int lo 0

      R1(config-if)#ip add 1.1.1.1 255.255.255.255

      R1(config-if)#no sh

      R1(config-if)#exit

      R1(config)#router bgp 65501

      R1(config-router)#bgp router-id 1.1.1.1

      R1(config-router)#net 192.168.12.0 mask 255.255.255.0

      R1(config-router)#net 192.168.13.0 mask 255.255.255.0

      R1(config-router)#net 1.1.1.1 mask 255.255.255.255

      R1(config-router)#nei 192.168.12.2 remote-as 65501

      R1(config-router)#nei 192.168.13.2 remote-as 65502

      R1(config-router)#nei 192.168.12.2 next-hop-self

      R2配置:

      R2#conf t

      R2(config)#int e0/0

      R2(config-if)#ip add 192.168.12.2 255.255.255.0

      R2(config-if)#no sh

      R2(config-if)#exit

      R2(config)#int s1/0

      R2(config-if)#clock rate 64000

      R2(config-if)#ip add  192.168.24.1255.255.255.0

      R2(config-if)#no sh

      R2(config-if)#exit

      R2(config)#int lo0

      R2(config-if)#ip add 2.2.2.2 255.255.255.255

      R2(config-if)#exit

      R2(config)#router bgp 65501

      R2(config-router)#bgp router-id 2.2.2.2

      R2(config-router)#net 192.168.12.0 mask 255.255.255.0

      R2(config-router)#net 192.168.24.0 mask 255.255.255.0

      R2(config-router)#net 2.2.2.2 mask 255.255.255.255

      R2(config-router)#nei 192.168.12.1 remote-as 65501

      R2(config-router)#nei 192.168.24.2 remote-as 65502

      R2(config-router)#nei 192.168.12.1 next-hop-self

      R3配置:

      R3#conf t

      R3(config)#int s1/0

      R3(config-if)#clock rate 64000

      R3(config-if)#ip add 192.168.13.2 255.255.255.0

      R3(config-if)#no sh

      R3(config-if)#exit

      R3(config)#int e0/0

      R3(config-if)#ip add 192.168.34.1 255.255.255.0

      R3(config-if)#no sh

      R3(config-if)#exit

      R3(config)#int lo0

      R3(config-if)#ip add 3.3.3.3 255.255.255.255

      R3(config-if)#exit

      R3(config)#router bgp 65502

      R3(config-router)#bgp router-id 3.3.3.3

      R3(config-router)#net 3.3.3.3 mask 255.255.255.255

      R3(config-router)#net 192.168.13.0 mask 255.255.255.0

      R3(config-router)#net 192.168.34.0 mask 255.255.255.0

      R3(config-router)#nei 192.168.13.1 remote-as 65501

      R3(config-router)#nei 192.168.34.2 remote-as 65502

      R3(config-router)#nei 192.168.34.2 next-hop-self

      R4配置:

      R4#CONF T

      R4(config)#int e0/0

      R4(config-if)#ip add 192.168.34.2 255.255.255.0

      R4(config-if)#no sh

      R4(config-if)#exit

      R4(config)#int s1/0

      R4(config-if)#clock rate 64000

      R4(config-if)#ip add 192.168.24.2 255.255.255.0

      R4(config-if)#no sh

      R4(config-if)#exit

      R4(config)#int lo0

      R4(config-if)#ip add 4.4.4.4 255.255.255.255

      R4(config-if)#exit

      R4(config)#router bgp 65502

      R4(config-router)#bgp router-id 4.4.4.4

      R4(config-router)#net 192.168.24.0 mask 255.255.255.0

      R4(config-router)#net 192.168.34.0 mask 255.255.255.0

      R4(config-router)#net 4.4.4.4 mask 255.255.255.255

      R4(config-router)#nei 192.168.24.1 remote-as 65501

      R4(config-router)#nei 192.168.34.1 remote-as 65502

      R4(config-router)#nei 192.168.34.1 next-hop-self

      完毕以上配置后应该全网互通。此时我们查看R1的路由表

      R1#sh ip rou

      Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

      D - EIGRP, EX - EIGRPexternal, O - OSPF, IA - OSPF inter area

      N1 - OSPF NSSA external type1, N2 - OSPF NSSA external type 2

      E1 - OSPF external type 1, E2- OSPF external type 2

      i - IS-IS, su - IS-ISsummary, 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 - periodicdownloaded static route

      Gateway of last resort is not set

      C    192.168.12.0/24 is directlyconnected, Ethernet0/0

      1.0.0.0/32 is subnetted, 1subnets

      C       1.1.1.1 is directlyconnected, Loopback0

      C    192.168.13.0/24 is directlyconnected, Serial1/0

      2.0.0.0/32 is subnetted, 1subnets

      B       2.2.2.2 [200/0] via192.168.12.2, 00:05:53

      3.0.0.0/32 is subnetted, 1subnets

      B       3.3.3.3 [20/0] via192.168.13.2, 00:02:40

      4.0.0.0/32 is subnetted, 1subnets

      B       4.4.4.4 [20/0] via192.168.13.2, 00:03:10

      B    192.168.24.0/24 [200/0] via192.168.12.2, 00:05:54

      B    192.168.34.0/24 [20/0] via192.168.13.2, 00:03:11

      R2#sh ip rou

      Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

      D - EIGRP, EX - EIGRPexternal, O - OSPF, IA - OSPF inter area

      N1 - OSPF NSSA external type1, N2 - OSPF NSSA external type 2

      E1 - OSPF external type 1, E2- OSPF external type 2

      i - IS-IS, su - IS-ISsummary, 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 - periodicdownloaded static route

      Gateway of last resort is not set

      C    192.168.12.0/24 is directlyconnected, Ethernet0/0

      1.0.0.0/32 is subnetted, 1subnets

      B       1.1.1.1 [200/0] via192.168.12.1, 00:06:57

      B    192.168.13.0/24 [200/0] via192.168.12.1, 00:06:57

      2.0.0.0/32 is subnetted, 1subnets

      C       2.2.2.2 is directlyconnected, Loopback0

      3.0.0.0/32 is subnetted, 1subnets

      B       3.3.3.3 [20/0] via192.168.24.2, 00:03:54

      4.0.0.0/32 is subnetted, 1subnets

      B       4.4.4.4 [20/0] via192.168.24.2, 00:35:09

      C    192.168.24.0/24 is directlyconnected, Serial1/0

      B    192.168.34.0/24 [20/0] via192.168.24.2, 00:35:10

      依据路由表发现R1到达3.3.3.3和4.4.4.4网络都是从R3走;R2到达3.3.3.3和4.4.4.4网络都是从R4走。可是我们希望实现分流策略,即R1和R2到达4.4.4.4走R4,同一时候R1与R2到达R3的网络3.3.3.3时走R3出去。此时我们能够使用BGP的MED属性实现要求:

      R3#conf t

      R3(config)#access-list 1 permit 4.4.4.4 0.0.0.0 //在R3上标示出要施加策略的网络

      R3(config)#route-map no4 permit 10 //创建一条同意的route-map策略

      R3(config-route-map)#match ip addrees 1 //将策略应用到匹配的网络

      R3(config-route-map)#set metric 1 //设置策略改变网络的metric參数

      R3(config-route-map)#exit

      R3(config)#route-map no4 permit 11 //创建一条空route-map策略,同意其它全部不变

      R3(config-route-map)#exit

      R3(config)#router bgp 65502

      R3(config-router)#nei 192.168.13.1 route-map no4 out //将route-map策略传输给邻居

      R3(config-router)#end

      R3#clear ip bgp * soft out //不中断BGP邻居关系,向本路由器的全部BGP邻居又一次发送一次BGP路由信息

      R4#conf t

      R4(config)#access-list 1 permit 3.3.3.3 0.0.0.0

      R4(config)#route-map no3 permit 10

      R4(config-route-map)#match ip address 1

      R4(config-route-map)#set metric 1

      R4(config-route-map)#exit

      R4(config)#route-map no3 permit 11

      R4(config-route-map)#exit

      R4(config)#router bgp 65502

      R4(config-router)#nei 192.168.24.1 route-map no3 out

      R3(config-router)#end

      R4#clear ip bgp * soft out

      再次查看R1和R2的路由表,此时已经达到我们的目的。

      R1#sh ip rou

      Codes: C - connected, S - static, R - RIP, M - mobile, B- BGP

      D - EIGRP,EX - EIGRP external, O - OSPF, IA - OSPF inter area

      N1 - OSPFNSSA external type 1, N2 - OSPF NSSA external type 2

      E1 - OSPF externaltype 1, E2 - OSPF external type 2

      i - IS-IS,su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

      ia - IS-ISinter area, * - candidate default, U - per-user static route

      o - ODR, P -periodic downloaded static route

      Gateway of last resort is not set

      C   192.168.12.0/24 is directly connected, Ethernet0/0

      1.0.0.0/32 issubnetted, 1 subnets

      C       1.1.1.1 isdirectly connected, Loopback0

      C   192.168.13.0/24 is directly connected, Serial1/0

      2.0.0.0/32 issubnetted, 1 subnets

      B       2.2.2.2[200/0] via 192.168.12.2, 00:23:35

      3.0.0.0/32 issubnetted, 1 subnets

      B       3.3.3.3[20/0] via 192.168.13.2, 00:07:24

      4.0.0.0/32 issubnetted, 1 subnets

      B       4.4.4.4[200/0] via 192.168.12.2, 00:03:13

      B    192.168.24.0/24[200/0] via 192.168.12.2, 00:23:36

      B   192.168.34.0/24 [20/0] via 192.168.13.2, 00:08:06

      2#sh ip rou

      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 - OSPFNSSA external type 2

      E1 - OSPFexternal type 1, E2 - OSPF external type 2

      i - IS-IS,su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

      ia - IS-ISinter area, * - candidate default, U - per-user static route

      o - ODR, P -periodic downloaded static route

      Gateway of last resort is not set

      C   192.168.12.0/24 is directly connected, Ethernet0/0

      1.0.0.0/32 issubnetted, 1 subnets

      B       1.1.1.1[200/0] via 192.168.12.1, 00:23:16

      B   192.168.13.0/24 [200/0] via 192.168.12.1, 00:23:16

      2.0.0.0/32 issubnetted, 1 subnets

      C       2.2.2.2 isdirectly connected, Loopback0

      3.0.0.0/32 issubnetted, 1 subnets

      B       3.3.3.3[200/0] via 192.168.12.1, 00:03:25

      4.0.0.0/32 issubnetted, 1 subnets

      B       4.4.4.4[20/0] via 192.168.24.2, 00:02:54

      C   192.168.24.0/24 is directly connected, Serial1/0

      B   192.168.34.0/24 [20/0] via 192.168.24.2, 00:02:55

      我们要实现R3与R4到网络1.1.1.1走R3,R3与R4到网络2.2.2.2走R4,也能够使用改动MED的方法。可是我们还有还有一种方法就是BGP的Local Pref 即本地优先。查看R3的路由表:

      R3#sh ip rou

      Codes: C - connected, S - static, R - RIP, M - mobile, B- BGP

      D - EIGRP,EX - EIGRP external, O - OSPF, IA - OSPF inter area

      N1 - OSPFNSSA external type 1, N2 - OSPF NSSA external type 2

      E1 - OSPFexternal type 1, E2 - OSPF external type 2

      i - IS-IS,su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

      ia - IS-ISinter area, * - candidate default, U - per-user static route

      o - ODR, P -periodic downloaded static route

      Gateway of last resort is not set

      B   192.168.12.0/24 [20/0] via 192.168.13.1, 00:35:57

      1.0.0.0/32 issubnetted, 1 subnets

      B       1.1.1.1[20/0] via 192.168.13.1, 00:35:57

      C   192.168.13.0/24 is directly connected, Serial1/0

      2.0.0.0/32 issubnetted, 1 subnets

      B       2.2.2.2[20/0] via 192.168.13.1, 00:35:57

      3.0.0.0/32 issubnetted, 1 subnets

      C       3.3.3.3 isdirectly connected, Loopback0

      4.0.0.0/32 issubnetted, 1 subnets

      B       4.4.4.4[200/0] via 192.168.34.2, 00:31:05

      B   192.168.24.0/24 [200/0] via 192.168.34.2, 00:31:06

      C   192.168.34.0/24 is directly connected, Ethernet0/0

      然后进行例如以下改动改变选路:

      R3#conf t

      R3(config)#access-list 2 permit 1.1.1.0 0.0.0.255

      R3(config)#route-map no2 permit 22

      R3(config-route-map)#match ip address 2

      R3(config-route-map)#set local-preference 200

      R3(config-route-map)#exit

      R3(config)#route-map no2 permit 23

      R3(config-route-map)#exit

      R3(config)#router bgp 65502

      R3(config-router)#nei 192.168.34.2 route-map no2 out

      R3(config-router)#end

      R3# clear ip bgp * soft out

      R4#conf t

      R4(config)#access-list 2 permit 2.2.2.0 0.0.0.255

      R4(config)#route-map no1 permit 22

      R4(config-route-map)#match ip address 2

      R4(config-route-map)#set local-preference 200

      R4(config-route-map)#exit

      R4(config)#route-map no1 permit 23

      R4(config-route-map)#exit

      R4(config)#router bgp 65502

      R4(config-router)#nei 192.168.34.1 route-map no1 out

      R4(config-router)#end

      R4#clear ip bgp * soft out

      配置完毕后R3和R已经达到我们的目的,此时查看R3的路由表:

      R3#sh ip rou

      Codes: C - connected, S - static, R - RIP, M - mobile, B- BGP

      D - EIGRP,EX - EIGRP external, O - OSPF, IA - OSPF inter area

      N1 - OSPFNSSA external type 1, N2 - OSPF NSSA external type 2

      E1 - OSPFexternal type 1, E2 - OSPF external type 2

      i - IS-IS,su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

      ia - IS-ISinter area, * - candidate default, U - per-user static route

      o - ODR, P -periodic downloaded static route

      Gateway of last resort is not set

      B   192.168.12.0/24 [20/0] via 192.168.13.1, 00:08:32

      1.0.0.0/32 issubnetted, 1 subnets

      B       1.1.1.1[20/0] via 192.168.13.1, 00:08:32

      C   192.168.13.0/24 is directly connected, Serial1/0

      2.0.0.0/32 issubnetted, 1 subnets

      B       2.2.2.2[200/0] via 192.168.34.2, 00:02:08

      3.0.0.0/32 issubnetted, 1 subnets

      C       3.3.3.3 isdirectly connected, Loopback0

      4.0.0.0/32 issubnetted, 1 subnets

      B       4.4.4.4[200/0] via 192.168.34.2, 00:08:32

      B   192.168.24.0/24 [200/0] via 192.168.34.2, 00:08:34

      C   192.168.34.0/24 is directly connected, Ethernet0/0

      总结:

      MED属性可选非传递,相当于IGP中的Metic值,它告诉另外一个邻居AS中的BGP Router,从哪个入口进来我本地AS的才是最优的:邻居AS中的BGP Router依据这个MED值来选择到达某个网络的最佳路径,MED值越小越好。另外邻居AS不会再将这个MED属性值通告给邻居AS,当邻居AS中的BGP Router将那些网络条目通告给它另外的EBGP邻居时,会将这个MED值删掉MED属性值默觉得0,值越低优先级越高。谨记MED是影响他人的AS。

      Local_Pref属性是公认自由决定,仅仅用在和IBGP邻居间 的Update分组更新中,这个属性字段是不会传递给EBGP邻居的,它告诉本地AS中的BGP Router,从哪个出口出去才是最优的:同一个AS中的BGP Router依据这个Local_Pref值来选择到达某个网络的最佳路径当Router要将路由条目通告给其EBGP邻居的时候,会将这个Local_Pref属性删掉。Local-pref属性的默认值为100,值越高优先级越高。谨记Local_Pref是影响自己的AS。

      实验七、AS-PATH属性

      Internet配置:

      Internet#conf t

      Internet(config)#int lo0

      Internet(config-if)#ip add 202.100.100.1255.255.255.0

      Internet(config-if)#exit

      Internet(config)#int s0/0

      Internet(config-if)#clock rate 64000

      Internet(config-if)#ip add 192.168.12.1 255.255.255.0

      Internet(config-if)#no sh

      Internet(config-if)#exit

      Internet(config)#int s0/1

      Internet(config-if)#clock rate 64000

      Internet(config-if)#ip add 192.168.13.1255.255.255.0

      Internet(config-if)#no sh

      Internet(config-if)#exit

      Internet(config)#router bgp 300

      Internet(config-router)#bgp router-id1.1.1.1

      Internet(config-router)#net 192.168.12.0mask 255.255.255.0

      Internet(config-router)#net 192.168.13.0mask 255.255.255.0

      Internet(config-router)#net202.100.100.0 mask 255.255.255.0

      Internet(config-router)#nei 192.168.12.2remote-as 100

      Internet(config-router)#nei 192.168.13.2remote-as 100

      Unicom配置:

      Unicom#conf t

      Unicom(config)#int s0/0

      Unicom(config-if)#clock rate 64000

      Unicom(config-if)#ip add 192.168.12.2255.255.255.0

      Unicom(config-if)#no sh

      Unicom(config-if)#exit

      Unicom(config)#int s0/1

      Unicom(config-if)#clock rate 64000

      Unicom(config-if)#ip add 192.168.24.1255.255.255.0

      Unicom(config-if)#no sh

      Unicom(config-if)#exit

      Unicom(config)#router bgp 100

      Unicom(config-router)#bgp router-id2.2.2.2

      Unicom(config-router)#net 192.168.12.0mask 255.255.255.0

      Unicom(config-router)#net 192.168.23.0mask 255.255.255.0

      Unicom(config-router)#nei 192.168.12.1remote-as 300

      Unicom(config-router)#nei 192.168.24.2remote-as 65501

      Telecom配置:

      Telecom#conf t

      Telecom(config)#int s0/0

      Telecom(config-if)#clock rate 64000

      Telecom(config-if)#ip add 192.168.13.2 255.255.255.0

      Telecom(config-if)#no sh

      Telecom(config-if)#exit

      Telecom(config)#int s0/1

      Telecom(config-if)#clock rate 64000

      Telecom(config-if)#ip add 192.168.34.1 255.255.255.0

      Telecom(config-if)#no sh

      Telecom(config-if)#exit

      Telecom(config)#router bgp 100

      Telecom(config-router)#bgp router-id 3.3.3.3

      Telecom(config-router)#net 192.168.13.0 mask255.255.255.0

      Telecom(config-router)#net 192.168.34.0 mask255.255.255.0

      Telecom(config-router)#nei 192.168.13.1 remote-as 300

      Telecom(config-router)#nei 192.168.34.2  remote-as 65501

      Guest配置:

      Guest#conf t

      Guest(config)#int lo0

      Guest(config-if)#ip add 4.4.4.4 255.255.255.0

      Guest(config-if)#exit

      Guest(config)#int s0/0

      Guest(config-if)#clock rate 64000

      Guest(config-if)#ip add 192.168.24.2 255.255.255.0

      Guest(config-if)#no sh

      Guest(config-if)#exit

      Guest(config)#int s0/1

      Guest(config-if)#clock rate 64000

      Guest(config-if)#ip add 192.168.34.2 255.255.255.0

      Guest(config-if)#no sh

      Guest(config-if)#exit

      Guest(config)#router bgp 65501

      Guest(config-router)#bgp router-id 4.4.4.4

      Guest(config-router)#net 192.168.24.0 mask255.255.255.0

      Guest(config-router)#net 192.168.34.0 mask255.255.255.0

      Guest(config-router)#net 4.4.4.0 mask 255.255.255.0

      Guest(config-router)#nei 192.168.24.1 remote-as 100

      Guest(config-router)#nei 192.168.34.1 remote-as 100

      完毕配置后,我们来看看Unicom的BGP路由表,你会发现根本学习不到Telecom的 AS 100路由条目,同一时候查看Telecom的BGP路由表也会找不到Unicom的AS100路由条目。

      Unicom#sh ip bgp

      BGP table version is 8, local router ID is 2.2.2.2

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

      rRIB-failure, S Stale

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

      Network          Next Hop            Metric LocPrf Weight Path

      *> 4.4.4.0/24      192.168.24.2             0             0 65501 i

      * 192.168.12.0     192.168.12.1             0             0 300 i

      *>                 0.0.0.0                  0         32768 i

      *> ,并又一次与其它路由建立关系.然后再次查看Unicom的BGP路由表

      Telecom#conf t

      Telecom(config)#no router bgp 100

      Telecom(config)#router bgp 200

      Telecom(config-router)#bgp router-id 3.3.3.3

      Telecom(config-router)#net 192.168.13.0 mask 255.255.255.0

      Telecom(config-router)#net 192.168.34.0 mask 255.255.255.0

      Telecom(config-router)#nei 192.168.13.1 remote-as 300

      Telecom(config-router)#nei 192.168.34.2 remote-as 65501

      Internet# conf t

      Internet(config)#router bgp 300

      Internet(config-router)#no nei 192.

      Internet(config-router)#no nei 192.168.13.2 remote-as 100

      Internet(config-router)#nei 192.168.13.2 remote-as 200

      Guest#conft

      Guest(config)#routerbgp 65501

      Guest(config-router)#nonei 192.168.34.1 remote-as 100

      Guest(config-router)#nei192.168.34.1 remote-as 200

      Unicom#sh ipbgp

      BGP table version is 8, local router ID is 2.2.2.2

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

      rRIB-failure, S Stale

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

      Network          Next Hop            Metric LocPrf Weight Path

      *> 4.4.4.0/24      192.168.24.2             0             0 65501 i

      *  192.168.12.0     192.168.12.1             0             0 300 i

      *>                 0.0.0.0                  0         32768 i

      * 192.168.13.0     192.168.24.2                           0 65501 200i

      *>                  192.168.12.1             0             0 300 i //最优

      * 192.168.24.0     192.168.24.2             0             0 65501 i

      *>                 0.0.0.0                  0         32768 i

      * 次或多次。

      +

      匹配+前面字符中1次或多次。

      匹配?前面字符中0次或1次。

      ^

      匹配字符串的開始。

      $

      匹配字符串的结束。

      _

      匹配一个符号,如逗号、左大括号、右大括号、左括号、右括号和空格等符号,在表达式的开头或结尾时还可作起始符、结束符(同^ ,$)。

      ( )

      匹配一个变化的字符或一个独立的匹配,通常和"|"一起使用。

      |

      逻辑或,交替匹配

      [ ]

      表示一组字符的集合,假设集合中第一个字符为"^",则表示补集

      -

      连接符

      \

      转义操作符,去除特殊字符的特殊意义

实验八、BGP的origin属性

R1配置:

R1#CONF T

R1(config)#int s0/0

R1(config-if)#clock rate 64000

R1(config-if)#ip add192.168.12.1 255.255.255.0

R1(config-if)#no sh

R1(config-if)#exit

R1(config)#router bgp 100

R1(config-router)#bgprouter-id 1.1.1.1

R1(config-router)#net192.168.12.0 mask 255.255.255.0

R1(config-router)#nei192.168.12.2 remote-as 300

R2配置:

R2#conf t

R2(config)#int s0/0

R2(config-if)#clock rate 64000

R2(config-if)#ip add192.168.23.1 255.255.255.0

R2(config-if)#no sh

R2(config-if)#exit

R2(config)#router bgp 200

R2(config-router)#exit

R2(config)#int lo0

R2(config-if)#ip add 1.1.1.1255.255.255.0

R2(config-if)#exit

R2(config)#router bgp 200

R2(config-router)#net192.168.23.0 mask 255.255.255.0

R2(config-router)#nei192.168.23.2 remote-as 300

R3配置:

R3#conf t

R3(config)#int s0/0

R3(config-if)#clock rate 64000

R3(config-if)#ip add192.168.12.2 255.255.255.0

R3(config-if)#no sh

R3(config-if)#exit

R3(config)#int s0/1

R3(config-if)#clock rate 64000

R3(config-if)#ip add192.168.23.2 255.255.255.0

R3(config-if)#no sh

R3(config-if)#exit

R3(config)#router bgp 300

R3(config-router)#net 192.168.12.0mask 255.255.255.0

R3(config-router)#net192.168.23.0 mask 255.255.255.0

R3(config-router)#nei192.168.12.1 remote-as 100

R3(config-router)#nei192.168.23.1 remote-as 200

查看一下R3的BGP路由表:

R3#sh ip bgp

BGP table version is 5, localrouter ID is 192.168.23.2

Status codes: s suppressed, ddamped, 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

*  192.168.12.0     192.168.12.1             0             0 100 i

*>                  0.0.0.0                  0         32768 i

*  192.168.23.0     192.168.23.1             0             0 200 i

*>                  0.0.0.0                  0         32768 i

接着分别在R1和R2上进行例如以下改动:

R1(config)#conf t

R1(config)#iproute 1.1.1.0 255.255.255.0 null0 //创建指向空port的静态路由

R1(config)#routerbgp 100

R1(config-router)#redistributestatic //将静态路由重分发到BGP进程

R1(config-router)#doclear ip bgp * soft out

R2#conf t

R2(config)#routerbgp 200

R2(config-router)#net1.1.1.0 mask 255.255.255.0//将Loopback0网络宣告到BGP中

R2(config-router)#do clear ip bgp * soft out

再次观察R3的BGP路由表:

R3#sh ip bgp

BGP table versionis 7, local router ID is 192.168.23.2

Status codes: ssuppressed, 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

*>1.1.1.0/24       192.168.23.1             0             0 200 i //最优

*                   192.168.12.1             0             0 100 ?

*  192.168.12.0     192.168.12.1             0             0 100 i

*>                  0.0.0.0                  0         32768 i

*  192.168.23.0     192.168.23.1             0             0 200 i

*>                  0.0.0.0                  0         32768 i

R3#sh ip bgp1.1.1.1

BGP routing tableentry for 1.1.1.0/24, version 7

Paths: (2available, best #1, table Default-IP-Routing-Table)

Advertised to update-groups:

1

200

192.168.23.1 from 192.168.23.1(192.168.23.1)

个值,分别为:

  1. IGP:当使用 bgp network 命令宣告进BGP中。在BGP路由表中起源于IGP的路由用“i”表示

  2. EGP:通过BGP学习到的路由。在BGP路由表中起源于EGP的路由用“e”表示(淘汰了)

  3. incomplete:当路由重分布进BGP时,即无法确定路由的始发者时,在BGP路由表中用“?”表示

  4. 这三个值得优先级是:IGP>EGP>Incompelete。

  5. 实验九、BGP的路由过滤prefix-list和Distribute-list

  6. R1

    R3#sh ip bgp

    BGP table version is 8, localrouter ID is 192.168.35.1

    Status codes: s suppressed, ddamped, 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

    *> 4.4.4.0/24       192.168.34.2             0           200 200 i

    * i192.168.12.0     192.168.12.1             0    100     0 i

    *>                  0.0.0.0                  0         32768 i

    * i192.168.23.0     192.168.23.1             0    100     0 i

    *>                  0.0.0.0                  0         32768 i

    *  192.168.34.0     192.168.34.2             0           200 200 i

    *>                  0.0.0.0                  0         32768 i

    *  192.168.35.0     192.168.35.2             0             0 300 i

    *>                  0.0.0.0                  0         32768 i

    个预先定义的公认的Community,分别为:

    no-export—不将路由发给不论什么eBGP邻居,联邦中的小AS会传递

    local-as—不将路由发给不论什么eBGP邻居,也不将路由发到联邦的小AS外

    no-advertise—不将路由发给不论什么BGP邻居。

    internet—能够将路由发给不论什么BGP邻居。

    2、Private communities 私有团体,私有Community能够理解为BGP路由的自己定义标签,所以能够通过为BGP路由配置私有Community来配置不论什么自己定义的标签,该标签能够在不论什么时候被利用。将特定的路由设置私有Community,并将其传递给全部邻居,终于全部路由器都对拥有该私有Community的路由配置策略,并且对大量路由设置私有Community仅仅须要在一台路由器上完毕后,发给全部邻居就可以,可见私有Community能够降低网络中路由器对同样路由的匹配工作,这就是标签的效果。私有Community的类型为数字,长度为32bit,但被分为两种格式:单个32bit,如123,666或者2字节长度的AS号码加两字节普通数字,称为AS:NN格式,范围为1:0 至 65534:65535。默认路由器支持单个32bit格式,若要支持AS:NN格式,必须开启BGP-CommunityNew-Format功能。


    R1

    R1(config-route-map)#match ipadd 1//

    R1(config-route-map)#match ipadd 2//

    R1(config-route-map)#match ipadd 3//

    R1(config-route-map)#match ipadd 4//的空策略,同意全部

    R1(config-route-map)#exit

    R1(config)#router bgp 100

    R1(config-router)#nei192.168.12.2 send-community//、65502)。解决BGP Full-mesh带来的大量IBGP会话的问题.还能够结合路由反射进一步优化

    R2#conf t

    R2(config-router)#norouter bgp 200 //清除之前的BGP进程

    R2(config)#router bgp65501 //创建一个私有的bgp进程

    R2(config-router)#bgprouter-id 2.2.2.2

    R2(config-router)#bgpconfederation identifier 200 //属于BGP 200的联盟AS

    R2(config-router)#nei192.168.12.1 remote-as 100

    R2(config-router)#nei192.168.23.2 remote-as 65501

    R2(config-router)#net192.168.12.0 mask 255.255.255.0

    R2(config-router)#net192.168.23.0 mask 255.255.255.0

    R3#conf t

    R3(config)#router bgp65501

    R3(config-router)#bgprouter-id 3.3.3.3

    R3(config-router)#bgp confederationidentifier 200

    R3(config-router)#nei192.168.23.1 remote-as 65501

    R3(config-router)#bgpconfederation peers 65502 //必须指明与自己同属一个联盟的子AS65502,否则无法建立bgp链接

    R3(config-router)#nei192.168.34.2 remote-as 65502

    R3(config-router)#net192.168.23.0 mask 255.255.255.0

    R3(config-router)#net192.168.34.0 mask 255.255.255.0

    R4#conf t

    R4(config)#no router bgp200

    R4(config)#router bgp65502

    R4(config-router)#bgprouter-id 4.4.4.4

    R4(config-router)#bgpconfederation identifier 200

    R4(config-router)#bgpconfederation peers 65501

    R4(config-router)#nei192.168.34.1 remote-as 65501

    R4(config-router)#nei192.168.45.2 remote-as 300

    R4(config-router)#net192.168.34.0 mask 255.255.255.0

    R4(config-router)#net192.168.45.0 mask 255.255.255.0

    注意R3路由表:

    R3#sh ip bgp

    BGP table version is 9,local router ID is 3.3.3.3

    Status codes: ssuppressed, 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

    *>i1.1.1.0/24       192.168.12.1             0    100     0 100 i

    *> 5.5.5.0/24      192.168.45.2             0    100     0 (65502) 300 i

    r>i192.168.12.0     192.168.23.1             0    100     0 i

    * i192.168.23.0     192.168.23.1             0    100     0 i

    *>                  0.0.0.0                  0         32768 i

    *  192.168.34.0     192.168.34.2             0    100     0 (65502) i

    *>                 0.0.0.0                  0         32768 i

    r> 192.168.45.0    192.168.34.2             0    100     0 (65502) i

    实验十四、BGP的负载均衡

    负载平衡同意路由器在多个路径上分配入局和出局业务。 这些路径以静态方式或通过动态协议获得(如RIP、EIGRP、OSPF和IGRP)。条负载均衡的功能,最大16条,1为不支持

    R4配置:

    R4#conf t

    R4(config)#int s0/0

    R4(config-if)#clock rate 64000

    R4(config-if)#ip add 192.168.34.2255.255.255.0

    R4(config-if)#ip router isis

    R4(config-if)#no sh

    R4(config-if)#exit

    R4(config)#int e1/0

    R4(config-if)#ip add 200.100.100.4255.255.255.0

    R4(config-if)#ip router isis

    R4(config-if)#no sh

    R4(config-if)#exit

    R4(config)#router isis

    R4(config-router)#net49.0001.4444.4444.4444.00

    R4(config-router)#exit

    R4(config)#router bgp 200

    R4(config-router)#net 192.168.34.0 mask255.255.255.0

    R4(config-router)#net 200.100.100.0 mask255.255.255.0

    R4(config-router)#nei 192.168.34.1 remote-as100

    R4(config-router)#nei 200.100.100.6 remote-as200

    R4(config-router)#nei 200.100.100.5 remote-as200

    R4(config-router)#exit

    R5配置:

    R5#conf t

    R5(config)#int s0/0

    R5(config-if)#clock rate 64000

    R5(config-if)#ip add 192.168.35.2255.255.255.0

    R5(config-if)#ip router isis

    R5(config-if)#no sh

    R5(config-if)#exit

    R5(config)#int e1/0

    R5(config-if)#ip add 200.100.100.5255.255.255.0

    R5(config-if)#ip router isis

    R5(config-if)#no sh

    R5(config-if)#exit

    R5(config)#router isis

    R5(config-router)#net49.0001.5555.5555.5555.00

    R5(config-router)#exit

    R5(config)#router bgp 200

    R5(config-router)#net 192.168.35.0 mask255.255.255.0

    R5(config-router)#net 200.100.100.0 mask255.255.255.0

    R5(config-router)#nei 192.168.35.1 remote-as100

    R5(config-router)#nei 200.100.100.4 remote-as200

    R5(config-router)#nei 200.100.100.6 remote-as200

    R6配置:

    R6#conf t

    R6(config)#int e0/0

    R6(config-if)#ip add 200.100.100.6255.255.255.0

    R6(config-if)#ip router isis

    R6(config-if)#no sh

    R6(config-if)#exit

    R6(config)#router isis

    R6(config-router)#net49.0001.6666.6666.6666.00

    R6(config-router)#exit

    R6(config)#router bgp 200

    R6(config-router)#net 200.100.100.0 mask255.255.255.0.

    R6(config-router)#nei 200.100.100.4 remote-as200

    R6(config-router)#nei 200.100.100.5 remote-as200

    完毕配置,查看R3的路由表,并使用

    R3#sh ip rou

    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, su - IS-IS summary, 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

    B    200.100.100.0/24 [20/0]via 192.168.35.2, 00:00:47

    [20/0]via 192.168.34.2, 00:00:20

    C   192.168.34.0/24 is directly connected, Serial0/0

    C   192.168.35.0/24 is directly connected, Serial0/1

    R3#traceroute 200.100.100.6

    Type escape sequence to abort.

    Tracing the route to 200.100.100.6

    1 192.168.35.2 60 msec

    192.168.34.2 48 msec

    192.168.35.2 8 msec

    2200.100.100.6 [AS 200] 56 msec 32 msec 32 msec

    第三种:通过多个本地路由器多归到一个ISP时的负载平衡

    R7配置:

    R7#conf t

    R7(config)#int s0/0

    R7(config-if)#clock rate 64000

    R7(config-if)#ip add 192.168.78.1255.255.255.0

    R7(config-if)#ip router isis

    R7(config-if)#no sh

    R7(config-if)#exit

    R7(config)#int s0/1

    R7(config-if)#clock rate 64000

    R7(config-if)#ip add 192.168.79.1255.255.255.0

    R7(config-if)#ip router isis

    R7(config-if)#no sh

    R7(config-if)#exit

    R7(config)#router isis

    R7(config-router)#net49.0001.7777.7777.7777.00

    R7(config-router)#exit

    R7(config)#router bgp 100

    R7(config-router)#net 192.168.78.0 mask255.255.255.0

    R7(config-router)#net 192.168.79.0 mask255.255.255.0

    R7(config-router)#nei 192.168.78.2remote-as 100

    R7(config-router)#nei 192.168.79.2remote-as 100

    R7(config-router)#maximum-paths ibgp 2 //开启2条IBGP链路负载

    R8配置:

    R8#conf t

    R8(config)#int s0/0

    R8(config-if)#clock rate 64000

    R8(config-if)#ip add 192.168.78.2255.255.255.0

    R8(config-if)#ip router isis

    R8(config-if)#no sh

    R8(config-if)#exit

    R8(config)#int s0/1

    R8(config-if)#clock rate 64000

    R8(config-if)#ip add 192.168.80.1255.255.255.0

    R8(config-if)#ip router isis

    R8(config-if)#no sh

    R8(config-if)#exit

    R8(config)#router isis

    R8(config-router)#net49.0001.8888.8888.8888.00

    R8(config-router)#exit

    R8(config)#router bgp 100

    R8(config-router)#net 192.168.78.0 mask255.255.255.0

    R8(config-router)#net 192.168.80.0 mask 255.255.255.0

    R8(config-router)#nei 192.168.78.1 remote-as100

    R8(config-router)#nei 192.168.79.2 remote-as100

    R9配置

    R9#conf t

    R9(config)#int s0/0

    R9(config-if)#clock rate 64000

    R9(config-if)#ip add 192.168.79.2255.255.255.0

    R9(config-if)#ip router isis

    R9(config-if)#no sh

    R9(config-if)#exit

    R9(config)#int s0/1

    R9(config-if)#clock rate 64000

    R9(config-if)#ip add 192.168.90.1255.255.255.0

    R9(config-if)#ip router isis

    R9(config-if)#no sh

    R9(config-if)#exit

    R9(config)#router isis

    R9(config-router)#net 49.0001.0000.0000.0000.00

    R9(config-router)#exit

    R9(config)#router isis

    R9(config-router)#net 49.0001.9999.9999.9999.00

    R9(config-router)#exit

    R9(config)#router bgp 100

    R9(config-router)#net 192.168.79.0 mask255.255.255.0

    R9(config-router)#net 192.168.90.0 mask255.255.255.0

    R9(config-router)#nei 192.168.78.2 remote-as100

    R9(config-router)#nei 192.168.79.1 remote-as100

    R9(config-router)#nei 192.168.90.2 remote-as 200

    R10配置:

    R10#conf t

    R10(config)#int lo0

    R10(config-if)#ip add 10.10.10.10255.255.255.0

    R10(config-if)#exit

    R10(config)#int s0/0

    R10(config-if)#clock rate 64000

    R10(config-if)#ip add 192.168.80.2255.255.255.0

    R10(config-if)#no sh

    R10(config-if)#exit

    R10(config)#int s0/1

    R10(config-if)#clock rate 64000

    R10(config-if)#ip add 192.168.90.2255.255.255.0

    R10(config-if)#no sh

    R10(config-if)#exit

    R10(config)#router bgp 200

    R10(config-router)#net 192.168.80.0 mask255.255.255.0

    R10(config-router)#net 192.168.90.0 mask255.255.255.0

    R10(config-router)#net 10.10.10.0 mask255.255.255.0

    R10(config-router)#nei 192.168.80.1 remote-as100

    R10(config-router)#nei 192.168.90.1 remote-as100

    完毕配置后查看R7的路由表,并使用Tracerout測试

    R7#sh ip rou //两条IBGP路径到达10.10.10.0网段

    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, su - IS-IS summary, 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

    i L1 192.168.90.0/24 [115/20] via192.168.79.2, Serial0/1

    C   192.168.78.0/24 is directly connected, Serial0/0

    C   192.168.79.0/24 is directly connected, Serial0/1

    i L1 192.168.80.0/24 [115/20] via192.168.78.2, Serial0/0

    10.0.0.0/24 is subnetted, 1 subnets

    B       10.10.10.0 [200/0] via192.168.90.2, 00:01:40

    [200/0] via192.168.80.2, 00:01:40

    R7#traceroute10.10.10.10

    Typeescape sequence to abort.

    Tracingthe route to 10.10.10.10

    1 192.168.79.2 32 msec

    192.168.78.2 56 msec

    192.168.79.2 20 msec

    2 192.168.80.2 48 msec

    192.168.90.2 28 msec

    192.168.80.2 28 msec

    第四种:非等价负载均衡

    R1配置:

    R1#conf t

    R1(config)#int lo 0

    R1(config-if)#ip add  1.1.1.1 255.255.255.0

    R1(config-if)#exit

    R1(config)#int s0/0

    R1(config-if)#clock rate 64000

    R1(config-if)#ip add 192.168.13.1255.255.255.0

    R1(config-if)#no sh

    R1(config-if)#exit

    R1(config)#int e1/0

    R1(config-if)#ip add 192.168.12.1255.255.255.0

    R1(config-if)#no sh

    R1(config-if)#exitR1

    R1(config)#router bgp 100

    R1(config-router)#net 1.1.1.0 mask255.255.255.0

    R1(config-router)#net 192.168.12.0 mask255.255.255.0

    R1(config-router)#net 192.168.13.0 mask255.255.255.0

    R1(config-router)#nei 192.168.12.2 remote-as200

    R1(config-router)#nei 192.168.13.2 remote-as200

    R1(config-router)#bgp dmzlink-bw//启用bgp依照多链路的带宽的比例进行负载均衡

    R1(config-router)#nei 192.168.12.2 dmzlink-bw//通告EBGP邻居的链路带宽

    R1(config-router)#nei 192.168.13.2 dmzlink-bw//通告EBGP邻居的链路带宽

    R1(config-router)#maximum-paths 2//开启两条路径的负载均衡

    R2配置:

    R2#conf t

    R2(config)#int e0/0

    R2(config-if)#ip add 192.168.12.2255.255.255.0

    R2(config-if)#ip router isis

    R2(config-if)#no sh

    R2(config-if)#exit

    R2(config)#int e0/1

    R2(config-if)#ip add 192.168.24.1255.255.255.0

    R2(config-if)#ip router isis

    R2(config-if)#no sh

    R2(config-if)#exit

    R2(config)#router isis

    R2(config-router)#net49.0001.2222.2222.2222.00

    R2(config-router)#exit

    R2(config)#router bgp 200

    R2(config-router)#net 192.168.12.0 mask255.255.255.0

    R2(config-router)#net 192.168.24.0 mask255.255.255.0

    R2(config-router)#nei 192.168.12.1 remote-as100

    R2(config-router)#nei 192.168.24.2 remote-as200

    R2(config-router)#nei 192.168.34.1 remote-as200

    R2(config-router)#bgp dmzlink-bw //启用bgp依照多链路的带宽的比例进行负载均衡

    R2(config-router)#nei 192.168.24.2send-community extended//IBGP邻居之间传递扩展的属性

    R2(config-router)#nei 192.168.12.1 dmzlink-bw//通告EBGP邻居的链路带宽

    R3配置:

    R3#conf t

    R3(config)#int s0/0

    R3(config-if)#clock rate 64000

    R3(config-if)#ip add 192.168.13.2255.255.255.0

    R3(config-if)#ip router isis

    R3(config-if)#no sh

    R3(config-if)#exit

    R3(config)#int e1/0

    R3(config-if)#ip add 192.168.34.1255.255.255.0

    R3(config-if)#ip router isis.

    R3(config-if)#no sh

    R3(config-if)#exit

    R3(config)#router isis

    R3(config-router)#net49.0001.3333.3333.3333.00

    R3(config-router)#exit

    R3(config)#router bgp 200

    R3(config-router)#net 192.168.13.0 mask255.255.255.0

    R3(config-router)#net 192.168.34.0 mask255.255.255.0

    R3(config-router)#nei 192.168.13.1 remote-as100

    R3(config-router)#nei 192.168.34.2 remote-as200

    R3(config-router)#nei 192.168.24.1 remote-as200

    R3(config-router)#bgp dmzlink-bw

    R3(config-router)#nei 192.168.34.2send-community extended

    R3(config-router)#nei 192.168.13.1 dmzlink-bw

    R4配置:

    R4#conf t

    R4(config)#int lo0

    R4(config-if)#ip add 4.4.4.4 255.255.255.0

    R4(config-if)#ip router isis

    R4(config-if)#exit

    R4(config)#int e0/0

    R4(config-if)#ip add 192.168.24.2255.255.255.0

    R4(config-if)#ip router isis

    R4(config-if)#no sh

    R4(config-if)#exit

    R4(config)#int e0/1

    R4(config-if)#ip add 192.168.34.2255.255.255.0

    R4(config-if)#ip router isis

    R4(config-if)#no sh

    R4(config-if)#exit

    R4(config)#router isis

    R4(config-router)#net49.0001.4444.4444.4444.00

    R4(config-router)#exit

    R4(config)#router bgp 200

    R4(config-router)#net 4.4.4.0 mask255.255.255.0

    R4(config-router)#net 192.168.24.0 mask255.255.255.0

    R4(config-router)#net 192.168.34.0 mask255.255.255.0

    R4(config-router)#nei 192.168.24.1 remote-as200

    R4(config-router)#nei 192.168.34.1 remote-as200

    R4(config-router)#bgp dmzlink-bw//启用bgp依照多链路的带宽的比例进行负载均衡

    R4(config-router)#maximum-paths ibgp 2//开启两条IBGP的负载均衡

    完毕以上配置后,R1到R4的4.4.4.0网段,与R4到R1的1.1.1.0网段同样现了非等价负载均衡。

    R1#sh ip rou

    Codes: C - connected, S - static, R - RIP, M - mobile, B- BGP

    D - EIGRP,EX - EIGRP external, O - OSPF, IA - OSPF inter area

    N1 - OSPFNSSA external type 1, N2 - OSPF NSSA external type 2

    E1 - OSPFexternal type 1, E2 - OSPF external type 2

    i - IS-IS,su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

    ia - IS-ISinter area, * - candidate default, U - per-user static route

    o - ODR, P -periodic downloaded static route

    Gateway of last resort is not set

    C   192.168.12.0/24 is directly connected, Ethernet1/0

    1.0.0.0/24 issubnetted, 1 subnets

    C       1.1.1.0 isdirectly connected, Loopback0

    C   192.168.13.0/24 is directly connected, Serial0/0

    4.0.0.0/24 issubnetted, 1 subnets

    B       4.4.4.0 [20/0] via 192.168.13.2,00:10:20

    [20/0] via 192.168.12.2,00:10:20

    B    192.168.24.0/24[20/0] via 192.168.13.2, 00:10:20

    [20/0] via 192.168.12.2, 00:10:20

    B   192.168.34.0/24 [20/0] via 192.168.13.2, 00:10:20

    [20/0] via 192.168.12.2, 00:10:21

    R4#sh ip rou

    Codes: C - connected, S - static, R - RIP, M - mobile, B- BGP

    D - EIGRP,EX - EIGRP external, O - OSPF, IA - OSPF inter area

    N1 - OSPFNSSA external type 1, N2 - OSPF NSSA external type 2

    E1 - OSPFexternal type 1, E2 - OSPF external type 2

    i - IS-IS,su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

    ia - IS-ISinter area, * - candidate default, U - per-user static route

    o - ODR, P -periodic downloaded static route

    Gateway of last resort is not set

    i L1 192.168.12.0/24 [115/20] via 192.168.24.1,Ethernet0/0

    1.0.0.0/24 issubnetted, 1 subnets

    B       1.1.1.0 [200/0] via 192.168.13.1,00:36:29

    [200/0] via 192.168.12.1,00:36:29

    i L1 192.168.13.0/24 [115/20] via 192.168.34.1,Ethernet0/1

    4.0.0.0/24 issubnetted, 1 subnets

    C       4.4.4.0 isdirectly connected, Loopback0

    C   192.168.24.0/24 is directly connected, Ethernet0/0

    C   192.168.34.0/24 is directly connected, Ethernet0/1

    说明:

    1.特性描写叙述

    通过利用BGP的Link Bandwidth特性,我们能够在AS边界路由器外部链路带宽不等价的情况下,实现BGP路由的非等价负载均衡。该特性通过在BGP进程的IPv4或VPNv4地址族中使用bgp dmz-bandwidth命令激活。这个特性搭配BGP multipath特性,就可以实现非等价负载均衡。

    BGP Link Bandwidth特性用于在扩展Community属性中通告一条AS出口链路的带宽。

    这个特性配置在一台AS边界路由器上,指向其eBGP邻居,那么此时该特性所描写叙述的就是该路由器与其eBGP邻居之间的链路带宽。并且该链路带宽信息(使用扩展Community描写叙述)除了AS边界路由器自己用(用于本地的非等代价负载均衡),还能够向AS内的iBGP邻居传递,当然,前提是得配置send-communityextended.

    2.BGP Link Bandwidth的前提条件

    需先激活maximum-paths特性

    当要向iBGP邻居通告Link Bandwidth特性时,需send-community extended

    CEF或dCEF必须在全部參与该特性的路由器上打开

    3.BGP Link Bandwidth特性的限制

    该特性仅仅能配置在BGP进程的IPv4或VPNv4下

    BGP仅仅能够在Link Bandwidth Community中通告与eBGP邻居直连的链路(接口)带宽

    在IPv4及VPNv4地址族中,iBGP及eBGP负载均衡都是支持的;可是eiBGP负载均衡却仅仅能在VPNv4地址族中才干够支持,也就是iBGP与eBGP的负载均衡。

    注意:当使用BGP路由协议接入多ISP宿主时,是没有办法实现负载均衡的,由于BGP仅仅在从不同AS那里识别到的BGP路由中选择一条到目的地的最佳路径

    实验总结:(重要)

    BGP选路优先原则:

      1. 优先选取具有最大权重(weight)值的路径,权重是Cisco专有属性。

      2. 假设权重值同样,优先选取具有最高本地优先级的路由。

      3. 假设本地优先级同样,优先选取本地路由(下一跳为0.0.0.0)上的BGP路由。

      4. 假设本地优先级同样,并且没有源自本路由器的路由,优先选取具有最短AS路径的路由。

      5. 假设具有同样的AS路径长度,优先选取具有最低源码(IBGP<EBGP<INCOMPLETE)的路由。

      6. 假设起源码同样,优先选取具有最低MED值的路径。

      7. 假设MED都同样,在EBGP路由和联盟EBGP路由中,首选EBGP路由,在联盟EBGP路由和IBGP路由中,首选联盟EBGP路由。

      8. 假设前面全部属性都同样,优先选取离IGP邻居近期的路径。

      9. 假设内部路径也同样,优先选取最低BGP路由器ID的路径