文档库 最新最全的文档下载
当前位置:文档库 › CCIE笔记——BGP协议篇

CCIE笔记——BGP协议篇

Border Gateway Protocol

Who needs BGP

BGP是一种路径矢量路由协议,用于传输自治系统间的路由信息,BGP在启动的时候传播整张路由表,以后只传播网络变化的部分,触发更它采用TCP连接传送信息,端口号为179

在Internet上,BGP需要通告的路由数目极大,由于TCP提供了可靠的传送机制,同时TCP使用滑动窗口机制,使得BGP可以不断地 发送分组,而无需像OSPF或EIGRP那样停止发送并等待确认。

使用BGP一般有如下情况:

1.一个AS允许包穿越它,到达其他的AS

2.一个AS连接多个AS

3.必须对数据流进入和离开AS进行控制

不使用BGP一般有如下情况:

1.AS只有一个出口

2.AS的所有出口均为1个ASP

3.路由性能不高,内存较小,CPU较慢,带宽不大

对于如右图的多ISP连接,需要注意:

1.必须劝说最初供应商通告将他的CIDR块打一个洞,通告一条更

精细的路由

2.必须劝说第二个供应商公布属于不同供应商的地址空间

3.两个供应商必须在用户公布这块地址上愿意紧密合作

4.如果用户地址空间小于/19一些骨干ISP不会接受此路由

注:一般前缀小于/19的地址称为全球路由可达地址,因为骨干ISP通常为了控制骨干级路由表大小,仅接受/19或更

小的前缀。但由于用户的抱怨,此限制逐渐放松

BGP Basic

BGP是路径矢量协议,它使用一个AS号列表,数据包必须通过这些AS才能到达目的,同时对产生的AS-path做一定的策略。

AS-Path对于路由环路非常容易检测到,如果路由器接受到一条含有本地AS号的AS-path,说明出现环路。

BGP没有给出每个AS域内的拓扑结构,因此BGP只能看到AS树,而IGP只能看到AS域内拓扑结构,

下图是一个典型的BGP路由表

route-server>show ip bgp

BGP table version is 4639209, local router ID is 12.0.1.28

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

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

Network Next Hop Metric LocPrf Weight Path

* 3.0.0.0 192.205.31.225 0 7018 701 80 i

* 192.205.31.161 0 7018 701 80 i

*> 192.205.31.33 0 7018 701 80 i

* 192.205.31.97 0 7018 701 80 i

* 4.0.0.0 192.205.31.225 0 7018 1 i

* 192.205.31.161 0 7018 1 i

*> 192.205.31.33 0 7018 1 i

* 192.205.31.97 0 7018 1 i

* 6.0.0.0 192.205.31.226 0 7018 568 721 1455 i

* 192.205.31.225 0 7018 568 721 1455 i

* 192.205.31.161 0 7018 701 6113 568 721 1455 i

*> 192.205.31.34 0 7018 568 721 1455 i

* 192.205.31.33 0 7018 568 721 1455 i

* 192.205.31.97 0 7018 1239 568 721 1455 i

* 9.2.0.0/16 192.205.31.225 0 7018 1 1673 1675 i

* 192.205.31.161 0 7018 701 1673 1675 i

--More--

当某个特殊目的网络有并列的,等开销的路径时,Cisco缺省执行EBGP只选择一条路径,但可以使用maximum-paths

改变并行路径缺省的最大数目,但仅对EBGP有效。

BGP Message Types

BGP具有4种消息类型

1.Open

2.Keepalive

3.Update

4.Notification

Open Message

TCP对话建立以后,两个邻居都要发送一个Open消息,每个邻居都用该消息来标示自己,并规定自己的BGP运行参数 BGP version

它明确了发起者正在运行的BGP版本号(2,3,4),可以通过neighbor version修改,缺省版本号为4。如果版

本号不相同,路由器将自动降低版本号重发Open消息,直到版本一致

AS number

发起会话路由器的AS号,用于确认EBGP或者IBGP会话

Hold time

路由器必须收到一个keepalive或者更新消息之前允许经过的最大秒数。

Holdtime必须是0(在这种情况下,必须是没有发送Keepalive)或者至少3s

Cisco默认的holdtime为180s,如果两个邻居间holdtime不一致,选较短的那个做为两者可接受的时间 BGP router-ID

选取方式和OSPF相同,使用数值最大的loopback口地址,没有loopback则使用物理接口上数值最大的地址 Optional parameters

用于一些可选功能的支持.例如鉴别,多协议支持及路由刷新等

Keepalive Message

如果路由器接受了他在邻居的Open消息中的参数,它就会发送一个应答的Keepalive消息。

默认情况Keepalive间隔 60s,或者是达成一致的保持时间的1/3

Update Message

Update message用来公布可用的路由,撤销的路由或者两者兼顾

Network Layer Reachability Information (NLRI)

用来公布IP地址前缀和前缀长度的字节组,例如<19,198.24.160.0>

Path Attributes

该属性为BGP提供了选择最短路径,检查到路由环路以及决定路由策略的信息

Withdrawn Routes

用来描述已经变成不可达并正从业务中撤销的目的地址字节组(长度和前缀)

注:虽然NLRI字段可以包含多个前缀,但每一个更新消息只描述一条BGP路由(因为路径属性只描述一条路

径,但该路径可能会到达多个目的地)

Notification Message

当检测到差错的时候就会发送Notification消息,通常会导致BGP连接终止

例如使用Notification消息进行BGP版本的协商

The BGP Finite State Machine

IE 描述

1 BGP开始

2 BGP结束

3 BGP传输连接打开

4 BGP传输连接终止

5 BGP传输连接打开失败

6 BGP传输致命差错

7 重试连接计时器超时

8 持续时间终止

9 Keepalive计时器终止

10 收到Open消息

11 收到Keepalive消息

12 收到Update消息

13 收到Notification消息

Idle State

a)BGP通常以Idle State开始(此时拒绝接收所有入连接)。当一个开始事件出现,BGP过程初始化所有BGP资源

打开重试连接(ConnectRetry)计时器,初始化到邻居的TCP连接,接听来自邻居的TCP初始化消息并将它的状态

转到Connect状态.

b)开始事件是由一个操作者配置一个BGP过程,或者重置一个已经存在的过程或者路由器软件重置BGP过程引起

c)一个差错的出现会将BGP过程的状态转为Idle.路由器可能会试图发起另外一个开始事件.为了防止在持续差错条件

下导致的摆动,在第一次转回到空闲状态后,路由器会自动开启重试连接计时器,当计时器终止后,路由器就会放弃重

新开始BGP.重试计时器第一次的时间为60s,下一次为前一次的2倍120s,成指数形式增加

Connect State 此状态下BGP 过程会等到TCP 连接完成以后再决定后续的动作.

1. 如果TCP 连接建立成功,BGP 连接将ConnectRetry 清零,完成初始化并给邻居发送一个Open 消息,转移到Open

状态

2. 如果TCP 连接建立失败,BGP 继续监听由邻居发起的连接,重置ConnectRetry 计时器并转移到Active 状态

3. 如果在连接状态下,ConnectRetry 超时,计时器将重新开始,并再一次试图与邻居建立TCP 连接,BGP 保持

Connect 状态,此时如果有任何其他输入事件,转入Idle 状态

