BGP学习宝典笔记完整版_第1页
BGP学习宝典笔记完整版_第2页
BGP学习宝典笔记完整版_第3页
BGP学习宝典笔记完整版_第4页
BGP学习宝典笔记完整版_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

BGP学习宝典笔记完整版BGP学习宝典笔记完整版1目录ContentsBGP概述BGP工作原理BGP报文详解BGP选路目录ContentsBGP概述BGP概述BGP工作原理BGP报文详解BGP选路BGP概述3BGP协议的产生网络收敛状态,实现全网信息可达路由条目数量惊人(一台路由拥有10万乃至100万路由条目)如果网络发生中断,或者不断的变化,对整个互联网造成的巨大动荡,最终造成路由信息不同步;互联网中,一个网络的中断与恢复,没有必要通告给网络中数以万计的路由器此外网络中的路由需要实施路由策略网络中需要部署MPLSVPNBGP协议的产生网络收敛状态,实现全网信息可达4自治系统什么是自治系统(AS)

自治系统指由同一个技术管理机构管理、使用内部路由策略的一些路由器的集合。每个自治系统都有唯一的自治系统编号。

自治系统的编号范围是1到65535,其中1到65411是注册的因特网编号,65412到65535是私有编号。为什么引入自治系统这一概念?引入自治系统的基本思想就是通过不同的编号来区分不同的自治系统。AS将一台路由器的路由更新限制在一定的范围内,最终达到收敛的状态自治系统内部的路由协议——IGP如OSPF、IS-IS、RIP、EIGRP(cisco专有)自治系统之间的路由协议——BGP如:EGP、BGP自治系统什么是自治系统(AS)5不采用RIP、OSPF的原因:RIP记录的只有下一跳,没有真正定义到目的地的完整路径,RIP跳数上限只有16,不适合较大规模网络OSPF的LSDB随网络规模的增加成几何数增长。BGP的提出是面向AS之间的路由选择。BGP是基于路径向量路由的思想,但从设计上避免了环路的产生。BGP要给出到目的地的完整路径。不关心跳数、量度,而是关心所要经过的自治系统。BGP协议基本思想不采用RIP、OSPF的原因:BGP协议基本思想6BGP协议基本思想BGP是作为EGP路由协议,主要用来在AS之间传递路由信息在AS之间是一种距离矢量的路由协议,应用特定的属性避免环路的发生路由信息携带丰富的属性传送协议:TCP,端口号179支持CIDR(无类别域间选路)路由更新:只发送增量路由信息丰富的路由过滤和路由策略BGP协议基本思想BGP是作为EGP路由协议,主要用来在AS7BGP概述BGP工作原理BGP报文详解BGP选路BGP概述8BGP工作机制AS1AS2AS3AS5AS6AS4AS7传输AS多出口ASSTUBASBGP工作机制AS1AS2AS3AS5AS6AS4AS7传9BGP问题?1、既然BGP用于AS之间的通信,为什么BGP对等体还有内外之分呢?IBGP用于承载外部EBGP更新,使它可以在AS内部通过BGP传输。BGP数据结构:BGP邻居表:记录BGP对等体信息BGP表:记录到达目标网络所有的路径信息,以及每条BGP更新的属性路由表:到达目标网络的最佳路由2、为什么在有IBGP的情况下,还需要IGP呢?需要IGP解析BGP对等体的可达性,保证TCP连接可以建立,IBGP关系也可以建立BGP问题?1、既然BGP用于AS之间的通信,为什么BGP10BGP使用原则多条路径时,BGPSpeaker选择最优的路径给自己使用。BGPSpeaker只把自己使用的路由通告给相邻体。BGPSpeaker把从EBGP获得的路由向所有相邻体通告(包括EBGP和IBGP)。BGPSpeaker从IBGP获得的路由不向它的IBGP相邻体通告。BGPSpeaker从IBGP获得的路由是否向它的EBGP相邻体通告要看IGB与BGP的同步情况而定。连接一建立,BGPSpeaker把自己所有的BGP路由通告给新的相邻体。BGP使用原则多条路径时,BGPSpeaker选择最优11协议报文报文名称作用是什么什么时候发包OPEN协商BGP邻居的各项参数,建立邻居关系通过TCP建立BGP连接,发送open报文UPDATE进行路由信息的交换连接建立后,有路由需要发送或路由变化时,发送UPDATE通告对端路由信息NOTIFICATION报告错误,中止邻居关系当BGP在运行中发现错误时,要发送NOTIFICATION报文通告BGP对端KEEPALIVE维持邻居关系定时发送KEEPALIVE报文以保持BGP邻居关系的有效性Route-refresh为保证网络稳定,触发更新路由的机制当路由策略发生变化时,触发请求邻居重新通告路由协议报文报文名称作用是什么什么时候发包OPEN协商BGP邻居12邻居状态机Peer状态名称发什么包在做什么Idle尝试建立TCP连接开始准备TCP的连接并监视远程peer启动TCP连接,启用BGP时,要准备足够的资源Connect发TCP包正在进行TCP连接,等待完成中,认证都是在TCP建立期间完成的。如果TCP连接不上则进入Active状态,反复尝试连接。Active发TCP包反复尝试TCP连接,OpenSent发Open包TCP连接建立已经成功,开始发送Open包,Open包携带参数协商对等体的建立。OpenConfirm发Keepalive包参数、能力特性协商成功,自己开始发送Keepalive包,等待对方的Keepalive包。Established发Update包已经收到对方的Keepalive包,双方能力特性一致,开始使用Update通告路由信息。邻居状态机Peer状态名称发什么包在做什么Idle尝试建立T13BGP协议状态机-建立邻居过程ActiveOpen-sentOpen-confirmEstablishedIdleConnectTCPconnectionfailsConnect-RetrytimerexpiryStartOthersTCPconnectionfailsErrorErrorErrorKeepAlivetimerexpiryKeepAlivepacketreceived1.KeepAlivetimerexpiry2.Updatereceived3.KeepAlivereceivedTCPconnectionsetupTCPconnectionsetupOthersBGP协议状态机-建立邻居过程ActiveOpen-se14BGP概述BGP工作原理BGP报文详解BGP选路BGP概述15BGP报文详解Marker:16字节,用于标明BGP报文边界,所有比特均为“1”Length:2字节,BGP消息总长度(包括报文头在内),以字节为单位,从Marker算起。Type:1字节,BGP消息的类型。其取值从1到5,分别表示Open、Update、Notification、Keepalive和Route-refresh消息。BGP报文详解Marker:16字节,用于标明BGP报文边16BGP报文详解Open消息Update消息Keepalive消息Notification消息Router-refresh消息其他BGP特性BGP报文详解Open消息17Open消息Version:BGP的版本号。对于BGP-4来说,其值为4。Myautonomoussystem:本地AS号。AS号可以确定是EBGP连接还是IBGP连接。Holdtime:保持时间。在建立对等体关系时两端要协商Holdtime,并保持一致。如果在这个时间内未收到对端发来的Keepalive消息或Update消息,则认为BGP连接中断。RFC规定两种实现,一种采用本地配置和收到的OPEN较小值进行协商,不过这个值为3。另一种是如果holdtime不一致则断开连接。

