《高级路由技术(理论篇)》 课件 单元8:使用BGP路由实现域间路由选择_第1页
《高级路由技术(理论篇)》 课件 单元8:使用BGP路由实现域间路由选择_第2页
《高级路由技术(理论篇)》 课件 单元8:使用BGP路由实现域间路由选择_第3页
《高级路由技术(理论篇)》 课件 单元8:使用BGP路由实现域间路由选择_第4页
《高级路由技术(理论篇)》 课件 单元8:使用BGP路由实现域间路由选择_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

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

文档简介

单元8:使用BGP路由实现域间路由选择《高级路由技术》(理论篇)主讲教师:XXX技术背景从技术角度讲,Internet这样遍布全世界庞大的网络,需要一种机制确保信息从世界一端可靠传输到另一端,这个机制就是BGP(BorderGatewayProtocol,边界网关协议)。在Internet中使用唯一进行自治系统间路由协议就是BGP,BGP构成整个Internet的核心网络,有人把BGP称为“BGP是Internet的心脏”。学习目标认识边界网关BGP路由协议

掌握BGP域间路由技术原理了解BGP路由常见属性配置BGP路由协议,实现域间路由选择8.1认识BGP域间路由 RIP、OSPF和IS-IS等都属于内部网关协议(InteriorGatewayProtocol,IGP)。在一个网络内部,或者一个自治系统(AutonomousSystem,AS)内部提供路由。各个AS系统都有专门技术负责AS内路由、网络结构及编址方案。一个ISP就是一个AS系统,有时一个企业网络也为一个单独AS系统。整个Internet是不同AS系统集合,Internet中每个AS自治系统都有一个唯一自治系统编号,也就是AS号。8.1.1什么是自治系统AS8.1认识BGP域间路由 常见RIP、OSPF路由属于内部网关协议(InteriorGatewayProtocol,IGP)。IGP设计在一个AS自治系统内部(通常是园区网络)提供路由选择,在园区网中提供稳定、可扩展以及快速的收敛选路机制。与IGP相对应另一种路由协议是外部网关协议(ExteriorGatewayProtocol,EGP)。与IGP不同,EGP的设计并不用于在自治系统内部提供路由选择功能,EGP用来连接不同自治系统,实现不同的AS自治系统之间路由选择。8.1.2区别IGP与EGP8.2熟悉BGP路由特征BGP也是一种矢量路由协议,BGP通告的也是邻居路由表信息。但BGP不使用跳数,使用一系列路径属性衡量路由优劣,称之为路径矢量路由协议。在BGP路由计算中,最典型路径属性是AS列表,BGP路由器对外通告每一条路由,都包括一个列表:记录这条路由经过AS号。AS列表说明如果要到达目的地,途中经过哪些AS。8.2.1BGP路径矢量特征8.2熟悉BGP路由特征距离矢量路由协议RIP使用水平分割来、毒性逆转、触发更新等机制避免环路产生;OSPF使用SPF算法避免环路。BGP也需要防止路由环产生。BGP通过检测收到路由AS列表。如果AS列表中包含自己AS号,丢弃这条更新,意味着这条路由之前已经过本地AS,并被通告出去。如果接收将导致路由环路产生。8.2.2BGP环路检测机制8.2熟悉BGP路由特征Internet采用逐跳路由选择模式,BGP非常适用于当前Internet的AS间路由选择。BGP路由支持遵循逐跳路由选择策略,也就是说,网络管理人员不能左右邻接AS,如何转发数据流,但可以决定数据流如何前往指定AS。如图AS65006经过AS65004,到达AS65001中192.0.1.0/24目标网络,可以采用多条路径传输。虽然AS65006经过AS65004到达AS65000有多条路径选择;但实际上,AS65006并不知道所有路径,因为AS65004只将其最佳路径:“65004—>65002—>65000”,通告给AS65006。8.2.3BGP逐跳路由选择特征8.3了解BGP的邻居关系RIP使用UDP作为传输协议,使用端口号为UDP520;OSPF的路由协议报文承载在IP报文,使用的IP协议号为89。而BGP使用TCP作为传输协议,其端口号为TCP179。这也是第一个以TCP作为传输协议的路由协议。BGP使用TCP作为传输协议,是因为TCP是面向连接协议,可以保障路由传输可靠性。由于TCP协议拥有确认和重传机制,这样BGP路由信息传输中就无需支持确认、重传机制,简化了BGP的实现。BGP利用TCP协议来实现路由会话的建立、流量控制、重传和会话拆除;提供可靠、稳定的AS域间路由选择,相比OSPF这样的IGP协议,BGP路由协议不是非常关注网络的收敛速度。8.3.1熟悉BGP协议报文8.3了解BGP的邻居关系在BGP中,把运行BGP的路由器称BGP发言者(BGPSpeaker)。Internet中存在着成千上万BGP发言者。每个BGP发言者无法与所有BGP发言者建立邻居关系,通常都是本地AS内的BGP发言者与邻居AS发言者。在BGP中,BGP邻居另个叫法为BGP对等体(BGPPeer)。BGP使用TCP建立对等体间会话。当两个BGP发言者之间建立起TCP连接后,双方发送Open(打开)消息,标识自己,建立邻居关系。BGP邻居关系分为:外部BGP(EBGP,ExternalBGP)和内部BGP(IBGP,InternalBGP)。8.3.2区别EBGP与IBGP8.3了解BGP的邻居关系External/ExteriorBGP,外部BGP,运行于不同AS之间的BGP称为外部BGP。为了防止AS之间产生环路,当BGP设备接受EBGP对等体发来的路由时,会将路由信息AS_path列表中带有本地AS号的路由丢弃。EBGP将路由信息从一个自治系统传递到另一个自治系统,在不同的自治系统之间交换路由选择信息。默认情况下,BGP协议要求建立EBGP邻居关系的两个BGP发言者,必须在物理上直接相连。但也可以改变EBGP这种默认行为,在非直连的两个BGP发言者之间建立EBGP邻居。当需要在非直连的两个BGP发言者之间建立EBGP邻居时,称为EBGP多跳(EBGP-Multihop)。8.3.3掌握EBGP邻居关系8.3了解BGP的邻居关系使用AS路径列表,不能防止AS自治系统内部的BGP路由环路,是因为当一条BGP路由在AS自治系统内部传递时,AS列表并不会产生变化。对于一个BGP发言者来说,只有当它将路由通告给它的EBGP对等体时,才会将本地的AS号添加到AS路径列表中。AS路径列表中也不记录在自治系统内部处理过该路由信息的路由器。如图中AS65001中BGP发言者,三台路由器R1、R2、R3间建立IBGP邻居关系。R1路由器从外部自治系统BGP发言者R4路由器上,收到BGP路由通告。然后,将此路由信息,通告给本地自治系统中的IBGP对等体R2和R3路由器。8.3.4掌握IBGP邻居关系和水平分割8.4生成BGP路由表BGP路由不仅仅生成、更新一张路由表,BGP路由还维护着一张邻居列表,列表中是记录所有与本地建立了邻居关系的BGP对等体。BGP路由将从邻居路由器上接收到的所有BGP路由,都加入到BGP路由表中;然后,再进行路径的选择。但是BGP最终只会把最优路径,加入到IP路由表中,通过IP路由表中的路由条目,指导接受到IP数据包转发。当本地BGP对等体,将BGP路由通告给邻居时,仍然是将BGP路由表中的路由条目通告给邻居。邻居收到后,也会将路由加入到它的BGP路由表中。8.5掌握BGP基础配置启用BGP路由协议后,路由器将不会自动与任何对等体,需要建立邻居关系并通告路由信息。由于BGP路由使用TCP会话来完成所有的操作,所以必须通过手工的方式,为BGP路由器指定它要与哪个对等体建立邻居关系。在BGP路由协议工作过程中不存在任何自动发现、并自动建立邻居关系的机制。在BGP路由进程模式下,使用如下命令通过手工的方式指定对等体。8.5.1BGP基本配置8.5掌握BGP基础配置默认情况下,BGP路由协议按照BGP的路径属性,使用BGP路由下一跳(Next_hop)属性规则,以及BGP发言者设置下一跳(Next_hop)属性规则,对外通告BGP路由。但有时需要针对BGP的下一跳属性进行修改,简化BGP路由选择操作。AS1中存在一条指向1.0.0.0/8网络路由,现在需要将这个网络通告给AS2中的BGP路由器。8.5.2配置BGP下一跳属性8.5掌握BGP基础配置当需要在本地的BGP发言者上,断开与某个对等体的邻居关系时,可以在BGP路由进程模式下使用如下命令。neighborip-addressshutdown使用此命令断开与某个BGP对等体的邻居关系时,无需删除与这个邻居有关的配置。当需要重新启用与对等体的邻居关系时,使用如下命令恢复。noneighborip-addressshutdown8.5.3关闭BGP邻居8.6熟悉BGP路由消息类型BGPv4协议有5种消息报文:open(建立)、update(更新)、notification(通知)、keepalive(保持活跃)、route-refresh(路由刷新),承担的功能描述如下。Open消息是TCP连接建立后发送的第一个报文,包含本地speaker信息以及与后面对等体之间建立TCP会话的信息,实现建立BGP对等体之间的连接关系。BGP用Open消息来建立BGP邻居关系。当BGP发言者之间的TCP连接建立起来后,双方都要发送一个Open消息标识自己。Open消息中所有信息都要被协商和接受。当BGP发言者通过发送和接收Open消息,建立起BGP邻居关系后,双方就开始使用Update消息交换路由信息。Update消息中包含可达路由、需要删除的路由和BGP路径属性值。8.7了解BGP路由状态机当路由器启用了BGP路由后,首先进入的就是空闲状态(Idle)状态。在Idle状态下,BGP发言者不会接收BGP的会话请求,这时,BGP进程不会拥有任何资源。只有在收到BGPStart事件(IE1)后,才会给BGP进程分配资源。当BGPStart事件发生后,BGP路由器开始初始化它的BGP资源,并尝试和已配置BGP对等体建立TCP会话;同时,它也将侦听来自对等体的TCP会话请求。如果由于TCP连接被关闭或者其他错误等,状态机将保持在Idle状态。如果没有发生任何异常,状态机将过渡到连接(Connect)状态。通常BGP状态机如果停留在Idle状态,可能有以下原因。在远端对等体上没有正确的配置本地对等体的IP地址和自治系统号。在本地对等体上没有正确的配置远端对等体的IP地址和自治系统号。本地或对端没有到达对方的路由。访问控制列表或防火墙阻断了TCP的179端口,因为BGP需要使用它。8.7.1空闲状态(Idle)8.7了解BGP路由状态机在连接状态(Connect)状态下,BGP等待TCP连接的建立。如果TCP连接建立成功,状态机过渡到打开发送(OpenSent)状态。如果TCP连接没有成功建立,状态机将过渡到激活状态(Active)。如果连接重试计时器超时,状态机仍保持在Connect状态。如果遇到其他事件(见表6-1),状态机将返回到Idle状态。8.7.2连接状态(Connect)8.7了解BGP路由状态机如果BGP发言者无法和对等体建立TCP连接,那么状态机将进入到Active状态。此时,BGP发言者尝试重新进行TCP会话连接,并重置重连接计时器。如果在重连接过程中成功建立TCP连接。那么将发送一个Open消息,并过渡到OpenSent状态。如果在重连接计时器超时后,还没有建立TCP会话,状态机将重启重连接计时器,并返回Connect状态。8.7.3激活状态(Active)8.7了解BGP路由状态机当BGP对等体之间成功建立了TCP连接后,BGP发言者便发送一个Open消息,从而进入OpenSent状态。此时,本地对等体将等待远端发送Open消息。当收到对端Open消息后,BGP对等体检查消息中字段是否匹配。如果发现了错误,将会给远端对等体发送一个Notification消息,并返回到Idle状态。如果此时TCP连接断开,状态机将返回Active状态。如果在检查Open消息时,检测到错误,BGP将发送一个Keepalive报文,并且重置Keepalive计时器。在这个阶段,双方要协商保持时间,并且选择双方中较小的保持时间;之后,状态机将过渡到OpenConfirm状态。通常BGP不会在OpenSent状态停留较长时间。当本地对等体收到远端的OPEN消息后,将会很快发送一个Keepalive报文,并过渡到OpenConfirm状态。8.7.4打开发送状态(OpenSent)8.7了解BGP路由状态机在打开确认状态(OpenConfirm)状态下,本地对等体将等待从远端收到一个Keepalive报文。如果收到对端的Keepalive报文,过渡到最终已建立状态(Established)。如果收到了一个Notification消息,将返回到Idle状态。BGP对等体只会在打开确认状态(OpenConfirm)停留一定时间,来等待Keepalive报文。如果在保持计时器超市后,还没有收到报文,将返回到Idle状态。8.7.5打开确认状态(OpenConfirm)8.7了解BGP路由状态机已建立状态(Established)是BGP对等体协商的最终状态。在这个状态下,BGP对等体开始通过发送Update报文,交换路由信息。当对等体收到Update或Keepalive报文后,保持计时器将被重置。如果收到Notification消息,则返回到Idle状态。如果BGP对等体在Update消息中检测到错误,它将发送一个Notification消息到对等体,并且返回Idle状态。如果保持计时器超时,或者由于其他的一些事件,如BGPStop,状态机也将返回到Idle状态。8.7.6已建立状态(Established)8.8掌握BGP路径属性起源属性(ORIGIN)是公认、强制属性,指明这条路由信息来源。在BGP更新中,每条路由信息都包括这种属性,而且接收它的BGP发言者,也必须识别和处理这种属性。当BGP发言者拥有到达相同目的网络的路由时,起源属性作为一个决定路径优劣因素。这里的起源,是指始发BGP发言者,将这条路由通告到BGP中的方式。R1路由器拥有一条直连路由1.0.0.0/8,R2路由器拥有一条直连路由2.0.0.0/8。R1路由器使用network将直连路由通告到BGP中,R2路由器通过redistribute将直连路由重分发到BGP中。当R4路由器收到这两条路由后,看到1.0.0.0/8路由的起源属性为“i”;2.0.0.0/8路由的起源属性为“?”。8.8.1起源属性8.8掌握BGP路径属性AS1中的路由器R1作为始发路由器,将路由1.0.0.0/8通告到BGP中,在发送给EBGP邻居之前,将本地的AS号加入到AS路径列表中。但是R1路由器从本地来看,1.0.0.0/8的路径属性为空。R2路由器收到此路由通告后,看到AS的路径列表为“1”,表明该条路由始于AS1。R2再将路由通告给它的IBGP邻居R3路由器时,不会修改AS路径列表,所以R3路由器看到的路径列表仍然为“1”。R3路由器把这条路由再通告给EBGP邻居R4路由器时,就会附加上本地的AS号。此时,R4路由器看到这条路由的路径列表就为“2,1”,表明该路由始于AS1,并在传输路径中经过了AS2。对于路由器R4来说,如果要到达网络1.0.0.0/8,需要先后经过AS2和AS1二个自治域。8.8.2AS路径属性8.8掌握BGP路径属性下一跳属性(NEXT_HOP)也是一个公认又强制属性,所有的BGP路由携带该属性,所有BGP发言者都必须识别和处理该属性。下一跳属性指出要到达目标网络,需要将数据发送到的下一个接口的地址或者路由器。在IP路由表中,所有路由都有下一跳,告诉路由器应将收到IP数据包发送到哪里。在BGP路由表中,下一跳也一样,告诉路由器去往某自治系统中的网络时,应该将数据包送往何处。但在BGP中,对于EBGP路由和IBGP路由下一跳,存在一些差别。8.8.3下一跳属性8.8掌握BGP路径属性R2路由器通过EBGP网络,从R1路由器上接收到1.0.0.0/8的路由更新,路由的下一跳属性为200.1.1.1,即R1路由器发送路由更新的地址。当R2路由器再将该路由通告给IBGP中的邻居路由器R3时,根据BGP路由的规定,R2路由器不对此路由的下一跳进行修改。也就是说,当R3路由器接收到这条路由后,看到的下一条属性仍然为200.1.1.1,而不是R2发送路由更新的地址10.1.1.1。这就是指EBGP通告下一跳属性,会被传递到IBGP中。需要注意的是:BGP是一个以自治系统为跳数路由协议,所有EBGP通告下一跳会传输到邻居AS中。8.8.3下一跳属性8.8掌握BGP路径属性本地优先级属性(LOCAL_PREF)是一个公认的、自由决定属性,也就是说每个BGP发言者都必须能够识别该属性,但是BGP更新中可以不携带该属性。本地优先级属性也是BGP协议进行路径决策属性,优先级越高(数值越大)的路径,被选为最佳路径可能性越大。如果BGP发言者收到多条到达同一目标网络路径,它将比较这些路径本地优先级,选择本地优先级最高作为最佳路径,本地优先级默认值为100。需要注意的是:本地优先级属性只在AS内部传播,也就是IBGP对等体之间。它不会被通告给EBGP对等体,这也是“本地”一词的意义。本地优先级属性用来指导本地AS中的路由器,如果数据流要离开本地AS,需要通过首选路径是哪条。8.8.4本地优先级属性8.8掌握BGP路径属性多出口鉴别器属性(MED)是一个可选的、非传递属性。MED也称为度量值(metric),被称为AS间度量值。它可以影响BGP路径选择过程。MED属性与本地优先级属性不同,MED属性可以在自治系统之间传送。也就是说MED属性可以被发送给EBGP的对等体。当其他自治系统接收到MED属性后,会将其传播给IBGP对等体。但是,当该路由再被通告给另一个自治系统时,MED属性值将会丢失。R1路由器将设置了MED属性值的路由,通告给R2路由器;此时,MED属性值也被传播到R2路由器上。接下来,R2路由器将该路由通过IBGP网络,通告给R3路由器时,仍然携带MED属性值。但是,当R3路由器再将其通告给其他自治系统时,MED属性值将不被传播。8.8.5多出口鉴别器属性8.8掌握BGP路径属性AS65000域通过设置通告给EBGP邻居的MED属性值,可以影响数据流进入本地自治系统的路径,即所有发往本地自治系统1.0.0.0/8网络的数据,都会从R2路由器进入。需要说明的是:通过设置路由的MED属性值,只能影响邻接AS将数据发往本地AS的入口,MED属性值不能影响数据进入AS65001的路径。因为MED属性值不会再被传递到AS65001以外自治系统,而且BGP遵循逐跳路由选择模式。在默认情况下,BGP路由只比较来自相同自治系统路由MED值。虽然AS1与AS2都设置了路由的MED属性值,但是AS65001中的BGP发言者,将会忽略路由的MED值,不将其作为路径决策的依据。如果要使BGP比较来自不同自治系统中路由的MED值,必须在BGP路由进程模式下,使用“bgpalways-compare-med”命令,改变BGP的默认行为。8.8.5多出口鉴别器属性8.9BGP高级配置当使用neighbor命令为本地对等体指定对端IP地址后,本地BGP进程查找路由表,选择到达对端IP地址最优出接口和源IP地址。在使用neighbor命令时,对等体双方配置到对端IP地址必须对应,或者说互为镜像,这样才能成功建立邻居关系。默认情况下,BGP选择本地的源地址都通过查找路由表并使用物理接口IP地址。但在一个自治系统内部中存在大量BGP对等体,如果全部使用物理地址作为对端IP地址,将带来更多配置工作,而且很容易因为少一条配置,导致邻居关系不能建立。8.9.1配置EBGP多跳和源地址8.9BGP高级配置正常情况下,如果要实现BGP冗余备份,需要在路由器R1和R2上分别建立两个BGP邻居关系,也就是建立两个TCP会话,两个TCP会话各使用一条物理链路。通过这种方式建立连接,实现链路的冗余备份。但使用两条物理链路建立连接,会存在一些弊端。首先,TCP连接是建立在物理接口之间,但是物理接口可能会由于某些故障失效。其次,R1和R2路由器之间存在两个TCP会话,也就是存在两个邻居关系,这对于BGP来说要多维护一个连接,会消耗系统资源。此外,虽然R1和R2路由器之间存在两个会话,但是BGP在同一时刻只会使用一个BGP连接去发送数据,因为BGP要从两个路径中选出一条最佳路径。被选为最优的那条物理链路出现故障后,会造成路由的重新收敛。8.9.1配置EBGP多跳和源地址8.9BGP高级配置BGP支持路由聚合和CIDR。路由聚合可以减小IP路由表的大小,如果没有路由聚合,Internet上路由表的规模将会呈倍数的增长。此外,路由聚合可以用来减小BGP对等体之间通告路由的数目。在BGP路由进程模式下,使用如下命令配置BGP路由聚合。Aggregate-addressnetworkmask[as-set][summary-only]network参数表示聚合后网络地址,mask表示聚合后子网掩码。使用as-set参数后,聚合路由中包括详细路由AS路径信息,即AS_SET。summary-only参数表示对多条路由聚合后,只通告聚合后路由。默认情况下,既通告通告聚合后路由,也通告详细路由。8.9.2配置BGP路由聚合8.9BGP高级配置BGP路由默认优先级为100。在BGP路由模式下,使用如下命令修改本地优先级。bgpdefaultlocal-preferencepreference。该命令修改本地BGP发言者收到EBGP路由本地优先级,修改后本地优先级值,将随着路由被通告到IBGP对等体。该命令对所有收到路由本地优先级修改,所以当仅仅控制到达某条目标网络的出口路径时,这条命令配置将不能满足要求。R1和R2路由器同时从不同AS,收到了到达同一目标网络的路由,但企业网络想把去往1.0.0.0/8网络数据流,通过R2路由器出口传输。8.9.3配置本地优先级8.9BGP高级配置命令中metric参数是通告给EBGP对等体路由,设置默认MED值,这个MED值与路由一同通告给EBGP对等体。通过控制路由MED值,对进入本地自治系统数据流控制。所有进入本地自治系统(AS1)数据流,都使用路由器R1的进入路径,造成R1外部链路负载过高,而R2外部路径利用率极低,导致带宽资源不能被合理地利用。为了解决这个问题,实现到达本地网络3.0.0.0/8和4.0.0.0/8数据流量,从R2路由器上进入,合理利用带宽资源。现修改R1和R2路由器默认MED值,使R1路由器通告给AS2路由器路由MED值为500;路由器R2通告给AS2路由MED值为400。8.9.4配置MED属性值8.10优化大型网络中BGP在BGP路由中,具有相同策略和角色的对等体,可以将其加入到一个组中;然后,对于这个组进行统一策略配置,这个组被称为对等体组(peer-group)。对等体组极大地简化了配置BGP路由的工作量,而且本地路由器策略执行的效率也大大增强。如果单独地为50个对等体设置策略,那么,路由器也将对本地的策略数据库访问50次。如果对一个对等体组设置策略,那么路由器仅仅访问本地策略数据库1次。在BGP路由进程模式下,使用如下命令创建对等体组。8.10.1对等体组8.10优化大型网络中BGP在BGP路由的水平分割原则中,BGP对等体不将从IBGP收到的路由更新,再通告给其他的IBGP对等体,这样是为了避免潜在的环路。因此BGP的水平分割原则,必须在自治系统内部建立全互联(full-mesh)的IBGP邻居关系,这样才能确保所有的BGP发言者,都能收到来自外部的路由信息。但全互联的IBGP拓扑不具有扩展性,并且为了在一个拥有众多BGP对等体的网络中,建立全互联IBGP邻居关系,需要大量的手工配置工作。,为了在自治系统内部建立全互联的IBGP邻居关系,需要在每个发言者上,配置到达其他对等体的地址,因此,需要建立IBGP会话数将是n(n-1)/2。如图中自治系统内部共有6个BGP发言者,所以一共建立了15条IBGP连接。8.10.2路由反射器8.10优化大型网络中BGP路由反射器不会将一条路由再通告给路由的始发者。如果由于某种原因,路由的始发者又收到该路由,它通过检查始发者ID属性中路由器ID值,可以将该路由忽略。路由反射器与其客户所组成集合被称为集群(cluster)。自治系统内的每一个集群都用一个集群ID(clusterID)标识,集群ID就是路由反射器的路由器ID。其中,集群列表属性(CLUSTER_LIST)也是一个可选的、非传递属性,它记录了路由所经过的集群,并使用一个集群列表进行表示。当路由反射器将一条路由,发送给集群外的非反射器客户时,它将本集群的集群ID添加到集群列表中。如果CLUSTER_LIST为空,它会创建该列表,并将集群ID加入进去。8.10.2路由反射器8.10优化大型网络中BGP在上述第三个规则中,虽然RR路由器将从EBGP对等体收到路由通告给client,但实际上这个过程不叫路由反射。只用当RR路由器将通过IBGP收到路由发送给client时,RR所作操作才被称为反射。根据路由反射原则了解路由反射过程。R3路由器从R6路由器收到一条路由,R3路由器将其通告给路由器R7(client)、R1(非client)和R2(非client)。8.10.2路由反射器8.10优化大型网络中BGP在一个自治系统中,可以部署多个路由反射器,这样可以更大限度的减少所需的IBGP会话数。路由反射器支持层次结构的设计,也就是说一个路由反射器可以是另一个路由反射器的客户。AS1内存在两个集群Cluster1和Cluster2。R1路由器为Cluster1的RR路由器,R2路由器为Cluster2的RR路由器。同时,路由器R2又充当R1的client的角色。这就是具有层次结构的路由反射拓扑。使用层次的路由反射结构,可以更大粒度的减少所需的IBGP会话数,但是这种层次的设计也为路由的维护、跟踪和故障诊断带来了复杂性。虽然理论上路由反射对于层次数量没有限制,但通常推荐只使用两级的层次设计。8.10.2路由反射器8.10优化大型网络中BGP与路由反射器一样,联盟(Confederations)也用来减少大型自治系统中IBGP会话数目庞大问题。路由反射器通过放宽BGP水平分割限制,来减少需要建立IBGP会话数。联盟核心思想是将一个大自治系统划分成若干个子自治系统。子自治系统与子自治系统之间通过联盟内EBGP互联,子自治系统内部仍然是全互联的IBGP拓扑。AS1内共有8个BGP发言者。如果要建立全互联的IBGP会话,总共要建立28个IBGP邻居关系。为了减少IBGP会话数,在AS1域内使用联盟。其中,AS1被划分为三个子自治系统(SubAS),AS65001、AS65002和AS65003。8.10.3联盟【网络实践】:修改BGP路由MED值,优选最佳路由某IT集团公司在北京总部和其它区域分公司的,其在区域的分公司的网络中路由器R1和R2上没有进行MED值设置时,在R4路由器的BGP路由表上可以看到所有进入AS1流量,都通过R1路由器的外部链路转发。因为R4路由器从R1和R2路由器上收到的路由有相同的本地优先级、相同的AS路径列表长度等,所以在比较邻居路由器的RouterID前,不能选出最佳路径。因此希望网络出口路由器R4通过比较分公司的接入路由器R1和R2的RouterID,将路由器R1选为最佳入口,因为R1具有更小的RouterID(1.1.1.1<2.2.2.2)。【任务描述】【设计过程】省略好好学习天天向上单元8:使用BGP路由实现域间路由选择(2)《高级路由技术》(理论篇)主讲教师:XXX技术背景从技术角度讲,Internet这样遍布全世界庞大的网络,需要一种机制确保信息从世界一端可靠传输到另一端,这个机制就是BGP(BorderGatewayProtocol,边界网关协议)。在Internet中使用唯一进行自治系统间路由协议就是BGP,BGP构成整个Internet的核心网络,有人把BGP称为“BGP是Internet的心脏”。学习目标了解BGP协议的工作范围了解BGP协议的工作原理掌握BGP协议的基本配置