Active State 在此状态,BGP 过程试图与邻居建立一个TCP 连接

1. 如果连接成功,BGP 过程将ConnectRetry 计时器清零,完成初始化,给邻居发送一个Open 消息并转移到发送Open

消息状态,Hold 计时器设置为4mins

2. 如果在激活状态,ConnectRelay 计时器超时,将回到ConnectState 并且重置ConnectRelay 计时器.也发起一个

到对等的TCP 连接并继续监听来自对等体的连接.

3. 如果邻居试图与一个未知IP 建立TCP 会话,同时ConnectRelay 计时器重置,连接被拒绝并保持在Active 状态

4. 任何一个事件(除开始事件)都回导致状态转向idle

Open send State

在此状态下,已经发送了Open 消息,BGP 等待邻居发来的Open 消息,

1. 当收到一个Open 消息,如果发现差错,将给邻居发一个Notification 消息并转入Idle 状态

2. 如果收到的Open 消息没有差错,将给邻居发送一个Keepalive 消息并将Keepalive 计时器清零,此时协商一

个较短的holdtime,如果为0,则没有启动Hold 和keepalive 计时器,根据AS 号选择IBGP 或者EBGP,同时将状态转移到OpenConfirm 状态

3. 如果收到一个TCP 断开消息,本地断开BGP 连接,重置ConnectRetry 计时器,并转入Active 状态

Open Confirm State

此状态下BGP 会等待一个Keepalive 消息或者Notification 消息

1. 如果收到一个Keepalive 消息,转移到Establish 状态

2. 如果收到一个Notification 消息,转入Idle 状态,并断开TCP 连接

3. 如果Hold 计时器超时,检测到一个差错或出现stop 事件,BGP 将给邻居发送一个Notification 并断开连接

转入Idle 状态

Establish State

此状态下,BGP 对等体间的连接已经完全建立,可以交换Update Keepalive 和Notification 消息,如果收到Notification 自动转入Idle,并中断连接

Path-Attributers

BGP 路径属性分为4类

1. Well-known mandatory

公认必遵 – 所有的BGP 路由器必须识别

(Update 消息必须包含该属性)

2. Well-known discretionary 公认可遵 – 所有的BGP 路由器都能识别,但是不是一定需要

(Update 消息可以不包含该属性或者该属性任选)

3. Optional transitive 可选传递 – 不是所有的BGP 路由器都能识别,但所有BGP 路由器都能传递它

(此属性即使BGP 路由器不接受也可以传递)

4. Optional nontransitive 可选非传递– 不是所有的BGP 路由器都能识别,不能识别BGP 路由器丢弃它

(此属性如果BGP 路由器不接受则立即丢弃此消息,不再传递)

ORIGIN

属于公认必选属性,明确了路由更新的来源,用于判断路由可信 度,当BGP 有多条路由来源时,路由器会将ORIGIN 做为路由决 策的参考

来源有如下几类:

IGP---从AS 内部学到,ORIGIN 为0 EGP---NLRI 从EGP 学到,ORIGIN 为1

Incomplete---NLRI 通过其他手段获得,ORIGIN 为3 一般来说具有较低ORIGIN 值得前缀被优先选取, IGP>BGP>重分布

例如通过重分布进入BGP,ORIGIN 属性为3,通过Network 命令注入其ORIGIN 为0

TYPE

Attribute

Class

1 ORIGIN

Well-known mandatory 2 AS_PATH Well-known mandatory 3 NEXT_HOP Well-known mandatory 4

LOCAL_PREF

Well-known discretionary

5 ATOMIC_AGGREGATE Well-known discretionary

6 AGGREGATOR Optional transitive

7 COMMUNITY Optional transitive

8 MULTI_EXIT_DISC (MED) Optional nontransitive 9 ORIGINATOR_ID Optional nontransitive 10 CLUSTER_LIST Optional nontransitive

AS_PATH

描述一个路由传递过程中经过那一些AS(不算自己,从离自己最近的AS开始,以目的网段的AS结束),为了避免 AS环路,如果从外部收到一条包含自己AS的路由,就说明有环路,此时BGP将丢弃该路由

通常一条AS_PATH含有多个同一AS号,用于加长AS_PATH,提供策略选路,如下图

AS500为主要流量提供商,

通过修改AS100到AS300通告的AS_PATh,让流量走AS500,

此方法亦保证AS300做为备份可用

Next_Hop

该属性描述了到公布目的地址的路径的下一跳路由器的IP地址

1.如果正在进行路由通告的路由器和接收的路由器在不同

的AS中,Next_Hop为正在宣告的路由器接口的ip

2.如果正在宣告的路由器和接收的路由器在同一个AS内,并且更新消息中NLRI目的地也在同一个AS中,则next_hop为一宣告的路由的邻居的ip

3.如果正在宣告的路由器和接收的路由器是内部对等体,并且更新消息的NLRI指向不同AS,则Next_hop 为学习到路由的外部对等实体的ip

Local_Pref

仅用在本地AS,不会传到其他AS,具有较高Local_pref的路由将被优先考虑,默认值100

如右图,优先考虑ISP1的路由

Multi_Exit_Disc(MED)

Local_Pref仅影响离开AS的业务量,而MED用于影响流入AS的业务量,它允许一个AS将其首选入口通知给另一个 AS,具有最低MED值的路由作为首选

Atomic_Aggregate and Aggregator

BGP支持向另一个BGP路由器传递重叠的路由,BGP有如下重叠处理选项

1.同时公布精细和初略的路由

2.只公布精细路由

3.之公布路由中没有重叠的部分

4.聚合两条路由并公布聚合后的路由

5.两者都不公布

如右图即为在进行聚合时导致了路由信息丢失

Atomic_Aggregate属性即是用来警告下游路由器聚合时

产生路径信息丢失,可设置附加属性Aggregate来通告汇

聚点,Cisco采用BGP-RID来作为Aggregator地址,如下

Weight

Cisco专有,对于离开AS的报文,从多条路径中选择哪一条。它是不

传递的。缺省下从对等体学到的所有路由器的权重值是0,由本地路

由器产生的所有路由的权重值是32768

选路时优先选用权值最高的路径

Comunity

使可以向一组源路由使用相同的策略,即一个目的地作为一些目的地团体中的一个成员,这些目的地共享一个或多 个共同特性。它有4个字节 – 前面两个字节的AS号,后面两个字节的管理上定义表示符,而Cisco正好反过来,用ip bgpcommuity new-format改过来

当对团体路由进行聚合时,聚合路由继承了所有路由的全部团体属性

NO_EXPORT的团体属性,携带该属性的路由允许在邻居AS内公布但不允许邻居AS把路由公布其他AS

NONE属性删除现存的团体属性

NO_ADVERTISE属性指不在IBGP邻居间传递带有该属性的路由

DELETE属性用于只删除匹配特定团体列表的属性

ORIGINATOR_ID

由路由反射器(RR)使用,它是有路由发起者产生的一个32比特的值,该值是本地AS里路由发起者的RID,如果路由器发起者从该属性值中看到了自己的RID,就说明有环路,该路由忽略

Cluster_LIST

由路由反射器使用,它是路由经过反射器簇ID的一个序号。如果路由反射器在该属性值中发现自己的本地簇ID,就说明有环路,忽略掉。如果一个簇里不止一个RR,要在进程下用bgp cluster-id手工指定簇ID,因为默认RR将自己的RID当成cluster-id

