详解BGP协议.docx
- 文档编号:10745743
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:14
- 大小:61.30KB
详解BGP协议.docx
《详解BGP协议.docx》由会员分享,可在线阅读,更多相关《详解BGP协议.docx(14页珍藏版)》请在冰点文库上搜索。
详解BGP协议
详解:
网络支架BGP协议
1.概述
因特网,在20世纪60年代末,作为一个实验,开始于DARPA(美国国防部的高级研究项目管理局)。
随着研究机构、学院和政府加入,形成了最早的ARPANET.后来,美国国家科学基金会又开发了NSFNET(1995年4月停用)。
发展到现在,因特网成为了由商业提供者运营的的更分散的体系。
而下一代因特网(NGI)的计划已于1997年10月启动,目前已推出的主要方案有Internet2,Abilene等。
出于管理和扩展的目的,因特网可以被分割成许多不同的自治系统(AutonomousSystem)。
换句话说,因特网是由自治系统汇集而成的。
BGPv4(BordergatewayprotocolVersion4)——边缘网关协议(定义于RFC1771),是现行因特网的实施标准,就是用来连接自治系统,实现自治系统间的路由选择功能的。
2.IGP与EGP
所有的路由选择协议可以被分成IGP和EGP两种。
要了解IGP和EGP的概念,应该首先了解自治系统(AS)的概念。
传统的AS定义(RFC1771):
AS是同一个技术管理下的一组路由器,它们使用一种内部网关协议和一致的度量尺度来对数据包进行AS内部的路由,而使用外部网关协议来对发向其它AS的数据包进行路由选择。
发展到现在,已经允许并且时常采用在一个自治系统AS中使用多个内部网关协议,甚至多个路由选择的度量标准。
所以,现在的自治系统被扩展的定义为:
共享同一路由选择策略的一组路由器。
IGP(Interiorgatewayprotocols)——内部网关协议,定义为在一个自治系统内部使用的路由协议(包括动态路由协议和静态路由)。
IGP的功能是完成数据包在AS内部的路由选择,或者说,是讲述数据包如何穿过本地AS的。
RIPv1&v2,IGRP,EIGRP,OSPF,ISIS都是典型的IGP.
EGP(Exteriorgatewayprotocols)——外部网关协议,定义为在多个自治系统之间使用的路由协议。
它主要完成数据包在AS间的路由选择,或者说,讲述数据包为了到达目的IP,需要通过哪些AS.BGP4就是一种EGP.
IGP只作用于本地AS内部,而对其他AS一无所知。
它负责将数据包发到主机所在的网段(segment)。
EGP作用于各AS之间,它只了解AS的整体结构,而不了解各个AS内部的拓扑结构。
它只负责将数据包发到相应的AS中,余下的工作便交给IGP来做。
每个自治系统AS都有唯一的标识,称为AS号(ASnumber),由IANA(InternetAssignedNumbersAuthority)来授权分配。
这是一个16位的二进制数,范围为1~65535,其中65412~65535为AS专用组(RFC2270)。
3.BGP-4的基本概念
BGP-4是典型的外部网关协议,是现行的因特网实施标准。
它完成了在自治系统AS间的路由选择。
可以说,BGP协议是现代整个网络的支架。
BGP-4在RFC1771中作出了规定,并且还涉及其他很多的RFC文档。
在这一新版本中,BGP开始支持CIDR(Classlessinterdomainsrouting)和AS路径聚合(Aggregation),这种新属性的加入,可以减缓BGP表中条目的增长速度。
图一
BGP协议是一种距离矢量(Distancevector)的路由协议,但是比起RIP等典型的距离矢量协议,又有很多增强的性能。
BGP使用TCP作为传输协议,使用端口号179.在通信时,要先建立TCP会话,这样数据传输的可靠性就由TCP协议来保证,而在BGP的协议中就不用再使用差错控制和重传的机制,从而简化了复杂的程度。
另外,BGP使用增量的、触发性的路由更新,而不是一般的距离矢量协议的整个路由表的、周期性的更新,这样节省了更新所占用的带宽。
BGP还使用“保留”信号(Keepalive)来监视TCP会话的连接。
而且,BGP还有多种衡量路由路径的度量标准(称为路由属性),可以更加准确的判断出最优的路径。
与传统的内部路由协议相比,BGP还有一个有趣的特性,就是使用BGP的路由器之间,可以被未使用BGP的路由器隔开。
这是因为BGP在独立的内部路由协议之上工作,所以通过BGP会话连接的路由器能被多个运行内部路由协议的路由器分开。
建立了BGP会话连接的路由器被称作对等体(peersorneighbors),对等体的连接有两种模式:
IBGP(InternalBGP)和EBGP(ExternalBGP)。
IBGP是指单个AS内部的路由器之间的BGP连接,而EBGP则是指AS之间的路由器建立BGP会话。
图二
前面已经提到,BGP是用来完成AS之间的路由选择的,所以对于BGP来说,每一个AS都是一个原子的跳度。
那么,IBGP又起什么样的作用呢?
IBGP是用来在AS内部完成BGP更新信息的交换。
虽然这种功能也可以由“再分布”(Redistribution)技术来完成——将EBGP传送来的其他AS的路由“再分布”到IGP中,然后将其“再分布”到EBGP传送到其他AS.但是相比之下,IBGP提供了更高的扩展性、灵活性和管理的有效性。
比如,IBGP提供了选择本地AS外出点的方式。
IBGP的功能是维护AS内部连通性。
BGP规定,一个IBGP的路由器不能将来自另一IBGP路由器的路由发送给第三方IBGP路由器。
这也可以理解为通常所说的Split-horizon规则。
当路由器通过EBGP接收到更新信息时,它会对这个更新信息进行处理,并发送到所有的IBGP及余下的EBGP对等体;而当路由器从IBGP接收到更新信息时,它会对其进行处理并仅通过EBGP传送,而不会向IBGP传送。
所以,在AS中,BGP路由器必须要通过IBGP会话建立完全连接的网状连接,以此来保持BGP的连通性。
如果没有在物理上实现全网状(fullmeshed)的连接,就会出现连通性上的问题。
AS在BGP看来是一个整体,AS内部的BGP路由器都必须将相同的路由信息发送给边界的EBGP路由器。
路由信息在通过IBGP链路时不会发生改变,只有通过EBGP链路时,路由信息才会发生变化。
在AS内部,通过IBGP连接的路由器都有相同的BGP路由表(BGP路由表(BGPRoutingTable)用于存放BGP路由信息,不同于IGP路由表,两个表之间的信息可以通过“再分布”(Redistribution)技术进行交换)。
4.BGP的路由选择
BGP的消息报头由三个部分组成:
标记、长度和类型。
标记段占16个字节,用于安全检测和同步检测;长度段占2个字节,标明整个BGP消息的长度;类型段占一个字节,标明消息的类型。
报头的后面可以不接数据部分,如Keepalive消息。
BGP消息有四种类型:
OPEN,UPDATE,NOTIFICATION和KEEPALIVE,分别用于建立BGP连接,更新路由信息,差错控制和检测可到达性。
OPEN消息是在建立TCP连接后,向对方发出的第一条消息,它包括版本号、各自所在AS的号码(ASNumber)、BGP标识符(BGPIdentifier)、协议参数、会话保持时间(Holdtimer)以及可选参数、可选参数长度。
其中,BGP标识符用来标识本地路由器,在连接的所有路由器中应该是唯一的。
这个标识符一般都使用接口上的最大的IP地址(常常使用loopback接口来防止地址失效)。
而会话保持时间,是指在收到相继的Keepalive或者Update信号之间的最大间隔时间。
如果超过这个时间路由器仍然没有收到信号,就会认为对应的连接中断了。
如果把这个保持时间的值设为0,那么表示认为连接永远存在。
UPDATE消息由不可到达路由(WithdrawnRoute)、路由属性(RouteAttributes)和网络层可到达性(NetworkLayerReachabilityInformation—NLRI)组成。
BGP路由属性是BGP路由的核心概念。
它是一组参数,在UPDATE消息中被发给连接对等体。
这些参数记录了BGP路由信息,用于选择和过滤路由。
它可以被看作选择路由的度量尺度(metric)。
路由属性被分为四类:
公认强制(Well-knownmandatoryattributes)、公认自由选择(Well-knowndiscretionaryattributes)、可选传递(Optionaltransitiveattributes)和可选非传递(Optionalnontransitiveattributes)。
公认的(Well-known)属性对于所有的BGP路由器来说都是可辨别的;每个UPDATE消息中都必须包含强制(mandatory)属性,而自由选择的(discretionary)属性则是可选的,可包括也可不包括。
对于可选的(Optional)属性,不是所有的BGP工具都支持它。
当BGP不支持这个属性时,如果这个属性是过渡性的(transitive),则会被接受并传给其他的BGP对等体;如果这个属性是非传递性的(nontransitive),则被忽略,不传给其他对等体。
在技术文档RFC1771定义了1~7号的BGP路由属性,依次是:
1,ORIGIN(产生该路由信息的AS);2,AS_PATH(包已通过的AS集或序列);3,NEXT_HOP(要到达该目的下一跳的IP地址,IBGP连接不会改变从EBGP发来的NEXT_HOP);4,MULTI_EXIT_DISC(本地路由器使用,区别到其他AS的多个出口);5,LOCAL-PREF(在本地AS内传播,标明各路径的优先级);6,ATOMIC_AGGREGATE;7,AGGREGATOR.RFC1997还定义了8,COMMUNITY.其中,1、2号属性是公认强制;3、5、6是公认可选;7、8是可选过渡;4是可选非过渡。
这些属性在路由的选择中,考虑的优先级是不同的,仅就这8个属性来说,其中优先级最高的是LOCAL-PREF,接下来是ORIGIN和AS_PATH.
BGP所使用到的路由属性并不仅仅是这8个,其他的具体内容可以参阅RFC文档(RFC1771、1996、1997、1966、1863、2283)。
网络层可到达性(NLRI)包含了<长度,前缀>这样的二维数组,使用CIDR(ClasslessInterdomainRouting)技术,来聚合路由,以减缓BGP表的增长速度。
BGP工作流程如下:
首先,在要建立BGP会话的路由器之间建立TCP会话连接,然后通过交换OPEN信息来确定连接参数,如运行版本等。
建立对等体连接关系后,最开始的路由信息交换将包括所有的BGP路由,也就是交换BGP表中所有的条目。
初始化交换完成以后,只有当路由条目发生改变或者失效的时候,才会发出增量的触发性的路由更新。
所谓增量,就是指并不交换整个BGP表,而只更新发生变化的路由条目;而触发性,则是指只有在路由表发生变化时才更新路由信息,而并不发出周期性的路由更新。
比起传统的全路由表的定期更新,这种增量触发的更新大大节省了带宽。
路由更新都是由UPDATE消息来完成。
UPDATE包含了发送者可到达的目的列表和路由属性。
当没有路由更新传送时,BGP会话用KEEPALIVE消息来验证连接的可用性。
由于KEEPALIVE包很小,这也可以大量节省带宽。
在协商发生错误时,BGP会向双方发送NOTIFICATION消息来通知错误。
5.BGP与IGP的互操作
BGP路由表是独立于IGP路由表的,但是这两个表之间可以进行信息的交换,这就是前面提到的“再分布”技术(Redistribution)。
信息的交换有两个方向:
从BGP注入IGP,以及从IGP注入BGP.前者是将AS外部的路由信息传给AS内部的路由器,而后者是将AS内部的路由信息传到外部网络,这也是路由更新的来源。
把路由信息从BGP注入IGP涉及到一个重要概念——同步(Synchronization)。
同步规则,是指当一个AS为另一个AS提供了过渡服务时,只有当本地AS内部所有的路由器都通过IGP的路由信息的传播收到这条路由信息以后,BGP才能向外发送这条路由信息。
当路由器从IBGP收到一条路由更新信息时,在转发给其他EBGP对等体转之前,路由器会对同步性进行验证。
只有IGP认识这个更新的目的时(即IGP路由表中有相应的条目),路由器才会将其通过EBGP转发;否则,路由器不会转发该更新信息。
同步规则的主要目的是为了保证AS内部的连通性,防止路由循环的黑洞。
但是在实际的应用中,一般都会将同步功能禁用,而使用AS内IBGP的全网状连接结构来保证连通性,这样即可以避免向IGP中注入大量BGP路由,加快路由器处理速度,又可以保证数据包不丢失。
要安全的禁用同步,需要满足以下两个条件之一:
1,所处的AS是单口的,或者说是末端AS(StubAS)――即是指只有一个点与外界网络连接。
2,虽然所处的AS是过渡型的(指一个AS可以通过本地AS,与第三方AS建立连接的),但是在AS内部的所有路由器都运行BGP.第2种情况是很常见的,因为AS内所有的路由器都有BGP信息,所以IGP只需要为本地AS传送路由信息。
大部分的网络设备在实现BGP时,都提供了禁用同步的开关。
将IGP路由信息注入BGP,是路由更新的来源。
它直接影响到因特网的路由稳定性。
信息注入有两种方式:
动态和静态。
动态注入又分为完全注入和选择性注入。
完全动态注入是指将所有的IGP路由再分布(Redistribution)到BGP中。
这种方式的优点是配置简单,但是可控性弱,效率低。
选择性的动态注入则是将IGP路由表中的一部分路由信息注入BGP(如使用CiscoIOS中的network子命令)。
这种方式会先验证地址及掩码,大大增强了可控性,提高了效率,可以防止错误的路由信息注入。
但是无论哪种动态注入方式,都会造成路由的不稳定。
因为动态注入完全依赖于IGP信息,当IGP路由发生路由波动时,不可避免的会影响到BGP的路由更新。
这种路由的不稳定会发出大量的更新信息,浪费大量的带宽。
对于这种缺陷,可以使用在边界处使用路由衰减和聚合(BGP4的新增特性CIDR)来改善。
静态注入就可以有效解决路由不稳定的问题。
它是将静态路由的条目注入到BGP中去。
静态路由存在于IGP路由表中。
由于静态路由条目是人为的加入的,不会受到IGP波动的影响,所以很稳定。
它的稳定性防止了路由波动引起的反复更新。
但是,静态注入也会产生数据流阻塞等问题。
所以,在选择注入方式时,需要根据网络的实际状况来作出选择。
BGP还提供选择不同路由策略(Policy)的方法来控制BGP更新信息的数据流。
具体的说,可以改变管理距离(Administrativedistance)来确定使用哪一个路由协议的更新信息;可以使用BGP过滤(如routemaps)来控制更新数据流;还可以用CIDR和地址聚合来改变更新信息;也可以使用路由反射器(RouteReflectors)来改变路由更新信息的转发方式,从而改变对BGP内部网络的物理拓扑的全网状要求。
6.针对大型网络的扩展特性
前面已经提到,由于IBGP的Split-horizon特性,为了保证连续性,就必须在AS内实现全网状的(fullmeshed)连接。
但是,对于一个X个节点的网络来说,全网状的拓扑要求((X-1)X/2)个连接。
当X的值很大的时候,就会带来过多的花费,以及庞大的配置任务。
这是很不经济和低效的。
为了减少对IBGP链路的要求,在RFC1966、RFC1965中,分别提出了路由反射器(RouteReflection)和联盟(Confederations)技术。
路由器可以配置成路由反射器,路由反射器允许将一个IBGP传来的BGP路由传到另一个IBGP链路上。
这样就缓解了对全网状拓扑的需求。
但是并不是所有情况下,路由反射器都是一种最佳选择,因为这样会加大作为反射器的路由器的系统开销,从而减慢处理速度,甚至造成数据丢失。
而且,如果路由反射器出现问题,那么所有的连接都会被中断。
为了防止中断出现,增加冗余度,一般可以配置多个路由反射器。
图三
联盟则是将AS再划分成子AS(subAS),在subAS中运行IBGP,使用全网状结构;而在subAS之间使用EBGP,这样也可减少对IBGP连接的需求。
联盟同样也存在缺陷,如路由选择等。
所以和路由反射器一样,一般只在存在很多IBGP连接时才会使用联盟技术。
7.BGP的使用
BGP的功能是在各AS之间完成路由选择。
它主要用于ISP(InternetServiceProvider)之间的连接和数据交换。
但是,并不是所有情况下BGP都适用。
使用BGP会大大增加路由器的开销,并且大大增加规划和配置的复杂性。
所以,使用BGP协议需要先做好需求分析。
一般来说,如果本地的AS与多个外界AS建立了连接,并且有数据流从外部AS通过本地AS到达第三方的AS,那么可以考虑使用BGP来控制数据流。
如果本地AS与外界只有一个连接(通常说的stubAS),而且并不需要对数据流进行严格控制,那就不必使用BGP协议,而可以简单的使用静态路由(Staticroute)来完成与外部AS的数据交换。
另外,硬件和线路的原因也会影响到BGP的选择。
如前所说,使用BGP会加大路由器的开销,并且BGP路由表也需要很大的存储空间,所以当路由器的CPU或者存储空间有限时,或者带宽太小时,不宜使用BGP路由协议。
8.总结
实例讲解:
BGP配置五大注意事项
BGP的主要功能是连接各个AS,提供AS之间的信息交换。
各个BGP系统之间交换路由信息,来保证得到一个无环路的路由结构。
BGP还提供了在AS的水平上的路由策略的选择方式,以优化路由选择。
作为整个互联网的整体支架,BGP提供了一个功能强大的连接AS的工具,但是它在使用中也存在一定的局限性,所以在决定使用之前一定要作认真分析,以确定是否使用BGP以及具体实施方案。
BGP即边界网关协议(BorderGatewayProtocol)是互联网的路由协议。
然而,路由器只是在与互联网有多个连接时才使用这个协议。
不过,如果你真的需要进行BGP的配置时,你需要注意哪些方面呢?
如果你使用showrunning-configuration命令或者showrunn|begbgp命令,你可知在输出结果中看到了什么?
下面我们给出一个来自实际运行的路由器的BGP的配置的例子。
(为了安全起见,笔者已经修改了口令,IP地址,和AS的数量)。
以下是引用片段:
MY-Router#showrunning-configuration|begbgp
routerbgp55555
nosynchronization
bgplog-neighbor-changes
bgpdampening
network3.3.3.0
neighbor1.1.1.1remote-as1234
neighbor1.1.1.1descriptionProvider1
neighbor1.1.1.1password709823490822093482F
neighbor1.1.1.1update-sourceLoopback1
neighbor1.1.1.1version4
neighbor1.1.1.1route-mapProvider1out
neighbor2.2.2.2remote-as5678
neighbor2.2.2.2descriptionProvider2
neighbor2.2.2.2password709823490822093482F
neighbor2.2.2.2update-sourceLoopback2
neighbor2.2.2.2version4
neighbor2.2.2.2weight50
;
我们可从输出结果中看到什么呢?
我们可以看出这台路由器与两个ISP连接,而且它可能正在二者之间执行动态的、最短的AS路径路由选择。
此外,我们可以看出在每个连接上都存在口令,而且还有相关的描述来帮助确认每一个连接。
现在已经对我们正在进行的工作有了一个了解,下面看一下关于BGP配置需要注意哪些最重要的方面。
1.什么是AS数?
在这个配置中一个最重要的数字是自主系统数即AS数(autonomoussystem(AS))。
在这个例子中,AS就是55555(在routebgp55555这一行中)。
这个数字唯一性地确认了在你的控制之下的连接到互联网的路由范围。
BGP是一个“路径向量”路由协议。
在其最基本的意义上,BGP的工作就是通过互联网自主系统找到最短的路径。
2.配置一个BGP近邻的最小数字是多少?
一个路由器需要与BGP相邻实体通信的最小BGP配置是一个neighbor语句和一个到这个neighbor的路由。
其配置会相当简单:
以下是引用片段:
routerbgp55555
neighbor1.1.1.1remote-as1234
更可能的情况如下:
以下是引用片段:
network3.3.3.0
使用这个命令,你就是在告诉BGP正在寻找哪一个IP网络。
使用这种网络,在你发送数据的时候,它们知道怎样将反应消息回馈给你。
此外,你还可以配置一个口令来执行安全的MD5加密。
3.应该使用哪些BGPshow命令?
下面是两个最重要的BGPshow命令:
·Showipbgpsummary:
这个命令显示BGPpeering关系的状态信息。
·Showipbgp:
这个命令显示从你的BGP近邻收到的所有路由。
在使用BGP时,你会一次又一次地使用这些命令。
实际上,笔者经常使用这些命令,因此创建了其快捷方式。
下面是一个例子:
以下是引用片段:
aliasexecsibshowipbgp
aliasexecsibsshowipbgpsummary
;
这样一来,笔者只需键入sib或sibs就可以得到这种重要的BGP命令的输出。
4.BGP使用的metric度量标准
在使用BGP时,你需要明白BGP是怎样做决定的。
刚才提到,BGP通过互联网选择最短的AS路径。
虽然如此,它还使用许多其它的重要metric度量标准来做决策。
要查明具体情况和细节信息,请阅读Cisco的BGPBestPathSelectionAlgorithm文档。
例如,“shortestASpath”实际上处于所用的metric列表的第四位。
在比较权重、本地参数等因素时,如果存在着一种“关系”,BGP才使用它。
5、关于nosynchronizati
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 详解 BGP 协议