BGPidentifier:BGP标必须为0或者最小识符。以IP地址的形式表示,用来识别BGP路由器。OptParmLen(OptionalParametersLength):可选参数的长度。如果为0则没有可选参数。Optionalparameters:可选参数。用于多协议扩展(MultiprotocolExtensions)等功能。Open消息Version:BGP的版本号。对于BGP-4来18Open消息-Optionalparameters该字段为TLV格式,总长度在OptParmLen中。RFC1711中只定义了一种认证格式parameters,type为1AuthenticationData

Auth.CodeAuth.Code:是指认证系统AuthenticationData:该部分包括认证数据,长度由code决定。Open消息-Optionalparameters该字段为19Open消息-CapabilitiesAdvertisement【CA】Capabilitiesadvertisement:OptionalParametertype为2,结构为Code、length、Value,也是个TLV结构。该部分的作用是向BGP对等体通告所支持的Capabilities,以便进行协商。如果对端不支持CA协商,则在收到包含CA属性OPEN报文后,回应一个带有error的NOTIFICATIONmessage,其中subcode字段置为Unsupported。之后会重新进行BGP连接的发起,这次发送的OPEN报文中不携带CA属性。如果对端支持部分CA,也会在受到CA属性后,回应带有error的NOTIFICATIONmessage,其中subcode字段置为Unsupported。并且消息中包括其所不支持的CA类型。此时并不需要重新进行BGP的连接。CapabilityCodevalue:0为保留,RFC2434中规定1~63为IETF规定,64~127用作IANA,采用FCFS的策略定义。128~255为私有。Open消息-CapabilitiesAdvertisem20MultiprotocolExtensionsBGPAFI:协议族标记,0和65535保留,1为IPv4,2为IPv6,4为HDLC,10为X.25,11为IPXReserved:保留位,全0。SAFI:全称为SubsequentAddressFamilyIdentifier(并发地址族标识):本字段携带包含在属性中的网络层可达信息(NLRI)类型的补充信息。主要取值如下1:网络层可达信息NLRI为单播unicast2:网络层可达信息NLRI为组播multicast3:网络层可达信息NLRI为both(单播和组播)MultiprotocolExtensionsBGPAF21BGP扩展——MP-BGP传统的BGP-4只能管理IPv4单播路由信息,对于使用其它网络层协议(如IPv4组播,IPv6单播、组播)的应用,在跨自治系统传播时就受到一定限制。为了提供对多种网络层协议的支持,IETF对BGP-4进行了扩展,形成MP-BGP。所有的用户私有网络在被BGP传递时,都加入了RD(路由区分符),BGP要支持这些RD的传递,也需要多协议的BGP(MP-BGP)BGP-4使用的报文中,与IPv4地址格式相关的三条信息都由Update报文携带,这三条信息分别是:NLRI、路径属性中的NEXT_HOP、路径属性中的AGGREGATOR(该属性中包含形成聚合路由的BGP发言者的IP地址)。为实现对多种网络层协议的支持,BGP-4需要将网络层协议的信息反映到NLRI及NEXT_HOP。MP-BGP中引入了两个新的路径属性MP_REACH_NLRI:MultiprotocolReachableNLRI,多协议可达NLRI。用于发布可达路由及下一跳信息。MP_UNREACH_NLRI:MultiprotocolUnreachableNLRI,多协议不可达NLRI。用于撤销不可达路由。这两种属性都是可选非过渡(Optionalnon-transitive)的,因此,不提供多协议能力的BGP发言者将忽略这两个属性的信息,不把它们传递给其它邻居。MP-BGP采用地址族(AddressFamily)来区分不同的网络层协议。目前,系统实现了多种MP-BGP扩展应用,包括对VPN的扩展、对IPv6的扩展等。BGP扩展——MP-BGP传统的BGP-4只能管理IPv4单22BGP扩展——MP-BGP携带MP_REACH_NLRI属性的UPDATE消息必须同样携带ORIGIN和AS_PATH属性(存在于EBGP和IBGP交换中)。在IBGP交换这样一个消息时,还必须携带LOCAL_PREF属性。如果这个消息时来自于外部“对端”,本地系统应该检查在AS_PAHT属性最左边标记的AS是否与发送这个消息的“对端”的AS号码相等。否则本地系统应该发送携带错误码为UPDATE消息出错的NOTIFICATION消息,错误子码应该设置为错误AS_PATH(MalformedAS_PATH)。MP-BGP使用了扩展属性MP_REACH_NLRI。一个扩展之后的NLRI,增加了地址族的描述,以及私网lable和RD。BGP扩展——MP-BGP携带MP_REACH_NLRI属23