建立IBGP、EBGP对等体,引入与传递路由BGP概述边界网关协议(BGP)运行于TCP上自治系统(AS)路由协议,是唯一能处理不相关路由域间多路连接协议。如:中国电信、中国联通、中国移动运营商,通过BGP协议来实现多线互联。为了便于管理规模不断扩大的网络,将网络划分为不同的AS(AutonomousSystem自治系统)不同AS通过AS号区分,AS号取值范围1-65535,其中64512-65535是私有AS号IANA机构负责AS号的分发中国电信163AS号:4134中国电信CN2AS号:4809中国网通AS号:9929中国联通AS号:9800中国教育网骨干网AS号:4538什么是AS?AS64512AS64514AS64513BGP特征BGP是外部路由协议,在AS之间传递路由信息。BGP是一种增强型、距离矢量路由协议。可靠路由更新机制丰富Metric度量方法设计上避免环路发生为路由附带丰富属性,丰富路由过滤和路由策略。支持CIDR(无类别域间选路)。AS之间连接使用直连链路,或通过运营商,建立VPN逻辑连接AS之间可能是不同组织机构,使用IGP协议,传递路由信息将会有安全风险AS之间传递路由AS200AS100OSPFR1R2R3WANR4R5OSPF直接传递OSPFLSA存在暴露网络结构的风险在AS之间传递路由,使用BGP协议(边界网关路由协议BorderGatewayProtocol)相较IGP协议,BGP协议有以下优势:BGP基于TCP工作(端口号179),只要建立TCP连接,就可以建立BGP邻居关系;BGP能够承载上万条路由,而IGP仅能上千条;BGP路由器只传递路由,不会露AS内拓扑信息,更加安全;支持MPLS/VPN协议,传递客户VPN路由AS之间传递路由使用BGPAS200AS100OSPFBGPpeerBGPpeerR1R2R3R4WANBGP是距离矢量路由协议,邻居之间直接传路由,每条BGP路由都携带多种属性使用这些属性配置路由策略,实现灵活路由选路,这是IGP协议无法做到BGP的特征AS200AS100OSPFBGPpeerBGPpeerR1R2R3R4WANBGP路由网络号:192.168.10.0/24路径属性1:AS-PATH路径属性2:Origin路径属性3:next-hop路径属性N:……BGP协议在企业中应用场景大型企业内部,存在多个分支,每个分支属于一个AS,通过BGP在不同分支之间传递路由企业与运营商之间运行BGP协议,企业与运营商之间互相传递路由BGP应用场景AS100AS300AS200BGPpeerBGPpeerBGPpeerBGP路由术语自治系统(AS):同一个管理机构管理、使用统一选路策略路由器集合。自治系统内部路由协议:IGP自治系统之间路由协议:EGPAS65001AS65000BGPRIPv1/v2OSPFISISBGP角色Speaker发送BGP报文设备,称为BGP发言者(Speaker),它接收或产生新报文信息,并发布(Advertise)给其它BGPSpeaker。Peer相互交换报文Speaker之间,互称对等体(Peer)。若干相关对等体构成对等体组(PeerGroup)。BGP报文交互中分为Speaker和Peer两种角色对等体-Peer两台路由器交换BGP路由,建立TCP连接后,它们之间关系就是对等关系或邻居关系。BGP邻居分为:IBGP和EBGPAS65000NeighborsAS65500NeighborsIBGP与EBGPIBGP

