490 likes | 724 Views
BGP 协议原理. ISSUE 1.0. 目 标. 学习完此课程,您将会: 掌握 BGP 协议的基本原理 掌握 BGP 协议的路由属性及其应用 掌握 BGP 协议的应用. 内容介绍. 第 1 章 BGP 路由协议的原理 第 2 章 BGP 路由属性 第 3 章 BGP 的应用. BGP协议概述. BGP 是 “ 唯一 ” 的 EGP 路由协议,主要用来在 AS 之间传递路由信息 在 AS 之间是一种距离矢量的路由协议,应用特定的属性避免环路的发生 路由信息携带丰富的属性 传送协议: TCP ,端口号 179 支持 CIDR (无类别域间选路)
E N D
BGP协议原理 ISSUE 1.0
目 标 • 学习完此课程,您将会: • 掌握BGP协议的基本原理 • 掌握BGP协议的路由属性及其应用 • 掌握BGP协议的应用
内容介绍 第1章 BGP路由协议的原理 第2章 BGP路由属性 第3章 BGP的应用
BGP协议概述 • BGP是“唯一”的EGP路由协议,主要用来在AS之间传递路由信息 • 在AS之间是一种距离矢量的路由协议,应用特定的属性避免环路的发生 • 路由信息携带丰富的属性 • 传送协议:TCP,端口号179 • 支持CIDR(无类别域间选路) • 路由更新:只发送增量路由 • 丰富的路由过滤和路由策略
BGP协议基本概念(一) • 什么是自治系统(AS)? • 自治系统指由同一个技术管理机构管理、使用内部路由策略的一些路由器的集合。每个自治系统都有唯一的自治系统编号。自治系统的编号范围是1到65535,其中1到64511是注册的因特网编号,64512到65535是专用网络编号。
BGP协议基本概念(二) • 为什么引入自治系统这一概念? • 引入自治系统的基本思想就是通过不同的编号来区分不同的自治系统。 • 自治系统内部的路由协议 —— IGP • 如OSPF、IS-IS、RIP、EIGRP(cisco专有) • 自治系统之间的路由协议 —— BGP • 如:EGP、BGP
BGP工作机制(二) • BGP邻居刚建立时,发送整个BGP路由表交换路由信息,之后为了更新路由表只交换更新消息(update message)。 • 系统在运行过程中,通过接收和发送keep-alive消息来检测相互之间的连接是否正常的。 • 一般情况下一条路由由自治系统内部的某种内部路由协议发现和计算产生,由自治系统边界路由器(ASBR)通过EBGP连接传播到其它自治系统中。 • 路由在传播过程中可能会经过若干个自治系统,这些自治系统称为过渡自治系统(如:AS5)。若这个自治系统有多个边界路由器,这些路由器之间运行IBGP来交换路由信息。另外一种自治系统称为Stub AS(如:AS1),其内部只有一个ASBR通过EBGP连接外部,同外部其他AS的通信要靠过渡自治系统来转接。
RTA RTE EBGP EBGP IBGP RTD RTB RTC BGP两种邻居-IBGP和EBGP
BGP路由通告原则 • 存在多条路径时,BGP Speaker只选取最优的使用(非负载分担) • BGP Speaker只把自己使用的路由通告给相邻体 • BGP Speaker从EBGP获得的路由会向它所有BGP相邻体通告(包括EBGP和IBGP) • BGPSpeaker从IBGP获得的路由不向它的IBGP相邻体通告(如果存在RR呢) • BGP Speaker从IBGP获得的路由是否通告给它的EBGP相邻体要依IGP和BGP同步的情况来决定 • 连接一建立,BGP Speaker按照以上原则,把自己所有BGP路由通告给新相邻体
BGP路由表与系统路由表的关系 • 存在多条路径时,BGP Speaker只选取最优的使用(非负载分担时) • BGP Speaker只把自己使用的最优路由通告给相邻体 • BGP Speaker只把自己使用的最优的路由加入到路由表中
X 12 … X 12 … RTA RTB IBGP R-12 X 12 … AS 42 AS 14 AS 12 EBGP RTD R-14 RT-C BGP路由通告原则 • BGPSpeaker从IBGP获得的路由不向它的IBGP相邻体通告(如果存在RR呢)
E0:10.1.1.1/24 AS100 RTA AS300 S0:1.1.1.1/24 RTF EBGP EBGP S0:1.1.1.2/24 IBGP RTB S1:2.1.1.2/24 S0:2.1.1.1/24 RTE RTC AS200 RTD BGP同步 • BGP Speaker从IBGP获得的路由是否通告给它的EBGP相邻体要依IGP和BGP同步的情况来决定
AS200 18.0.0.1/8 OSPF RTB 成为BGP路由的途径之一:纯动态注入 • OSPF发现路由18.0.0.1/8把IGP(OSPF)发现的路由纯动态地注入到RTB的BGP路由表中
成为BGP路由的途径之二:半动态注入 • OSPF发现路由18.0.0.1/8把IGP(OSPF)发现的路由半动态地注入到RTB的BGP路由表中 AS200 18.0.0.1/8 OSPF RTB
AS200 18.0.0.1/8 RTB 成为BGP路由的途径之三:静态注入 • 人为配置静态路由18.0.0.1/8把人为配置的静态路由注入到RTB的BGP路由表中
BGP报文种类 • BGP报文有四种类型: • Open:打招呼“你好,跟我交个朋友吧!” • KeepAlive:我还活着呢,别不理我 • Update:有新闻...... • Notification:我不跟你玩了!
Marker(16 byte) Length(2 byte) Type(1 byte) BGP报文头 • BGP报文的格式是一样的,都是”报文头+报文体“的格式,下面给出的是BGP报文头:
Version My Autonomous System Hold Time BGP Identifier Optional Paramenters Length Optional Paramenters Open报文 • Open报文是由报文头加如下结构构成的。
Marker(16 byte) Length(2 byte) Type(1 byte) KeepAlive报文 • KeepAlive报文只有报文头。
Unfeasible Routes Length Withdrawn Routes Path Attribute Length Path Attribute Network Layer Reachability Information Update报文 • Update报文由报文头加如下结构构成。
Error Code Error Subcode Data Notification报文 • Notification报文由报文头加如下结构构成。
TCP connection fails Connect-Retry timer expiry Active Connect TCP connection fails Others TCP connection setup Start Others TCP connection setup Open-sent Idle Error Correct OPEN packet received Error Error 1. KeepAlive timer expiry 2. Update received 3. KeepAlive received Open-confirm Established KeepAlive packet received KeepAlive timer expiry BGP协议的状态机
BGP协议中消息的应用 • 通过TCP建立BGP连接时,发送open消息 • 连接建立后,如果有路由需要发送或路由变化时,发送UPDATE消息通告对端路由信息 • 稳定后此时要定时发送KEEPALIVE消息以保持BGP连接的有效性 • 当本地BGP在运行中发现错误时,要发送NOTIFICATION消息通告BGP对端
内容介绍 第1章 BGP路由协议的原理 第2章 BGP路由属性 第3章 BGP的应用
BGP的路由属性 BGP协议的重点 • 表达了路由的特征 • 便于扩展 • 过渡和非过渡的,必遵和可选的 • 公认必遵(well-known mandatory) • 公认自决(well-known discretionary) • 可选过渡(optional transitive) • 可选非过渡(optional non-transitive)
1、Origin 2、AS-Path 3、Next hop 4、MED 5、Local-Preference 6、Atomic-Aggregate 7、Aggregator 8、Community 9、Originator-ID 10、Cluster-List 11、Destination Pref (MCI) 12、Advertiser (Baynet) 13、Rcid-Path (Baynet) 14、MP_Reach_NLRI 15、MP_Unreach_NLRI 16、Extended_Communities BGP的路由属性
Origin属性 • 一般的,具体的实现按如下方式决定一条路由的Origin属性 • 某条路由是直接而具体的注入到BGP路由表中的,则origin属性为IGP • 路由是通过EGP得到的,则origin属性为EGP • 其他情形下,Origin属性都为 Incomplete
D(18.0.0.0/8) AS300 AS200 RTA AS400 30.0.0.1 D,dl 400 300 200 30.0.0.2 RTB AS100 AS500 D,d2 500 200 D,d1 400 300 200 >D,d2 500 200 AS-Path属性
AS200 RTC RTA EBGP 10.0.0.1 18.0.0.0/8 AS100 21.0.0.2 10.0.0.2 IBGP IBGP 20.0.0.0/8 21.0.0.1 10.0.0.3 RTD 19.0.0.0/8 RTB RTB 可经下一跳10.0.0.2到达18.0.0.0/8 可经下一跳10.0.0.3到达20.0.0.0/8 Next Hop属性 RTC 可经下一跳10.0.0.1到达19.0.0.0/8 可经下一跳10.0.0.3到达20.0.0.0/8 RTA 可经下一跳10.0.0.2到达18.0.0.0/8 可经下一跳10.0.0.3到达20.0.0.0/8 可经下一跳21.0.0.1到达19.0.0.0/8
AS400 D (18.0.0.0/8) RTF AS200 AS300 RTD 30.0.0.1 20.0.0.1 RTE 30.0.0.2 20.0.0.2 AS100 RTC RTB D,local-pref2 200 D,local-pref1 100 RTA Local-Preference 属性 D,local-pref1 100 >D,local-pref2 200 RTA就会优先选择本地 优先级高的local-pref2
AS100 >D,metric1 10 D,metric2 20 RTA 20.0.0.1 30.0.0.1 RTA会选择metric值较小 的metric1 D,metric1 10 D,metric2 20 30.0.0.2 20.0.0.2 RTC RTB IBGP D(18.0.0.0/8) AS200 MED(Multi-Exit-DISC)属性
团体(Community)属性 • 团体是一组有相同性质的目的地的路由,一个团体不限于一个网络或一个自治系统,它没有物理边界。公认的团体: • no-export • 带有该属性的路由信息不通告给AS外的BGP相邻体 • no-advertise • 带有该属性的路由信息不通告给任何BGP相邻体 • local-AS • 带有该属性的路由信息只通告给联盟EBGP相邻体 • Internet • 通告给所有其他路由器
BGP路由选优过程 • 综合起来,本地BGP路由选优的过程为: • 如果此路由的下一跳不可达,忽略此路由; • 选择本地优先级较大的路由( Local-Preference ); • 选择本地路由器始发的路由( Origin / aggregate ); • 选择AS路径较短的路由( AS-Path ); • 依次选择起点类型为IGP,EGP,Incomplete类型的路由( Origin ); • 选择MED较小的路由; • 优选从EBGP学来的路由; • 优选AS内部IGP的Metric最低的路由; • 选择RouterID较小的路由;
内容介绍 第1章 BGP路由协议的原理 第2章 BGP路由属性 第3章 BGP的应用
ISIS OSPF EIGRP RIP 没有BGP的日子里
ISIS BGP OSPF BGP BGP EIGRP RIP 有了BGP之后 链路层协议生成路由,IGP收集路由,BGP加工路由
AS的分类 • 单口AS(stub AS) • 多归路非过渡AS(multihomed AS) • 过渡AS(transit AS)
BGP强大的过滤功能 • 可按照路由的IP地址过滤 • 可依照路由经过的AS-Path过滤 • 可以依照路由的属性过滤 • 可以依照路由到来的接口过滤 • 可以按照过滤的结果设置路由的属性
BGP在大规模网络中需要解决的问题 • 路由表庞大——超过85000条 • BGP聚合 • IBGP相邻体过多,逻辑全连接不现实 • BGP联盟 • BGP反射 • 复杂网络环境中路由的变化十分频繁 • BGP衰减
路由聚合 • 两种常用的路由聚合方法 • 使用network命令发布一条聚合路由,前提是该聚合路由必须在路由表中存在 • 使用aggregate命令进行聚合,前提是路由表中至少存在一条需要聚合的详细路由,可以使用参数控制只发布聚合路由还是发布聚合路由和详细路由或者部分详细路由 • 路由聚合后,有可能产生环路,使用aggregate命令的时候使用参数 as-set来避免环路
B: RR A: RR C F D E B: RR A: RR Client Client F C D E 路由反射器的使用 • 为了减少由于IBGP全连接而造成的N平方问题,产生了路由反射器。 • RR路由传播规则: • 从EBGP邻居收到的路由发布自己所有客户机和非客户机 • 从IBGP邻居收到的路由发布自己所有客户机和EBGP邻居 • 从client邻居收到的路由发布自己所有客户机和非客户机
BGP衰减 BGP衰减 • BGP对于频繁更新的路由引入了惩罚值的概念,当惩罚值达到一定值,该路由将被抑制。
BGP路由负载分担 • 基于迭代的BGP负载分担 • 选择本地优先级较大的路由 • VRP上始终启用 • 依赖路由 • 路由迭代 • 必须要用Loopback接口做邻居 • EBGP的负载分担 • 默认未启用 • 只对AS-Path属性完全相同的路由进行负载分担
AS100 RTB RTA AS200 RTC RTD RTE 负载分担实例
MBGP • MBGP (Multiprotocol Extensions for BGP-4 ) • BGP-4仅仅支持IPv4,MBGP是为了让BGP可以用于传输更多协议(IPv6, IPX,...)的路由信息而进行的扩展。 • 为了保持兼容性,MBGP仅仅添加了两个BGP属性:MP_REACH_NLRI、MP_UNREACH_NLRI,这两个属性可以用在BGP Update消息中用于通告或废止网络可达性信息。
小结 • 在本课程中我们学习了BGP协议的基本原理和丰富的属性特征,和这些属性的应用,还学习了BGP路由协议在网络中的应用。 小结