AS_SET

AS_PATH有4种类型

1.AS_SEQUENCE ---路径上AS号是有序的

2.AS_SET ---路径上AS号是无规则的

3.AS_CONFED_SEQUENCE

4.AS_CONFED_SET ---用于联盟的有规则和无规则AS号序列(亦称为子有序和子无序PATH)

由于聚合时AS_PATH中数据丢失,导致产生环路的潜在因素增加,因此加入AS_SET字段,通告汇聚时包含的AS号

AS_PATH替代了ATOMIC_AGGREGATE的功能, 但也有其缺点:如聚合的网络出现故障,AS_SET的改变将通告到

聚合点以外

BGP Dscision Process

BGP路由信息库(RIB)包括

Adj-RIBs-In: 储存未经处理的路由信息,来自对等接收到的更新消息,所包含的路由是可用的

Loc-RIB: 包含的路由是运行BGP的路由器通过对Adj-RIBs-In中的路由使用他的本地路由策略而选择的路由

Adj-RIBs-Out:包含运行BGP的路由器向其对等公布的路由

3个数据库间的处理方法如下

1.为每一条可用路由计算优先级,并对BGP update消息中包含的路由信息变更作出处理

2.将最优路由放入Loc-RIB

3.将适合的路由放入Adj-RIBs-out(调用仅在上一步完成后)

BGP路径选择顺序:

1,Weight---权重(越大越优先)

2,Local_Pref---本地优先(越大越优先)

3,所传递路由的本地起源优先,即下一跳是0.0.0.0(在BGP表中,当前路由器通告的路由的下一跳为0.0.0.0)

4,AS-Path(越短越优先)

5,起源(优先:IGP > EGP > Incomplete)

6,MED(越小越优先)

7,首选EBGP的路由,在联盟EBGP和IBGP中首选联盟EBGP路由

8,BGP优先选择到BGP下一跳的IGP度量最低的路径

9,如果有多条来自相同相邻AS的路由并通过Maximum-paths使多条路径可用,则将所有开销相同的路由加入Loc-RIB

10,B GP优先选择最老的路径,降低滚翻的影响

11,B GP邻居的RID(越小越优先)

12,如果多条路径始发路由器ID或路由器ID相同,那么优选Cluster-List最短的路径

13,选择邻居ip地址最小的路由

14,

Route Dampening

路由抑制可以阻止公布不稳定的路由,它为每条路由分配一个动态的度量数字用来反映稳定程度,当一条路由出现摆动,就给他分配一个惩罚值,摆动得越多,惩罚值越大。当一段时间不摆动,惩罚值降低,在一个半衰期后,降到原来的一半。如果惩罚值超过抑制上限,该路由就被抑制,只有当一个半衰期后惩罚值降低到重新使用界限时,才重新使用。

缺省下, 惩罚值 – 每次摆动1000

抑制界限 – 2000

重新使用界限 – 750

半衰期 – 15分钟

最大抑制时间 – 60分钟,或者半衰期的4倍

IBGP and IGP Synchronization

在某些情况下将IGBP 当IGP 使用,但是每个IBGP 路由器必须与其它每一个IBGP 路由器建立对等,即必须保证AS 内IBGP 全互连,

全互连可以防止AS 内产生BGP 环路,同时保证BGP 路由上的所有路由器都知道如何转发数据包到目的地

IBGP 和IGP 同步规则 一条从IBGP 邻居学习到的路由在进入IGP 路由表或者公布给一个BGP 对端之前,通过IGP 必须知道该路由. 同步可以防止没有足够信息的IGP 造成路由黑洞.但也会带来很多缺陷,为了使IBGP 工作正常,可以采用2种方法:

1. 将外部路由重分发到IGP 中从而保证IGP 和BGP 同步,但对于IGP 路由器一般无法承受巨大的internet 路由条

目,在几个大型的中断事故中,多数是BGP 无意中被分发到了OSPF 或者IS-IS 中

2. IBGP 为逻辑上全网状连接,且关闭同步功能,所有路由器通过BGP 知道外部路由,且不用通知IGP 就能将路由加入

到路由表中,但如果一个AS 中有多个IBGP 路由器,一个路由器将于其他每个路由器建立对等,十分耗时,故常采用联盟或者路由反射器来控制IBGP 逻辑上的全互连.

同步是一个较老的BGP 特性,在新版的IOS 中,同步默认被关闭 下图为关闭同步前后的区别,前者为同步打开,后者为同步关闭

Seattle#show ip bgp

BGP table version is 7, local router ID is 206.25.193.1 Status codes: s suppressed, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete

Network Next Hop Metric LocPrf Weight Path *> 192.168.1.0 0.0.0.0 0 32768 i * i 192.168.1.1 0 100 0 i *>i192.168.2.0 192.168.1.1 0 100 0 i *>i206.25.161.0 192.168.1.1 0 100 0 i *> 206.25.193.0 0.0.0.0 0 32768 i

Seattle#show ip route

Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP

i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default

Gateway of last resort is not set

C 206.25.193.0 is directly connected, Loopback0 C 192.168.1.0 is directly connected, Serial0 Seattle#

关闭同步以后

Seattle#show ip bgp

BGP table version is 11, local router ID is 206.25.193.1

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

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

Network Next Hop Metric LocPrf Weight

Path

*> 192.168.1.0 0.0.0.0 0 32768 i * i 192.168.1.1 0 100 0 i *>i192.168.2.0 192.168.1.1 0 100 0 i * i 192.168.2.1 0 100 0 i *>i206.25.129.0 192.168.2.1 0 100 0 i *>i206.25.161.0 192.168.1.1 0 100 0 i *> 206.25.193.0 0.0.0.0 0 32768 i Seattle#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2,

E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is not set C 206.25.193.0 is directly connected, Loopback0 B 206.25.129.0 [200/0] via 192.168.2.1, 00:07:34 C 192.168.1.0 is directly connected, Serial0 B 192.168.2.0 [200/0] via 192.168.1.1, 00:07:42 B 206.25.161.0 [200/0] via 192.168.1.1, 00:07:43 Seattle#ping 206.25.129.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 206.25.129.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 4/5/8 ms Seattle#

Managing Large-Scale BGP Peering

在一个较大规模的AS中试图生成全互连的IBGP对等关系是一个规模庞大的工作,同时对于BGP对等关系的管理也十分复杂。

BGP设计了如下4种方式对对等关系进行管理

Peer groups

在大型互联网络中,一个路由器的策略会应用到多个对等关系,在Cisco路由器中可以使用一个名字和一系列的路由策略

来定义一个对等组(Peer Groups),任何对等策略对整个group生效,对等组提高了路由器性能,只需访问一次策略数据库,

生成一个Update消息,并将副本发给所有的对等体即可。

Communities

相对于PeerGroups是对一组路由器使用策略,而团体(Communities)是对一组路由是用策略,团体可设置成为一个公用的

值或者管理员定义的特有团体,一条路由可以属于多个团体,路由聚合可以继承所有路由的全部团体属性 Route reflectors

在大型的AS中,全互连带来极大的工作量,通过路由反射器(RR)可以建立一种C/S结构,如一个含有N个路由器的AS内,