运行于AS内部的路由协议,主要有:RIP,OSPF及ISIS。

IGP着重于发现和计算路由。EBGP

运行于AS之间路由协议,通常都是指BGP。

BGP着重于控制路由传播和选择最优路由。BGP协议报文以单播的形式发送,BGP共有5种,其中路由是承载在Update报文中BGP的协议报文LinkLayerHeaderIPTCPBGPProtocolPacketFrameChecksumBGP

ProtocolHeaderBGP

PacketIP协议号为6端口号为179报文类型作用发送规则Open用于建立邻居关系,协商各项参数通过TCP建立BGP连接,发送open报文Update用于发送路由更新连接建立后,有路由更新时,发送UPDATE报文Notification用于报告BGP错误当BGP运行中发现错误时,发送NOTIFICATION通告Keepalive用于维持邻居关系定时发送KEEPALIVE报文以保持BGP邻居关系的有效性Route-refresh为保证网络稳定,触发更新路由的机制当路由策略发生变化时,触发请求邻居重新通告路由BGP的有限状态机Peer状态名称发送报文动作Idle尝试建立TCP连接开始准备TCP的连接并监视远程peer启动TCP连接,启用BGP时,要准备足够的资源Connect发TCP包正在进行TCP连接,等待完成中,认证都是在TCP建立期间完成的。如果TCP连接不上则进入Active状态,反复尝试连接。Active发TCP包TCP连接没建立成功,反复尝试TCP连接。OpenSent发Open包TCP连接建立已经成功,开始发送Open包,Open包携带参数协商对等体的建立。OpenConfirm发Keepalive包参数、能力特性协商成功,自己开始发送Keepalive包,等待对方的Keepalive包。Established发Update包已经收到对方的Keepalive包,双方能力特性一致,开始使用Update通告路由信息。BGP的有限状态机ActiveOpen-sentOpen-confirmEstablishedConnectConnect-RetrytimerexpiryTCPconnectionfailsConnect-RetrytimerexpiryStartOthersTCPconnectionfailsErrorErrorErrorKeepAlivetimerexpiryKeepAlivepacketreceived1.KeepAlivetimerexpiry2.Updatereceived3.KeepAlivereceivedCorrectOPENpacketreceivedTCPconnectionsetupTCPconnectionsetupOthersIdle运行BGP的路由器被称为BGPSpeaker或者BGP路由器两台BGP路由器之间建立的关系叫BGP对等体(Peer)也叫BGP邻居,对等体之间交换BGP路由表BGP的Peer分为两种:EBGP和IBGPBGP对等体AS200AS100OSPFBGPEBGPpeerBGPIBGPpeerR1BGPspeakerR2R3BGPspeakerR4BGPspeakerWANEBGPPeer:位于不同AS的路由器之间的BGP邻居关系互为EBGPPeer的路由器彼此所属的AS号不同EBGPPeer一般基于直连接口建立Neighbor命令所指定的邻居IP地址要可达,TCP连接要能够正确建立EBGP的路由管理距离为20,因为AS之间BGP比IGP更优BGP对等体AS200AS100OSPFBGPEBGPpeerR1R2R3BGPspeakerR4BGPspeakerWANIBGPPeer:同属一个AS的路由器之间建立的BGP邻居关系互为IBGPPeer的BGP路由器属于同一个ASIBGPPeer一般基于Loopback接口建立,Peer之间可以跨越路由器,只要TCP连接要能够正确建立IBGP的路由管理距离为200,因此AS内部IGP更优BGP对等体AS200AS100OSPFBGPIBGPpeerR1BGPspeakerR2R3BGPspeakerR4WANBGP邻居表:包含了此台BGP路由器所有的邻居,以及他们之间的状态;BGP默认每隔60秒发送一次BGP/TCP存活消息,保持时间为180秒BGP的邻居表BGPIBGPpeerR1BGPspeakerR2R3R1#shipbgpsummaryBGProuteridentifier1.1.1.1,localASnumber123BGPVRF(GlobalVRF)RouteDistinguisher:(none)BGPtableversionis10BGPAS-PATHentries0BGPCommunityentries0BGPPrefixentries(Maximum-prefix:4294967295)NeighborVASMsgRcvdMsgSentTblVerInQOutQUp/DownState/PfxRcd3.3.3.341232210000:00:100R1的BGP邻居表:对端peer的更新地址BGP版本号对端AS路由更新或撤销时TblVer数字增加,类似路由更新State是bgpsession的的状态,如果达到established就显示收到的路由的数目,否则就是active之类的状态每台BGP路由器独立维护一张BGP路由表,包含了本地导入以及从BGP

