网络互联与路由技术OSPF和BGPppt课件.ppt
网络互联与路由技术,OSPF与BGP西南石油学院计算机科学学院,2,链路状态路由选择协议OSPF(1),OSPFOpen Shortest Path First。属于IGP协议。运行在一个自治系统内部。属于链路状态算法。是目前应用最广,性能最优的一个协议。,3,链路状态路由选择协议-OSPF,基本思想每个路由器有责任和邻机会话,并获悉它们的名字。每个路由器构建一个称为“链路状态广播(LSA)”的包,该包列出了邻机的名字和到达这些邻机的费用。LSA被传送到所有的别的路由器,每个路由器存储了来自其他路由器的最新的LSA。每个路由器现在有了完整的拓扑图,计算出到每个目的地的路由。,4,OSPF协议概述(1),OSPF是Open Shortest Path First的缩写。是IETF组织开发的一个基于链路状态的自治系统内部路由协议。适应范围:OSPF支持各种规模的网络,最多可支持几百台路由器。快速收敛:如果网络的拓扑结构发生变化,OSPF立即发送更新报文,使这一变化在自治系统中同步。这是衡量路由协议好坏的重要指标。无自环:由于OSPF通过收集到的链路状态用最短路径树算法计算路由,故从算法本身保证了不会生成自环路由。但是在引入外部路由时不能保证没有路由环路。,5,OSPF协议概述(2),子网掩码:由于OSPF在描述路由时携带网段的掩码信息,所以OSPF协议不受自然掩码的限制,对VLSM提供很好的支持。区域划分:OSPF协议允许自治系统的网络被划分成区域来管理,区域间传送的路由信息被进一步抽象,从而减少了占用网络的带宽。等值路由:OSPF支持到同一目的地址的多条等值路由。在RIP中也有。,6,OSPF协议概述(3),路由分级:OSPF使用4类不同的路由,按优先顺序分别是:区域内路由、区域间路由、第一类外部路由、第二类外部路由。支持验证:它支持基于接口的报文验证以保证路由计算的安全性。组播发送:OSPF在有组播发送能力的链路层上以组播地址发送协议报文,即达到了广播的作用,又最大程度的减少了对其他网络段设备的干扰。(224.0.0.5),7,OSPF和RIP的比较(1),向本自治系统中所有路由器发送信息。这里使用的方法是洪泛法(flooding),这样,最终整个区域中所有的路由器都得到了这个信息的一个副本。而RIP协议是仅仅向自己相邻的几个路由器发送信息。发送的信息就是与本路由器相邻的所有路由器的链路状态,这是路由器所知道的部分信息。链路状态就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”。OSPF将这个“度量”用来表示费用、距离、时延、带宽等等。而RIP协议发送的信息是:“到所有网络的距离和下一跳路由器”。,8,OSPF和RIP的比较(2),只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。而RIP不管网络拓扑有无发生变化,路由器之间都要定期交换路由器表的信息。,9,基本的OSPF协议,Router ID:一个32bit的无符号整数,是一台路由器的唯一标识,在整个自治系统内惟一。一般是手工配置。OSPF报文直接封装在IP报文中传输。IP头部中协议号为89。OSPF的协议报文不转发,通常OSPF协议报文不被转发,TTL为1。,10,OSPF通过链路状态描述网络的拓扑结构,Stub Networks(该接口所连的网段中只有本路由器自己),Point-to-Point(该接口通过点到点的网络与另一台路由器相连),Broadcast 或NBMA(该接口通过广播或NBMA的网络与多台路由器相连),点到多点(该接口通过点到多点的网络与多台路由器相连),NBMA和点到多点的区别:在OSPF协议中NBMA和点到多点都是指非广播多点可达的网络,但是NBMA网络必须满足全连通的要求,即任意两点都可以不经转发而使报文直达对端。否则我们称该网络为点到多点网络,11,对Stubnet链路状态的描述,Link id:10.0.0.0 /网段Data:255.0.0.0 /掩码Type:Stubnet(3) /类型Metric:50 /花费,12,对P2P链路状态的描述,对本接口网段地址的描述Link id:20.0.0.0 /网段Data:255.0.0.0 /掩码Type:Stubnet(3) /类型Metric:5 /花费对路由器的描述Link id:2.2.2.2 /对端路由器的router IDData:20.0.0.2 /对端路由器的接口地址Type:Router(1) /类型Metric:5 /花费,13,对点对多点链路状态的描述,Link id:40.0.0.1 /网段Data:255.255.255.255 /掩码Type:Stubnet(3) /类型Metric:5 /花费Link id:3.3.3.3 /路由器的router IDData:40.0.0.1 /路由器的接口地址Type:Router(1) /类型Metric:5 /花费Link id:4.4.4.4 /路由器的router IDData:40.0.0.1 /路由器的接口地址Type:Router(1) /类型Metric:5 /花费,14,对广播型链路状态的描述,Link id:30.0.0.3 /网段中DR的接口地址Data:30.0.0.1 /本接口的地址Type:TransNet(2) /类型Metric:50 /花费/DR(6.6.6.6)生成的LSANetmask:255.255.255.0Attached:30.0.0.1 routerAttached:30.0.0.2 routerAttached:30.0.0.3 router,15,加上LSA的头(head)结构,Type:Router/LSA的类型Ls id:1.1.1.1/LSA的连接标示,即路由器的IDAdv rtr:1.1.1.1/生成该LSA的路由器Ls Age:4/本条LSA的老化时间Len:108/LSA的长度Seq:80000001/LSA的序列号Cksum:0 x3542/校验和Link count:7/本LSA中包含的连接个数,16,OSPF协议计算路由过程,由上图可知:OSPF协议计算出路由主要有以下三个步骤:1、描述本路由器周边的网络拓扑结构,并生成LSA。2、将自己生成的LSA在自治系统中传播。并同时收集所有的其他路由器生成的LSA。3、根据收集到的所有的LSA计算路由,17,OSPF协议的报文格式(1),18,OSPF协议的报文格式(2),所有的OSPF协议以24Bytes的通用报头开始。每个字段的含义为:版本:当前版本号为2;类型:可以是如下五种类型中的一种。,19,OSPF协议的报文格式(3),分组长度:包括OSPF首部在内的分组长度,以字节为单位。路由器标识符:标志发送该分组的路由器的接口的IP地址。区域标识符:分组属于的区域标识符。检验和:用来检测分组中的差错。鉴别类型:目前有三种,0无认证;1明文密码;2加密的密码。,20,数据链路数据库的同步过程(1),21,数据链路数据库的同步过程(2),RT1的一个的接口上激活了OSPF协议,并发送了一个Hello报文 (使用组播地址224.0.0.5)。由于此时RT1在该网段中还未发现任何邻居,所以Hello报文中的Neighbor字段为空。RT2收到RT1发送的Hello报文后,为RT1创建一个邻居的数据结构。RT2发送一个Hello报文回应RT1,并且在报文中的Neighbor字段中填入RT1的Router id,表示已收到RT1的hello报文,并且将RT1的邻居状态机置为Init。RT1收到RT2回应的Hello报文后,为RT2创建一个邻居的数据结构,并将邻居状态机置Exstart状态。下一步双方开始发送各自的链路状态数据库。为了提高发送的效率,双方需先了解一下对端数据库中那些LSA是自己所需要的,方法是先发送DD报文,DD报文中包含了对本地数据库中LSA的摘要描述,22,数据链路数据库的同步过程(3),RT1首先发送一个DD报文,宣称自己是Master (MS=1),并规定序列号为x。I=1表示这是第一个DD报文,报文中并不包含LSA的摘要,只是为了协商主从关系。M=1说明这不是最后一个报文。RT2在收到RT1的DD报文后,将RT1的邻居状态机改为Exstart,并且回应了一个DD报文 (该报文中同样不包含LSA的摘要信息)。由于RT2的Router id较大,所以在报文中RT2认为自己是Master,并且重新规定了序列号为y。RT1收到报文后,同意RT2为Master,并将RT2的邻居状态机改为Exchange。RT1使用RT2的序列号y来发送新的DD报文,该报文开始正式地传送LSA的摘要。在报文中RT1将MS=0,说明自己是Slave。,23,数据链路数据库的同步过程(4),RT2收到报文后,将RT1的邻居状态机改为Exchange,并发送新的DD报文来描述自己的LSA摘要,注意:此时RT2己将报文的序列号改为Y+1。上述过程持续进行,RT1通过重复RT2的序列号来确认已收到RT2的报文。RT2通过将序列号+1来确认已收到RT1的报文。当RT2发送最后一个DD报文时,将报文中的M=0,表示这是最后一个DD报文了。RT1收到最后一个DD报文后,发现RT2的数据库中有许多LSA是自己没有的,将邻居状态机改为Loading状态。此时RT2也收到了RT1的最后一个DD报文,但RT1的LSART2都己经有了,不需要再请求,所以直接将RT1的邻居状态机改为Full状态。RT1发送LSR报文向RT2请求所需要的LSA。RT2用LSU报文来回应RT1的请求。RT1收到之后,需要发送LSAck报文来确认。上述过程持续到RT1中的LSA与RT2的LSA完全同步为止。此时RT1将RT2邻居状态机改为Full状态。,24,数据链路数据库的同步过程(5),以上过程是两台路由器由相互没有发现对方的存在到建立邻接关系的过程。或者可以理解为网络中新加入一台路由器时的处理情况。当两台路由器之间的状态机都己经达到Full状态之后,如果此时网络中再有路由变化时,就无须重复以上的所有步骤。只由一方发送LSU报文通知需要更新的内容,另一方发送LSACK报文予以回应即可。双方的邻居状态机在此过程中不再发生变化。,25,OSPF的邻居状态机(1),26,OSPF的邻居状态机(2),Down:邻居状态机的初始状态,是指在过去的DeadInterval时间内没有收到对方的Hello报文。Attempt:只适用于NBMA类型的接口,处于本状态时,定期向那些手工配置的邻居发送Hello报文。Init:本状态表示己经收到了邻居的Hello报文,但是该报文中列出的邻居中没有包含我的Router ID(对方并没有收到我发的Hello报文)。2-Way:本状态表示双方互相收到了对端发送的Hello报文,建立了邻居关系。在广播和NBMA类型的网络中,两个接口状态是DROther的路由器之间将停留在此状态。其他情况状态机将继续转入高级状态。,27,OSPF的邻居状态机(3),ExStart:在此状态下,路由器和它的邻居之间通过互相交换DD报文(该报文并不包含实际的内容,只包含一些标志位)来决定发送时的主/从关系。建立主/从关系主要是为了保证在后续的DD报文交换中能够有序的发送。Exchange:路由器将本地的LSDB用DD报文来描述,并发给邻居。Loading:路由器发送LSR报文向邻居请求对方的DD报文。Full:在此状态下,邻居路由器的LSDB中所有的LSA本路由器全都有了。即,本路由器和邻居建立了邻接(adjacency)状态。,28,DR(Designated Router)和BDR(1),29,DR和BDR(2),在广播和NBMA类型的网络上,任意两台路由器之间都需要传递路由信息,如果网络中有N台路由器,则需要建立N*(N-l)/2个邻接关系。任何一台路由器的路由变化,都需要在网段中进行N*(N-l)/2次的传递。这是没有必要的,也浪费了宝贵的带宽资源。OSPF协议指定一台路由器(Designated Router)来负责传递信息。所有的路由器都只将路由信息发送给DR,再由DR将路由信息发送给本网段内的其他路由器。两台不是DR的路由器 (DROther)之间不再建立邻接关系,也不再交换任何路由信息。,30,DR的产生过程,登记选民:本网段内的运行OSPF的路由器;本村内的18岁以上公民。登记候选人:本网段内的Priority0的OSPF路由器;本村内的30岁以上公民,且在本村居住3年以上。 竞选演说:所有Priority0的OSPF路由器都宣称自己是DR;所有的候选人都认为自己是村长。投票:选Priority值最大的当选,若两台路由器的Priority值相等,则选Router ID最大的当选。选票就是Hello报文,每台路由器将自己选出的DR写入Hello中,发给网段上的每台路由器。选年龄最大,若年龄相等,按姓氏笔画排序。,31,DR选举中的指导思想,选举制DR是各路由器选出来的,而非人工指定的。终身制DR一旦当选,除非路由器故障,否则不会更换。世系制DR选出的同时,也选出BDR来。DR故障后,由BDR接替DR成为新的DR。,32,DR和BDR的说明,网段中的DR并不一定是Priority最大的路由器;同理,BDR也并不一定就是priority第二大的路由器。DR是指某个网段中概念,是针对路由器的接口而言的。某台路由器在一个接口上可能是DR,在另一个接口上可能是BDR,或者是DROther。只有在广播和NBMA类型的接口上才会选举DR,在p2p和point-to-muiltipoint类型的接口上不需要选举。两台DROther路由器之间不进行路由信息的交换,但仍互相发送Hello报文。他们之间的邻居状态机停留在2-Way状态。,33,由于DR的出现带来的协议的变化,为了减少在一个网段内带宽的占用,提出了DR的概念。将同一网段内LSDB同步的次数由O(N)2减小为O(N)。在同一网段中,路由器的角色划分为DR,BDR,DROther。路由器之间的类型分为Unknown,Neighbor,Adjacency。增加了一种接口类型-Point-to-Multipoint。增加了一种LSA-Network-LSA,由DR生成,描述了本网段的链路状态。,34,OSPF在大型网络中可能遇到的问题,路由器数量的增多会导致LSDB非常庞大,这会占用大量的存储空间。LSDB的庞大会增加运行SPF算法的复杂度,导致CPU负担很重。由于LSDB很大,两台路由器之间达到LSDB同步会需要很长时间。网络规模增大之后,拓扑结构发生变化的概率也增大,网络会经常处于“动荡”之中。更糟糕的是:每一次变化都会导致网络中所有的路由器重新进行路由计算。,35,OSPF划分区域(1),36,OSPF划分区域(2),OSPF协议通过将自治系统划分成不同的区域(Area),来解决上述问题。区域是在逻辑上将路由器划分为不同的组。区域的边界是路由器,这样会有一些路由器属于不同的区域,这些路由器叫做ABR。分成区域之后,给OSPF协议的处理带来了很大的变化。每一个网段必须属于一个区域,或者说每个运行OSPF协议的接口必须指明属于某一个特定的区域,区域用区域号 (Area ID)来标识。区域号是一个从0开始的32位整数。不同的区域之间通过ABR来传递路由信息。,37,区域间的路由计算(1),38,区域间的路由计算(2),只有同一个区域内的路由器之间会保持LSDB的同步,网络拓扑结构的变化首先在区域内更新。区域之间的路由计算是通过ABR来完成的。ABR首先完成一个区域内的路由计算,然后查询路由表,为每一条OSPF路由生成一条Type3类型的LSA,内容主要包括该条路由的目的地址、掩码、花费等信息。然后将这些LSA发送到另一个区域中。在另一个区域中的路由器根据每一条Type3的LSA生成一条路由,由于这些路由信息都是由ABR发布的,所以这些路由的下一跳都指向该ABR。,39,划分区域后的好处,由于划分区域后ABR是根据本区域内的路由生成LSA,则可以根据IP地址的规律先将这些路由进行聚合后再生成LSA,这样做可以大大减少自治系统中LSA的数量,注意路由聚合只在ABR上配置有效。划分区域之后,网络拓扑的变化首先在区域内进行同步,如果该变化影响到聚合之后的路由,才会由ABR将该变化通知到其他区域。大部分的拓扑结构变化都会被屏蔽在区域之内了。,40,骨干区域与虚连接(1),41,骨干区域与虚连接(2),OSPF划分区域之后,并非所有的区域都是平等的关系。其中有一个区域是与众不同的,它的区域号是0,通常被称为骨干区域。由于划分区域之后,区域之间是通过ABR将一个区域内的己计算出的路由封装成了Type3类的LSA发送到另一个区域之中来传递路由信息。此时的LSA中包含的已不再是链路状态信息,而是纯粹的路由信息了。此时的OSPF是基于D-V算法,这时有可能产生“路由自环”。我们的处理办法是所有ABR将本区域内的路由信息封装成LSA后,统一的发送给一个特定的区域,再由该区域将这些信息转发给其他区域,这个区域就是骨干区域。,42,骨干区域与虚连接(3),由于网络的拓扑结构复杂,有时无法满足每个区域必须和骨干区域直接相连的要求,OSPF提出了虚连接的概念。虚连接是指在两台ABR之间,穿过一个非骨干区域,建立的一条逻辑上的连接通道。可以理解为两台ABR之间存在一个点对点的连接。逻辑通道是指两台之间的多台运行OSPF的路由器只是起到一个转发报文的作用,两台ABR之间直接传递路由信息。这里的路由信息是指ABR生成的Type3的LSA,区域内的路由器同步方式没有因此改变。注意:如果自治系统被划分成一个以上的区域,则必须有一个区域是骨干区域,并且保证其它区域与骨干区域直接相连或逻辑上相连,且骨干区域自身也必须是连通的。,43,与AS外部通信(1),44,与AS外部通信(2),OSPF是自治系统内部路由协议,负责计算同一个自治系统内的路由。对于OSPF来说,整个网络只有“自治系统内”和“自治系统外”之分。需要注意的是:“自治系统外”并不一定在物理上或拓扑结构中真正的位于自治系统的外部,而是指那些没有运行OSPF的路由器或者是某台运行OSPF协议的路由器中没有运行OSPF的接口。,45,与AS外部通信(3),作为一个IGP,OSPF同样需要了解自治系统外部的路由信息,这些信息是通过ASBR(自治系统边界路由器)获得的,ASBR是那些将其他路由协议(包括静态路由和接口的直接路由)发现的路由引入到OSPF中的路由器。同样需要注意的是:ASBR并不一定真的位于AS的边界,而是可以在自治系统中的任何位置。,46,与AS外部通信(4),ASBR为每一条引入的路由生成一条Type5类型的LSA,主要内容包括该条路由的目的地址、掩码和花费等信息。这些路由信息将在整个自治系统中传播(STUB AREA除外)。计算路由时先在最短路径树中找到ASBR的位置,然后将所有由该ASBR生成的Type5类型的LSA都当作叶子节点挂在ASBR的下面。以上的方法在区域内部是可行的,但是由于划分区域的原因,与该ASBR不处于同一个区域的路由器计算路由时无法知道ASBR的确切位置(该信息被ABR给过滤掉了,因为ABR是根据区域内的己生成的路由再生成Type3类型的LSA)。协议规定如果某个区域内有ASBR,则这个区域的ABR在向其他区域生成路由信息时必须单独为这个ASBR生成一条Type4类型的LSA,内容主要包括这个ASBR的Router id和到他所需的花费值。,47,与AS外部通信(5),OSPF将所引入的自治系统外部路由分成两类:Type1是指引入的是IGP路由(例如RIP,STATIC),由于这类路由的可信程度高一些,所以计算出的外部路由的花费与自治系统内部的路由花费的数量级是相同的,即到第一类外部路由的花费值=本路由器到相应的ASBR的花费值+ASBR到该路由目的地址的花费值。Type2是指引入的是BGP路由,由于这类路由的可信度比较低,所以OSPF协议认为从ASBR到自治系统之外的花费远远大于在自治系统之内到达ASBR的花费。所以计算路由花费时将主要考虑前者,即到第二类外部路由的花费值=ASBR到该路由目的地址的花费值。如果该值相等,再考虑本路由器到相应的ASBR的花费值。可见OSPF一共将路由分为四级,按优先级从高到低排列:区域内路由区域间路由自治系统外一类路由自治系统外二类路由,48,与AS外部通信(6),其中前两种路由在路由表中的优先级是一样的,缺省值为10;后两种路由在路由表中的优先级是相同的,缺省值是150。,49,Stub区域和路由聚合(1),RTA,RTB,Virtual Link,Area 0,Area 12,Area 19,Area 8,192.1.1.0/24,192.1.2.0/24,192.1.3.0/24,50,Stub区域和路由聚合(2),Stub区域是只和一个区域相连的非骨干区域。Stub区域是指那些不传播Type5类型的LSA的区域。在这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。为了保证到自治系统外的路由依旧可达,由该区域的ABR生成一条缺省路由传播到区域内。,51,Stub区域和路由聚合(3),配置Stub的注意事项:骨干区域不能配置成Stub区域,虚连接不能穿过Stub区域。如果想将一个区域配置成Stub区域,则该区域中的所有路由器都必须配置该属性。Stub区域内不能存在ASBR,即自治系统外部路由不能引入到区域内,区域的自治系统外部路由也不能在本区域内传播和传递到区域外。路由聚合只有在ABR上配置才会有效。,52,LSA报文的分类(1),Type=1(RouterLSA):是最基本的LSA类型,所有运行OSPF的路由器都会生成这种LSA。主要描述本路由器运行OSPF的接口的连接状况,花费等信息。这种类型的LSA传递的范围是它所属的整个区域。Type=2(NetworkLSA):本类型的LSA由DR生成。一个网段中有了DR之后不仅发送报文的方式有所改变,链路状态的描述也发生了变化。在DROther和BDR的Router LSA中只描述到DR的连接,而DR则通过Network LSA来描述本网段中所有己经同其建立了邻接关系的路由器。这种类型的LSA传递的范围是它所属的整个区域。,53,LSA报文的分类(2),Type=3(Network Summary):本类型的LSA由ABR生成。ABR完成它所属一个区域中的区域内路由计算之后,查询路由表,将本区域内的每一条OSPF路由封装成LSA发送到区域外。这种类型的LSA传递的范围是ABR中除了该LSA生成区域之外的其他区域。Type=4(ASBR Summary):本类型的LSA同样是ABR生成。内容主要是描述到达本区域内部的ASBR的路由。这种类型LSA传递的范围与Type3的LSA相同。,54,LSA报文的分类(3),Type=5(AS External LSA):本类型的LSA由ASBR生成。主要描述了到自治系统外部路由的信息,本类型的LSA是一种与区域无关的LSA类型,它并不与某一个特定的区域相关。这种类型的LSA传递的范围整个自治系统 (STUB区域除外)。,55,6、接口分类及路由器分类OSPF协议根据链路层媒体不同分为以下四种网络类型:Broadcast、NBMA、Point-to-Point、Point-to-Multipoint路由器根据在自治系统中的不同角色划分为:IAR、ABR、BBR、ASBR一个运行OSPF协议的接口状态根据接口的不同 类型可划分为:DR、BDR、DROther、point-to-point,56,接口分类及路由器分类,OSPF协议根据链路层媒体不同分为以下四种网络类型:Broadcast、NBMA、Point-to-Point、Point-to-Multipoint路由器根据在自治系统中的不同角色划分为:IAR、ABR、BBR、ASBR一个运行OSPF协议的接口状态根据接口的不同 类型可划分为:DR、BDR、DROther、point-to-point,57,OSPF的部署-何时需要运行OSPF协议,网络的规模:网络中的路由器在10台以上;中等或大规模的网络。网络的拓扑结构:网络的拓扑结构为网状,并且任意两台路由器之间都互通的需求。其它特殊的需求:要求路由变化时能够快速收敛,要求路由协议自身的网络开销尽量降低。对路由器自身的要求:运行OSPF协议时对路由器的CPU的处理能力及内存的大小都有一定的要求,性能很低的路由器不推荐使用OSPF协议。,58,系统规划,划分区域的基本原则按照自然的地区或者行政单位划分按照网络中的高端路由器来划分按照IP地址的规律,便于路由聚合一些制约条件区域的规模,区域的规模不能太大,否则相当于没有划分区域。一般区域内不能超过70台路由器。与骨干区域连通,由于所有区域必须和骨干连通,我们必须合理划分骨干区域的位置。ABR的处理能力。ABR是最繁忙的路由器。担负了在骨干和非骨干之间交换路由信息的重任。在一台ABR上不要配置太多的区域,一般是一个骨干区域+一个或两个非骨干区域,59,6.4 BGP(RFC 1771-1772),6.4.1 BGP协议的基本原理BGP是一种自治系统间的动态路由发现协议。BGP最新的版本是BGP-4。1、BGP协议的特点BGP是一种外部路由协议,与OSPF、RIP等内部路由协议不同,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择比较好的路由。IGP负责在AS内部选择花费最小的路由,EGP负责选择AS间花费比较小的路由。通过携带AS路径信息,可以彻底解决路由循环问题。,60,BGP,BGP是一种自治系统间的动态路由发现协议。BGP最新的版本是BGP-4。BGP是一种外部路由协议,与OSPF、RIP等内部路由协议不同,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择比较好的路由。IGP负责在AS内部选择花费最小的路由,EGP负责选择AS间花费比较小的路由。通过携带AS路径信息,可以彻底解决路由循环问题。传送协议:TCP,端口号179支持CIDR。,61,为什么必须用外部网关路由协议,因特网的规模太大,使得自治系统之间路由选择非常困难。目前主干网路由器中的路由表的项目数己超过了十万个网络前缀。如果采用IGP的方法计算路由开销太大了。对于自治系统之间的路由选择,要寻找最佳路由是很不现实的。由于各自治系统是运行自己选定的内部路由选择协议,使用本自治系统指明的路径代价,因此,当一条路径通过几个不同的自治系统时,要想对这样的路径计算出有意义的代价是不可能的。自治系统之间的路由选择必须考虑有关策略。,62,BGP的工作机制(1),63,BGP的工作机制(2),BGP系统作为应用层协议运行在一个特定的路由器上。系统初启时通过发送整个BGP路由表交换路由信息,之后为了更新路由表只交换更新消息 (update message)。系统在运行过程中,是通过接收和发送keep-alive消息来检测相互之间的连接是否正常。发送BGP消息的路由器称为BGP发言人(Speaker),它不断的接收或产生新路由信息,并将它广告给其它的BGP发言人。,64,BGP的工作机制(3),一般情况下一条路由是从自治系统内部产生的,它由某种内部路由协议发现和计算,传递到自治系统的边界,由自治系统边界路由器 (ASBR)通过EBGP连接传播到其它自治系统中。,65,BGP的工作机制(4),对一个具体的ASBR来说,其路由的来源有两种:从对等体接收的或者从IGP引入的。对于接收的路由,根据其属性 (如AS路径、团体属性等)进行过滤,并设置某些属性 (如本地优先、MED值等),之后若需要的话,将具体的路由聚合为超网路由。BGP可能从多个对等体收到目的地相同的路由,根据规则选择最好的路由并加入IP路由表。对于IGP路由,则要经过引入策略的过滤和设置。BGP发送优选的BGP路由和引入的IGP路由给对等体。,66,BGP的两种邻居IBGP和EBGP,67,BGP路由通告原则,多条路径时,BGP Speaker只选最优的给自己使用;BGP Speaker只把自己使用的路由通告给相邻体;BGP Speaker从EBGP获得的路由会向它所有BGP相邻体通告(包括EBGP和IBGP);BGP Speaker从IBGP获得的路由不向它的IBGP相邻体通告;BGP Speaker从IBGP获得的路由是否通告给它的EBGP相邻体要依IGP和BGP同步的情况来决定;连接一建立,BGP Speaker将把自己所有BGP路由通告给新相邻体。,68,BGP的同步,BGP与IGP需要同步,或者AS内的所有BGP路由器能组成IBGP的全连通网络,可以不需要同步。,69,成为BGP路由的途径-纯动态注入,70,成为BGP路由的途径半动态注入,71,成为BGP路由的途径静态注入,72,BGP的报文种类,BGP对等体间通过发送OPEN报文来交换各自的版本、自治系统号、保持时间、BGP标识符等信息,进行协商。-打招呼“你好,跟我交个朋友吧!KEEPALIVE报文在BGP对等体间周期地发送,以确保连接保持有效。-我还活着,别不理我。UPDATE报文携带的是路由更新信息。其中包括撤销路由信息和可达路由信息及其路径属性。-有新闻当BGP检测到差错 (连接中断、协商出错、报文差错等)时,发送NOTIFICATION报文,关闭同对等体的连接。-我不跟你玩了!,73,BGP的路径属性,BGP路由属性是一套参数,它对特定的路由进行了进一步的描述,使得BGP能够对路由进行过滤和选择。在配置路由策略时我们将广泛地使用路由属性,但是不是所有路由属性都要被用上。表达了路由的特征过渡和非过渡必遵和可选的便于扩展截至目前共16种属性,74,主要的BGP路由属性(1),Origin 起点属性:定义路径信息的来源,标记一条路由是怎样成为BGP路由的,如IGP,EGP,Incomplete等。AS-Path AS路径属性:是路由经过的AS的序列,即列出在到达所通告的网络之前所经过的AS的清单。BGP发言者将自己的AS前置到接收到的AS路径的头部,它可以防止路由循环,并用于路由的过滤和选择。,75,主要的BGP路由属性(2),Next-hop 下一跳属性:包含到达更新消息所列网络的下一跳边界路由器的IP地址。BGP的下一跳与IGP有所不同,它可以是通告此路由的对等体的地址,如EBGP,这同IGP是相同的。而在其它情况下,BGP使用第三方的下一跳,如BGP对从EBGP对等体获得的下一跳不加改变的在自治系统内传递;在多路访问媒体上,BGP以路由的实际来源为下一跳,即使它不是BGP对等体。MED(Multi-Exit-Discriminators)属性:当某个AS有多个入口时,可以用MED属性来帮助其外部的邻居路由器选择一个较好的入口路径。一条路由的MED值越小,其优先级越高。,76,主要的BGP路由属性(3),Local-Preference本地优先属性:本地优先属性用于在自治系统内优选到达某一个目的地的路由。反映了BGP发言人对每个外部路由的偏好程度。本地优先属性值越大,路由的优选程度就越高。Community 团体属性:团体属性标识了一组具有相同特征的路由信息,与他所在的IP子网和自治系统无关。,77,起点(Origin)属性,路由是用“network”命令注入到BGP路由表中的,则Origin属性为IGP路由是通过EGP得到的,则Origin属性为EGP路由是用“redistribute”命令注入到BGP路由表中的,则Origin属性为Incomplete三种起点的优先级从高到低为:IGP,EGP,Incomplete,78,AS-Path属性,79,本地属性优先,用来帮助AS区域内部的路由器选择到AS区域外部使用较好的出口。只在本AS内部有效。,80,MED属性,用于向外部邻居路由器指示进入某个具有多个入口的AS的优先路径。当某个AS有多个入口时,可以用MED属性来帮助其外部的邻居路由器来选择一个较好的入口路径,即优先选择MED较小的入口路径。,81,BGP路由选择过程,如果此路由的下一跳不可达,忽略此路由。选择本地优先级较大的路由。选择本地路由器始发的路由(本地优先级相同)选择AS路径较短的路由依次选择起点类型为IGP,EGP,Incomplete类型的路由选择MED较小的路由选择Routerid较小的路由,82,解决大规模网络中遇到的问题,BGP路由表庞大BGP聚合IBGP相邻过多,逻辑全连接不易实现BGP联盟BGP反射在复杂网络环境中路由的变化过于频繁BGP衰减,83,Thanks!,