全互连将使用对等会话数目为(N-2)N/2,如果选取一个RR,则对等会话数目将降为N-1。对一个C/S结构称其为一个

RR-Cluster。RR公布路由的规则:

1,如果路由是从非客户的IBGP对等学习到的,只将它反射给客户

2,如果路由是从客户处学习到的,将它反射给除了发起该路由的客户外所有的客户以及非客户

3,如果路由是从EBGP邻居学来的,将它反射给所有的客户和非客户

将一个路由器配置成路由反射器(RR),用neigbhor route-reflect-client把自己配成反射器,由该命令所定义的IBGP邻

居路由器当成客户机,这些客户机只与RR建立对等关系。RR不能改动它从客户处收到的路由的属性。在一个AS内可以

做RR冗余,因为客户并不知道自己是客户,所有一个RR可以是另一个路由反射器的客户。只需要RR支持路由反射,客

户不需要支持

RR使用了2个BGP路径属性:

ORIGINATOR_ID

由路由反射器(RR)使用,它是有路由发起者产生的一个32比特的值,该值是本地

AS里路由发起者的RID,如果路由器发起者从该属性值中看到了自己的RID,就

说明有环路,该路由忽略

Cluster_LIST

由路由反射器使用,它是路由经过反射器簇ID的一个序号。如果路由反射器在该

属性值中发现自己的本地簇ID,就说明有环路,忽略掉。如果一个簇里不止一个

RR,要在进程下用bgp cluster-id手工指定簇ID,因为默认RR将自己的RID当成

cluster-id

Confederations

联盟(confederations)是一组分成子自治系统组的AS如右图

1.每一个联盟分配一个联盟ID,对于外端而言,此联盟ID代表的是

整个联盟的AS号.联盟其实质是对自治系统的再次细分.

2.AS_PATH中加入了AS_CONFED_SEQUENCE和AS_CONFED_SET用法

和AS_SEQUENCE及AS_SET完全相同,

3.在联盟环境下,所有路由器必须支持联盟

4.用预留AS(64512~65535)作为联盟中的AS编号是一中通用做法

5.选路优先级:联盟的外部EBGP〉AS成员的EBGP〉IBGP

6.联盟相对于标准的AS,Next_hops MED可以不加修改的公布给联

盟中的其他AS成员的EBGP对端,而且可以发送Local_Pref属

7.大型系统中,联盟和RR同时使用可以更好的控制IBGP对等关系

BGP Message Formats

BGP消息信头包含了标记,长度和类型3个字段

Code Type

1 Open

2 Update

3 Notification

4 Keepalive

Open Message Update Message

Notification Message

Error

Code

Error

Error

Subcode

Subcode Detail

1 连接不同步

2 错误的消息长度

1Message Header Error

3 错误的消息格式

1 不支持的版本号

2 错误的对等AS(peer AS)

3 错误的BGP标识符(BGP-RID)

4 错误的可选字段

5 鉴别失败(Authentication failure)

2Open Message Error

6 不可接受的Holdtime

1 畸形的属性列表

2 不可识别的公认(well-known)

属性

3 丢失的公认属性

4 属性标志错误

5 属性长度错误

6 非法的ORIGIN属性

7 AS路由环路

8 非法的下一跳属性

9 可选属性错误

10 非法的网段(invalid network)

3Update Message Error

11 畸形的AS_Path

4Hold计时器超时0 —

5有限状态机错误0 —

6终止 0 —

Basic BGP Configuration

Case Study: Peering BGP Routers

Vail

router bgp 100

neighbor 192.168.1.225 remote-as 200

Taos

router bgp 200

neighbor 192.168.1.226 remote-as 100

Vail#show ip bgp neighbors

BGP neighbor is 192.168.1.225, remote AS 200, external link

Index 1, Offset 0, Mask 0x2

BGP version 4, remote router ID 192.168.1.225

BGP state = Established, table version = 1, up for 19:32:02

Last read 00:00:03, hold time is 180, keepalive interval is 60 seconds

Minimum time between advertisement runs is 30 seconds

Received 1175 messages, 0 notifications, 0 in queue

Sent 1175 messages, 0 notifications, 0 in queue

Prefix advertised 0, suppressed 0, withdrawn 0

Connections established 1; dropped 0

Last reset never

0 accepted prefixes consume 0 bytes

0 history paths consume 0 bytes

Connection state is ESTAB, I/O status: 1, unread input bytes: 0

Local host: 192.168.1.226, Local port: 11025

Foreign host: 192.168.1.225, Foreign port: 179

Enqueued packets for retransmit: 0, input: 0 mis-ordered: 0 (0 bytes)

Event Timers (current time is 0x45FDF2C):

Timer Starts Wakeups Next

Retrans 1176 0 0x0

TimeWait 0 0 0x0

AckHold 1175 885 0x0

SendWnd 0 0 0x0

KeepAlive 0 0 0x0

GiveUp 0 0 0x0

PmtuAger 0 0 0x0

DeadWait 0 0 0x0

iss: 4072889888 snduna: 4072912224 sndnxt: 4072912224 sndwnd: 16004

irs: 4121607729 rcvnxt: 4121630065 rcvwnd: 16004 delrcvwnd: 380

SRTT: 300 ms, RTTO: 607 ms, RTV: 3 ms, KRTT: 0 ms

minRTT: 4 ms, maxRTT: 340 ms, ACK hold: 200 ms

Flags: higher precedence, nagle

Datagrams (max data segment is 1460 bytes):

Rcvd: 2220 (out of order: 0), with data: 1175, total data bytes: 22335

Sent: 2077 (retransmit: 0), with data: 1175, total data bytes: 22335

Vail#

Vail的配置

router bgp 100

bgp router-id 1.1.3.2 //routerid更改需要重启BGP进程 clear ip bgp

neighbor 192.168.1.222 remote-as 100

neighbor 192.168.1.225 remote-as 200

Aspen(config)#router bgp 100

Aspen(config-router)#neighbor 192.168.1.221 remote-as 100

Aspen(config-router)#^Z

Aspen#

18:24:13: %SYS-5-CONFIG_I: Configured from console by console

Aspen# //debug bgp events

18:24:33: BGP: 192.168.1.221 went from Idle to Active

18:24:41: BGP: 192.168.1.221 went from Active to OpenSent

18:24:42: BGP: 192.168.1.221 went from OpenSent to OpenConfirm

18:24:42: BGP: 192.168.1.221 went from OpenConfirm to Established

18:24:43: BGP: 192.168.1.221 computing updates, neighbor version 0, table version

n 1, starting at 0.0.0.0

18:24:43: BGP: 192.168.1.221 update run completed, ran for 0ms, neighbor version

0, start version 1, throttled to 1, check point net 0.0.0.0

Case Study: BGP and IGP redistributions

通过在BGP路由进程模式下 redistribute eigrp 300 可将IGP注入到BGP中,其度量值为以前路由协议的度量值,可以通过Default-metric 修改,重分发到BGP后有部分管理员不想公开的IGP路由,需使用路由过滤器过滤掉。

另一方面,AS内的非运行BGP的路由可能需要一定的外部路由信息,如左图中的

AngelFire需要从Taos知道AS300 AS100的路由信息,则需要在Taos上做重分发

redistribute bgp 200 metric 10000 100 255 1 1500