peer学习所有BGP路由;BGP路由表中可用、最优的路由(标记为*>)将会加载到全局IP路由表中;BGP路由表BGPIBGPpeerR1BGPspeakerR2R3R1#shipbgpBGPtableversionis5,localrouterIDis1.1.1.1Statuscodes:ssuppressed,ddamped,hhistory,*valid,>best,i-internal,SStale,b-backupentry,fFilterOrigincodes:i-IGP,e-EGP,?-incompleteNetworkNextHopMetricLocPrfWeightPath*>1.1.1.1/320.0.0.0032768i*>i3.3.3.3/323.3.3.301000i*i4.4.4.4/3210.1.34.401000400iR1的BGP路由表:此条BGP路由的路由属性,后续课程详细介绍statuscodes*代表此路由可用>代表此路由是最优的,最优的路由一定是可用的路由i代表此路由是通过IBGP学习的,如果空的代表从EBGP学习到或者本地引入的目标网络号BGP本身不会自动产生路由,必须要将IGP的路由引入到BGP路由表中。引入的方式有2种:BGP路由的生成引入方式引入条件适用场景Network宣告必须是IP路由表的IGP路由条目,且必须存在一条命令仅能引入一条路由,适用于路由数量较少的场景Redistribute重分布IGP路由数量较多,且地址段不连续不便于聚合的场景,动态从其他路由协议引入路由,并且可以结合route-map来配置更丰富的路由策略BGP使用update报文将路由条目发送给BGPpeerBGP传递路由规则:仅把BGP路由表中可用、且最优(*>)路由,传递给BGPpeer从EBGPpeer获得路由,发送给所有BGP