Open消息

Open消息

24BGP报文详解Open消息Update消息Keepalive消息Notification消息Router-refresh消息其他BGP特性BGP报文详解Open消息25Update消息Update消息用于在对等体之间交换路由信息,它既可以发布可达路由,也可以撤销不可达路由,一条Update报文可以通告一类具有相同路径属性的可达路由,这些路由放在NLRI字段。Unfeasiblerouteslength:不可达路由字段的长度,以字节为单位。如果为0则说明没有WithdrawnRoutes字段。Withdrawnroutes:不可达路由的列表。BGPidentifier:BGP标识符。以IP地址的形式表示,用来识别BGP路由器。Totalpathattributelength:路径属性字段的长度,以字节为单位。如果为0则说明没有NLRI字段。Pathatributes:与NLRI相关的所有路径属性列表,每个路径属性由一个TLV构成。BGP正是根据这些属性值来避免环路,进行选路,协议扩展等。NLRI(NetworkLayerReachabilityInformation):可达路由的前缀和前缀长度二元组。Update消息Update消息用于在对等体之间交换路由信息26

Update消息

Update消27Update消息-withdrawnroutesWithdrawnroutes部分携带需要撤销的路由信息,格式是<length,prefix>二元组。Length:表示所要取消的路由掩码长度,如果为0则表示默认路由。Length其实是我们常用的位数,后面prefix的长度为length/8取整。Prefix:长度可变,只要能表达清楚足够的前缀信息即可,后续的尾部可有可无。长度可变,但最小单位必须为字节。AttributeFlagUpdate消息-withdrawnroutesWithd28Update消息-NLRINLRI:NetworkLayerReachabilityInformation该这是一个或者多个(长度、前缀)用来公布IP地址前缀和前缀长度的字节组。Length:路由前缀长度,其实是我们常用的前缀位数,0表示默认路由。Prefix:长度可变,只要能表达清楚足够的前缀信息即可。该字段长度不定,但最小单位必须为字节。如果公布了地址206.193.160.0/19,长度部分就是/19,前缀部分是206.193.160.注意:虽然在NLRI字段中可能会包含多个前缀,但是每个更新消息也只描述了一条BGP路由(因为路径属性只描述一条路径,但是该路径可能会到达多个目的地)AttributeFlagUpdate消息-NLRINLRI:NetworkLa29Update消息-PathAttributesPathAttributes属性为可变长度,每一个update消息中都存在。格式为attrib<T,L,V>的形式。Flag字段在attribtype之前。Attributetype共2bytes