不过一般禁止这样使用,如果Taos是一个internet上的BGP路由器,重分发后极大

数目的路由将会进入IGP,导致IGP崩溃

此种重分发一般只用在具有有限前缀的企业网络

此时Taos可以加入一条静态路由

ip route 192.168.250.0 255.255.255.0 Serial0

此时192.168.1.212/30将不会通告给AngelFire,同时192.168.250.0的摆动仅会影

响到Taos,不会影响到Angelfire

Case Study: BGP default-route

对于上图的AS200,仅有一个出口,则可以在出口上做默认路由

ip route 0.0.0.0 0.0.0.0 Serial0

也可以配置成BGP通告的默认路由,此时只需ip route 0.0.0.0 0.0.0.0 Null0

同时也可以使用neighbor 192.168.1.225 default-originate此时类似于OSPF的default-information-originate always 此时不管路由器实际上有没有缺省路由,都将公布一条默认路由。如果只想发布默认路由,通过distribute-list过滤 neighbor 192.168.1.225 distribute-list 1 out

!

access-list 1 permit 0.0.0.0

access-list 1 deny any

Case Study: IBGP without an IGP

如图,通过配置AS100的3台路由器的neighbor使其全互连

此时必须关闭同步功能,如果同步功能打开,IBGP路由无法加入路由表

注:关闭工作状态的BGP进程的同步后,需要重新启动BGP进程

在Vail和Telluride上可以使用 neighbor next-hop-self

此后,在公布学到的EBGP路由时将会以自己的地址做为下一跳

使用回环口做BGP进程接口

neighbor 1.1.1.1 update-source loopback 0

Case Study: EBGP-Multi hops

由于EBGP 需要直接连接,且数据报文TTL 值为1,update-source 为loopback 时,需要经过多跳,所以可以定义:

Neighbor 1.1.1.1 remote-as 100 Neighbor 1.1.1.1 update-source loopback 0 Neighbor 1.1.1.1 ebgp-multihop 2 Case Study: Aggregate Routes

一种方法是建立一条静态的到Null0的路由,让BGP 通告出去,

另一种方法是采用Aggregate-address 192.168.192.0 255.255.248.0

Summary-only :用于只公布聚会和的路由,不公布具体地址,并且在BGP 路由表中用S 表示

如上图, AS100->AS200需要通告精细路由和汇聚路由,200-〉300只通告汇聚地址。配置如下:

Stowe

router eigrp 100 network 192.168.199.0 ! router bgp 100 aggregate-address 192.168.192.0 255.255.248.0 redistribute eigrp 100 neighbor 192.168.1.253 remote-as 200 neighbor 192.168.1.253 send-community neighbor 192.168.1.253 route-map COMMUNITY out ! ip classless ! access-list 101 permit ip host 192.168.192.0 host 255.255.248.0 ! route-map COMMUNITY permit 10 match ip address 101 set community none ! route-map COMMUNITY permit 20 set community no-export mammoth //采用prefix 来匹配 router bgp 100 aggregate-address 192.168.192.0 255.255.248.0 redistribute eigrp 100 neighbor 192.168.1.246 remote-as 200 neighbor 192.168.1.246 send-communit neighbor 192.168.1.246 route-map COMMUNITY out ! ip classless ip route 192.168.255.251 255.255.255.255 192.168.1.205 ! ip prefix-list AGGREGATE seq 5 permit 192.168.192.0/21 //seq 类似于basic 的行号 ! route-map COMMUNITY permit 10 match ip address prefix-list AGGREGATE set community none ! route-map COMMUNITY permit 20 set community no-export suppress-map: 利用suppress-map 也可以抑制选中的前缀 例如需要在Stowe 链路上公布192.168.192~194.0 在mammoth 上公布196~197.0不公布195.0 199.0

Stowe

router bgp 100

aggregate-address 192.168.192.0 255.255.248.0

suppress-map VERMONT redistribute eigrp 100 neighbor 192.168.1.253 remote-as 200 neighbor 192.168.1.253 send-community neighbor 192.168.1.253 route-map COMMUNITY out ! access-list 1 permit 192.168.195.0 0.0.0.255 access-list 1 permit 192.168.196.0 0.0.3.255 ! route-map VERMONT permit 10 match ip address 1

Mammoth router bgp 100 aggregate-address 192.168.192.0 255.255.248.0 suppress-map CALIFORNIA redistribute eigrp 100 neighbor 192.168.1.246 remote-as 200 neighbor 192.168.1.246 send-community neighbor 192.168.1.246 route-map COMMUNITY out ! ip prefix-list SUPPRESSEDROUTES seq 5 permit 192.168.192.0/22 le 24 ip prefix-list SUPPRESSEDROUTES seq 10 permit 192.168.199.0/24 !

route-map CALIFORNIA permit 10 match ip address prefix-list SUPPRESSEDROUTES

attribute-map:用于改变聚合路由属性

aggregate-address 192.168.192.0 255.255.248.0 attribute-map ORIGIN

!

route-map ORIGIN permit 10

set origin incomplete

AS-set: 使用As-set属性,防止汇聚时导致的AS_path丢失

aggregate-address 192.168.192.0 255.255.248.0 as-set

Advertise-map:在公布带有as-set的聚合路由时,不希望该聚合路由继承所有被聚合路由的所有属性

Sugarbush:

router bgp 200

aggregate-address 192.168.192.0 255.255.248.0 as-set

summary-only advertise-map ALLOW_ROUTE

neighbor 192.168.1.1 remote-as 500

neighbor 192.168.1.250 remote-as 300

neighbor 192.168.1.254 remote-as 100

!

access-list 1 deny 192.168.197.0

access-list 1 permit any

!

route-map ALLOW_ROUTE permit 10

match ip address 1

Managing BGP Connections

service password-encryption //全局模式下使用此命令将配置文件中的口令加密

!

router bgp 100

redistribute eigrp 100

neighbor 192.168.1.253 remote-as 200

neighbor 192.168.1.253 description ****56K to Sugarbush, Ckt. ID 54.DWDA.987654

neighbor 192.168.1.253 password 7 14191D3F5831782574

密码仅启用在链路上,不同邻居可以设置不同的密码,同时Ip地址可以改为对等组的名字。加密方式默认为MD5

Neighbor version: 修改通告出去的BGP版本号

Neighbor advertisement-interval:修改update间隔时间

Bgp bestpath as-path ignore :bgp选路时忽略as-path长度

maximum-prefix 300 90 warning-only 最大允许邻居通告的前缀数量,默认超过75%警告,可以修改这个 Neighbor

比例。如果超过max-prefix ,中断邻居关系

Clear ip bgp ip 重置某个邻居间的BGP连接

Neighbor shutdown //配置中期,暂时中断到某个路由器的连接

Timers bgp 修改keepalive时间和holdtime

Routing Policies

Resetting BGP connections

运行BGP的路由器,当如下配置出现变化后必须重置BGP连接

1.补充或者改变与BGP有关的访问列表

2.改变与BGP有关的权值

3.改变与BGP有关的分配列表

4.改变与BGP有关的计时器的相关规定

5.改变BGP的管理距离

6.改变与BGP有关的route-map

可以使用软重置连接,但软重置连接将会带来较大的内存消耗,需要留意内存使用情况

