BGP协议基础

举报
ynfqshep 发表于 2019/01/19 07:52:49 2019/01/19
【摘要】 边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓朴图并由此清除了路由环...

     边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓朴图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。

BGP协议特性:

 BGP是自治系统外部路由协议,用来在AS之间传递路由信息

路径矢量路由协议,从设计上避免了环路的发生

其路由信息中携带了所经过的全部AS路径列表。这样,接收该路由信息的BGP路由器可以明确的知道此路由信息是否源于自己的AS。如果是源于自己的AS,BGP就会丢弃此条路由,这样就根本的解决了AS之间产生环路的可能。

TCP承载,端口号是179

天然的可靠传输机制,重传、排序等机制来保证BGP协议信息交换的可靠性。

支持CIDR和路由聚合

可以将一些连续的子网聚合成较大的子网(突破了自然分类的限制),从而可以在一定程度上控制路由表的快速增长,并降低了路由查找的复杂度。

路由附带丰富的属性

只发送增量路由更新

在邻居关系建立后,BGP路由会将自己的全部路由信息通告给邻居,此后如果路由表发生了变化,则只将增量部分发送给邻居。这样可以大大减少BGP传播路由所占用的带宽,以利于在Internet上传播大量的路由信息,并降低路由器CPU与内存的消耗。


自治系统:autonomous system。在互联网中,一个自治系统(AS)是一个有权自主地决定在本系统中应采用何种路由协议的小型单位。这个网络单位可以是一个简单的网络也可以是一个由一个或多个普通的网络管理员来控制的网络群体,它是一个单独的可管理的网络单元(例如一所大学,一个企业或者一个公司个体)。一个自治系统有时也被称为是一个路由选择域(routing domain)。一个自治系统将会分配一个全局的唯一的16位号码,有时我们把这个号码叫做自治系统号(ASN)。

一个自治系统就是处于一个管理机构控制之下的路由器和网络群组。它可以是一个路由器直接连接到一个LAN上,同时也连到Internet上;它可以是一个由企业骨干网互连的多个局域网。在一个自治系统中的所有路由器必须相互连接,运行相同的路由协议,同时分配同一个自治系统编号。自治系统之间的链接使用外部路由协议,例如BGP.。

多出口的自治系统

多出口的自治系统(Multihomed AS)是指与其它的自治系统具有多于一个连接的自治系统。一旦那些连接中的某一个完全失效,这个多出口的自治系统也仍然能保持和互联网络的联系。但是,这类自治系统不允许与自己所连接的其它任一个自治系统穿过自己来访问另一个自治系统。BGP将路由发给eBGP邻居时,会将自己的AS号码添加到AS-path中,所以可以以此来防止环路;而在iBGP之间传递路由时,强制将BGP路由在AS内部只传一跳来防止环路的机制。在IGP协议当中,路由协议分成两大类:距离矢量路由协议和路径矢量路由协议,路径矢量算法结合了距离矢量特性与AS-path防环特性。BGP路由的从eBGP学习到的默认AD(管理距离)值为20,iBGP学习到的路由默认AD值为200。顺便提一下其它路由协议的默认AD值:直连接口为0、静态路由为1、EIGRP汇总路由为5、EIGRP为90、IGRP为100、OSPF为110、IS-IS为115、RIP(V1&V2)为120、EGP为140、ODR为160、ExEIGRP(外部EIGRP)为170,未知为255。BGP路由器有两张路由表,一张普通路由表:show ip route,一张BGP路由表:show ip bgp。当iBGP路由需要跨越N个没有BGP路由,只有IGP路由时,需要在iBGP路由起用BGP Synchronization,否则认为此路由无效而不能发给其它邻居。IGP路由协议和BGP路由协议在有多条路径可以到达同一目的地时,IGP则根据最小metric值来选择最优路径,而BGP则比较路由条目中的Path Attributes,即路径属性。

BGP最优路径选择如下:

最高Weight值。默认Weight值为0,本地发起路由为32768。

最高LOCAL_PREF值,如果Weight值相同,则选择拥有最高LOCAL_PREF值的路由,默认为100。)

本地发起路由,用network命令导入,或将其它路由协议重分布进BGP路由表,最后是汇总路由表。

最短AS_PATH。如果本地发起路由无法比出最优路径,则选择拥有最短AS_PATH路由,但可忽略对AS_PATH的比较,而直接比较下一属性,输入命令:bgp bestpath as-path ignore。

最低Origin类型。如果AS_PATH无法比出最优路径,则选择拥有最低Origin类型的路由,从IGP导入,从EGP学习,以及重分布,它们的优先级为IGP优先EGP,EGP优于Incomplete,即IGP>EGP>Incomplete。

6)最小MED值。如果Origin类型无法比出最优路径,则选择拥有最小MED值的路由,并且只有当多个下一跳邻居在同一AS时才比较MED值。如果要在多个不同AS的下一跳中比较MED,可在BGP进程中输入命令bgp always-compare-med,注意须保证此命令在整个AS的路由器上输入,否则可能产生路由环路。默认的MED值为0,如果收到一条没有MED的路由,也认为是0。

eBGP优于iBGP

最小IGP metric到达下一跳的路由。如果多条路径的下一跳邻居同为eBGP或iBGP,则选择拥有最小IGP metric到达下一跳的路由。)

负载均衡。如果开启的话。maximum-paths n--多条路径的下一跳邻居都为eBGP时,输入此命令。maximum-paths ibgp n--多条路径的下一跳邻居都为ibgp时,输入此命令。n为执行负载均衡的路径数量,最大值为6,默认为1。

如果下一跳都为eBGP,则选择最早学习到的路由(即时间最长的路由)。如果要忽略比较路由学习到的时间长短,可在BGP进程下输入命令bgp best path compare-routerid。

最低Router-ID下一跳。BGP的Router-ID选举如同OSPF,在此步,拥有最低Router-ID的下一跳路由将被选为最优路径。

最短cluster list。cluster list只在BGP reflector(RR)的环境下才有,功能如同AS_PATH。

最小下一跳的邻居地址。如果比较之前的所有属性都无法选出最优路径,最终选择下一跳的邻居地址最小的路由,这个地址就是在建立邻居时所指的地址。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。