BGP培训教材.docx
《BGP培训教材.docx》由会员分享,可在线阅读,更多相关《BGP培训教材.docx(27页珍藏版)》请在冰豆网上搜索。
BGP培训教材
BGP用户培训材料
AS--AutonomousSystem使用相同路由管理策略的区域
BGP--BorderGatewayProtocolDefinedinRFC1771
CIDR--ClasslessInterdomainRouting无类型的域间选路
EGP--ExteriorGatewayProtocolDefinedinRFC904
IGP--InternalGatewayProtocolAS内部的路由协议
EGP--ExternalGatewayProtocolAS外部的路由协议,对应于IGP
一、概述
BGP是一种自治系统间的动态路由发现协议,它的基本功能是在自治系统间自动交换无环路的路由信息。
与OSPF和RIP等在自治区域内部运行的协议对应,BGP是一类EGP(EdgeGatewayProtocol)协议,而OSPF和RIP等为IGP(InteriorGatewayProtocol)协议。
BGP是在EGP应用的基础上发展起来的。
EGP在此以前已经作为自治区域间的路由发现协议,广泛应用于NFSNET等主干网络上。
但是,EGP被路由环路问题所困扰。
BGP通过在路由信息中增加自治区域(AS)路径的属性,来构造自治区域的拓扑图,从而消除路由环路并实施用户配置的策略。
同时,随着INTERNET的飞速发展,路由表的体积也迅速增加,自治区域间路由信息的交换量越来越大,都影响了网络的性能。
BGP支持无类型的区域间路由CIDR(ClasslessInterdomainRouting),可以有效的减少日益增大的路由表。
BGP运行时刻分别与本自治区域外和区域内的BGP伙伴建立连接(使用Socket)。
与区域内伙伴的连接称为IBGP(InternalBGP)连接,与自治区域外的BGP伙伴的连接称为EBGP(ExternalBGP)连接。
本地的BGP协议对IBGP和EBGP伙伴使用不同的机制处理。
二、BGP协议分析
1、BGP协议的层次位置
BGP,OSPF,RIP,TELNET,SNMP
SOCKET
TCP,UDP
IP,IPX
PPP,X.25等
操作系统
硬件接口及驱动
BGP使用Socket服务建立连接,端口号为179。
2、BGP的消息结构
BGP有4种类型的消息。
分别为OPEN,UPDATE,KEEPALIVE和NOTIFY。
它们有相同的消息头。
⑵OPEN消息结构:
消息头加如下结构:
Version:
(1字节)发送端BGP版本号
MyAutonomousSystem:
(2字节无符号整数)本地AS号
HoldTime:
(2字节无符号整数)发端建议的保持时间
BGPIdentifier:
(4字节)发端的路由器标识符
OptParmLen:
(1字节)可选的参数的长度
OptionalParameters:
(变长)可选的参数
⑶KEEPALIVE消息结构
KEEPALIVE消息只有一个消息头。
⑷NOTIFY消息结构
消息头加如下结构:
01234
01234567012345670123456701234567
Errorcode
Errsubcode
Data
Errorcode:
(1字节)错误代码
错误代码
错误类型
1
消息头错
2
OPEN消息错
3
UPDATE消息错
4
保持时间超时
5
状态机错
6
退出
Errsubcode:
(1字节)辅助错误代码,略。
Data:
(变长)依赖于不同的错误代码和辅助错误代码。
用于诊断错误原因。
⑸UPDATE消息结构
UnfeasibleRoutesLen:
(2字节无符号整数)不可达路由长度
WithdrawnRoutes:
(变长)退出路由
PathAttributeLen:
(2字节无符号整数)路径属性长
PathAttributes:
(变长)路径属性(以下详细说明)
NetworkLayerReachabilityInformation:
(变长)网络可达信息(信宿)
其中退出路由和信宿地址的表示方法为一的二元组。
length一个字节,指示地址前缀的长度。
prefix为地址前缀,长度1至4字节。
3、BGP协议路由属性的应用
路由是用信宿地址来标识的。
路由的属性即UPDATE消息中的路由属性部分,是用来帮助BGP进行路由选择的。
它们在本地BGP选择路由时有不同的作用。
当BGP通过不同的路由源收到了相同信宿地址的路由时,需要进行路由选择。
(1)ORIGIN起点属性
起点属性表示路由相对于发出它的自治系统的路由更新起点。
-IGPBGP把聚合路由和用network定义的路由看成是AS内部的,起点类型设置为IGP。
-EGPBGP把通过EGP得到的路由的起点设置为EGP。
-INCOMPLETEBGP把通过其它IGP协议引入的路由的起点设置为INCOMPLETE。
这是因为引入的路由可能从任何地方来,如OSPF的ASE路由。
BGP在其它因素相同的情况下,按IGP,EGP,INCOMPLETE的顺序选择路由,因为IGP路由的位置更确定,EGP次之,而INCOMPLETE则很不确定。
(2)AS路径属性
路由的AS路径属性记录了此路由所穿过的所有AS区域,它可以避免路由环路的出现,即当BGP把一条路由通告给一个此路由曾穿越过的AS自治区域时,此AS又把这条路由当作新路由来处理了,这也正是困扰EGP问题。
在加入了AS路径属性后,BGP可以根据AS路径属性中的信息来消除路由环路。
BGP不会接受AS路径属性中包含了本AS自治区域号的路由,因为此路由已经被本自治区域处理过了,从而避免了生成路由环路的可能。
为此,BGP在向EBGP对端,即向本AS外部通告一条路由时,要把本AS自治区域的AS号加入的AS路径属性中,以记录此路由通过的AS区域信息。
同时,AS路径属性也在影响路由选择。
显然,在其它因素相同的情况下,应该选择AS路径较短的路由,因为它穿过了较少的自治区域。
这一点并不一定精确,因为穿过了的3个由高速网络构成的AS区域的路由,有可能比穿过了2个低速网络的AS区域的路由更好。
这种情况要求恰当的配置,以在其它的因素中影响路由的选择。
协议不可能自动完成一切,有经验的工程师的合理的配置对优化网络更重要。
在AS路径属性中,AS_SEQUENCE属性的AS路径值表示此AS路径是有顺序关系的。
通过它可以在本生成AS自治区域的拓扑结构图。
当路由被发送到AS自治区域外时,一般要把本区域AS号加入到AS_SEQUENCE序列后。
AS_SET属性是用于路由聚合的,它的AS路径信息无顺序关系,无法生成拓扑结构图,但用于检测AS路由环路是足够用的。
(3)NEXTHOP下一跳属性
对于EBGP,下一跳属性是本地BGP与对端连接的端口地址。
如上图,RTC向RTA通过EBGP通告路由170.10.0.0时,下一跳属性为170.10.20.2;RTA向RTC通告150.10.0.0的路由时,下一跳为170.10.20.1。
对于IBGP,本地BGP将从EBGP得到的路由的下一跳属性,直接注入IBGP的UPDATE路由更新消息。
上图中,RTA通过IBGP向RTB通告路由170.10.0.0时,下一跳仍然为EBGP中的170.10.20.2,而不是150.10.30.1。
对于RTB,此下一跳信息最终应该通过IGP得到。
对于可以多路访问的网络,下一跳情况有所不同。
在上图中,RTA和RTC运行BGP,AS300中IGP为OSPF。
OSPF通告RTC通过下一跳170.10.20.3可以到达网络180.20.0.0。
RTC在通过EBGP通告RTA路由180.20.0.0时,发现本地端口170.10.20.2和此路由的下一跳170.10.20.3为同一共享子网,因此使用170.10.20.3作为EBGP通告路由的下一跳,而非170.10.20.2。
这种情况,对于NBMA非广播多点可达网络不适用。
将以太网替换为FrameRelay桢中继网和其它NBMA网络,箭头指示方向有PVC永久虚电路。
此时,RTC也发送下一跳为170.10.20.3的180.20.0.0路由给RTA,就会出现问题:
RTA到RTD无可达链路!
为了避免此问题,请使用Next-hop-self命令,强制RTA将路由180.20.0.0的下一跳设置为本地BGP端口地址170.10.20.2。
(4)MED属性
MULTI_EXIT_DISCRIMINATOR就是一条路由的Metric。
当某AS自治区域有多个人口点时,此属性用来帮助选择一个较好的人口点。
即,选择MED较小的人口点。
如上图,网络路由180.10.0.0从RTC、RTD和RTB出发,通过EBGP通告给RTA。
其中RTC的MED为120,RTD的MED为200,RTB的MED为50。
缺省情况下,BGP只比较同一AS区域发送的MED,这是因为不同AS自治区域的度量Metric的方法可能不同,只有相同AS区域的Metric才有可比性。
因此RTA选择MED较小的RTC发送的路由,将2.2.2.1作为路由180.10.0.0的下一跳(RTB的MED更小,但AS路径较长)。
MED属性不会通过AS区域传播,因此,RTA发送路由180.10.0.0时的MED设置为其缺省的0。
也可以使用always-compare-med命令来强制比较同一路由的所有的MED。
上例中,最终会选择RTB作为路由180.10.0.0的下一跳,因为它具有最小的MED。
总之,MED可以帮助本地BGP选择到达某一个AS区域的人口点。
(5)LOCALPREFERENCE本地优先级属性
本地优先级属性用来帮助AS区域内部的路由器,选择到AS区域外部使用的较好的出口。
如上图例,当路由170.10.0.0通过RTC和RTD发送到AS256内部时,RTC将本地优先级设置为150;RTD将本地优先级设置为200。
这可能是因为RTC连接的AS区域具有较高的速度或收费较低。
因此,AS256内部的路由器选择本地优先级较高的RTC作为得到网络170.10.0.0的下一跳。
和MED相反,较高的本地优先级的路由被选择。
和MED对应,本地优先级用来帮助本地BGP在不同的相邻AS区域中选择较好的退出路由。
在一个自治区域中的所有BGP路由器必须使用IBGP连通起来,已相互通过比较某条路由的本地优先级来就到达此信宿的AS出口点达成一致。
(6)ATOMIC_AGGREGATE元聚合属性
此属性用来表示一条路由是在某处被聚合形成的,丢失了部分信息。
(7)AGGREGATOR聚合者属性
此属性记录了一条路由被聚合的路由器的AS号和IP地址。
综合起来,本地BGP路由选择的过程为:
(1)如果此路由的下一跳不可达,忽略此路由;
(2)选择本地优先级较大的路由;
(3)选择本地路由器始发的路由(本地优先级相同);
(4)选择AS路径较短的路由;
(5)依次选择起点类型为IGP,EGP,INCOMPLETE类型的路由;
(6)选择MED较低的路由;
(7)选择RouterID较低的路由。
4、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对端(BGPPeer),同时在本地保存了已经发送给BGP对端的路由信息。
当本地的BGP收到了一条新路由时(如通过IGP注入了新路由或加入了新的静态路由),与保存的已发送信息进行比较,如未发送过,则发送,如已发送过则与已经发送的路由进行比较,如新路由花费更小,则发送此新路由,同时更新已发送信息,反之则不发送。
当本地BGP发现一条路由失效时(如对应端口失效),如此路由已发送过,则向BGP对端发送一个退出路由消息。
总之,BGP不是每次都广播所有的路由信息,而是在初始化全部路由信息后只发送路由的变化量(增量)。
这样保证了BGP和对端的最小通信量,但同时增加了BGP的复杂程度。
因为对于IGP,本地路由协议只需发送发送时刻所知的全部路由,而不保存任何已发送信息,路由选择的工作由对端来完成;而BGP必须为每个BGP对端保存已经发送的路由信息,以便发送一条新路由前确认其是否真的应该发送。
为了减小路由表的体积和发送路由的通信量,BGP还支持CIDR(ClasslessInterDomainRouting)。
它使用带有较短的掩码(相对于自然掩码)的路由来在一条路由中表达更多的路由信息。
如从202.112.1.0/24-202.112.254.0/24可以使用202.112.0.0/16表示,从而减小了路由表的体积和发送路由信息时的网络流量。
同时,作为AS自治区域间的路由协议,由于政治的、经济的等原因,BGP需要按照不同的路由的属性控制路由的发送和引入。
因此,BGP有丰富的路由策略控制手断。
在本地BGP路由变化时,也使用UPDATE消息修正对端BGP的路由表。
经过一段时间的路由信息交换后,本地BGP和对端BGP都无新路由通告,趋于稳定了。
此时要定时发送KEEPALIVE消息以保持BGP连接的有效性。
对于本地BGP,如果在超过保持时间的时间内,还未收到任何对端BGP消息,就认为此BGP连接已经无效,将此BGP连接断开。
当本地BGP在运行中发现错误时,要发送NOTIFY消息通告BGP对端。
如对端BGP版本本地不支持,本地BGP收到了结构非法的UPDATE消息等。
本地BGP退出BGP连接时也要发送NOTIFY消息。
BGP收到NOTIFY消息后,要作相应处理。
三、BGP配置任务列表
BGP配置任务主要包括:
Ÿ启动和关闭BGP
Ÿ配置BGP本地参数
Ÿ复位BGP连接
Ÿ定义访问列表、AS路径列表和路由映射
Ÿ配置neighbor
Ÿ配置BGP同伴组
ŸBGP与IGP交互
以下各节中引用的参数范围如下表所示:
表7-59BGP配置参数范围
参数名称
参数范围
as-number
0~65535
metirc
0~4294967295
perference
–2147483648~2147483647
holdtime
60~65535
asp-list-number
1~200
list-number
1~200
version-number
2~4
seq-number
0~65535
as-regular-expression
参见RFC1164section4.2
names
字符串(有效长度32位)
3.启动和关闭BGP
启动BGP协议时应指定本地的自治区域号(AS号)。
启动BGP后,本地路由器不接收相邻路由器的BGP连接请求。
要使本地路由器主动向相邻路由器发出BGP连接请求,请参照Neighbor的配置。
关闭BGP协议时,BGP协议将切断所有已经建立的BGP连接。
表7-60启动和关闭BGP
操作
命令
启动BGP,并进入BGP协议配置模式
routerbgpas-number
退出BGP协议配置模式
exit
关闭BGP
norouterbgp
4.配置BGP本地参数
BGP协议完成的主要任务之一是向其它的自治区域(AS)广播本自治区域中的网络可达信息。
为了完成此任务,BGP需要和内部网关协议(IGP,如RIP和OSPF等)协同工作。
一个简单的方法是将特定的IGP协议发现的网络路由全部注入到BGP的路由表中,再由BGP发送出去(请参见“BGP与IGP交互”)。
(1)定义和取消本地网络
但有时只需要发送部分网络路由。
此时,用network命令指定要发送的网络,同时也可以指定此网络路由的掩码和路由映射。
表7-61定义和取消本地网络
操作
命令
定义本地网络
networkip-address[maskmask][routemapmap-name]
取消本地网络的定义
nonetworkip-address
(2)配置本地优先级
当一个运行BGP的路由器通过不同的内部伙伴(InternalPeer)得到目的地相同、下一跳不同的路由时,将根据不同路由的本地优先级进行选择,选取本地优先级最高的路由为到达此目的地的路由。
用户可以使用以下命令配置BGP路由的本地优先级:
表7-62配置本地优先级
操作
命令
配置本地优先级
bgpdefaultlocal-preferencepreference
使用缺省的本地优先级
nobgpdefaultlocal-preference
(3)指定是否允许BGP生成默认路由
表7-63允许或禁止BGP生成默认路由
操作
命令
允许BGP生成默认路由
default-informationoriginate
禁止BGP生成默认路由
nodefault-informationoriginate
(4)配置MED
当一个运行BGP的路由器通过不同的外部部伙伴(ExternalPeer)得到目的地址相同、下一跳不同的路由时,将根据不同路由的MED(Multi-ExitDiscriminator)进行选择,选取MED最低的路由为到达此目的地的路由。
表7-64配置MED
操作
命令
配置MED
default-metricmetric
使用缺省的MED
nodefault-metric
(5)配置BGP定时器
当一台路由器与对端路由器建立了BGP连接后,定时向对端发送Keepalive消息,以指示连接通路正常,可以保持连接。
路由器在一定的时间内没有收到对端的Keepalive消息(或其它类型的消息)即认为此BGP连接已经被中断,从而退出此BGP连接,并对从此BGP连接收到的路由进行相应的处理。
因此,RFC中规定的Keepalive消息的间隔时间和BGP连接保持时间是BGP协议机制中比较重要的参数。
用户可通过以下命令配置这些参数。
表7-65配置BGP定时器
操作
命令
配置BGP定时器
timersbgpkeepalive-intervalholdtime
使用缺省的定时器值
notimersbgp
5.复位BGP连接
当BGP有关的参数被用户改变时,由于相关信息已经发送或是在BGP建立连接时由BGP连接的双方协商的,因此须切断当前的BGP连接,待重新建立起连接后才能生效。
用户可以使用以下命令了达到此目的:
表7-66复位BGP连接
操作
命令
复位一个neighbor
clearipbgpip-address
复位全部neighbor
clearipbgp*
6.定义访问列表、AS路径列表和路由映射
本节描述的访问列表(AccessList)、AS路径列表和路由映射(Routemap)是为以下的Neighbor配置做准备。
(1)定义访问列表
请参见防火墙的配置。
(2)定义AS路径列表
每个AS路径列表是用数字来标识的。
表7-67定义AS路径列表
操作
命令
定义AS路径列表
ipas-pathaccess-listlist-number{permit|deny}as-regular-expression
删除指定的AS列表
noipas-pathaccess-listlist-number
(3)定义路由映射(Routemap)
路由映射是BGP实施路由策略的重要部分。
它根据路由属性的匹配结果,决定对路由属性的操作。
即完成用户指定的将特定条件的路由集合的属性修改的任务。
每个路由映射中可以有若干映射规则,用序列号标识。
在进行路由映射时,按序列号从小到大的顺序进行匹配,遇到第一个匹配的映射规则,就完成此次的路由映射过程。
如未匹配任何一条映射规则,则此路由的发送和接收等操作被取消。
表7-68定义路由映射(Routemap)
操作
命令
进入路由映射配置模式
route-mapmap-name{permit|deny}seq-number
退出路由映射配置模式
exit
删除指定的路由映射
noroute-mapmap-name
定义匹配规则。
表7-69定义匹配规则
操作
命令
匹配AS路径正则表达式
matchas-path[asp-list-num]
取消AS路径表达式匹配
nomatchas-path
匹配端口
matchinterface{Ethernet|Serial|Null}[interface-number]
取消端口匹配
nomatchinterface
匹配地址
matchipaddress[access-list-num]
取消地址匹配
nomatchipaddress
匹配metric
matchmetric[metric]
取消metric匹配
nomatchmetric
定义赋值规则。
表7-70定义赋值规则
操作
命令
设置AS号
setas-pathprependas-number
取消AS号的设置
nosetas-path
设置下一跳
setipnext-hopip-address
取消下一跳的设置
nosetipnext-hop
设置本地优先级
setlocal-preference[pr