




已阅读5页,还剩57页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019 12 30 DP500005BGP路由协议 ISSUE1 0 Page2 学习完此课程 您将会 掌握BGP协议的基本原理掌握BGP协议的路由属性及其应用 目标 Page3 第1章BGP路由协议的原理第2章BGP路由属性 内容介绍 Page4 BGP协议基本概念 一 什么是自治系统 AS 自治系统指由同一个技术管理机构管理 使用内部路由策略的一些路由器的集合 每个自治系统都有唯一的自治系统编号 自治系统的编号范围是1到65535 其中1到64511是注册的因特网编号 64512到65535是专用网络编号 Page5 没有BGP的日子里 Page6 有了BGP之后 链路层协议生成路由 IGP发现和计算路由 BGP控制路由传播和选择 Page7 BGP协议概述 BGP是一种外部网关协议 EGP 与OSPF RIP等内部网关协议 IGP 不同 其着眼点不在于发现和计算路由 而在于控制路由的传播和选择最佳路由 BGP使用TCP作为其传输层协议 端口号179 提高了协议的可靠性 BGP支持无类别域间路由CIDR ClasslessInter DomainRouting 路由更新时 BGP只发送更新的路由 大大减少了BGP传播路由所占用的带宽 适用于在Internet上传播大量的路由信息 BGP路由通过携带AS路径信息彻底解决路由环路问题 BGP提供了丰富的路由策略 能够对路由实现灵活的过滤和选择 BGP易于扩展 能够适应网络新的发展 BGP的主要目标是提供一种能够保证自治系统间无环路的路由选择信息交换的域间路由系统 BGP在路由器上以下列两种方式运行 IBGP InternalBGP EBGP ExternalBGP 当BGP运行于同一自治系统内部时 被称为IBGP 当BGP运行于不同自治系统之间时 称为EBGP Page8 Page9 BGP协议基本概念 三 何时选择BGP 何时不选择BGP 下列条件至少存在一个的时候 才应该使用BGP 自治系统系统允许数据包穿过它到达其他自治系统 自治系统多条外部连接 多个运营商之间 拥有多条到互联网的连接时 自治系统必须对进入和离开AS的数据流进行控制 下列情况 不需要使用BGP自制系统和自治系统或Internet间仅有单一连接时 设备内存和CPU性能不佳 无法运行BGP时 没有能力实施路由过滤或BGP路径选择时 自治系统间带宽较低时 Page10 AS的分类 单口AS stubAS 多归路过渡AS multihomedAS 过渡AS transitAS 过度AS 一般情况下一条路由是从自治系统内部产生的 它由某种内部路由协议发现和计算 传递到自治系统的边界 由自治系统边界路由器 ASBR 通过EBGP连接传播到其它自治系统中 路由在传播过程中可能会经过若干个自治系统 这些自治系统称为过渡自治系统 如 AS5 若这个自治系统有多个边界路由器 这些路由器之间运行IBGP来交换路由信息 这时内部的路由器并不需要知道这些外部路由 它们只需要在边界路由器之间维护IP连通性 如 AS2 AS3 AS4 路由到达自治系统边界后 若内部路由器需要知道这些外部路由 ASBR可以将路由引入内部路由协议 外部路由的数量是很大的 通常会超出内部路由器的处理能力 因此引入外部路由时一般需要过滤或聚合 以减少路由的数量 极端的情况是使用默认路由 Page11 StubAS 还有一种自治系统称为StubAS 如 AS1 AS6 AS7 其内部只有一个ASBR通过EBGP连接外部 同外部其他AS的通信要靠过渡自治系统来转接 对一个具体的ASBR来说 其路由的来源有两种 从对等体接收的从IGP引入的 对于接收的路由 根据其属性 如AS路径 团体属性等 进行过滤 并设置某些属性 如本地优先 MED值等 之后若需要的话 将具体的路由聚合为超网路由 BGP可能从多个对等体收到目的地相同的路由 根据规则选择最好的路由并加入IP路由表 对于IGP路由 则要经过引入策略的过滤和设置 BGP发送优选的BGP路由和引入的IGP路由给对等体 Page12 Page13 BGP工作机制 在BGP对等体建立之前 对等体之间首先进行TCP连接 BGP邻居间会通过Open消息协商相关参数 建立起BGP对等体关系 BGP邻居刚建立时 发送整个BGP路由表交换路由信息 之后为了更新路由表只交换更新消息 updatemessage 系统在运行过程中 通过接收和发送keep alive消息来检测相互之间的连接是否正常的 BGP发言人 BGPspeaker发送BGP消息的路由器称为BGP发言人 speaker 它不断的接收或产生新路由信息 并将它广告 advertise 给其它的BGP发言人 当BGP发言人收到来自其他自治系统的新路由广告时 如果该路由比当前已知路由好 或者当前还没有可接受路由 它就把这个路由广告给自治系统内所有其它的BGP发言人BGPpeer一个BGP发言人也将同它交换消息的其它的BGP发言人称为同伴 peer BGPgroup若干相关的同伴可以构成同伴组 group Page14 Page15 BGP两种邻居 IBGP和EBGP 对等体 BGP在路由器上以下列两种方式运行 IBGP InternalBGP EBGP ExternalBGP 如果两个交换BGP报文的对等体属于同一个自治系统 那么这两个对等体就是IBGP对等体 InternalBGP 如RTB和RTD 如果两个交换BGP报文的对等体属于不同的自治系统 那么这两个对等体就是EBGP对等体 ExternalBGP 如RTA和RTB IBGP对等体之间不一定是物理上直连的 但必须保证逻辑上全连接 TCP连接能够建立即可 为了IBGP对等体路由通告的可靠性 我们一般都是采用loopback接口建立IBGP邻居关系 同时必须指定路由更新报文的源接口 peer group name peer address connect interfaceinterface name一般的路由器 包括Quidway系列路由器 都默认要求EBGP对等体之间是有物理上的直连链路 同时他们一般也提供改变这个缺省设置的配置命令 允许同非直连相连网络上的邻居建立EBGP连接 Page16 Page17 BGP路由通告原则 重要 存在多条路径时 BGPSpeaker只选取最优的使用 非负载分担 BGPSpeaker只把自己优选的路由通告给相邻体BGPSpeaker从EBGP获得的路由会向它所有BGP相邻体通告 包括EBGP和IBGP BGPSpeaker从IBGP获得的路由不向它的IBGP相邻体通告BGPSpeaker从IBGP获得的路由是否通告给它的EBGP相邻体要依IGP和BGP同步的情况来决定连接一建立 BGPSpeaker按照以上原则 把自己所有BGP路由通告给新相邻体 Page18 BGP路由表与系统路由表的关系 存在多条路径时 BGPSpeaker只选取最优的使用 非负载分担时 BGPSpeaker只把自己使用的最优路由通告给相邻体BGPSpeaker只把自己使用的最优的路由加入到路由表中 Page19 BGP路由通告原则 BGPSpeaker从IBGP获得的路由不向它的IBGP相邻体通告 如果存在RR呢 Page20 BGP同步 BGPSpeaker从IBGP获得的路由是否通告给它的EBGP相邻体要依IGP和BGP同步的情况来决定 Page21 同步规则的基本需求 BGP同步规则的目的 为防止一个AS 不是所有的路由器都运行bgp 内部出现路由黑洞 即向外部通告了一个本AS不可达的虚假的路由 BGP同步规则的基本需求如果一个AS内部存在非bgp路由器 那么就出现了bgp和igp的边界 需要在边界路由器将bgp路由发布到igp中 才能保证AS所通告到外部的bgp路由 在AS内部是连通的 实际上是要求bgp路由和igp路由的同步 不建议 以下情况可以安全关闭同步 华为设备缺省情况下非同步 本AS不是过渡AS本AS内所有路由器建立IBGP全连接 Page22 IBGP全互联 IBGP全互联AS内部的所有路由器都运行BGP 就可以关闭所有路由器的同步 而不影响路由的通告和连通性 随之产生的问题 当as内部路由器数量很多时 需要建立N N 1 2个ibgp会话 带来过度的系统开销 扩展性不好 即15个路由器的AS 需要建立15 15 1 2 105个ibgp会话 Page23 IBGP全互联的解决方案 一 路由反射器AS内部的所有路由器都运行bgp 在AS内部部署路由反射器 构建hubandspoke 中心说话 的ibgp 会话数为N 1 然后关闭所有bgp路由器的同步 问题 此方案可以使bgp路由器传递ibgp路由到ebgp 并保证bgp路由的连通性 但是对物理拓扑有很大的限制 Page24 BGP路由反射 路由反射器 RouteReflector AS101 AS100 AS102 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 Page25 Page26 IBGP全互联的解决方案 二 2 bgp联盟AS内部的所有路由器都运行bgp 把一个原始的AS基于网络拓扑划分为若干个sub AS 又称联盟AS 联盟AS之间的bgp邻居叫做联盟ebgp 不需要fullmesh 全连接 bgp会话 在每个联盟AS内部运fullmeshibgp或者hubandspoke反射器 然后就可以关闭所有路由器的bgp同步功能 结论 bgp联盟结合路由反射器的方式 较好的解决了bgp的同步规则带来的需求 是最为有效的解决方案 Page27 BGP联盟 联盟 Confederation AS100 IBGP EBGP AS1001 AS1003 AS1002 AS101 EBGP Confed 联盟通过把大的AS分成多个更小的自治系统来解决IBGP全互连的问题 这些自治系统叫做成员自治系统或子自治系统 因为成员自治系统之间使用EBGP会话 因此它们不需要全互连 然而 在每一个成员AS中 IBGP全互连的要求仍然适用 成为BGP路由的途径 纯动态注入路由器将通过IGP路由协议动态获得的路由信息直接注入到BGP中去 半动态注入路由器有选择性的 通过配置命令 将IGP发现的动态路由信息注入到BGP系统中去静态注入路由器将静态配置的某条路由注入到BGP系统中 Page28 Page29 成为BGP路由的途径之一 纯动态注入 OSPF发现路由18 0 0 1 8把IGP OSPF 发现的路由纯动态地注入到RTB的BGP路由表中 Page30 成为BGP路由的途径之二 半动态注入 OSPF发现路由18 0 0 1 8把IGP OSPF 发现的路由半动态地注入到RTB的BGP路由表中它和纯动态注入的区别在于不是将IGP发现的所有路由信息注入到BGP中去 18 0 0 1 8 OSPF RTB AS200 Page31 成为BGP路由的途径之三 静态注入 人为配置静态路由18 0 0 1 8把人为配置的静态路由注入到RTB的BGP路由表中 Page32 BGP报文种类 BGP报文有四种类型 Open 打招呼 你好 跟我交个朋友吧 KeepAlive 我还活着呢 别不理我Update 有新闻 Notification 我不跟你玩了 Page33 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 Page34 Page35 Open报文 Open报文是由报文头加如下结构构成的 来交换各自的版本 自治系统号 保持时间 BGP标识符等信息 进行协商 Version 1字节 发端BGP版本号如果BGP对等体之前的OPEN报文中Version不一致 选择较大的Version MyAutonomousSystem 2字节无符号整数 本地AS号HoldTime 2字节无符号整数 发端建议的保持时间BGPIdentifier 4字节 发端的路由器标识符如果BGP对等体之前的OPEN报文中HoldTime时间不一致 选择较小的HoldTime OptionalparmetersLen 1字节 可选的参数的长度OptionalParameters 变长 可选的参数 Page36 Open报文 Page37 KeepAlive报文 KeepAlive报文只有报文头 主要用于对等体路由器间的运行状态以及链路的可用性确认 缺省情况下 发送Keepalive的时间间隔为60秒 Holdtime是180秒 每次从邻居处接收到Keepalive报文将重置holdtime定时器 如果holdtime定时器超时 peer就认为对等体down掉 Page38 Update报文 Update报文由报文头加如下结构构成 携带的是路由更新信息 Page39 Notification报文 Notification报文由报文头加如下结构构成 当BGP检测到差错 连接中断 协商出错 报文差错等 时 发送NOTIFICATION报文 关闭同对等体的连接 Notification报文主要在发生错误或对等体连接被关闭的情况下使用 该消息携带各种错误代码 如定时器超时等 包括错误代码 辅助错误代码及错误信息 Errorcode 1字节 错误代码 错误代码错误类型1消息头错2OPEN消息错3UPDATE消息错4保持时间超时5状态机错6退出Errsubcode 1字节 辅助错误代码 略 Data 变长 依赖于不同的错误代码和辅助错误代码 用于诊断错误原因 Page40 Page41 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连接 Page42 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报文 同时复位保持计时器 我们常常在displaybgppeer为active时 看到这样两种状态active和establish 当BGP的邻居状态是active时 BGP邻居之间还无法通告路由 主要是因为TCP连接还没有建立起来 Page43 Page44 BGP协议中消息的应用 通过TCP建立BGP连接时 发送open消息连接建立后 如果有路由需要发送或路由变化时 发送UPDATE消息通告对端路由信息稳定后此时要定时发送KEEPALIVE消息以保持BGP连接的有效性当本地BGP在运行中发现错误时 要发送NOTIFICATION消息通告BGP对端 Page45 第1章BGP路由协议的原理第2章BGP路由属性 内容介绍 Page46 BGP的路由属性 表达了路由的特征便于扩展过渡和非过渡的 必遵和可选的公认必遵 well knownmandatory 公认任意 well knowndiscretionary 可选过渡 optionaltransitive 可选非过渡 optionalnon transitive BGP协议的重点 必遵属性 在路由更新数据报文中必须存在的路由属性 这种属性域在BGP路由信息中有着不可替代的作用 如果缺少必遵属性 路由信息就会出错 如AS Path就是必遵属性 BGP用它来避免路由环路 没有它路由就可能出问题 可选属性 它是可选的 不一定存在于路由更新数据报文中 我们设置它完全是根据需要 如MED属性 我们就用它来控制选路 过渡属性 具有AS间可传递性的属性就是过渡属性 过渡属性的域值可以被传递到其他AS中去并继续起作用 如Origin属性 路由信息的起源一旦确定 域值会一直存在 无论此路由信息被传到哪个AS中去 非过渡属性 只在本地起作用 出了自治系统 域值就恢复成缺省值 Page47 BGP的路由属性 Page48 BGP的路由属性 1 Origin2 AS Path3 Nexthop4 MED5 Local Preference6 Atomic Aggregate7 Aggregator8 Community 9 Originator ID10 Cluster List11 DestinationPref MCI 12 Advertiser Baynet 13 Rcid Path Baynet 14 MP Reach NLRI15 MP Unreach NLRI16 Extended Communities Page49 Origin属性 起源 一般的 具体的实现按如下方式决定一条路由的Origin属性某条路由是直接而具体的注入到BGP路由表中的 则origin属性为IGPBGP把聚合路由和用直接注入到BGP路由表的具体路由看成是AS内部的 起点类型设置为IGP 即用 networkXXXXXXXX 命令注入的路由或者是聚合的路由 路由是通过EGP得到的 则origin属性为EGP其他情形下 Origin属性都为IncompleteBGP把通过其它IGP协议引入的路由起点类型设置为Incomplete 即用 import 命令注入的路由 Page50 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 400300200 经AS200 AS500到达AS100的路径为d2 500200 这时BGP优先选择较短的路径d2 注 路由的AS Path域在记录AS number时 总是把新的AS numbe放在前面 如上图 路由先经过AS200 记录 d2 200 路由再经过AS500 记录 d2 500200 Page51 AS Path属性 Page52 NextHop属性 一 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属性遵循下面的规则 BGPSpeaker在向EBGP对等体发布某条路由时 会把该路由信息的下一跳属性设置为本地与对端连接的接口地址 BGPSpeaker将本地始发路由发布给IBGP对等体时 会把下一跳属性设置为发起该路由的路由器的接口地址 BGPSpeaker在向IBGP对等体发布从EBGP对等体学来的路由时 并不改变该路由信息的下一跳属性 AS100内部IBGP对等体间传递IBGP内部路由 在AS100中 三台路由器上运行IGP协议 RTA与RTC之间运行IBGP 则RTA接收到Update报文中目的地址是8 0 0 0的路由的Next Hop属性是1 1 3 1 也就是到目的地的始发路由器RTC的接口地址 Page53 NextHop属性 二 Page54 Local Preference属性 D local pref1100 D local
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论