首先需要对邻居配置 neighbor 192.168.1.253 soft-reconfiguration inbound

Clear ip bgp 192.168.1.253 soft out|in

distribute-list 过滤路由

neighbor 192.168.1.1 distribute-list 1 out

!

Access-list 1 deny 192.168.3.0

Access-list 1 permit any

As-path过滤路由

Neighbor distribute-list可以对NLRI处理,as_path过滤则是对AS的处理。

Neighbor 1.1.1.1 filter-list 1 out

!

Ip as-path access-list 1 permit ^$

AS-PATH过滤采用正则表达式,正则表达式解释如下:

元字符特殊字符匹配内容

. 任何单一字符,包括空格

[] 在方括号中罗列的任何字符

[^] 除了在方括号中所罗列字符外的任何字符(^必须放在字符列表之前)

- (连字符)在由连字符所分配的两个字符之间的任意字符

? 字符或模式出现0次或1次

* 字符或模式出现0次或多次

+ 字符或模式出现1次或多次

^ 一行的开始

$ 一行的结束

| 由元字符特殊字符分隔的字之一

_ (下划线)一个逗号,行的开始,行的结束或空格

1.匹配行开始和结束:

Ip as-path access-list 20 permit 850

将匹配 (850) (850,23,33) (33,27,7850,33)这样的路经

如果仅匹配850,则可以使用ip as-path access-list 20 permit ^850$

仅匹配一个空的AS_PATH ip as-path access-list 20 permit ^$ 2.匹配字符集和

Ip as-path access-list 22 permit ^85[0123459]$

将匹配含有850~855 and 859的AS_PATH

3.否定:匹配出字符集和外的其他任何字符

Ip as-path access-list 23 permit ^85[ ^0-5]$

将匹配含有856~859的AS_PATH

4.通配符

Ip as-path access-list 24 permit ^85.

将匹配含有850~859的AS_PATH 由于.支持空格符,所以也匹配

85

5.替代,即或操作

Ip as-path access-list 24 permit ^(851|852)$

将匹配含有851或者852的AS_PATH 6.选择字符,匹配一个可能存在或者不存在的字符

Ip as-path access-list 24 permit ^(850)?$

将匹配单一AS号850或者空列表,如果表达式为850? 匹配85 or 850

7.重复,匹配多个字符

Ip as-path access-list 24 permit ^(850)*$

将匹配重复多次的AS号850或者空列表,匹配(850),(850,850,850),(850,850,888)

Ip as-path access-list 24 permit ^(850)*$

将匹配至少包含一个AS号为850

8.分界线,描述多个字

Ip as-path access-list 24 permit ^5610_148_3_2$

只有as_path(5610_148_3_2)才能被匹配

Ip as-path access-list 24 permit -5610_148_3_2$

包含as_path(5610_148_3_2)都能被匹配

Ip as-path access-list 24 permit ^(550)+_[12|34]?_1805_.* 即匹配as_path在多个550后,选择12或者34 接下来必须要有1805

router bgp 200

neighbor 10.50.250.1 remote-as 50

neighbor 10.50.250.1 ebgp-multihop 2

neighbor 10.50.250.1 update-source Loopback0

neighbor 10.50.250.1 filter-list 2 in

neighbor 10.100.83.1 remote-as 100

neighbor 10.100.83.1 ebgp-multihop 2

neighbor 10.100.83.1 update-source Loopback0

neighbor 10.100.83.1 filter-list 1 out

neighbor 10.125.25.1 remote-as 125

neighbor 10.125.25.1 ebgp-multihop 2

neighbor 10.125.25.1 update-source Loopback0

neighbor 172.30.255.150 remote-as 30

neighbor 172.30.255.150 ebgp-multihop 2

neighbor 172.30.255.150 update-source Loopback0

no auto-summary

!

ip as-path access-list 1 deny ^50$

ip as-path access-list 1 permit .*

ip as-path access-list 2 permit ^50$

此配置通过对as-path的过滤将as125做为到as50的转接AS

Route-map过滤路由

router bgp 30

redistribute isis level-2

neighbor 10.100.83.1 remote-as 100

neighbor 10.100.83.1 ebgp-multihop 2 neighbor 10.100.83.1 update-source Loopback0 neighbor 10.100.83.1 route-map Innsbruck out no auto-summary

! access-list 1 permit 192.168.100.0

access-list 1 permit 10.30.0.0 access-list 1 permit 192.168.2.0

access-list 1 permit 172.29.1.0

access-list 1 permit 172.31.0.0 access-list 1 permit 172.16.0.0

!

route-map Innsbruck permit 10 match ip address 1

Administrative Weights

CISCO通过其专有的权重属性控制选路。配置如下

neighbor 10.100.83.1 remote-as 100

neighbor 10.100.83.1 weight 50000

neighbor 10.200.60.1 remote-as 200

neighbor 10.200.60.1 filter-list 3 weight 20000

也可以使用route-map设置权重

neighbor 10.200.60.1 route-map Cervinia in

!

ip as-path access-list 1 permit ^$

ip as-path access-list 2 permit _75$

ip as-path access-list 3 permit _50$

!

route-map Cervinia permit 10

match as-path 2

set weight 60000

!

route-map Cervinia permit 20

match as-path 3

set weight 40000

通过route-map设置weight时,只有AS_PATH与之匹配,

route-map优先级高于带filter的neighbor weight高于neighbor的weight

Administrative Distance and backdoor route

Distance bgp 20 95 200 //修改EBGP IBGP local BGP的AD从而对选路产生影响

在两个AS间可以存在一条单独的链路交换相互间的数据量,但并不通告给其他AS

此时对于这条链路两端的路由器加入 network link-ip backdoor即可

Local_Pref Attribute and MED

使用ip default local-preference修改默认值,并可以通过route-map set local_preference

使用default-metric 修改默认MED值。在route-map使用set metic 修改MED值

在路由图中用set metric-type internal将一个BGP路由的MED设置成与到同一目的地的IGP路由的相同的度量。

在接收的一方用bgp always-compare-med来打破MED属性只能用于两个AS之间

Prepend as-path

通过附加as-path,通过AS_PATH的长度控制选路.

ip as-path access-list 1 permit ^$

!

access-list 3 permit 192.168.100.0

access-list 3 permit 10.30.0.0

access-list 3 permit 172.29.1.0

!

route-map PATH permit 10

match ip address 3

set as-path prepend 30

Route Tagging

在BGP进程下用table-map kaka启动路由标记列表,

配上路由图的 set as-path tag(用于IGP重分布进BGP的路由恢复AS_PATH信息)

set automatic-tag(用于BGP重分布进IGP时恢复AS_PATH和ORIGIN信息)

Route Dampening

bgp dampening half-life reuse suppress max-suppress 被抑制的BGP路由表里标记d 和h

show ip bgp flap-statistics | dampened-paths可以查看被抑制的路由

可以使用 clear ip bgp flap-statistics|dampened-paths 清楚被抑制的路由条目

例如 clear ip bgp flap-statistics regexp _30_来清除所有As_path含有AS 30的被抑制的路由条目

Large-Scale BGP

BGP Peer Groups

通过使用对等体组简化邻居配置,并对一组路由器使用共同策略。

neighbor CLIENTS peer-group

neighbor CLIENTS ebgp-multihop 2

neighbor CLIENTS update-source Loopback2

