企业新闻
当前位置:企业新闻

成都华三:BGP学习笔记

来源:成都华三 时间:2016-12-16 22:09
 

   一、BGP概述

  (一)自主系统

  1、内部网关协议(IGP):用于自治系统内部交换信息。如:rip,igrp,eigrp,ospf,is-is都是IGP

  2、外部网关协义(EGP):用于连接自主系统。如:BGP。是一种域间路由选择协议(idrp)

  3、AS自治系统的含义:自治系统可能使用多种IGP,并采用多种度量值。在BGP看来,对另一个AS来说,它有统一的内部路由选择规划。

  4、AS的编号:自治系统是一个16位的数字,范围为1--65535。1--65411是注册因特网编号,属于公有。 65412-65535是保留编号,属于私用。

  (二)BGP的特性

  1、BGP使用TCP作为传输协议,端口号179。ospf、igrp、eigrp运行于ip层。Is-is在网络层,rip用udp协议。

  2、bgp是一种距离矢量协议。实际上是一种路径矢量协议。路径矢量信息包括一个BGP AS号列表,其中列表中列出了前往目标网络必须经过的AS。还包括前往下一个AS的路由器IP地址(下一跳属性),以及源头编码属性。

  AS路径:即前往目标网络通过的AS列表。 需每个AS都会有一个编号。BGP不接受在AS路径属性中包含本自治系统的编号的路由选择更新,以防止环路。

  3、支持CIDR(无类别域间选路),简化了路由聚合,减少了路由表

  4、BGP更新只发送增量消息,不是所有的路由表。

  5、提供了丰富的路由策略。

  (三)BGP的用途

  1、基本策略的路由选择

  (1)BGP支持AS级策略。制定路由选择策略,被称为基于策略的路由选择。BGP根据路由选择信息中的属性可以制定AS策略

  (2)BGP路由器只把自已获悉或使用的最佳路由通告给邻接自主系统对体,其他路由不通告。邻接自主系统,即与本自主系统相邻的自主系统。

  即BGP路由器只把自已获悉的最佳路由通告给相邻自主系统的BGP路由器。

  2、使用BGP的时机

  AS有多条到其他自主系统的连接

  必须对数据流进入和离开AS的方式进行控制

  AS允许分组穿过它前往其他自主系统

  3、不使用BGP的时机

  只有一条到INTERNET或另一个AS的连接

  自主系统之间带宽较低

  当一个AS与另一个AS的路由策略相同时

  路由器没有足够的能力来处理BGP更新

  以上情况应用静态路由来解决。

  浮动静态路由:即把静态路由的管理距离调整 到比动态路由协议的管理距离还要大。只有动态路由协议不可用时,此静态路由才被使用。

  (四)BGP的邻接关系及工作机制

  1、工作机制

  BGP系统启动时,发送整个BGP路由表交换路由信息,之后为了更新路由表,只交换更新信息,即只有增量信息

  在系统运行过程中,通过接收和发送KEEPALIVE 消息来检测互相之间连接是否正常

  BGP发送优选的BGP路由和引入的IGP路由给对等体。

  2、BGP邻接关系:

  BGP发起者:运行BGP的路由器被称为BGP发起者

  BGP对等体:即BGP邻居。任何两个运行BGP协议的路由器,通过TCP连接,交换BGP路由信息的,就是BGP对等体。可以是直接连接的,也可以是不直连的。

  EBGP:外部BGP。即两个不同的AS之间的BGP连接,叫EBGP。BGP在不同自主系统路由器之间运行的时,被称为EBGP。运行EBGP的路由器之间必须有特理上的直接链路。

  IBGP:BGP在同一个AS的路由器之间运行时。即在同一个自主系统内的BGP叫IBGP。运行IBGP的路由器之间不一定要物理直连,但必须保证逻辑上的全连接

  3、BGP的路由通告原则:

  (1)多条路径时,BGP speaker只选择最优的给自已使用。即有多条到目的网络的路径时,选最优的。

  (2)BGP speaker只把自已使用的路由通告给相邻体。结合第一条,即只通告最佳路由给相邻体。

  (3)BGP speaker从EBGP获悉的路由会向它所有的BGP相邻体通告,包括EBGP和IBGP

  (4)BGP speaker从IBGP获得的路由,不向它的GBGP相邻体通告,避免发生环路。

  (5)BGP speaker 从IBGP获得的路由信息是否通告给EBGP相邻体,要依据IGP和BGP的同步情况决定。只有IGP已完全知晓了BGP的路由信息,即IGP和BGP已完全同步了,才通告给EBGP

  (6)连接一建 立,BGP speaker将把自已所有BGP路由通告给新相邻体,之后只发送更新的部分。

  注意:一般不会把BGP路同注入到内部的IGP路由器中,因为BGP路由表太大,会导致IGP网络崩溃。

  (五)BGP的几种报文(几种消息类型)

  1、打开消息(open):用来交换各自版本号,自治系统号,保持时间,BGP标识等信息。(你好,跟我交个朋友吧)

  2、存活消息(keepalive):即和BGP对等体的keepalive消息。向对等体通告彼此还连接着,没中断。(我还活着呢,别不理我)

  3、更新消息(update):有新的路由选择信息则发送update消息。更新消息中只含一条路径的信息。如果是多条路径,则需要多条更新消息。也可以撤消多条不可达路由信息。

  一个更新消息只能通告一个路由,但可以携带多个路径属性;一个更新消息可以通告多条路由,但路径属性必须相同。

  撤消路由:要撤销的路由的ip地址前缀。

  路径属性:包括AS路径,源头,本地优先级等。

  网络层可达性信息:包含 通过该路径可以达到的ip地址前缀。

  4、通知消息:检测到错误条件时发送通知消息。然后立即关闭BGP连接。包含一个错误代码,一个错误子代码,和有关错误信息。(我不跟你玩了)

  (五)BGP协议邻接关系的状态

  首先是空闲状态(IDLE)

  BGP一旦开始就进入connect(连接)状态,如果定时器超时,则仍处于connect状态

  如果连接失败则进入ACTIVE(活动)状态,在active状态下,如果TCP连接建立不成功,则一直处于active状态。成功后进入opensent(打开发送)状态

  如connect状态下,连接成功也进入opensend状态

  opensend状态下,BGP一旦收到open报文(打开消息),就会进入openconfirm(打开确认)状态

  在openconfirm状态下,如果keepalive定时器超时,则停在openconfirm状态下。

  直到收到keepalive报文,进入established(已建立)状态。邻居建立成功。

  仅当连接处于已建 立状态时,才能交换更新,存活和通知消息。

  (六)BGP的三种路由来源

  纯动态注入:路由器将通过IGP路由协议动态获得的路由信息直接注入到BGP中。一般用redistribute命令把IGP路由信息重分发到BGP路由中。

  半动态注入:路由器有选择的将IGP路由协议获得的动态路由信息注入到BGP中。如用:network命令声明哪些网络的路由注入到BGP路由中。

  静态注入: 路由器将静态配置的某条路由注入到BGP系统中。

  (七)BGP表

  运行BGP的路由器都有一个独立的BGP拓扑表,也叫BGP路由选择表,用于存储从其他路由器那里获悉的路由选择信息。这个表独立于IP路由选择表。

  BGP邻居建立邻接关系后,邻居之间交换BGP路由

  BGP路由器从每个BGP邻居那里获得路由选择信息

  并把信息加入到BGP拓扑数据库中,即BGP路由选择表中

  然后从BGP路由选择表中选出前往各个目的网络的最佳 路由

  将最佳路由提供给IP路由选择表。

  二、BGP的属性

  (一)属性的分类

  (1)公认强制属性(必遵属性)

  在路由更新的数据报中必须存在的路由属性。如缺少必遵属性,路由信息将会出错。必遵属性有:AS路径属性(as path);下一跳属性(next-hop);源头属性(origin)

  (2)公认自由决定的属性(可选属性)

  可选的,不一定存在于更新的数据报文中。根据需要配置。包括以下属性:本地优先级属性(local precerence);原子聚合属性(atomic aggregate)

  (3)可选传递属性(过渡属性)

  具有AS间可传递的属性就是过渡属性。过渡属性的值可以被传递到其他的AS中,并继续起作用。包括:聚合站属性(aggregntor);共同体(团体)属性(community)

  可选属性不要求所有BGP实现都支持。它可能是私有属性。BGP路由器对于支持的可选传递属性,BGP将接纳此属性值。对于不支持的可选传递属性,路由器将原封不动地将属性值传递给其他BGP路由器。

  即BGP路由器对于支持的可选传递属性,则接收属性值,并也把属性值转给到BGP邻居。而对于不支持的可选传递属性,则原封不动的传递给其他BGP路由器。自已不接纳。

  (4)可选非传递属性(非过渡属性)

  只在本地起作用,出了自主系统或域,那属性值就恢复到缺省值 ,不向外传递。包括:多出口鉴别器属性(MED)

  注:CISCO还定义了BGP属性权重。

  (5)CISCO使用的属性类型编码:

  源头 (origin) 1

  AS路径 2

  下一跳 3

  MED 4

  本地优先级 5

  原子聚合 6

  聚合站 7

  共同体 8

  始发站 ID 9

  集群列表 10

  (二)属性分讲

  1、AS路径属性 (必遵属性)

  是路由经过的AS序列。即列出到达目的网络时经过的AS清单。

  BGP使用AP-PATH(AS路径)作为路由更新的一部分。为了避免路由环,当从外部收到一条路由,发现此路由的AS路径属性中发现包含本自治系统号时,将丢弃此路由。

  BGP在向EBGP对等体通告 一条路由时,要将自已的AS号加入到AS路径属性中

  在将路由通告 给IBGP邻居时,不修改AS路径属性。

  在其他条件相同的情况下,选择AS路径最短的路由

  2、下一跳属性 (next-hop )(必遵属性)

  (1)概述:

  用于指出前往目的地的下一跳IP地址。

  与IGP不同,BGP中的跳指的是AS,而不是路由器。因此下一跳是下一个AS。

  对一个AS中的网络而言,这个AS的下一跳就是下一个AS的入接口的IP地址。

  对EBGP而言,下一跳是另一个AS中发送更新的邻居路由器的IP地址。并且,BGP规定,EBGP通告的下一跳,应被传到IBGP中,并且不会改变。(即所有IBGP知道的另一个AS的下一跳是相同的)

  A: BGP(包括EBGP和IBGP)在向IBGP通告从其他EBGP获得的路由信息时,不改变下一跳地址。即本AS的BGP路由器从其他AS中的EBGP得到的下一跳信息传给IBGP时,下一跳信息不变。(即所有IBGP知道的另一个AS的下一跳是相同的)

  B: 本AS的BGP在向EBGP通告路由信息时,即本AS的BGP路由器在把本AS的路由信息传到其他AS中时,下一跳地址就是本AS中BGP路由器的端口地址。(即通告本AS路由信息到其他AS的那个运行EBGP的路由器接口就是其他AS到达本AS的下一跳)

  C: 当多路连接时,多路访问网络(如以太网)上运行BGP时,BGP路由器将使用合适的地址作为下一跳地址。即第三方下一跳。

  D: 如果连接路由器的介质是非广播多路访问(NBMA) (X.25,帧中继网等)时,有时需要修改下一跳属性业阻止问题的产生。

  E: 递归查找:

  F: 修改下一跳属性

  #neighbor {ip-address|perr-group-name} next-hop-self

  3、源头属性(origin) (必遵属性)

  定义路由信息的源头。即路由信息是从哪来的。

  (1)IGP: 路由信息是从AS内部获得。路由信息是使用NETWORK命令注入到BGP路由表中的,则ORIGIN属于IGP类。IGP源头用 i 表示。

  (2)incomplete(不完全): 路由的源头未知或通过其他方法获得的。用重分发命令 redistribute 注入到BGP路由表中的,属于不完全类源头。

  (3)EGP: 路由是通过EGP获悉的,在BGP中用 e 表示。EGP已过时,internet不支持了。

  静态注入的路由信息优先级最高, 半动态注入的(network命令)的次之, 纯动态注入的(ridistribute命令)最差。

  4、本地优先级(可选属性)

  (1)概述:

  用于自治系统内部优选到达某一目的地的路由。即告诉AS中的路由器,哪条路径是离开AS的首选路径。用来选择到区域外,即自治统外部某一网络目的地时,选接一个好的出口。本地优先级越高,路径被选中的可能性越大。

  在同一个AS中的多个IBGP,有到AS外的某一目的网络的多个出路时,则首选优先级高的那个。本地优先级只在AS内部传递,不传到AS外。(本AS中的所有路由器都叫IBGP,包括运行EBGP的也运行IBGP)

  (2)例子:

  5、MED值(可选非传递属性)

  (1)概述

  本地优先级定义的是选择最佳出口,而MED是定义选择入口。

  MED称为度量值

  与本地优先级不同,MED是自主系统之间交换的。MED被传输到邻接AS,该AS使用它,但不将它传给下一个AS。将收到的路由更新传给下一个AS时,将删除其度量值 。

  当某个AAS有多个入口时,用MED属性值可以帮助外部的邻居路由器选一条较好的入口路径。MED值越低,优先级越高

  默认情况下,路由器只比较来自同一AS中的各EBGP邻居的MED值。不比较来自不同AS的EBGP邻居的MED值。如果要对不同自主系统中的邻居提供的MED值进行比较,除非能够确认不同的AS采用了相同的IGP路由选择方式。或配置:bgp always-compare-med命令

  (2)例子:

  6、共同体(团体属性)(可传递属性)

  (1)概述:

  BGP共同体是一种用于过滤入站出站路由的方法。

  团体属性标识了一组有相同特征的路由信息。与它所在的自治系统和网段无关。其他路由器将根据该团体属性来做决策。增加路由策略的灵活性。

  (2) 团体属性的四种值:

  A: 团体号: aa:nn 。(号码型团体属性) aa:nn团体号是一个32位的数。前16位表示AS号,后16位表示共同体号。即:aa是AS号, nn是共同体号。默认用十进制形式表示。取值范围: 1--4294967200

  B: no-export : (包括这个 在内的以下在三种值都不是数字型的共同体属性,都是预设的)。no-export,不通告到EBGP, 不把共同体属性通告到AS外。一个路由器收到一个团体属性名预设为 no-export的团体属性的路由,将不把此路由传递给EBGP邻居。

  C: no-advertise: 不通告到任何BGP,包括同一AS内的IBGP也不能通告。收到一条带有no-advertise的团体属性的路由,将不把此路由传给BGP,包括IBGP。

  D: local-as: 不发送到本AS以外。不把带有此团体属性的路由传到AS以外。

  (3)共同体属性配置

  A: #set community {community-number [additive]} [none]

  community-number:设置团体属性的团体号。有上面介绍的四种团体值。

  additive: 可选项。追加共同体属性。将共同体属性值,即新的团体号,增加到已经存在的共同体属性值之后,即追加共同体属性。一条路由可拥有多个共同体属性。

  none: 删除共同体属性

  B: #neighbor {ip-address | perr-group-name} send-community

  把共同体属性发送给一个BGP邻居。 默认情况下,共同体属性不被发给任何邻居。共同体属性在出站BGP更新中被删除,只有配置此命令才能传递出去。

  ipaddress: 团体属性将要被发送到BGP邻居的IP地址

  peer-group-name:BGP对等体组的名称

  C: #neighbor {ip-address | peer-group-name } router-map {map-name} [in | out ]

  set community命令与此命令一起用,以将映射表应用于路由选择更新。用以将此命令中名为 map-name 的映射表应用于 ip address中指定的邻居路由器的路由更新。如果为in 则应用于进入的更新报文。

  如果为out ,则应用于邻居路由器更新报文发出时。

  D: #ip community-list {community-list-nmber} {permit |deny } {community-number}

  community-list-number: 是列表号。即创建一个团体列表。然后可用映射表对列表号作出控制

  community-number: 允许加入或拒绝加入的团体号 1-99范围

  #match community {community-list-number} [exact]

  用于在映射表中匹配列表号的命令。

  exact:意思是,必须与match命令中指定的列表号中指定的团体属性完全匹配。要匹配的团体属性中有且只有团体列表中的所有团体属性值 。

  总结:

  set community 是设置路由的团体属性

  neighbor ip-address send-community 命令把团体属性传给邻居

  neighbor ip-address router-map 命令是控制邻居路由器的路由更新

  ip community -list 和 match community 用于控制团体的访问。

  例:

  C路由器:

  (config)#router bgp 65001 //进入BGP自治系统65001

  (config-router)#network 192.168.1.0 //把 192.168.1.0 路由注入BGP 路由器C

  (config-router)#neighbor 172.30.1.2 remote-as 65002 //建立对等体邻居。此处的IP地址为EBGP对等体路由器的直接接口的ip地址

  (config-router)#neighbor 172.30.1.2 send-community //把路由器c的共同体属性传给路由器A

  (config-router)#neighbor 172.30.1.2 router-map test out //邻居路由器A收到了C路由器传来的路由选择信息时,根据映射表test中定义的规则向外转发路由。即路由器A向外转发从C路由器收到的路由时,需要执行映射表规则。

  (config)# router-map test permit 10 //定义路由映射表 test

  (config-map)# match ip address 1 //任何匹配访问列表1的路由都将团体100 添加到现存的团体属性中的团体里。如果没有additive关键字,则用共同体 100 的属性替换路由现存的共同体属性。即把共同体100 添加到符合条件的路由的共同体属性中。一个路由的共同体属性可以有多个共同体。此处的意思是,匹配访问列1的路由,传给邻居路由器时都加上共同体属性100

  (config-map)# set community 100 additive

  (config-map)# router-map test permit 20

  (config-map)# match ip address 2

  (config-map)# set community no-export //任何匹配 访问列表2的路由都将共同体属性设为 no-export,即不传播到AS外。即把所有传播到邻居172.30.1.2 的路由共同体属性都设为 no-export。所以,所有从此路由器传给邻据路由器172.30.1.2的路由,都不会从172.30.1.2这台邻居路由器所属AS中传递到其他AS中。

  (config)# access-list 1 permit 192.168.1.0 0.0.0.255

  (config)#access-list 2 permit 0.0.0.0 255.255.255.255 //所有路由都匹配。

  A路由器:

  (config)#router bgp 65002

  (config-router)#neighbor 172.30.1.1 router-map checkmon in

  (config-router)#router-map checkmon permit 10

  (config-router)#match community 1 // 如果共同体属性值中包含有共同体列表1中的共同体号的路由,把权重设为 20。即所有共同体属性值中包含共同体99的路由都把权重值设为20

  (config-router)#set weight 20

  (config-router)#router-map checkmon permit 20

  (config-router)#match community 2 //没有任何设定,不做任何动作。

  (config)#ip community-list 1 permit 99 //共同体列表1允许99共同体加入。即共同体列1中包含 99共同体。

  (config)#ip community-list 2 permit internet //共同体列表2包含internet值,意味着所有路由。 即所有路由都被列表2允许。

  7、权重

  三、BGP的工作原理

  (一)IBGP全互联

  (1)IBGP不将通过IBGP获悉的路由传给其他IBGP对等体。可避免路由环路。

  (2)IBGP之间一定要全互联。全互联不是指物理上要互联,而 是逻辑上要互联。如TCP相连也可。(在联盟和反射的情况下不要求全互联)

  (3)BGP路由选择表太大,不能将所有BGP路由重分到IGP路由器中。因为IGP路由器无法承受。

  注意:IBGP一定要全互联,TCP全互联也可。因为TCP要保证每个分组都让接收方确认接收,不能是多播和广播方式。如果IBGP不全互联的话,就可能造成路由选黑洞。

  (二)联盟

  在一个AS中,如果IBGP路由器过多,因为要求IBGP全互联,所以将会有过多的IBGP会话(n(b-1)/2)。 N为IBGP路由器数。这样会需要维护大量的会话及数据流。此时可用联盟和路由反射来减少会话数。此处专讲联盟。

  联盟即把一个AS中的多个IBGP划分为一个联盟。一个AS可划分多个个联盟。联盟之间再进行全连接。这样就会减少会话数。注意一点,联盟内部的所有IBGP仍需要全连接。有点像在一个大的AS中划分多个小的AS。

  (三)路由器反射

  1、几个术语:

  路由反射器:可以把通过IBGP所获悉的路由通告给其他IBGP对等体的路由器。因为AS内部的IBGP不把从IBGP获悉的路由通告 给其他IBGP对等体。实现全连会造成会话多,浪费资源。

  此处我们可以把一台IBGP路由器设定为路由反射器,路由反射器可以转发从其他IBGP获悉的路由到IBGP。路由反射器在中心,其他IBGP再与路由反射器相连,这样就可以不用全互联了,用星型结构。反射路由器有点类似于OSPF中的DR路由器。

  客户:与路由反射器有IBGP对等体关系的路由器叫客户。即与路由反射器直连的IBGP路由器叫客户。

  集群:一个路由反射器与其客户组成一个集群。一个集群通常只有一个路由反射器。此时路由反射器的ROUTER ID为集群的ID。当一个集群有多个路由反射器时,需配置集群ID,用来标识集群。也便于路由反射器知道更新来自集群内还是集群外。

  非客户:非路由反射器的客户的其他对等体被称为非客户。

  2、路由反射器的设计:

  AS内部可将AS分为几个集群。每个集群由至少一个路由反射器和几个客户组成。也可以有多个路由反射器。集群内的路由器不必全互联,但一个集群内如有多个路由反射器,每个路由反射器都必须与每个客户互连。

  路由反射器之间也必须用IBBGP进行全互联。包括同集群内的路由反射器和不同集群的路由反射器都必须全互联。

  3、路由反射器的工作原理

  路由反射器收到一个户的更新时,路由反射器把更新发给集成内的所有客户对等体和所有客户对等体(其他集群的路由反射器)。

  如果更新来自非客户对等体,则将更新发到本集群内的所有客户

  如果来自EBGP对等体,则将更新传给所有客户对等体和非客户对等体

  建议一个集群只配一个路由反射器,如果多个反射器,容 易造成环路

  4、配置路由反射器

  #neighbor {ip-addreess} router-reflector-client //把路由器配置路由反射器,并指定的IP-address邻居设为客户

  # bgp cluster-id {clusterid} //当集群内有多个路由反射器时,用此命令配置集群ID

  show ip bgp neighbors //验证路由反射器

  (四)BGP同步

  BGP从IBGP获悉的路由信息是否通告给EBGP相邻体,依据IGP和BGP的同步情况决定。如果IBP和BGP完全同步,才通告给EBGP。

  因为当IBGP之间进行间接连接时,而非直连时,他们之间只是建立了一条TCP连接。而这条TCP连接经过的路由器,到达两个IBGP之间的路径,叫中转路径。而这条中转路径中的路由器有可能只运行着IGP协议。这些IGP路由器在两个IBGP之间只传递数据,而不知BGP的路由信息。但要转发路由数据时必须知道路由信息才能转发。所以需要同步。

  当位于AS内部的中转路径上的所有路由器都是运行的BGP时,就不需要同步。

  (五)路由选择过程

  (1)首先丢弃下一跳(next-hop)不可达的路由

  (2)优先选择最大权重的路由

  (3)优选最高本地优先级的路由

  (4)优选本路由器始发的路由。即当前路由器通告的路由。

  (5) 优选经过AS(AS-Path)最少的路由

  (6)优选起点关型(origin)最低的路由

  (7)优选MED值最低的路由

  (8)优选从EBGP学来的路由。外部(EBGP)优于内部IBGP

  (9) 优选AS内部最短的路径可达的路由。

  (10)优选邻居BGP路由器ID最小的路由

  (11)如邻居BGP ID相同,则选邻居IP地址最小的路由

  四、BGP的配置

  (一)基本配置

  1、(config)# router bgp {自治系统号} //开启BGP路由

  2、(config-router)#neighbor {ip-address | peer-group-name} router-as {as_id} //指定BGP邻居

  ip-address: 指定邻居BGP的IP地址。此处的邻居IP,是指邻居BGP路由器的IP地址,特别是在未直连的IBGP路由器之间,不是指直接相连的路由器的IP地址。

  peer-group-name:指定BGP对等体组的名称。是一组采用相同更新策略的BGP邻居。可以把策略应用于对等体组。把多个邻居加到对等体组中,这样这个策略就可以应用于所有属于对等体组中的BGP路由器。

  as_id: 邻据BGP路由器所属的AS号。如AS号与本AS相同,则是IBGP邻居.如果AS号与本AS不同,则是EBGP邻居。

  (config-router)#neighbor {ip -address | peer-group-name} shutdown //禁用已有的BGP邻居或对等组。

  (config-router)# no neighbor {ip -address | peer-group-name} shutdown //重新启用BGP邻居。

  (config)# neighbor {peer-group-name} peer-group //可以用以上命令创建一个对等体组

  (config)# neighbor {ip-address} peer-group {peer-group-name} //把ip-address中的路由器加入到对等体组中。每个邻接路由器只能属于一个对等体组的成员

  (config)# clear ip bgp peer-group {peer-group-name} //用此命令删除对等体组

  对等体组只在当前路由器上有作用,不传递给其他路由器

  3、指定源IP地址

  BGP路由器在指定邻居对等体BGP路由器的IP地址时,在邻据对等体BGP路由器上,也要指定目标地址为刚才指定自已为邻居的路由器的源IP地址。

  即BGP路由器A有多个接口,有多个IP地址,如IP地址A1和IP地址A2 。 路由器A的邻居对等体路由器B也有多个IP地址,为B1和B2。当在路由器A上用IP地址A1为源地址,目标地址为B1来建立BGP邻居的话,那边在路由器B上必须用B1为源地址,A1为目标地址建 立BGP邻居。用B2为源,A1为目标地址,B1为源,A2为目标地址都不行。

  为避免出现以上问题,增加稳定性,在路由器上配置环回接口,用环回接口来互配邻居BGP对等体,会增强稳定性。一般一个BGP路由器到邻据BGP路由器有多个出口时,配置环回接口来建立邻居。

  (config-router)# neighbor {ip-address|peer-group-name} update-source loopback {interface-number}

  update-source: 指定默认的源地址为后面指定的环回接口。而 不是默认发出的IP地址。

  interface-number:有时会配置多个环回接口,这里指定是哪个环回接口

  4、EBGP多跳(当EBGP之间配置为非直连时使用)

  在EBGP邻居中命使用环回接口进行对等体邻居配置时需用上。

  EBGP对等体之间一般是用直连接口地址来配置邻居。因为EBGP之间不通告IGP路由信息。如不直连将无法找到对方的路由,无法建 立邻居。

  如用环回接口配置EBGP对等体,必须在EBGP两边各配置一条静态路由指向直连网络的物理地址,还需要启用EBGP多跳。

  EBGP一般是直连的,所以TTL值为1,即存活间为1。 而直连时,需要配置TTL值。TLL值即跳值。用环回接口来建立EBGP邻居时也一样要配置,环回接口时TTL值为2.当有更多跳时配置为更多的跳数。

  (config-router)# neibhbor ebgp-mulitihop [ttl]

  例:(config)# router bgp 651000

  (config-router)# neighbor 172.16.1.1 remote-as 651001 //此处的地址EBGP邻据路由器环回接口的地址

  (config-router)# neighbor 172.16.1.1 update-source lookback 0 //源地址为环回接口0的地址

  (config-router)# neighbor ebgp-mulitihop 2 //EBGP之间的TTL值为2 ,因为是环回接口。

  (config)# ip router 172.16.1.1 255.255.255.0 192.168.1.3 //配置一条静态路由,以能找到对端环回端口。这里的192.168.1.3,是EBGP邻居与自已直连接口的IP 地址。

  ebgp对等体邻居也做相应的配置

  5、重置会话

  # clear ip bgp {* |ip-address} {soft [in |out] }

  (二)把IGP路由变成BGP路由

  1、network命令注入(半自动注入方式)

  指定哪些网络被加入BGP路由进程,并通告给其他BGP路由器

  (config)# network {network-number} [mask {mask}] //把哪些网络通告到BGP路由中。

  与IGP的network命令不一样,BGP的network命令是告诉BGP通告什么,哪些网络路由通告到BGP中。而IGP的network命令是哪些网络启用IGP协议进程。

  必须用一系列的nework命令在AS中的BGP路由器上指定所有要通告的AS中的网络,而不仅仅是那些与当前BGP路由器直接相连的网络。

  2、redistribute 命令 (纯动态注入方式)

  在BGP路由进程下使用

  3、静态注入

  (1)先在BGP进程下定义一条静态路由

  (2)再用命令: redistribute static命令把静态路由注入到BGP路由中。

  例:

  (三)BGP路由操纵

  1、权重

  是cisco专有属性,用以配置每个邻居的权重

  权重属性提供本地路由选择策略,不会传给任何BGP邻居,包括IBGP。而本地优先级会在AS内部传播,传给IBGP,不传给EBGP.

  一台路由器有多个离开AS的出口时,即有多条前往一个目的地路由时,将选择权重最高的路由作为下一跳路由。

  与本地优先级的区别:当一台路由器有多个离开AS的出口时,根据权重来决定选择哪个出口。

  当一个AS中有多台路由器提供了多个出口时,将根据本地优先级来决定选择哪个出口。

  #neighbor {ip-address | peer-group-name} weight {weight}

  ip-address:对端路由的IP地址。

  weight:权重值。

  例:

  (config)#router bgp 100

  (config-router)#neighbor 10.10.1.1 remote-as 200

  (config-router)#neighbor 10.10.2.1 remote-as 400

  (config-router)#neighbor 10.10.1.1 weight 200

  (config-router)#neighbor 10.10.2.1 weight 150

  2、本地优先级

  (1)设置修改到达所有路由器的本地优先级

  (config-router)#bgp default local-preference {value} //更改本路由器到达所有其他路由器的本地优先级

  value:取值范围 1--4294967295 。 默认值为100

  此命令是设定前往所有路由器的本地优先级。

  (2)设置到达具体网络的本地优先级

  通过路由映射表控制

  (config-router)#neighbor 10.10.1.1 route-map test in //从邻居路由器10.10.1.1接收路由更新时,执行入口路由映射表test检查。即EIBGP路由器10.10.1.1把路由更新传给本路由器时,本路由器执行入口检查。

  (config)#route-map test permit 10 //设置映射表 test

  (config)#match ip address 60 // 匹配访问列表60的路由更新

  (config)#set local-preference 400 //匹配访问列表60的更新,即访问172.20.0.0网段时,其本地优先级设为400

  (config)#route-map test permit 20 //允许其他所有的网络通过。类似于访问列表中的 permit any 语句。

  (config)#access-list 60 permit 172.20.0.0 0.0.255.255 // 访问172.20.0.0网络的匹配。

  3、MED值

  当有多条路径进入AS时,可使用MED值,以选择哪条路径进入。只对同一个AS中的多条入口路径作MED值比较。

  MED在自主系统之间交换,AS收到另一个AS中的MED属性值后,但不将它传递给下一个AS。

  cisco默认:不含MED值的更新,其MED值为0,这使得该路由将成为首选路由。

  IEFF标准:不含 MED值的更新,其MED值视为无穷大,这将使得这种路由最不可能被选中。

  (config)#bgp bestpath med missing-as-worst //执行此命令后,将执行IEFF标准。即不包含MED值的更新,其值将无穷大。

  (1)修改所有路由的MED值

  (config-router)#default-metric {number} //修改与本路由器相邻的所有与其相邻的EBGP路由器的MED值。

  (2)用映射表控制MED值,以对不同网络设定不同的MED值

  (config-router)#neighbor 172.17.1.1 route-map test out //即在向邻居路由器172.17.1.1发送路由更新时,启用映射表检查。

  (config)#route-map test permit 10 //设置映射表 test

  (config)#match ip address 60 // 匹配访问列表60的路由更新

  (config)#set metric 100 //匹配访问列表60的路由更新,其MED值设为100

  (config)#route-map test permit 20 //允许其他所有的网络通过。类似于访问列表中的 permit any 语句。

  (config)#set metric 200 //所有其他的不是访问 10.10.1.0网络的MED值都设为200

  (config)#access-list 60 permit 10.10.1.0 0.0.05.255 //外部AS访问 10.10.1.0网络时将匹配,将MED值设为100.

  注:本地优先级是:外部AS把优先级传到本AS中,并在本AS中传播。而MED是本AS把MED值传到外部AS中,并在外部AS中传播,但不传到下一个AS中。

  4、AS-PATCH

  操作路径信息顺序

  有多条到达目的地的路径,并且其他属性值相同时,AS-PATH属性最小的将获得选择。即经过的AS最少的将获得选择。

  (1)映射表控制

  在映射表中加入:

  #set as-path {tag |prepend {as-path-string}} //增加AS路数,来更改路径选择。人工增加AS路径信息的长度

  tag:只能用于重分发路由到BGP中。将与路由相关的标记转移成一个AS路径。

  prepend:将AS-PATH-STRING值添加到router-map匹配的路由的AS路径信息后面,可应用于出界,入界映射。

  例:

  (config)#router bgp 100

  (config-router)#neighbor 192.168.9.1 remote-as 200

  (config-router)#network 172.17.0.0 //把网络172.17.0.0注入到BGP路由中。

  (config-router)#neighbor 192.168.9.1 route-map test out //本路由器把路由更新传到192.168.9.1邻居路由器时,将应用test映射表出站过滤。

  (config)#route-map test

  (config)#set as=path prepend 100 100 //把本地AS号100,复制两次加入到路径信息中,传给AS200

  通过上面语句,AS300从AS200接收到到达172.17.0.0的更新报文,该报文带有的AS路径信息会变为(200 100 100 100 ),这样AS300到达网络172.17.0.0的AS-path属性为4跳。

  (四)BGP路由汇总

  1、常用术语

  (1)聚合站:指出执行路由聚合的路由器的ID和AS号,是一个可选传递属性。

  (2)原子聚合:它告诉邻接AS,始发路由器对路由进行了聚合。是一个公认自由决定的属性。默认情况下,通告路由聚合时,指出它来自执行聚合的AS,聚合前的AS没有列出。

  2、网络边界汇总

  1、默认BGP不通告子网,只通告分类网或超网到BGP邻居。如:172.16.22.0,只通告 172.16.0.0/16分类网。

  2、(config)#network {network-number} [mask {network-mask}] 用此命令可以通告子网到BGP邻居中。一定在后面要接相应的掩码。如: network 172.16.22.0 mask 255.255.255.0即可。

  注意:不管是分类网络,还是子网,还是汇总网,想通告出去,必须在路由选择表中有此路由选项。路由器的路由选择表是从IGP路由协议和静态路由器中获得。一个BGP路由器,都同时运行IGP路由协议。如果IGP中没有此路由选项,可通过静态路由生成。

  例(1): network 172.16.0.0 ,想通告此分类网到BGP邻居中, 路由选择表中必须有 172.16.0.0或有此网络的子网(如:172.16.22.0/24)的路由选项。而要生成172.16.0.0这个路由选项,一是此路由器也运行IGP路由协议,直接生成路由选项,或从其他IGP路由器上传播过来的路由选项;二是用静态路由生成。

  例(2): network 172.16.22.0/24,想通告此子网到BGP邻居中,路由选择表中也必须有 172.16.22.0/24的路由项。

  例(3): network 172.16.24.0 255.255.252.0 ,汇总了172.16.24/22这个网段,而此时路由选择表中没有此路由选项,则无法通告此汇总路由到邻居BGP。则用静态命令:

  #ip router 172.16.24.0 255.255.252.0 null //应用这个命令后,路由表中将有这条路由,则可以把这条汇总路由通告到BGP邻居中。 null是指向空接口。

  (config)#router bgp 65001

  (config-router)# neighbor 172.16.2.1 remote-as 65000

  (config-router)# network 192.168.25.0 mask 255.255.255.0 //路由表中有此选择,可以传播到BGP邻居中。

  (config-router)# network 192.168.24.0 mask 255.255.1252.0 //路由表中没此选择,则不可以传播到BGP邻居中。

  (config)# ip route 192.168.24.0 255.255.252.0 null //加入此项,则上面那个网络可以传播 到BGP邻居中了。

  3、BGP自动汇总

  (config-router) #auto-summary //此命令启动自动汇总后,在BGP表中,所有重发而来的子网都被汇总为相应的分类子网。

  (config-router)# no auto-summary //关闭自动汇总。即不进行自动汇总。所有重分发来的子网保持原样。

  例: 开启自动汇总的情况下: 将网络 64.100.50.0/24重分发到BGP中后,则BGP将默认拥有64.0.0.0 /8这个网络, 这是默认的分类网络。64.100.50.0/24自动被汇总成分类网了。

  关闭自动汇总可以解决。为正确的把子网通告给BGP,应用命令: network 64.100.50.0 mask 255.255.255.0 ,而不要使用redistributed connected进行重分发。

  4、汇总命令

  #aggregate-address {ip-addrees} {mask} [summary-only] [as-set]

  ip address:要创建的聚合后的地址 mask:聚合后的掩码

  summary-only:只通告聚合路由。 默认是通告聚合路由和具体路由。即只通告汇总后的路由。不加此项,则汇总后的路由和具体路由都通告。

  as-set: 在聚合路由的AS路径属性中包含具体路由列出的所有AS号,即原子聚合属性。默认只包含生成聚合路由的路由器所在的AS号。

  (五)多宿主设计方案

  (六)把BGP重分发到IGP中

  希望我们成都华三的相关分享可以帮助到您!


上一篇:成都华三:ospf配置实例
下一篇:广域网配置之--帧中继
电子标识编号:20181009000069

售前客服

售前客服

电话:028-83252151

传真:028-85259033

咨询热线:15378180513
在线客服