peer(包括EBGP和IBGP)从IBGP获得路由,默认会通告给它的EBGPpeer(如果BGP同步开启则需要再判定)BGP路由的传递EBGPpeerEBGP/IBGPpeer路由通告IBGPpeerEBGPpeer路由通告BGP作为一种D-V距离矢量路由协议,通过水平分割,防止AS内部的环路从IBGP获得的路由,不向它的IBGP

peer通告,以此来防止循环的发生IBGP在路由通告时,也不会改变路由的下一跳,进一步防止循环发生BGP在AS内部的环路避免机制AS300AS100AS200EBGPpeerEBGPpeer路由更新IBGPpeerBGP同时还采用AS-Path属性,来防止AS之间环路EBGP向对等体通告路由时,附加上自己AS号存放在AS-path属性字段,收到EBGP对等体Update报文时,检查AS-path,如果发现自己的AS号,则丢弃该路由,EBGP是依靠路由经过的AS路径,来发现循环的BGP在AS之间的环路避免机制EBGPpeerEBGPpeerAS100R1A网络R4AS400R3AS300R2AS200EBGPpeerEBGPpeerA网络的路由AS-PATH:100A网络的路由AS-PATH:100,300A网络的路由AS-PATH:100,300,400A网络的路由AS-PATH:100,300,400,200由于在AS内部,可以跨越设备,建立IBGP对等体,因此会出现一些路径上设备未运行BGP。BGP路由黑洞EBGPpeerEBGPpeerIBGPpeer非BGProuter非BGProuterAS200AS100OSPFR1A网络R2R3R4R5R6AS300这些设备由于未运行BGP,不会收到BGP传递来路由信息当有数据包经过这些设备时,因为没有相关路由信息,数据包将会被丢弃BGP的路由黑洞非BGProuter非BGProuterAS200AS100OSPFR1R2R3R4R5R6AS300BGPUpdateBGPUpdateBGPUpdate数据包目的地A网络A网络数据包目的地A网络R3、R4不知道A网络的路由,因此数据包被丢弃。R3、R4成为了黑洞BGP协议为了防止路由黑洞问题,引入了同步机制从IBGP对等体学习到的路由在成为最佳路由并向EBGP对等体通告之前必须被IGP学习到BGP同步默认关闭,如果开启则不会产生路由黑洞问题,但同时这些路由将无法正常使用避免路由黑洞问题的方法——BGP同步非BGProuter非BGProuterAS200AS100OSPFR1R2R3R4R5R6AS300BGPUpdateBGPUpdateBGPUpdateA网络R5如果开启BGP同步,那么虽然R5从IBGP邻居R2收到A网络的BGP路由,但因为IGP路由表中无此路由,BGP路由表与IGP路由表不同步,因此R5不会把这条BGP路由发给EBGP邻居R6要想既不产生路由黑洞问题,又要使得这些路由可用,可采用以下方式:路由重分布:把BGP的路由重发布到AS内的IGPIBGP全互联:在穿越路径上IBGP启用全连接,确保所有BGP路由过路设备都知道使用MPLS:使用MPLS的转发机制解决穿越AS问题解决路由黑洞问题的方法EBGPpeerEBGPpeerIBGPpeer非BGProuter非BGProuterAS200AS100OSPFR1在R2与R5上将BGP路由重分布到OSPF中,让R3、R4也能学习到这些路由,就不会有路由黑洞R2R3R4R5R6AS300R2、R3、R4、R5全部建立IBGP邻居EBGPpeerEBGPpeerIBGPpeerAS200AS100OSPFR1R2R3R4R5R6AS300按照以下步骤配置BGP协议:第1步:设备基本参数配置,AS内配置IGP确保内部网络连通性;第2步:启动BGP进程第3步:建立BGP对等体第4步:通告BGP路由第5步:(可选)其他配置,路由策略、路由反射器等BGP配置步骤OSPFR1R2R3R4AS400AS123EBGPpeerIBGPpeer10.1.34.010.1.12.010.1.34.0Lo:4.4.4.4Lo:3.3.3.3Lo:1.1.1.1配置IGP路由解决peer对等体的源和目标IP之间连通性,确保peer之间TCP连通性(179)第1步:设备基本参数配置OSPFR1R2R3R4AS400AS123EBGPpeerIBGPpeer10.1.34.010.1.12.010.1.23.0Lo:4.4.4.4Lo:3.3.3.3Lo:1.1.1.1interfaceGigabitEthernet0/0ipaddress10.1.12.1255.255.255.0routerospf1router-id1.1.1.1network10.1.12.10.0.0.0area0R1的基础配置interfaceGigabitEthernet0/0ipaddress10.1.12.2255.255.255.0interfaceGigabitEthernet0/2ipaddress10.1.23.2255.255.255.0routerospf1router-id2.2.2.2network10.1.12.20.0.0.0area0network10.1.23.20.0.0.0area0R2的基础配置interfaceGigabitEthernet0/5ipaddress10.1.23.3255.255.255.0routerospf1router-id3.3.3.3network10.1.23.30.0.0.0area0R3的基础配置在BGP路由器上启动BGP进程,一台路由器上只能配置一个BGP实例仅执行命令routerbgp不能在路由器上激活BGP,必须至少执行一个子命令才能在路由器上激活BGP进程手工设置BGPRouterID第2步:启动BGP进程Router(config)#routerbgpas-numberRouter(config-router)#

