边界网关协议(Border Gateway Protocol,BGP)
目录 |
BGP(Border Gateway Protocol)即边界网关协议,是互联网上一个核心的去中心化自治路由协议。它通过维护IP路由表或‘前缀’表来实现自治系统(AS)之间的可达性,属于矢量路由协议。 BGP不使用传统的内部网关协议(IGP)的指标,而使用基于路径、网络策略或规则集来决定路由。因此,它更适合被称为矢量性协议,而不是路由协议。
BGP是为了取代外部网关协议(EGP)协议而创建的,允许运行一个完全分散的路由系统,从ARPANET模型的核心路由系统过渡到包括NSFNET骨干网及其相关区域网络的分散系统。这使得互联网成为一个真正的分权制度。自1994年以来,BGP已有四个版本在互联网上使用,所有以前的版本现在已经过时不可用。在第4版主要的增强功能是通过支持无类别域间路由和路由聚合来减少路由表的大小。第4版是在早期的RFC 1771第4版的基础上编纂,通过20多个草案修改,最终在2006年1月通过形成RFC 4271。RFC 4271版本纠正了一些错误,澄清模糊之处,带来了更接近工业级应用标准的RFC行业惯例。
大多数互联网服务提供商(ISP)必须使用BGP来与其他ISP建立路由连接(尤其是当它们采取多宿主连接时)。因此,即使大多数互联网用户不直接使用它,但是与7号信令系统(SS7)相比,即通过PSTN的跨供应商核心响应设置协议,BGP仍然是互联网最重要的协议之一。特大型的私有IP网络也可以使用BGP。例如当需要将若干个大型的开放最短路径优先(OSPF)网络进行合并,而开放最短路径优先协议本身又无法提供这种可扩展性时。使用BGP的另一个原因是其能为多宿主的单个ISP(RFC 1998)或多个ISP网络提供更好的冗余网络。
①多条路径时,BGPSpeaker只选最优的路径给自己使用。
②BGPSpeaker只把自己使用的路由通告给邻居。
③BGPSpeaker从EBGP获得的路由会向它所有BGP邻居通告(包括EBGP和IBGP)。
④BGPSpeaker从IBGP获得的路由不向它的IBGP邻居通告。
⑤BGPSpeaker从IBGP获得的路由是否通告给它的EBGP邻居要依IGP和BGP同步的情况来决定。
⑥连接一旦建立,BGPSpeaker将把自己所有BGP路由通告给新邻居。
BGP是一种外部路由协议,与OSPF、RIP等的内部路由协议不同,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择最好的路由。
为控制路由的传播和路由选择,BGP为路由附带属性信息。BGP可在给定的路由上附上很多属性,因此,IGP使用的路由更新包比BGP使用的路由更新报文更小,这也是IGP和BGP最大的不同之处。
BGP路由属性是一套参数,它对特定的路由进行了进一步的描述,使得BGP能够对路由进行过滤和选择。在配置路由策略时将广泛地使用路由属性,但是不是所有路由属性都要被用上。路由属性被分为以下几类。
表:几种常用属性
类型代码 | 属性名 | 必遵/可选 | 过渡/非过渡 |
1 | Origin | 必遵 | 过渡 |
2 | AS-Path | 必遵 | 过渡 |
3 | Next-hop | 必遵 | 过渡 |
4 | MED | 可选 | 非过渡 |
5 | Local-preference | 可选 | 非过渡 |
8 | Community | 可选 | 过渡 |
每个属性都有特定的含义并可以灵活地运用,使得BGP的功能十分强大。BGP属性可以扩展到256种。这里列出了一些BGP的常用属性。