,前8位为flag,后8位为typecodeBits:含义

01为option表示可选,0为well-know公认。该位代表路由器必须识别该路由属性。

11为transitive,0为nontransitive,表示可传递性,如果前一flag为well-know则此处必须为1。该位表示路由器是否将该路由属性传递下去发给其他BGP对等体。

21为partial,0为complete。表示transitive属性是否为部分支持。well-knownattributes或者optionalnon-transitiveattributes,则此位必须为0。

3ExtendedLength1表示后续Attrilength字段长度为2字节,0表示长度为1字节。

4~7保留,目前必须为全0

01234567flagUpdate消息-PathAttributesPathA30Update消息-路由属性公认必遵(Well-knownmandatory):所有BGP路由器都必须能够识别这种属性,且必须存在于Update消息中。如果缺少这种属性,路由信息就会出错。公认可选(Well-knowndiscretionary):所有BGP路由器都可以识别,但不要求必须存在于Update消息中,可以根据具体情况来选择。可选过渡(Optionaltransitive):在AS之间具有可传递性的属性。BGP路由器可以不支持此属性,但它仍然会接收带有此属性的路由,并通告给其他对等体。可选非过渡(Optionalnon-transitive):如果BGP路由器不支持此属性,该属性被忽略,且不会通告给其他对等体。