neighbor CLIENTS filter-list 2 in

neighbor CLIENTS filter-list 1 out

neighbor 10.1.255.2 remote-as 200

neighbor 10.1.255.2 peer-group CLIENTS

no auto-summary

!

ip as-path access-list 1 permit ^$

ip as-path access-list 2 permit ^[2-6]00$

BGP Communities

团体可以对一组路由使用相同的策略

1.通过route-map识别已经设置了团体属性的路由

2.通过set community设置团体属性

3.使用neighbor send-community来明确该属性将要发送给哪个路由器

NO_EXPORT 接收到的携带该值的路由不能公布给EBGP或者IBGP的对等实体,不能再联盟范围以外公布

NO_ADVERTISE 接收到的携带该值的路由不能公布给EBGP或者IBGP的对等实体

LOCAL_AS 不能将携带该值的路由公布给EBGP对等实体,以及在联盟内的其他AS

NONE 属性删除现存的团体属性

neighbor 10.1.255.8 send-community

neighbor 10.1.255.8 route-map AUSTRIA out

no auto-summary

!

access-list 1 permit 10.2.2.0

access-list 2 permit 10.3.3.0

!

route-map AUSTRIA permit 10

match ip address 1

set community no-export

!

route-map AUSTRIA permit 20

match ip address 2

set community none

自定义团体:

自定义团体号格式: AA:NN AA为AS号 NN为自定义编号,CISCO刚好相反,使用ip bgp-community new-format更改

Ip bgp-community newformat access-list 1 permit 10.1.1.0 access-list 2 permit 10.1.2.0 !

route-map UTAH permit 10 match ip address 1

set community 200: 5

!

route-map UTAH permit 20 match ip address 2

set community 200:10 !

ip community-list 1 permit .*:5

ip community-list 2 permit .*:10 !

route-map COMM_PREF permit 10 match community 1

set local-preference 150

!

route-map COMM_PREF permit 20 match community 2

set local-preference 200

ip community-list 1 permit 5 10表示与带有团体5,或10,或两个都有的标记的路由,

如果后面加上关键字exact-match表示只带有5,10或两个都有的表示的路由,还带有其他团体标记的路由不匹配 Private-AS

为了防止AS不够用,采用了私有AS号的设计,只需在出口路由器上将私有AS从AS_PATH

删除即可

neighbor 10.2.255.1 remove-private-AS

BGP Confederations

BGP联盟可以使管理者将大型的AS分割成小型的AS,而这些小型AS对外部是隐藏的

联盟属性如下:

1.在联盟内部保留联盟外部的路由的NEXT_HOP属性

2.公布给联盟的路由的MED属性在整个联盟范围内予以保留

3.路由的Local_pref属性在整个联盟范围内予以保留

4.在联盟范围内,将成员AS号加入AS_PATH,但并不公布到联盟外,使用type 3,4 的AS_PATH

5.AS_PATH中的联盟AS号用于避免环路,当联盟内选择一个最短的AS_PATH可以考虑不使用联盟AS号

bgp confederation identifier 1200

bgp confederation peers 65533 65535

neighbor Confed peer-group

neighbor Confed ebgp-multihop 2

neighbor Confed update-sourc Loopback 0

neighbor Confed next-hop-self

neighbor MyGroup peer-group

neighbor MyGroup remote-as 65534

neighbor MyGroup update-source Loopback 0

neighbor 10.33.255.1 remote-as 65533

neighbor 10.33.255.1 peer-group Confed

neighbor 10.34.255.2 peer-group MyGroup

neighbor 10.35.255.1 remote-as 65535

neighbor 10.35.255.1 peer-group Confed

在整个联盟内使用next-hop-self,因此IGP可以了解到所有下一跳。

Route Reflectors

路由反射器用于减小IBGP对等连接数量的一种方法

在成为RR的路由器上加入neighbor 10.33.255.2 route-reflector-client

RR公布路由的规则:

1,如果路由是从非客户的IBGP对等学习到的,只将它反射给客户

2,如果路由是从客户处学习到的,将它反射给除了发起该路由的客户外所有的客户以及非客户

3,如果路由是从EBGP邻居学来的,将它反射给所有的客户和非客户

如果路由反射器在该属性值中发现自己的本地簇ID,就说明有环路,忽略掉。

如果一个簇里不止一个RR,要在进程下用bgp cluster-id手工指定簇ID,因为默认RR将自己的RID当成cluster-id BGP 4 command and Configurations

Aggregate-address address mask

用于手工汇聚路由,不加参数表示创建一条汇聚路由,但并不抑制精细路由

Router B

router bgp 2

network 172.16.0.0 mask 255.255.255.0

network 172.16.1.0 mask 255.255.255.0

network 172.16.2.0 mask 255.255.255.0

network 172.16.3.0 mask 255.255.255.0

aggregate-address 172.16.0.0 255.255.252.0

neighbor 10.1.1.1 remote-as 1

RouterB#show ip bgp

Network Next Hop Metric LocPrf Weight Path

*> 172.16.0.0/24 0.0.0.0 0 32768 i

*> 172.16.0.0/22 0.0.0.0 32768 i

*> 172.16.1.0/24 0.0.0.0 0 32768 i

*> 172.16.2.0/24 0.0.0.0 0 32768 i

*> 172.16.3.0/24 0.0.0.0 0 32768 i

rtrA#show ip route

...

B 172.16.0.0/16 [200/0] via 0.0.0.0, 00:03:01, Null0

...

Aggregate-address address mask as-set

用于手工汇聚路由,AS-set 用于在汇聚时加入汇聚地址和AS_SET 字段,防止产生路由环路

Router A router bgp 1

aggregate-address 172.16.0.0 255.255.252.0 as-set neighbor 10.1.1.2 remote-as 2

neighbor 172.17.1.2 remote-as 65530

rtrA#show ip bgp 172.16.0.0/22

BGP routing table entry for 172.16.0.0/22, version 10

