BGP路由协议分析ppt课件.ppt
2023/1/6,DP500005 BGP路由协议,ISSUE 1.0,Page 2,学习完此课程,您将会:掌握BGP协议的基本原理掌握BGP协议的路由属性及其应用,目 标,Page 3,第1章 BGP路由协议的原理第2章 BGP路由属性,内容介绍,Page 4,BGP协议基本概念(一),什么是自治系统(AS)?自治系统指由同一个技术管理机构管理、使用内部路由策略的一些路由器的集合。每个自治系统都有唯一的自治系统编号。自治系统的编号范围是1到65535,其中1到64511是注册的因特网编号,64512到65535是专用网络编号。,Page 5,没有BGP的日子里,Page 6,有了BGP之后,链路层协议生成路由,IGP发现和计算路由,BGP控制路由传播和选择,Page 7,BGP协议概述,BGP是一种外部网关协议(EGP),与OSPF、RIP等内部网关协议(IGP)不同,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择最佳路由。BGP使用TCP作为其传输层协议(端口号179),提高了协议的可靠性。BGP支持无类别域间路由CIDR(Classless Inter-Domain Routing)。路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息。BGP路由通过携带AS路径信息彻底解决路由环路问题。BGP提供了丰富的路由策略,能够对路由实现灵活的过滤和选择。BGP易于扩展,能够适应网络新的发展。,BGP的主要目标是提供一种能够保证自治系统间无环路的路由选择信息交换的域间路由系统.BGP在路由器上以下列两种方式运行:IBGP(Internal BGP)EBGP(External BGP)当BGP运行于同一自治系统内部时,被称为IBGP;当BGP运行于不同自治系统之间时,称为EBGP。,Page 8,Page 9,BGP协议基本概念(三),何时选择BGP?何时不选择BGP?下列条件至少存在一个的时候,才应该使用BGP。自治系统系统允许数据包穿过它到达其他自治系统。自治系统多条外部连接,多个运营商之间;拥有多条到互联网的连接时。自治系统必须对进入和离开AS的数据流进行控制。下列情况,不需要使用BGP自制系统和自治系统或Internet间仅有单一连接时。设备内存和CPU性能不佳,无法运行BGP时。没有能力实施路由过滤或BGP路径选择时。自治系统间带宽较低时。,Page 10,AS的分类,单口AS(stub AS)多归路过渡AS(multihomed AS)过渡AS(transit AS),过度AS,一般情况下一条路由是从自治系统内部产生的,它由某种内部路由协议发现和计算,传递到自治系统的边界,由自治系统边界路由器(ASBR)通过EBGP连接传播到其它自治系统中。路由在传播过程中可能会经过若干个自治系统,这些自治系统称为过渡自治系统。如:AS5。若这个自治系统有多个边界路由器,这些路由器之间运行IBGP来交换路由信息。这时内部的路由器并不需要知道这些外部路由,它们只需要在边界路由器之间维护IP连通性。如:AS2、AS3、AS4。路由到达自治系统边界后,若内部路由器需要知道这些外部路由,ASBR可以将路由引入内部路由协议。外部路由的数量是很大的,通常会超出内部路由器的处理能力,因此引入外部路由时一般需要过滤或聚合,以减少路由的数量,极端的情况是使用默认路由。,Page 11,Stub AS,还有一种自治系统称为Stub AS,如:AS1、AS6、AS7。其内部只有一个ASBR通过EBGP连接外部,同外部其他AS的通信要靠过渡自治系统来转接。对一个具体的ASBR来说,其路由的来源有两种:从对等体接收的 从IGP引入的。对于接收的路由,根据其属性(如AS路径、团体属性等)进行过滤,并设置某些属性(如本地优先、MED值等),之后若需要的话,将具体的路由聚合为超网路由。BGP可能从多个对等体收到目的地相同的路由,根据规则选择最好的路由并加入IP路由表。对于IGP路由,则要经过引入策略的过滤和设置。BGP发送优选的BGP路由和引入的IGP路由给对等体。,Page 12,Page 13,BGP工作机制,在BGP对等体建立之前,对等体之间首先进行TCP连接。BGP邻居间会通过Open消息协商相关参数,建立起BGP对等体关系。BGP邻居刚建立时,发送整个BGP路由表交换路由信息,之后为了更新路由表只交换更新消息(update message)。系统在运行过程中,通过接收和发送keep-alive消息来检测相互之间的连接是否正常的。,BGP发言人,BGP speaker发送BGP消息的路由器称为BGP发言人(speaker),它不断的接收或产生新路由信息,并将它广告(advertise)给其它的BGP发言人。当BGP发言人收到来自其他自治系统的新路由广告时,如果该路由比当前已知路由好、或者当前还没有可接受路由,它就把这个路由广告给自治系统内所有其它的BGP发言人BGP peer一个BGP发言人也将同它交换消息的其它的BGP发言人称为同伴(peer)BGP group若干相关的同伴可以构成同伴组(group),Page 14,Page 15,BGP两种邻居IBGP和EBGP,对等体,BGP在路由器上以下列两种方式运行:IBGP(Internal BGP)EBGP(External BGP)如果两个交换BGP报文的对等体属于同一个自治系统,那么这两个对等体就是IBGP对等体(Internal BGP),如RTB和RTD。如果两个交换BGP报文的对等体属于不同的自治系统,那么这两个对等体就是EBGP对等体(External BGP),如RTA和RTB。IBGP对等体之间不一定是物理上直连的,但必须保证逻辑上全连接。(TCP连接能够建立即可)。为了IBGP对等体路由通告的可靠性,我们一般都是采用loopback接口建立IBGP邻居关系,同时必须指定路由更新报文的源接口。peer group-name|peer-address connect-interface interface-name一般的路由器(包括Quidway系列路由器)都默认要求EBGP对等体之间是有物理上的直连链路,同时他们一般也提供改变这个缺省设置的配置命令。允许同非直连相连网络上的邻居建立EBGP连接,Page 16,Page 17,BGP路由通告原则(重要),存在多条路径时,BGP Speaker只选取最优的使用(非负载分担)BGP Speaker只把自己优选的路由通告给相邻体BGP Speaker从EBGP获得的路由会向它所有BGP相邻体通告(包括EBGP和IBGP)BGP Speaker从IBGP获得的路由不向它的IBGP相邻体通告BGP Speaker 从IBGP获得的路由是否通告给它的EBGP相邻体要依IGP和BGP同步的情况来决定连接一建立,BGP Speaker按照以上原则,把自己所有BGP路由通告给新相邻体,Page 18,BGP路由表与系统路由表的关系,存在多条路径时,BGP Speaker只选取最优的使用(非负载分担时)BGP Speaker只把自己使用的最优路由通告给相邻体BGP Speaker只把自己使用的最优的路由加入到路由表中,Page 19,BGP路由通告原则,BGP Speaker从IBGP获得的路由不向它的IBGP相邻体通告(如果存在RR呢),Page 20,BGP同步,BGP Speaker 从IBGP获得的路由是否通告给它的EBGP相邻体要依IGP和BGP同步的情况来决定,Page 21,同步规则的基本需求,BGP同步规则的目的:为防止一个AS(不是所有的路由器都运行bgp)内部出现路由黑洞,即向外部通告了一个本AS不可达的虚假的路由.BGP同步规则的基本需求 如果一个AS内部存在非bgp路由器,那么就出现了bgp和igp的边界,需要在边界路由器将bgp路由发布到igp中,才能保证AS所通告到外部的bgp路由,在AS内部是连通的。实际上是要求bgp路由和igp路由的同步(不建议)。以下情况可以安全关闭同步(华为设备缺省情况下非同步):本AS不是过渡AS本AS内所有路由器建立IBGP全连接,Page 22,IBGP全互联,IBGP全互联AS内部的所有路由器都运行BGP,就可以关闭所有路由器的同步,而不影响路由的通告和连通性.随之产生的问题:当as内部路由器数量很多时,需要建立N*(N-1)/2个ibgp会话,带来过度的系统开销,扩展性不好。即15个路由器的AS,需要建立15(15-1)/2=105个ibgp会话,Page 23,IBGP全互联的解决方案(一),路由反射器AS内部的所有路由器都运行bgp,在AS内部部署路由反射器,构建hub and spoke(中心说话)的ibgp(会话数为N-1),然后关闭所有bgp路由器的同步.问题:此方案可以使bgp路由器传递ibgp路由到ebgp,并保证bgp路由的连通性,但是对物理拓扑有很大的限制。,Page 24,BGP路由反射,路由反射器(Route Reflector),AS 101,AS 100,AS 102,IBGP,EBGP,RR,Client,Client,Client,BGP路由反射,在AS100内,在没有配置路由反射器的时候,为了实现路由信息的互通,4台路由器都必须全IBGP互连维护6个IBGP会话。但与配置了反射器的情况相比,由于Client只需维护要与该本身的RR的IBGP的会话,所以在AS100内IBGP数量由原来的6个变为只剩下3个。而这种新的结构下,IBGP宣告者被分成3组:路由反射器(RR);路由反射器客户(Client);常规的IBGP宣告者(Non-Client),Page 25,Page 26,IBGP全互联的解决方案(二),2.bgp联盟 AS内部的所有路由器都运行bgp,把一个原始的AS基于网络拓扑划分为若干个sub-AS(又称联盟AS),联盟AS之间的bgp邻居叫做联盟ebgp,不需要full mesh(全连接)bgp会话;在每个联盟AS内部运full mesh ibgp或者hub and spoke反射器,然后就可以关闭所有路由器的bgp同步功能.结论:bgp联盟结合路由反射器的方式,较好的解决了bgp的同步规则带来的需求,是最为有效的解决方案.,Page 27,BGP联盟,联盟(Confederation),AS 100,IBGP,EBGP,AS 1001,AS 1003,AS 1002,AS 101,EBGP_Confed,联盟通过把大的AS分成多个更小的自治系统来解决IBGP全互连的问题,这些自治系统叫做成员自治系统或子自治系统。因为成员自治系统之间使用EBGP会话,因此它们不需要全互连。然而,在每一个成员AS中,IBGP全互连的要求仍然适用。,成为BGP路由的途径,纯动态注入 路由器将通过IGP路由协议动态获得的路由信息直接注入到BGP中去。半动态注入 路由器有选择性的(通过配置命令)将IGP发现的动态路由信息注入到BGP系统中去静态注入 路由器将静态配置的某条路由注入到BGP系统中,Page 28,Page 29,成为BGP路由的途径之一:纯动态注入,OSPF发现路由18.0.0.1/8把IGP(OSPF)发现的路由纯动态地注入到RTB的BGP路由表中,Page 30,成为BGP路由的途径之二:半动态注入,OSPF发现路由18.0.0.1/8把IGP(OSPF)发现的路由半动态地注入到RTB的BGP路由表中它和纯动态注入的区别在于不是将IGP发现的所有路由信息注入到BGP中去,18.0.0.1/8,OSPF,RTB,AS200,Page 31,成为BGP路由的途径之三:静态注入,人为配置静态路由18.0.0.1/8把人为配置的静态路由注入到RTB的BGP路由表中,Page 32,BGP报文种类,BGP报文有四种类型:Open:打招呼“你好,跟我交个朋友吧!”KeepAlive:我还活着呢,别不理我Update:有新闻.Notification:我不跟你玩了!,Page 33,BGP报文头,BGP报文的格式是一样的,都是”报文头+报文体“的格式,下面给出的是BGP报文头:,Marker 鉴权信息Length 消息的长度Type 消息的类型,BGP报文头的格式如图所示,每行的宽度为4个字节。Marker 鉴权信息:本16字节的字段包含消息接收者可以预测的值。如果消息类型是OPEN,或者OPEN消息没有承载认证信息(作为可选参数),标记必须是全1。否者,标记的值要使用认证机制来计算(认证机制是通过认证信息的一部分来指定的)。标记可以用来探测BGP对端的同步丢失,认证进入的BGP消息。Length 消息的长度:2 字节,指示整个消息的长度,包括头标长度,最小的BGP消息长度是19字节(Keepalive报文),最大的长度是4096字节。Type 消息的类型:1 字节,指示报文类型,如OPEN、UPDATE报文等。1:OPEN2:UPDATE3:NOTIFICATION4:KEEPALIVE,Page 34,Page 35,Open报文,Open报文是由报文头加如下结构构成的。来交换各自的版本、自治系统号、保持时间、BGP标识符等信息,进行协商,Version:(1字节)发端BGP版本号如果BGP对等体之前的OPEN报文中Version不一致,选择较大的Version。My Autonomous System:(2字节无符号整数)本地AS号Hold Time:(2字节无符号整数)发端建议的保持时间 BGP Identifier:(4字节)发端的路由器标识符 如果BGP对等体之前的OPEN报文中Hold Time时间不一致,选择较小的Hold Time。Optional parmeters Len:(1字节)可选的参数的长度Optional Parameters:(变长)可选的参数,Page 36,Open报文,Page 37,KeepAlive报文,KeepAlive报文只有报文头。主要用于对等体路由器间的运行状态以及链路的可用性确认,缺省情况下,发送Keepalive 的时间间隔为 60 秒,Hold time是180秒。每次从邻居处接收到Keepalive 报文将重置hold time定时器,如果hold time定时器超时,peer就认为对等体down掉。,Page 38,Update报文,Update报文由报文头加如下结构构成。携带的是路由更新信息,Page 39,Notification报文,Notification报文由报文头加如下结构构成。当BGP检测到差错(连接中断、协商出错、报文差错等)时,发送NOTIFICATION 报文,关闭同对等体的连接。,Notification 报文主要在发生错误或对等体连接被关闭的情况下使用,该消息携带各种错误代码(如定时器超时等),包括错误代码、辅助错误代码及错误信息。Errorcode:(1字节)错误代码:错误代码错误类型 1 消息头错 2 OPEN消息错 3 UPDATE消息错 4 保持时间超时 5 状态机错 6 退出Errsubcode:(1字节)辅助错误代码,略。Data:(变长)依赖于不同的错误代码和辅助错误代码。用于诊断错误原因。,Page 40,Page 41,BGP协议的状态机,Idle(空闲):Idle 是BGP连接的第一个状态,在空闲状态,BGP在等待一个启动事件,启动事件出现以后,BGP初始化资源,复位连接重试计时器(Connect-Retry)缺省值为32秒,发起一条TCP连接,同时转入Connect(连接)状态。Connect(连接):在Connect 状态,BGP发起第一个TCP连接,如果 连接重试计时器(Connect-Retry)超时,就重新发起TCP连接,并继续保持在Connect 状态,如果TCP 连接成功,就转入OpenSent 状态,如果TCP 连接失败,就转入Active 状态。Active(活跃):在Active状态,BGP总是在试图建立TCP 连接,如果连接重试计时器(Connect-Retry)超时,就退回到Connect 状态,如果TCP 连接成功,就转入OpenSent 状态,如果TCP 连接失败,就继续保持在Active状态,并继续发起TCP连接。,Page 42,OpenSent(打开消息已发送):在OpenSent 状态,TCP连接已经建立,BGP也已经发送了第一个Open报文,剩下的工作,BGP就在等待其对等体发送Open 报文。并对收到的Open报文进行正确性检查,如果有错误,系统就会发送一条出错通知消息并退回到Idle状态,如果没有错误,BGP就开始发送Keepalive 报文,并复位Keepalive 计时器,开始计时。同时转入OpenConfirm状态。OpenConfirm(打开消息确认)状态:在OpenConfirm状态,BGP等待一个Keepalive 报文,同时复位保持计时器,如果收到了一个Keepalive 报文,就转入Established 阶段,BGP邻居关系就建立起来了。如果TCP连接中断,就退回到Idle 状态。Established(连接已建立):在Established 状态,BGP 邻居关系已经建立,这时,BGP将和它的邻居们交换Update 报文,同时复位保持计时器。我们常常在display bgp peer为active时,看到这样两种状态active和establish。当BGP的邻居状态是active时,BGP邻居之间还无法通告路由,主要是因为TCP连接还没有建立起来,Page 43,Page 44,BGP协议中消息的应用,通过TCP建立BGP连接时,发送open消息连接建立后,如果有路由需要发送或路由变化时,发送UPDATE消息通告对端路由信息稳定后此时要定时发送KEEPALIVE消息以保持BGP连接的有效性当本地BGP在运行中发现错误时,要发送NOTIFICATION消息通告BGP对端,Page 45,第1章 BGP路由协议的原理第2章 BGP路由属性,内容介绍,Page 46,BGP的路由属性,表达了路由的特征便于扩展过渡和非过渡的,必遵和可选的公认必遵(well-known mandatory)公认任意(well-known discretionary)可选过渡(optional transitive)可选非过渡(optional non-transitive),BGP协议的重点,必遵属性:在路由更新数据报文中必须存在的路由属性,这种属性域在BGP 路由信息中有着不可替代的作用,如果缺少必遵属性,路由信息就会出错。如AS-Path 就是必遵属性,BGP用它来避免路由环路,没有它路由就可能出问题。可选属性:它是可选的,不一定存在于路由更新数据报文中,我们设置它完全是根据需要。如MED属性,我们就用它来控制选路。过渡属性:具有AS间可传递性的属性就是过渡属性,过渡属性的域值可以被传递到其他AS中去并继续起作用。如Origin属性,路由信息的起源一旦确定,域值会一直存在,无论此路由信息被传到哪个AS中去。非过渡属性:只在本地起作用,出了自治系统,域值就恢复成缺省值,Page 47,BGP的路由属性,Page 48,BGP的路由属性,1、Origin2、AS-Path3、Next hop4、MED5、Local-Preference6、Atomic-Aggregate7、Aggregator8、Community,9、Originator-ID10、Cluster-List11、Destination Pref(MCI)12、Advertiser(Baynet)13、Rcid-Path(Baynet)14、MP_Reach_NLRI15、MP_Unreach_NLRI16、Extended_Communities,Page 49,Origin 属性(起源),一般的,具体的实现按如下方式决定一条路由的Origin属性某条路由是直接而具体的注入到BGP路由表中的,则origin属性为IGP BGP 把聚合路由和用直接注入到BGP路由表的具体路由看成是AS内部的,起点类型设置为IGP。即用“network XXXX XXXX”命令注入的路由或者是聚合的路由。路由是通过EGP得到的,则origin属性为EGP其他情形下,Origin属性都为 Incomplete BGP把通过其它IGP协议引入的路由起点类型设置为Incomplete。即用“import”命令注入的路由。,Page 50,AS-Path 属性,路由的AS-Path域在记录AS-number 时,总是把新的AS-numbe 放在前面,AS-Path 属性也是一个必遵属性,它是路由到达某个目的地所经过的所有AS号码的序列。BGP使用AS 路径属性作为路由更新(更新数据包)的一部分来确保在Internet 上的一个无环路拓扑结构。BGP不会接受AS 路径属性中包含的本AS自治系统号的路由,因为此路由已经被本自治系统处理过了,从而避免了生成路由环路的可能。为此,BGP在向EBGP对等体通告一条路由时,要把自己的AS号加入到AS 路径属性中,以记录此路由通过的AS区域信息。同时,AS 路径属性也在影响路由选择。在其它因素相同的情况下,选择AS路径较短的路由。如胶片所示,AS200内的网络D18.0.0.0/8经AS200、AS300、AS400到达AS100的路径为d1(400 300 200),经AS200、AS500到达AS100的路径为d2(500 200),这时BGP优先选择较短的路径d2。注:路由的AS-Path域在记录AS-number 时,总是把新的AS-numbe 放在前面,如上图,路由先经过AS200,记录:d2(200);路由再经过AS500,记录:d2(500 200)。,Page 51,AS-Path 属性,Page 52,Next Hop 属性(一),AS100,AS200,1.1.2.1/24,D=8.0.0.0,Next_Hop=1.1.1.1,1.1.1.1/24,EBGP,EBGP,D=8.0.0.0,Next_Hop=1.1.2.1,IBGP,D=8.0.0.0,Next_Hop=1.1.2.1,AS300,IBGP,D=8.0.0.0,8.0.0.0,1.1.3.1/24,RTA,RTB,RTC,RTE,RTF,Next_Hop=1.1.3.1,BGP的下一跳属性和IGP的有所不同,不一定就是邻居路由器的IP地址。通常情况下,Next_Hop属性遵循下面的规则:BGP Speaker在向EBGP对等体发布某条路由时,会把该路由信息的下一跳属性设置为本地与对端连接的接口地址。BGP Speaker将本地始发路由发布给IBGP对等体时,会把下一跳属性设置为发起该路由的路由器的接口地址。BGP Speaker在向IBGP对等体发布从EBGP对等体学来的路由时,并不改变该路由信息的下一跳属性。AS100内部IBGP对等体间传递IBGP内部路由。在AS100中,三台路由器上运行IGP协议,RTA与RTC之间运行IBGP,则RTA接收到Update报文中目的地址是8.0.0.0的路由的Next_Hop属性是1.1.3.1,也就是到目的地的始发路由器RTC的接口地址。,Page 53,Next Hop 属性(二),Page 54,Local-Preference 属性,D,local-pref1 100 D,local-pref2 200RTA就会优先选择本地优先级高的local-pref2,Local-Preference 属性,本部分有下列要点:在多出口的情况下,为了控制流量通过哪条出口链路出去,我们引入了本地优先的概念,仔细体会本地优先的含义,它是在AS内部控制路由选择的,而当把路由通过外部对等体连接通告的时候,本地优先清空。,Page 55,Page 56,MED(Multi-Exit-DISC)属性,越小越优先,1、MED控制流量怎样进入AS,而本地优先则控制流量怎样流出AS2、本地优先只在AS内部有效,在通过外部对等体通告路由的时候,本地优先被过滤掉,而MED属性则只在外部对等体关系中有效,在内部对等体之间通告路由的时候,MED属性被忽略掉。,Page 57,团体(Community)属性,团体是一组有相同性质的目的地的路由,一个团体不限于一个网络或一个自治系统,它没有物理边界。公认的团体:no-export带有该属性的路由信息不通告给AS外的BGP相邻体no-advertise带有该属性的路由信息不通告给任何BGP相邻体local-AS带有该属性的路由信息只通告给联盟EBGP相邻体Internet通告给所有其他路由器,Page 58,BGP路由选优过程,综合起来,本地BGP路由选优的过程为:首先丢弃下一跳(Next_Hop)不可达的路由;无条件优选带Label的IPv4路由;优选协议优先级最高,Preference值小的路由;优选本地优先级(Local_Pref)最高的路由;优选聚合路由(聚合路由优先级高于非聚合路由);优选AS路径(AS_Path)最短的路由;比较Origin属性,IGPEGPIncomplete;优选MED值最低的路由;,Page 59,BGP路由选优过程,EBGPIBGP;到达路由下一跳IGP的cost值,低者优先;优选Cluster_List最短的路由;优选Originator_ID最小的路由;优选Router ID最小的路由器发布的路由;比较对等体的IP Address,优选从具有较小IP Address的对等体学来的路由。,Page 60,BGP防止路由自环,自治系统内 路由器从AS内部邻居接收的路由永远不通告给AS内部邻居路由器。自治系统之间 在通告的每一条路由上都携带AS-PATH属性,如果接收到该路由的路由器发现自己所在的AS号出现在AS-PATH属性列表中,则拒绝接收该路由。,Page 61,小结,在本课程中我们学习了BGP协议的基本原理和丰富的属性特征,和这些属性的应用。,小结,