Update消息-路由属性公认必遵(Well-knownm31Update消息-Attributetypecode属性名称typecode类别ORIGIN01公认必须遵循AS_PATH02公认必须遵循NEXT_HOP03公认必须遵循MULTI_EXIT_DISC(MED)04可选非过渡LOCAL_PREF05公认可选ATOMIC_AGGREGATE06公认可选AGGREGATOR07可选过渡COMMUNITY08可选过渡ORIGINATOR_ID09可选非过渡CLUSTER_LIST10可选非过渡MP_REACH_NLRI14可选非过渡MP_UNREACH_NLRI15可选非过渡EXTENDED_COMMUNITY16可选过渡AS4_PATH17可选过渡AS4_AGGREGATOR18可选过渡Update消息-Attributetypecode属性32Attributes—ORIGINORIGIN(typecode1):公认必须遵循0:IGP协议从AS内部学到的路由【network手工注入】1:EGP协议从外部学来的路由2:INCOMPLETE【将IGP重分布进入BGP表】AttributeFlaglengthAS_numbers(2bytes*N)lengthAttributes—ORIGINORIGIN(type33Attributes—AS_PATHAS_PATH(TypeCode2):公认必须遵循由许多ASpath段组成,每个AS段是由三元组<pathsegmenttype,pathsegmentlength,pathsegmentvalue>组成Pathsegmenttype:1个字节,1表示updatemessage传递经过的AS集合是无序的,2表示有序。Pathsegmentlength:1个字节,表示pathsegmentValue中所携带的AS的个数,注意这里不是Value的长度Pathsegmentvalue:N个字节。一个或者多个ASnumber号,每个ASnumber占用2个字节。AttributeFlaglengthAS_numbers(2bytes*N)lengthAttributes—AS_PATHAS_PATH(T34Attributes—AS_PATH

AS_PATH的取值定义:AS_SET:一组无序的AS组合【路由聚合】AS_SEQUENCE:路由穿过的有序的AS序列AS_CONFED_SEQUENCE:BGP联盟中用到。指联盟内部路由穿过的有序AS序列。【联盟】AS_CONFED_SET:BGP联盟中使用。指联盟内部路由穿过的无序AS组合。【联盟】Attributes—AS_PATHAS_PATH的取35Attributes—AS_PATHAS_PATH属性:按一定次序记录了某条路由从本地到目的地址所要经过的所有AS号。当BGP将一条路由通告到其他AS时,便会把本地AS号添加在AS_PATH列表的最前面。收到此路由的BGP路由器根据AS_PATH属性就可以知道去目的地址所要经过的AS。离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。BGP发言者在发布源路由时AS_PATH必须满足如下的要求:发布给自治系统内部的路由,AS_PATH必须为empty。即length字段为0发布给邻居自治系统的路由,AS_PATH中必须填上自己的AS号,并且只有一个AS号。通常情况下,BGP不会接受AS_PATH中已包含本地AS编号的路由,从而避免了形成路由环路的可能。BGP水平分割:考虑到在iBGP之间的路由传递也加入防环机制,因而强制将BGP路由在AS内部只传一跳。具体操作为:一台BGP路由器从eBGP邻居收到路由,发给iBGP邻居之后,iBGP邻居收到后就不能再传给其它任何iBGP邻居,只能传递给eBGP邻居。Attributes—AS_PATHAS_PATH属性:36EBGP使用AS-Path防止循环EBGPEBGPR1R2IBGPR4R3R5AS100AS200AS300AS-path(300)18.0.0.0/8AS-path(300)18.0.0.0/8AS-path(100,200,300)18.0.0.0/8AS-path(200,300)18.0.0.0/8EBGP使用AS-Path防止循环EBGPEBGPR1R2I37AS_PATH应用—BGP联盟联盟(Confederation)是处理AS内部的IBGP网络连接的另一种方法,它将一个自治系统划分为若干个子自治系统,每个子自治系统内部的IBGP对等体建立全连接关系,子自治系统之间建立EBGP连接关系。在不属于联盟的BGP发言者看来,属于同一个联盟的多个子自治系统是一个整体,外界不需要了解内部的子自治系统情况,联盟ID就是标识联盟这一整体的自治系统号。BGP发布者在向同一个联盟内部其他AS成员发布路由时MED和NEXT_HOP保持不变。BGP在同一个联盟内部,可以向不同的AS成员发送LOCAL_PREFERENCE属性。联盟的缺陷是:从非联盟方案向联盟方案转变时,要求路由器重新进行配置,逻辑拓扑也要改变在大型BGP网络中,路由反射器和联盟可以被同时使用。联盟依靠AS_PATH字段实现。AS_PATH应用—BGP联盟联盟(Confederat38BGP联盟AS100RTFRTERTD20.0.0.1RTCRTB20.0.0.2AS200RTA40.0.0.140.0.0.230.0.0.230.0.0.1AS65050AS65060RTGAS300BGP联盟AS100RTFRTERTD20.0.0.1RT39BGP联盟当BGP发布者需要通告(传播)一个路由时同一个自治系统内部不需要修改AS_PATH通告给同一个联盟内部其他AS成员如果AS_PATH中第一个字段是AS_CONFED_SEQUENCE,那么发布者需要把自己的ASnumber放到该序列的最后如果AS_PATH中第一个字段不是AS_CONFED_SEQUENCE,那么发布者需要在前面添加一个新的AS_CONFED_SEQUENCE字段,并填上自己的联盟ID通告给不同的联盟成员如果AS_PATH中第一个字段是AS_CONFEDSEQUENCE,那么删去所有的该字段和其后的AS_CONFED_SET字段如果AS_PATH中第一个字段是AS_SEQUENCE,那么发布者需要把自己的联盟ID添加到序列的最后如果AS_PATH中第一个字段不是AS_SEQUENCE或者已经移除了AS_CONFED_SEQUENCE以及AS_CONFED_SET,那么发布者需要在前面添加一个新的AS_SEQUENCE字段,并且填上自己的联盟IDBGP联盟当BGP发布者需要通告(传播)一个路由时40BGP联盟当BGP发布一个源路由的时候,遵循规定总结:向同一个联盟同一个AS成员内部发布路由时,必须包含emptyAS_PATH,即AS_PATH中的length字段为0向同一个联盟其他AS成员发布路由时,必须包含自己的成员AS号添加到AS_CONFED_SEQUENCE字段中向其他联盟成员发布路由时,必须包含自己的联盟ID添加到AS_SEQUENCE字段中BGP联盟当BGP发布一个源路由的时候,遵循规定总结:41Attributes—MEDMULTI_EXIT_DISC(TypeCode4):可选非过渡Type为04,length字段为04。Value为4字节的非负整数MED属性仅在相邻两个AS之间交换,收到此属性的AS一方不会再将其通告给任何其他第三方AS。MED属性相当于IGP使用的度量值(metrics),它用于判断流量进入AS时的最佳路由。当一个运行BGP的路由器通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED值较小者作为最佳路由。通常情况下,BGP只比较来自同一个AS路由的MED属性值Attributes—MEDMULTI_EXIT_DIS42Attributes—LOCAL_PREFLOCAL_PREF(TypeCode5):公认可选Type为05,length字段为04。Value为4字节的非负整数LOCAL_PREF属性仅在IBGP对等体之间交换,不通告给其他AS。它表明BGP路由器的优先级。如果AS收到其他AS发来的LOCAL_PREF属性则必须忽略。LOCAL_PREF属性用于判断流量离开AS时的最佳路由。当BGP的路由器通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择LOCAL_PREF属性值较高的路由。Attributes—LOCAL_PREFLOCAL_P43Attributes—路由聚合ATOMIC_AGGREGATE(TypeCode6):公认可选Type为06,length字段为0。当BGP发言者对本地路由进行聚合以后,发布该路由时必须携ATOMIC_AGGREGATE

属性。其他BGP对等体收到带有ATOMIC_AGGREGATE的路由时,再把该路由发布给其他BGP邻居时也必须携带该属性。在BGP发言者发布携带有ATOMIC_AGGREGATE属性的路由时,其NLRI中不能携带比之更精确的路由,也就是必须进行路由聚合。例如:如果有自动聚合属性,则发布该属性时NLRI中不能有这样更为精确的prefixBGP收到一条带有聚合属性的路由,也必须确认其是否存在环路,因为聚合的原因,所以该路由经过的一些AS可能并没有列在AS_PATH列表中Attributes—路由聚合ATOMIC_AGGREG44Attributes—路由聚合路由聚合:拥有庞大路由表的BGP,如果可以尽可能的减少路由表的条目,缩小路由表的空间,可以使用路由表的汇总来实现。在BGP中,被称为路由聚合。Automic-aggregate属性的存在,在默认情况下,汇总路由会将所有明细路由的AS-PATH去掉。当把汇总路由发送给它的邻居之后,由于AS-PATH丢失,会造成路由环路。AS-SET命令,可以让汇总路由保留所有的明细路由的AS-PATH。拥有AS-SET的汇总路由不会丢失路径,也不会携带Automic-aggregate属性。AS-SET可能包含多个AS,但即使一个AS-SET中有多个AS,但在计算AS-PATH长度时,置备算作一个AS。创建路由汇总的BGP路由器被认为是该路由的起源,汇总路由在该路由器上为本地路由Attributes—路由聚合路由聚合:45Attributes—路由聚合Attributes—路由聚合46Attributes—CommunityCOMMUNITIES(Type08):可选过渡。团体是共享相同特性的一组目的地(也就是前缀)。每一个目的地都可以属于多个团体,所有的具有团体属性的前缀属于属性中的团体列表内。团体属性是一组序列,每一组为4个字节。一个路由可以有多个团体属性。团体属性分为公认和私有的Community。公认CommunityNO_ADVERTISE:不通告给任何的BGP对等体;

NO_EXPORT:不通告给任何EBGP邻居,将路由在本AS内部传递;INTERNET:可以通告给所有的其他BGP对等体。LOCAL-AS:表示本路径不发布到本AS外部,当配置联盟时,本路径不发布给其它的自治系统或子自治系统。私有Community使用私有Community,可以将特定的路由设置私有Community,并将其传递给所有邻居,最终所有路由器都对拥有该私有Community的路由配置策略。并且对大量路由设置私有Community只需要在一台路由器上完成后,发给所有邻居即可,私有Community可以减少网络中路由器对相同路由的匹配工作,这就是标签的效果Attributes—CommunityCOMMUNIT47Community团体属性使用私有团体是对特定用户有意义的数字。可以理解为BGP路由的自定义标签。四个字节,为增加可读性,可配置为aa:nn,一般aa建议为AS号,nn代表业务。默认路由器支持单个32bit格式,若要支持AS:NN格式,必须开启BGP-CommunityNew-Format功能。缺省在peer之间不传递community属性,必须针对特定peer使用【也就是BGPCommunity必须明确要求传递,否则另据收不到相应Community】neighbor××××send-community才能将community属性发送出去。Community团体属性使用私有团体是对特定用户有意义的数48团体扩展属性—RT(路由对象)EXTENDED_COMMUNITY为可选过渡,TYPE为16扩展的community有如下两种格式:其中type字段为0x0002或者0x0102时表示RT。一个扩展团体属性中可以携带多个RTRT是BGP扩展团体属性,分为输入和输出两种。可以理解为什么样的RD值可以进入该VRF或者什么样RD值的路由将被该VRF导出。如果路由的RD值和RT所允许的值不匹配,将不能进入或者出去的,这样不同RD的用户也就不能通信,想要通信,就配置为相同的RD。团体扩展属性—RT(路由对象)EXTENDED_COMM49Attributes—CLUSTER_LISTCLUSTER_LIST(TypeCode10):可选非过渡Code为10,length字段为CLUSTER_LIST的长度,每个Cluster占用4bytes。路由反射器和它的客户组成一个集群(Cluster)当路由反射器RR反射路由的时候必须将本地的群ID加入到CLUSTER_LIST中。如果此时CLUSTER_LIST为空,那么必须创建CLUSTER_LIST属性。通过该属性,Reflector在将路由反射出去时,都会写入自己的ClusterID,在路由发送到其它Cluster后,其它Reflector在写入自己的ClusterID时,还会保留之前的ClusterID,就像保留AS_Path一样,如果收到一条路由带有与自己相同的ClusterID,就说明路由发回了原来的Cluster,则认为环路产生,将接收到的路由丢失,以此来防止环路。Attributes—CLUSTER_LISTCLUST50Attributes—ORIGINATOR_IDORIGINATOR_ID(TypeCode9):可选非过渡Type为09,length字段为04。Value为4字节的非负整数该属性是在路由反射器RR反射路由的时候被创建。BGP发布者不能够再次创建该属性,如果该属性已经存在在路由是从别的AS发过来时,OriginatorID就是AS边界接收的第一台BGP路由器Attributes—ORIGINATOR_IDORIG51BGP-路由反射器为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。假设在一个AS内部有n台路由器,那么应该建立的IBGP连接数就为n(n-1)/2。当IBGP对等体数目很多时,对网络资源和CPU资源的消耗都很大。解决上述问题的方法很多,但是在解决上述主要问题的同时还必须满足如下几个标准:简单:必须易于配置同时也易于理解容易转变:在不改变拓扑和自治系统的前提下,能够将全连接的拓扑转变。“联盟”技术在这点上就做得不够好,对管理者来说是不幸的。兼容性:必须保证在IBGP发言者之间的连接只有原自治系统或者域全连接的一部分的情况下,不丢失任何的路由信息。实现技术就是——BGPRouteReflectorBGP-路由反射器为保证IBGP对等体之间的连通性,需要在I52clientclientnonclientAS100RRAS200BGP-路由反射器RR从clients和nonclients收路由更新后路由反射的规则按照BGP的基本选路原则,选出最佳路由,只通告最佳路由从client收到的更新,反射到nonclients和clients从nonclient收到的更新,反射到clients从EBGP邻居收到的更新,反射到所有nonclients和clientsclientclientnonclientAS100RRAS53BGP—路由反射器EBGPNon-clientRBRCRARDAS100AS200RoutereflectorIBGPclientclientclientclientRERFBGP—路由反射器EBGPNon-clientRBRCR54BGP—路由反射器总结RR通过引入Originator–id和Cluster-list防止循环Originator–id可选非传递属性由RR建立,使用始发路由器的router-id,收到路由,发现自己的router-id则丢弃Cluster-list可选非传递属性由update经过的cluster-id组成,cluster-id的值一般使用RR的router-id,值不同认为是两个不同的簇,RR收到cluster-list中有自己的cluster-id,则丢弃。RR可能导致单点故障,冗余时,可路由反射器冗余备份配置bgpcluster-id××××指定cluster-id,多台冗余备份的RR设备设置相同的cluster-id配置反射器neighbor××××route-reflector-clientRR可以嵌套BGP—路由反射器总结RR通过引入Originator55BGP报文详解Open消息Update消息Keepalive消息Notification消息Router-refresh消息其他BGP特性BGP报文详解Open消息56Keepalive消息BGP使用keepalive消息来维护邻居关系。该消息类型为04,消息格式中只包含报文头,没有任何其他字段。BGP的holdertimer内如果没有收到对端发来的keepalive则邻居断开。keepalivetimer最大应该不超过holdertimer的三分之一。最小应该大于等于1秒。如果holdertimer为0,那么keepalive报文不能周期性的发送。Keepalive报文只有报文头Keepalive消息BGP使用keepalive消息来维护57

Keepalive消息

Keepaliv58BGP报文详解Open消息Update消息Keepalive消息Notification消息Router-refresh消息其他BGP特性BGP报文详解Open消息59Notification消息当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中断ErrorCode:差错码,指定错误类型,1bytes。ErrorSubcode:差错子码,错误类型的详细信息,1bytesData:用于辅助发现错误的原因,它的内容依赖于具体的差错码和差错子码,记录的是出错部分的数据,长度不固定。Notification消息当BGP检测到错误状态时,就向对60Notification消息—ErrorcodeErrorCodeName1MessageHeaderError2OPENMessageError3UPDATEMessageError4HoldTimerExpired5FiniteStateMachineError6CeaseSubCodeMessageHeaderError1ConnectionNotSynchronized2BadMessageLength3BadMessageType

SubCodeOPENMessageErrorsubcodes1UnsupportedVersionNumber2BadPeerAS3BadBGPIdentifier4UnsupportedOptionalParameter5AuthenticationFailure6UnacceptableHoldTime7UnsupportedCapability

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论