bgprouter-idip-address指定BGP邻居及激活BGP会话BGP邻居都需手工指定,不能像IGP那样通过协议自动发现建立邻居时的指定的PeerIP地址必须路由可达,本端默认使用报文出接口IP地址作为更新源本地的更新源IP地址必须与PeerIP地址相同,不相同,则BGP邻居无法正常建立对端AS号决定了与邻居建立的是EBGP会话还是IBGP会话第3步:建立BGP对等体Router(config-router)#neighbor

{peer-address|peer-group-name}remote-as

as-number在同指定BGP对等体建立BGP连接时,可以启用TCPMD5认证,并设置密码启用身份验证后,将对通过对等体之间的TCP连接传输的所有数据等进行验证认证都是在TCP建立连接的时候完成的BGP的验证功能Router(config-router)#neighbor{peer-address|peer-group-name}password[|0|7]string通过宣告network的方式引入路由如果指定mask,则仅当IP路由表中有与完全匹配的条目时才会引入成功如果不指定mask,只通告主类网络号,则仅当IP路由表中至少有一个子网,才会将该主类网络作为一条BGP路由引入,但不会引入该主类网络之下的其他子网通过重分布的方式引入路由第4步:通告BGP路由Router(config-router)#network

network-number[mask

mask][route-map

map-tag][backdoor]Router(config-router)#redistribute