Paths: (1 available, best #1, table Default-IP-Routing-Table) Advertised to non peer-group peers: 10.1.1.2 172.17.1.2

{65530,2}, (aggregated by 1 144.223.1.1) //此处加入了AS-SET 字段 0.0.0.0 from 0.0.0.0 (144.223.1.1)

Origin IGP, localpref 100, weight 32768, valid, aggregated, local, atomic-aggregate, best

Aggregate-address address mask as-set advertise-map route-map-name

用于手工汇聚路由,advertise-map 可以决定AS_PATH 中的信息是否被保留到聚合路由中

aggregate-address 172.16.0.0 255.255.252.0 as-set

rtrA#show ip bgp 172.16.0.0/22

BGP routing table entry for 172.16.0.0/22, version 10

Paths: (1 available, best #1, table Default-IP-Routing-Table) Advertised to non peer-group peers: 10.1.1.2 172.17.1.2

{65530,2}, (aggregated by 1 172.17.1.1) 0.0.0.0 from 0.0.0.0 (172.17.1.1)

Origin IGP, localpref 100, weight 32768, valid, aggregated, local, atomic-aggregate, best

aggregate-address 172.16.0.0 255.255.252.0 as-set advertise-map select-as !

access-list 1 permit 172.16.0.0 0.0.0.255 access-list 1 permit 172.16.1.0 0.0.0.255 !

ip as-path access-list 1 permit ^65530$ !

route-map select-as permit 10 match as-path 1

rtrA#show ip bgp 172.16.0.0/22

BGP routing table entry for 172.16.0.0/22, version 5

Paths: (1 available, best #1, table Default-IP-Routing-Table) Advertised to non peer-group peers: 10.1.1.2 172.17.1.2

65530, (aggregated by 1 172.17.1.1) 0.0.0.0 from 0.0.0.0 (172.17.1.1)

Origin IGP, localpref 100, weight 32768, valid, aggregated, local, atomic-aggregate, best

Aggregate-address address mask attribute-map route-map-name

用于手工汇聚路由,attribute-map 用于改变聚合路由属性 aggregate-address 172.16.0.0 255.255.252.0 attribute-map ORIGIN

!

route-map ORIGIN permit 10 set origin incomplete set metric 50

Aggregate-address address mask route-map route-map-name

用于手工汇聚路由时改变聚合路由属性,等同于attribute-map

Aggregate-address address mask summary-only

用于手工汇聚路由时抑制精细路由的发送

Aggregate-address address mask suspress-map route-map-name

用于手工汇聚路由,并抑制相关的路由,一般需要按RFC1918抑制路由

aggregate-address 172.16.0.0 255.255.252.0 suppress-map suppress

!

access-list 1 permit 172.16.2.0 0.0.0.255

route-map suppress permit 10

match ip address 1

Auto-summary

自动汇总到ABC三类地址,在Cisco较新的IOS中,no auto-summary自动打开

bgp always-compare-med

打开这条命令后,路由器将始终比较MED的大小来决定路径,配置这条命令需在AS内的所有路由器上

原算法只比较来自己相同external-AS的通告的路由,此命令将比较所有路由,而不考虑外部AS是否相同

bgp bestpath as-path ignore

在选路时,忽略as-path长度的比较.但需要注意,根据选路算法,weight local_pref origin具有更高优先级

bgp bestpath med confed

打开这条命令,在选路时,路由器将只比较所有带有As_confe_seq属性的路由条目,此命令用于联盟路由器,同时weight 和local_pref比MED有更高的优先级

bgp bestpath med missing-as-worst

对于收到的一条路由前缀,如果缺失MED值,默认将MED设置为0,此条命令用于将没有MED的路由前缀设置为一个最大 值4,294,967,295

bgp client-to-client reflection

在配置路由反射器时,客户到客户间的反射是默认打开的。但如果客户间是全互连的,此条命令加no前缀,关闭客户间 的反射

bgp cluster-id 32-bit_id

BGP可以收工指定cluster-id,cluster-id可以用普通10进制输入,也可以用点分10进制输入。

bgp confederation identifier as_number

bgp confederation peers 1_or_more_as_number

前面一条命令定义整个联盟的AS号,后面一条命令定义同属于这个AS的其它对等AS的号。

bgp dampening

开启BGP的路由惩罚。

bgp dampening half-life reuse suppress max_suppress_time route-map route-map-name

half-time: 半衰期,时间1~45分钟,即在半衰期时间惩罚值降低一半

Default 15mins

Reuse: 惩罚下限,即一条路由惩罚值降低到此阀值以下,路由将不会被抑制

Range 1~20000 default 750

Suppress: 惩罚上限,即惩罚值如果超过此值,路由将被抑制

Range 1~20000 default 2000

Max_suppress_time:最大抑制时间,默认其值为half-time的4倍 range 1~255minutes

router bgp 2

bgp dampening route-map dampen

neighbor 10.1.1.1 remote-as 1

!

ip as-path access-list 1 permit ip as-path access-list 1 permit ^1$

ip as-path access-list 2 permit ip as-path access-list 1 permit ^3$

!

route-map dampen permit 10

match as-path 1

set dampening 15 750 2000 60

route-map dampen permit 20

match as-path 2

set dampening 20 800 2200 80

bgp default local-preference local-preference

设置默认的local_pref值,range 0~4,294,967,295,默认local_pref 100

bgp deterministic-med

打开此命令后,用于确保使用来自相同AS的不同对等通告的路由进行MED比较

此命令和bgp always-compare-med的关系如下

例如有相同前缀的路由如下 (默认按路由接受顺序的逆序排序)

entry1: AS(PATH) 500, med 150, external, rid 172.16.13.1

entry2: AS(PATH) 100, med 200, external, rid 1.1.1.1

entry3: AS(PATH) 500, med 100, internal, rid 172.16.8.1

1.都关闭

1,2将先比较,2将优选,因为2有更小的RID,然后2与3比较,2为external,所以最优路径为2 2.打开always-compare-med

先1,2比较,选择med更低的1和3比较,由于1,3在一个相同AS中,所以再次比较med,选择3 3.Deterministic-med打开,路由前缀的信息将按AS重新分组

entry1: AS(PATH) 100, med 200, external, rid 1.1.1.1

entry2: AS(PATH) 500, med 100, internal, rid 172.16.8.4

entry3: AS(PATH) 500, med 150, external, rid 172.16.13.1

此时先组内比较,由于entry2的MED高于entry3,所以entry2将和entry1比较,由于在不同的AS,所以MED

不比较,且1为external的路由,所以,最有路径为1

4.都打开

此时先组内比较,由于entry2的MED高于entry3,所以entry2将和entry1比较,由于always-compare-med

打开,所以2的MED小于1的MED,2将作为最佳路径

bgp fast-external-fallover

bgp fast-external-fallover默认是打开的,如果一个接口down了以后,BGP会话会立即中断,如果这个接口处与振荡状态,那么大量的BGP的update和withdrawn消息将充斥着整个链路,同时从idle到establish状态不停改变

对一个flapping的端口,建议使用 no bgp fast-external-fallover,此时端口shutdown以后,BGP会话和邻居关

系还存在,直到超过BGP的Holdtime才会中断

bgp log-neighbor-changes

此命令用于记录邻居关系变更的一些信息,这些信息可以发到带有syslog-daemon的UNIX主机或者保存在路由器的内部缓存中,记录消息类型如下

BGP protocol initialization No memory for path entry

No memory for attribute entry No memory for prefix entry No memory for aggregate entry No memory for dampening info No memory for BGP updates BGP notification received Erroneous BGP update received User reset request

Peer time-out

Password change Error during connection collision Peer closing down the session

Peer exceeding maximum prefix limit Interface flap

Router ID changed

Neighbor deleted

Member added to peer group Administrative shutdown

Remote AS changed

RR client configuration modification Soft reconfiguration modification

配置如下:

logging buffered 4096 debugging

!

router bgp 1

bgp log-neighbor-changes

neighbor 172.17.1.1 remote-as 2

rtr#show logging

Syslog logging: enabled (0 messages dropped, 0 flushes, 0 overruns)

Console logging: level debugging, 48 messages logged

Monitor logging: level debugging, 0 messages logged

Buffer logging: level debugging, 3 messages logged

Trap logging: level informational, 51 message lines logged

Log Buffer (4096 bytes):

01:18:16: %SYS-5-CONFIG_I: Configured from console by console

01:18:31: %BGP-5-ADJCHANGE: neighbor 172.17.1.2 Down - Peer closed the session

01:19:00: %BGP-5-ADJCHANGE: neighbor 172.17.1.2 Up

相关文档