BGP协议原理与配置ppt课件.ppt
V1.1数据用服部内部公开 内部公开学习目标学习目标 了解 BGP 基本概念 理解 BGP协议的建链过程 理解 BGP 的常用属性 掌握基本 BGP配置内部公开 内部公开学习内容学习内容 第一章 BGP基本原理 第二章 BGP常用属性 第三章 BGP典型配置内部公开 内部公开学习内容学习内容 第一章第一章 BGP基本原理基本原理 第一节 BGP概念 第二节 BGP报文及连接状态 第三节 BGP通告原则 内部公开nBGP: Border Gateway Protocol 边界网关协议,n定义于RFC1771。该协议用于创自治系统(Autonomous Systems)之间无环路域间路由。BGPBBGPAS65500AS65250BGPAS64500AS65000DEFCBABGP概述概述 内部公开BGP概述概述n域内路由: RIP/OSPF/ISIS,在AS内发现路由n域间路由协议,在AS之间传递路由信息n通用标准协议,当前版本: BGPv4(RFC1771)n自治系统的编号范围是165535,其中164511是注册的因特网编号,6451265535是专用网络编号 AS100ISISAS200OSPFAS300RIPBGPBGP 内部公开nBGP 是一种增强型距离矢量(Distance Vector)路由协议n传输协议: TCP,端口号: 179n支持CIDR(无类别域间选路) n路由更新只发送增量路由 n具有丰富的路由过滤和路由策略配置 BGP的特征的特征 内部公开n两台路由器为交换 BGP 路由信息,建立 TCP 连接之后,它们之间的关系就是对等关系或邻居关系nBGP邻居分为:IBGP和EBGPAS 65000NeighborsAS 65500NeighborsBCA对等体对等体Peer 内部公开AS 65000AS 65001n邻居处于不同的自治域ASn邻居之间一般直接连接EBGP NeighborsIBGP NeighborsEBGPExternal BGPBCA 内部公开nIBGP邻居处于同一个 AS 内部nIBGP邻居之间可以不直连IBGP NeighborsAS 65000AS 65500NeighborsIBGPInternal BGP(1)BCA 内部公开IBGPInternal BGP(2)n在对等体之间可以通过多个非 BGP 路由器连接起来nBGP的信息可以通过非BGP的拓扑进行传递AS100IBGPOSPFOSPFOSPFR1loopback201.7.108.2/32R2loopback201.7.108.1/32EBGPEBGP内部公开 内部公开学习内容学习内容 第一章第一章 BGP基本原理基本原理 第一节 BGP概念 第二节 BGP报文及连接状态 第三节 BGP通告原则 内部公开BGP消息类型消息类型BGP 使用四种类型的消息:nOPEN 用于建立 BGP 连接nKEEPALIVE 用于保持BGP连接nUPDATE 发送 BGP 路由更新或撤消nNOTIFICATION BGP差错提示信息 内部公开OPEN Messagen版本号:在对等体之间协商都双方支持的最高版本号nAS号:本BGP路由器的AS号码,占2字节n保持时间:双方协商后取2者的较小值nBGP标识:表示发送者的ROUTER IDn可选参数:如密码认证,能力协商等 OPEN 消息用于BGP 连接的建立,它包含以下内容:AS100AS200OPENOPEN 内部公开nROUTER-ID 的选择和配置n路由器会选择当前接口中接口地址最小的地址,环回接口优先。ROUTER-ID通过命令bgp router-id 进行配置,当两个路由器的ROUTER ID 相同时,邻居是无法建链。nHOLD TIME保持时间的协商,KEEPALIVE保活时间的计算 nHOLD TIME时间取双方的最小值, KEEPALIVE时间按照协商后的HOLD TIME时间乘以本地配置的KEEPALIVE /HOLD TIME的比率(最大1/3)。n当OPEN报文中出现错误时会触发发送差错通告消息同时触发邻居断链。OPEN Message 需要注意的问题需要注意的问题 内部公开BGP KEEPALIVE MessageAS100AS200KEEPALIVESn发送周期:缺省为30秒(对等体之间发送)n保持时间(Hold time),一般为90秒n每次从邻居处接收到Keepalive 报文将重置hold time定时器;如果hold time定时器超时,peer就认为对等体down掉。n在建立 BGP 连接时,双方协商保持时间的时候将会取最低值。BGPKEEPALIVE 消息用于保持BGP 连接,其长度是 19 个字节: 内部公开n配置邻居的KEEPALIVE TIME 和 HOLD TIME后必须触发邻居重新建链,新的配置才会生效。n通过命令show ip bgp neighour keepalive X.X.X.X 可以查看指定邻居KEEPALIVE消息的收发情况,包含收发keepalive的时间间隔统计信息,最大的时间间隔等;只有通过reset 重置邻居才会将邻居keepalive消息计数清空。KEEPALIVE Message 需要注意的问题需要注意的问题 内部公开UPDATE Message更新消息更新消息n相同属性的路由才能在一个Update消息中更新出去nUpdate也用于撤消那些“不可达路由”(Unreachable Routes)n如果路由稳定,将不会发送“更新消息”(Update)n更新可以只是针对路由条目的属性更新n更新包具有Keepalive报文的功效,使Holdtime定时器复位AS100AS20012.0.0.0/813.0.0.0/814.0.0.0/815.0.0.0/8Route updates12.0.0.0/813.0.0.0/8Withdrawn routes15.0.0.0/8 内部公开n当update报文中出现错误时会触发发送差错通告消息同时触发邻居断链。n对于 从IBGP学习的路由,LOCAL_PREF属性是公认必遵的属性,如果路由没有携带该属性做无效路由处理。UPDATE Message 需要注意的问题需要注意的问题 内部公开NOTIFICATION Message差错通告消息差错通告消息AS100AS200NOTIFICATIONAuthentication failuren当检测到有错误发生时,将会发送“通告消息” (Notification message)n“通告消息” (Notification message)将会关闭 BGP 会话n可能出现的错误信息包括:验证失败,路由回路,等等 内部公开nBGP 差错通告消息中携带的错误码和错误子码是定位邻居断链原因的重要信息。n邻居会将触发最后一次状态由ESTABLISH状态切换到IDLE状态的错误码和错误子码记录下来。可以通过命令show ip bgp neighbor X.X.X.X命令查看该信息。NOTIFICATION Message需要注意的问题需要注意的问题 Connections established 2 last error code is 4 Last reset 2w4d, reset due to Peer timeout Local host: 222.60.11.11, Local port: 179 Foreign host: 222.60.11.12, Foreign port: 1024 内部公开n空闲(Idle)n连接(Connect)n行动(Active)nOPEN发送(Open sent)nOPEN证实(Open confirm)n已建立(Established)BGP邻居的各个连接状态邻居的各个连接状态 内部公开BGP连接状态转换连接状态转换ActiveOpen-sentOpen-confirmEstablishedIdleConnectConnect-Retry定时器超时TCP 连接失败Connect-Retry定时器超时StartOthersTCP 连接失败ErrorErrorErrorKeepAlive定时器超时收到KeepAlive报文1. KeepAlive定时器超时2. 收到Update报文3. 收到KeepAlive报文收到OPEN报文TCP 连接建立TCP 连接建立Others内部公开 内部公开学习内容学习内容 第一章第一章 BGP基本原理基本原理 第一节 BGP概念 第二节 BGP报文及连接状态 第三节 BGP通告原则 内部公开BGP路由通告原则路由通告原则n多条路径时,BGP Speaker只选最优的给自己使用(负载均衡和FRR除外)nBGP Speaker只把自己使用的路由(最优路由)通告给相邻体;nBGP Speaker从EBGP获得的路由会向它所有BGP相邻体通告(包括EBGP和IBGP);nBGP Speaker从IBGP获得的路由不向它的IBGP相邻体通告(反射器除外);nBGP Speaker从IBGP获得的路由是否通告给它的EBGP相邻体要依IGP和BGP同步的情况来决定;n当收到对端的refresh报文并且本端邻居支持refresh能力 BGP Speaker将把自己所有BGP路由通告给对等体;nGR过程中主备倒换方在GR结束时BGP Speaker会将把自己所有BGP路由通告给对等体。 内部公开BGP同步同步n因为IBGP之间可能非直接连接,这样非BGP路由器参与对BGP路由条目的数据包转发,需要IGP路由器也有相关BGP路由。n从IBGP邻居学习到的路由,必须在IGP中存在才能通告给EBGP邻居,这就是BGP与IGP的同步。该功能缺省生效,一般需手动关闭。IBGPEBGPEBGPAS100AS200AS300ABCEF10.1.1.1/24D 内部公开BGP路由通告方式一路由通告方式一 Network命令命令18.0.0.1/8RTBAS200OSPFRTB(config)#router bgp 200RTB(config-router-bgp)#network 18.0.0.0 mask 255.0.0.0OSPF发现路由18.0.0.1/8。如何把IGP(OSPF)发现的路由通告到RTB的BGP路由表中? 内部公开BGP路由通告方式二路由通告方式二 路由聚合路由聚合18.0.0.1/8RTBAS200OSPFOSPF发现路由18.0.0.1/8。如何把IGP(OSPF)发现的路由通告到RTB的BGP路由表中?RTB(config)#router bgp 200RTB(config-router-bgp)#aggregate-address 18.0.0.0 255.0.0.0 count summary-only 内部公开BGP路由通告方式三路由通告方式三 路由重分布路由重分布RTB (config) # router bgp 200RTB (config-router-bgp) # redistribute ospf-intOSPF发现路由18.0.0.1/8。如何把IGP(OSPF)发现的路由通告到RTB的BGP路由表中?18.0.0.1/8RTBAS200OSPF内部公开 内部公开学习内容学习内容 第二章第二章 BGP常用属性常用属性 第一节 属性概述 第二节 常用属性 内部公开BGP路径属性路径属性(Path Attributes)nBGP属性描述了BGP路由的特征nBGP属性(BGP Attributes)是一系列的参数nBGP属性是包括在BGP UPDATE消息中发送的nBGP属性用于BGP路由过滤和路由决策过程nBGP属性分“公认” (Well-known)与 “可选”(Optional) 内部公开HQnBGP公认属性:所有BGP路由器必须识别的属性nBGP公认属性分“公认必遵”和“公认自决”两种类型l“公认必遵” 属性:必须出现在所有的更新消息(Update message)里面l“公认自决” 属性:可以出现在更新消息(Update message)中,也可以不出现“公认公认” 属性属性Well-known Attributes 内部公开nBGP 可选属性:BGP路由器可以支持或不支持的属性nBGP 可选属性还分“可选过渡”(Transitive)与 “可选非过渡” (Nontransitive)两种类型l“可选过渡” 属性:如果被认可,将被标志成 “全部的”,然后传送出去;如果不被认可,将被标志成 “局部的”,然后传送出去l“可选非传递的” 属性:如果被认可,则自我处理不传递给邻居;如果不被认可,做丢弃处理“可选可选” 属性属性Optional Attributes 内部公开 内部公开学习内容学习内容 第二章第二章 BGP常用属性常用属性 第一节 属性概述 第二节 常用属性 内部公开n公认必遵属性:lAS路径 AS-path l下一跳 Next-hop l路由起源 Origin n公认自决属性:l本地优先级 Local preferencen可选过渡属性:l团体串 Communityn可选非过渡属性:l多出口识别 Multi-exit-discriminator (MED)BGP常用属性常用属性 内部公开AS路径属性路径属性 AS_Path Attribute nAS_Path 是一种强制性属性n它跟踪记录了路由包所经过的ASn每经过一个AS ,该AS号码被放置在AS_Path字段的最前面nAS_Path 用来防止路由环路的出现nAS 号码由 InterNIC 进行管理n私有的 AS 号码范围为:64512 65535n私有 AS 号码在 Internet 中必须被过滤掉AS100130.1.0.0/16AS200AS300130.1.0.0/16AS:100130.1.0.0/16AS:200 100 内部公开nAS_Path 由 BGP 自动更新nAS_Path 用于 BGP 进行路由选择n有着最短 AS_Path 的路径将被优先被选择nAS_Path 可以被修改(增大)AS100130.1.0.0/16AS200AS300130.1.0.0/16AS:100130.1.0.0/16AS:200 100AS400130.1.0.0/16AS:400 100 100130.1.0.0/16AS:100 100R1R2R3R4R5R6 示例: R4 将选择 AS200 作为穿越的路径AS路径用于路由选择路径用于路由选择 内部公开n“下一跳” 属性标明了该路由下一跳的 IP 地址,一般是BGP邻居的Loopback地址n“下一跳” 属性由 EBGP 或 IBGP 产生nEBGP路由在AS内传递时,缺省情况下,下一跳不变nIBGP 对等体必须有到 EBGP 下一跳地址的路由,否则该路由无效nBGP路由的下一跳地址一般需要通过递归查找,在IGP中找到邻近路由器的下一跳地址下一跳属性下一跳属性 Next-Hop Attribute 内部公开下一跳属性下一跳属性 Next-Hop Attribute nRouter A 以EBGP的方式将网络 172.16.0.0 通告给 Router B, 下一跳就是 10.10.10.3nRouter B以IBGP的方式将网络 172.16.0.0 通告给 Router C, 仍然保持着 10.10.10.3 作为下一跳地址AS 64500172.20.0.0172.16.0.0AS 6500010.10.10.110.10.10.3172.20.10.1172.20.10.2BCA 内部公开nIBGP 对等体可能没有到EBGP 的下一跳地址的路由n这种情况下,需要IBGP邻居修改 Next-hop 属性为本地地址。AS100130.1.0.0/16AS200AS300 ip address 201.1.100.1 255.255.255.0130.1.0.0/16Next-hop: 201.1.100.1R1R2R4R5130.1.0.0/16Next-hop: 100.1.1.1IBGPR3修改下一跳修改下一跳 内部公开n本地优先权被用于BGP路由决策n在BGP的路由决策过程中,本地优先权有着最高的级别n本地优先权由IBGP在本地AS内进行传递n本地优先权数值上越大,则优先级越高n本地优先权默认值为100本地优先权本地优先权Local Preference Attribute 内部公开使用本地优先权使用本地优先权(1)nR2 and R3 都可以访问到 AS400n从R2 and R3 的AS_Path的长度都是一样的n这时,就可以利用本地参考值(Local Preference)来打破平局AS100AS200AS300120.1.0.0/16AS:100 400120.1.0.0/16AS:300 400AS400120.1.0.0/16120.1.0.0/16AS:400120.1.0.0/16AS:400R1R2R3R4R5R6 内部公开使用本地优先权使用本地优先权(2)AS100AS200IBGPAS300120.1.0.0/16AS:100 400120.1.0.0/16AS:300 400AS400120.1.0.0/16120.1.0.0/16AS:400120.1.0.0/16AS:400R1R2R3R4R5R6120.1.0.0/16Local Pref:300120.1.0.0/16Local Pref:100 内部公开路由起源属性路由起源属性Origin Attribute nIGP (i) 使用Network命令通告的路由,这些路由肯定存在于IGP中nEGP (e) 从EGP分发(Redistribute)而来,目前EGP协议基本消失了nIncomplete (?) 从IGP 或静态路由重分布(Redistribute)而来 在BGP选择最佳路由时,路由起源为i的优先;次子为EGP,最后是Incomplete。 内部公开BGP最佳路由选择最佳路由选择n优选下一跳可达的路由,如下一跳无效,该路由忽略;n优选本地优先级(Local-preference)最大的路由;n优选本地产生的路由,聚合BGP路由优于其他的BGP路由;n如果本地优先级相同,优选具有最短AS路径(AS-PATH)的路由;n如果AS路径长度还相同,优选具有最低起源类型(Orign)的路由;n起源类型相同优选最低MED 的路由;n相同的MED值,外部优于内部(EBGPIBGP);n如果以上都一样,优选可以通过最近相邻体到达的路由(IGP的Metric最小);n内部路径相同优选具有最低路由器ID的路由,但如果存在ORIGINATOR_ID属性,用ORIGINATOR_ID属性的比较来代替ROUTER-ID的比较,同样属性值小的优先;n比较CLUSTER_LIST 的长度,短的优先;n优选使用最低的邻居接口地址的路由。内部公开 内部公开学习内容学习内容 第三章第三章 BGP典型配置典型配置 第一节 基本命令 第二节 配置举例 内部公开BGP 配置基本步骤配置基本步骤n设置自治系统号n关闭同步功能(根据需要)n指定BGP邻居和对方AS号n通告路由 内部公开基础命令基础命令(1)n启动BGP协议: ZXR10#config terminal ZXR10(configure)#router bgp 100n上述语句表明路由器ZXR10运行了BGP协议,且属于AS100。 注意:一台路由器只能属于一个AS。 内部公开n关闭同步: ZXR10(configure-router)#no synchronization 上述语句表明路由器ZXR10关闭了同步功能n配置BGP邻居 ZXR10 (configure)# neighbor remote-as number:邻居属于的那个自治系统,范围165535 基础命令基础命令(2) 内部公开n宣告网络: ZXR10(configure)#network n给BGP路由选择进程指定网络表,可以从已连接的路由、动态路由选择以及静态路由源中获知这些类型的网络。n缺省情况下,未指定网络。基础命令基础命令(3)内部公开 内部公开学习内容学习内容 第三章第三章 BGP典型配置典型配置 第一节 基本命令 第二节 配置举例 内部公开案例一案例一(1)n如下图:RTA与RTB形成EBGP邻居,RTB与RTD形成IBGP邻居,RTD与RTE形成EBGP邻居。IBGPEBGPEBGPAS100AS300AS200ABCDE129.213.1.2129.213.1.12.2.2.2/321.1.1.1/32 内部公开案例一案例一(2)nRTA配置如下: router bgp 100 neighbor 129.213.1.1 remote-as 200nRTB配置如下: router bgp 200 neighbor 129.213.1.2 remote-as 100 neighbor 2.2.2.2 remote-as 200 内部公开案例二案例二(1)使用Loopback地址建立IBGP邻居:n通常在配置BGP邻居时,推荐使用loopback地址。因为运行BGP的两路由器之间通常不是直连,使用loopback地址,可以避免BGP邻居受路由器接口物理特性影响。n在下图中,RTA强迫使用其loopback地址,作为其TCP连接的源。这样,当RTB与RTA建立邻居使用就使用了RTA的loopback地址。n必须保证2台路由器的Loopback地址能互通。 内部公开nRTA配置如下: router bgp 200 neighbor 190.225.11.1 remote-as 200 neighbor 190.225.11.1 update-source loopback1 nRTB配置如下: router bgp 200 neighbor 1.1.1.1 remote-as 200案例二案例二(2)IBGPAS200ACB190.225.11.1Loopback1:1.1.1.1/32 内部公开案例三案例三(1)EBGP中中Multihop的使用:的使用:n通常EBGP邻居需要在两台路由器直连接口上建立,当需要在非直连接口建立EBGP邻居时,我们需要使用Multihop命令。n如下图,RTA 需要与RTB的非直连接口地址2.2.2.2建立连接。此时,就需要使用Multihop命令。AB2.2.2.2129.213.11.1129.213.11.2AS100AS200 内部公开案例三案例三(2)nRTA配置如下: router bgp 100 neighbor 2.2.2.2 remote-as 200 neighbor 2.2.2.2 ebgp-multihopnRTB配置如下: router bgp 300 neighbor 129.213.1.1 remote-as 100 neighbor 129.213.1.1 update-source loopback1 内部公开案例四案例四(1)使用redistribute命令通告网络:n通过使用redistribute命令可以将IGP协议路由(静态,RIP、OSPF、ISIS等)再分配到BGP中。n使用redistribute命令时要应防止IGP从BGP学习到的路由再次重分布到BGP中。对于双向重分布,必须使用过滤命令防止路由环路的发生。n如下页图所示,RTC与RTB之间运行了OSPF协议,RTC与RTD之间运行BGP,并在OSPF协议与BGP协议之间进行路由重分布。 内部公开案例四案例四(2)n图中,RTC路由器上运行了OSPF及BGP协议,并进行了路由重分布。AB1.1.1.2129.213.1.0175.220.0.0AS100AS200CDAS3001.1.1.1 内部公开案例四案例四(3)n在下面配置中,OSPF协议学到的路由被重分布到BGP协议中。nRTC配置如下: router ospf 1 network 175.220.0.0 area 0 router bgp 200 neighbor 1.1.1.1 remote-as 300 redistribute ospf-int 内部公开BGP显示命令查看显示命令查看BGP连接状态连接状态n首先需要观察BGP的连接状态ZXR10#show ip bgp summary Neighbor Ver As MsgRcvd MsgSend Up/Down(s) State222.34.128.68 4 100 4 0 00:00:30 20 内部公开BGP显示命令查看显示命令查看BGP邻居信息邻居信息(1)n显示BGP邻居的详细信息:ZXR10#show ip bgp neighbor BGP neighbor is 222.34.128.68, remote AS 100, internal link BGP version 4, remote router ID 222.34.129.12 BGP state = Established, up for 00:06:29 Last read update 00:05:59, hold time is 90 seconds, keepalive interval is 30 seconds Neighbor capabilities: Route refresh: advertised and received Address family IPv4 Unicast: advertised and received All received 18 messages 5 updates, 0 errs; 1 opens, 0 errs; 12 keepalives; 0 vpnv4 refreshs, 0 ipv4 refreshs, 0 errs; 0 notifications, 0 other errs 内部公开BGP显示命令查看显示命令查看BGP邻居信息邻居信息(2)n显示BGP邻居的详细信息:(续) After last established received 16 messages 5 updates, 0 errs; 0 opens, 0 errs; 11 keepalives; 0 vpnv4 refreshs, 0 ipv4 refreshs, 0 errs; 0 notifications, 0 other errs All sent 19 messages 5 updates, 1 opens, 13 keepalives; 0 vpnv4 refreshs, 0 ipv4 refreshs, 0 notifications After last established sent 17 messages 5 updates, 0 opens, 12 keepalives; 0 vpnv4 refreshs, 0 ipv4 refreshs, 0 notifications 内部公开BGP显示命令查看显示命令查看BGP邻居信息邻居信息(3)n显示BGP邻居的详细信息:(续)For address family: IPv4 UnicastAll received nlri 19, unnlri 0, 18 accepted prefixesAll sent nlri 19, unnlri 0, 19 advertised prefixes; maximum limit 4294967295 Minimum time between advertisement runs is 30 seconds Minimum time between origin runs is 15 seconds For address family: VPNv4 Unicast no activateAll received nlri 0, unnlri 0, 0 accepted prefixesAll sent nlri 0, unnlri 0, 0 advertised prefixes; maximum limit 4294967295 Connections established 1 Local host: 222.34.128.72, Local port: 1033 Foreign host: 222.34.128.68, Foreign port: 179 内部公开BGP显示命令查看显示命令查看BGP路由表信息路由表信息n显示BGP路由表的详细信息:ZXR10#show ip bgp route Status codes: *valid, best, i-internalOrigin codes: i-IGP, e-EGP, ?-incomplete Dest NextHop Metric LocPrf RtPrf Path* 222.34.129.1/32 0.0.0.0 110 i *i 222.34.129.1/32 222.34.128.65 100 200 i* 222.34.129.2/32 0.0.0.0 110 i *i 222.34.129.2/32 222.34.128.65 100 200 i* 222.34.129.3/32 0.0.0.0 110 i *i 222.34.129.3/32 222.34.128.65 100 200 i 内部公开小结小结nBGP 的基本概念nBGP的常用属性的含义nBGP选择最佳路由的判断方法nBGP基本功能的配置方法n显示 BGP 运行状态的常用命令