protocol-type[route-map

map-tag][metric

metric-value]BGP基本配置案例OSPFR1R2R3R4AS400AS123EBGPpeerIBGPpeer10.1.34.010.1.12.010.1.23.0Lo:4.4.4.4Lo:3.3.3.3Lo:1.1.1.1routerbgp123bgprouter-id1.1.1.1neighbor10.1.23.3remote-as123network1.1.1.1mask255.255.255.255R1的BGP配置routerbgp123bgprouter-id3.3.3.3neighbor10.1.12.1remote-as123neighbor10.1.34.4remote-as400network3.3.3.3mask255.255.255.255R3的BGP配置routerbgp400bgprouter-id4.4.4.4neighbor10.1.34.3remote-as123network4.4.4.4mask255.255.255.255R4的BGP配置查看BGP的邻居R1上查看BGP邻居R3是IBGP邻居,并且从对端收到2条路由查看BGP的状态R1#shipbgpsumBGProuteridentifier1.1.1.1,localASnumber123BGPVRF(GlobalVRF)RouteDistinguisher:(none)BGPtableversionis32BGPAS-PATHentries0BGPCommunityentries3BGPPrefixentries(Maximum-prefix:4294967295)NeighborVASMsgRcvdMsgSentTblVerInQOutQUp/DownState/PfxRcd10.1.23.34123212020000:15:072Totalnumberofneighbors1router#showipbgpsummary查看BGP路由表R1上查看BGP的路由表1.1.1.1/32的路由是本地生成的,因此就是最优的3.3.3.3/32是R3的路由,作为IBGP传递来的,满足条件因此最优4.4.4.4/32是R3从EBGP邻居学习来的,但无“>”标记,不是最优的,因为其下一跳不可达查看BGP的状态R1#shipbgpBGPtableversionis3,localrouterIDis1.1.1.1Statuscodes:ssuppressed,ddamped,hhistory,*valid,>best,i-internal,SStale,b-backupentry,fFilterOrigincodes:i-IGP,e-EGP,?-incompleteNetworkNextHopMetricLocPrfWeightPath*>1.1.1.1/320.0.0.0032768i*>i3.3.3.3/3210.1.23.301000i*i4.4.4.4/3210.1.34.401000400irouter#showipbgpBGP是AS-by-AS的路由协议,而不是router-by-router的路由协议在BGP中,next-hop并不意味着是下一台路由器,而是到达下一个AS的IP地址EBGP中,默认next-hop为发送更新的邻居路由器的IP地址IBGP中,从EBGP传来的next-hop属性在IBGP中保持不变的被传递BGP的next-hop不可达问题OSPFR1R2R3R4AS400AS123EBGPpeerIBGPpeer10.1.34.010.1.12.010.1.23.0Lo:4.4.4.4Lo:3.3.3.3Lo:1.1.1.1Route4.4.4.0NEXT_HOP=10.1.34.4Route4.4.4.0NEXT_HOP=10.1.34.4R1不知道如何去往10.1.34.4,这个地址未被通告到AS123的IGP里,因此路由不可达,因此不是最优有两种办法解决next-hop不可达的问题第1种办法就是把10.1.34.0这个网络宣告到AS123的IGP路由中这样4.4.4.0/24这条路由就会在R1的BGP路由表成为最优路由但这种方法并不建议,因为会使得AS之间的链路暴露在AS内部,有一定安全风险BGP的next-hopR3(config)#routerospf1R3(config-router)#network10.1.34.30.0.0.0area0R1#shipbgpBGPtableversionis3,localrouterIDis1.1.1.1Statuscodes:ssuppressed,ddamped,hhistory,*valid,>best,i-internal,SStale,b-backupentry,fFilterOrigincodes:i-IGP,e-EGP,?-incompleteNetworkNextHopMetricLocPrfWeightPath*>1.1.1.1/320.0.0.0032768i*>i3.3.3.3/3210.1.23.301000i*>i4.4.4.4/3210.1.34.401000400i有两种办法解决next-hop不可达的问题第2种办法就是在R3上配置next-hop-self,使得向R1发送的路由的下一跳的属性都改为R3自己这样R1上4.4.4.0/24这条路由的next-hop就是R3的10.1.23.3,下一跳可达,成为最优路由BGP的next-hoprouterbgp123neighbor10.1.12.1remote-as123neighbor10.1.12.1next-hop-selfRouter(config-router)#neighbor{peer-address|peer-group-name}next-hop-selfR1#shipbgpBGPtableversionis3,localrouterIDis1.1.1.1Statuscodes:ssuppressed,ddamped,hhistory,*valid,>best,i-internal,SStale,b-backupentr

温馨提示

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

评论

0/150

提交评论