分享

BGP的基本原理

 Teacher_Lin 2020-05-21

一、BGP的基本概念

边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。

BGP边界网关协议,用于AS与AS之间的路由协议,BGP本身只负责控制路由,数据转发依然靠静态和IGP路由。

BGP对等体和IGP对等体不同,BGP对等体是指使用TCP建立连接的两端,而非与IGP同概念的直连邻居,只要有TCP可以建立连接并不需要直连。

IGP路由选择使用metric,而BGP中使用路由属性来做路由选择。

二、BGP的基本分类

BGP分为同一个AS内的IBGP和不同AS之间的EBGP。

IBGP中的EBGP叫做联邦,目的是为了解决IBGP内路由只传一跳的特性,与路由反射器RR功能一样。

EBGP邻居默认情况下限制了建立邻居的最大跳数为1,如果不是直连接口收发BGP报文需要修改最大跳数。

三、BGP的建立过程

BGP对等体建立的三个阶段:Idle(查找到达对等体路由)、Active(主动建立TCP连接)、Established(对等体建立完成)

BGP对等体建立的必要条件:IBGP中需要TCP连接可达,EBGP中需要TCP可达+允许的最大条数可达(默认是1直连),EBGP中如果需要使用Loopback等接口来(收发BGP报文)建立对等体,那么就必须修改允许的最大条数。

四、BGP的特点

BGP对网络拓扑结构没有限制,其特点包括:

(1)实现自治系统间通信,传播网络的可达信息。BGP 是一个外部网关协议,允许一个AS与另一个AS进行通信

(2)多个BGP路由器之间的协调。如果在一个自治系统内部有多个路由器分别使用BGP与其他自治系统中对等路由器进行通信,BGP可以协调者一系列路由器,使这些路由器保持路由信息的一致性。

(3)BGP支持基于策略的选路(policy-baserouting)。一般的距离向量选路协议确切通告本地选路中的路由。而BGP则可以实现由本地管理员选择的策略。BGP路由器可以为域内和域间的网络可达性配置不同的策略。

(4)可靠的传输。BGP路由信息的传输采用了可靠地TCP协议。

(5)路径信息。在BGP通告目的网络的可达性信息时,处理指定目的网络的下一跳信息之外,通告中还包括了通路向量(path vector),即去往该目的网络时需要经过的AS的列表,使接受者能够了解去往目的网络的通路信息。

(6)增量更新。BGP不需要再所有路由更新报文中传送完整的路由数据库信息,只需要在启动时交换一次完整信息。后续的路由更新报文只通告网络的变化信息。这种网络变化的信息称为增量(delta)。

(7)BGP支持无类型编制(CIDR)及VLSM方式。通告的所有网络都以网络前缀加子网掩码的方式表示。

(8)路由聚集。BGP允许发送方把路由信息聚集在一起,用一个条目来表示多个相关的目的网络,以节约网络带宽。

(9)BGP还允许接收方对报文进行鉴别和认证,以验证发送方的身份。

五、BGP的通告原则

BGP在进行路由通告的时候,需要遵循以下原则:

(1)多条路径时,BGP Speaker只选最优的给自己使用(负载均衡和FRR除外)。

(2)BGP Speaker只把自己使用的路由(最优路由)通告给相邻体。

(3)BGP Speaker从EBGP获得的路由会向自己所有BGP相邻体通告(包括EBGP和IBGP)。

(4)BGP Speaker从IBGP获得的路由不向自己的IBGP相邻体通告(反射器除外)。

(5)BGP Speaker从IBGP获得的路由是否通告给自己的EBGP相邻体要根据IGP和BGP同步的情况来决定。

(6)当收到对端的refresh报文并且本端邻居支持refresh能力,BGP Speaker将把自己所 有BGP路由通告给对等体。

(7)GR过程中,主备倒换方在GR结束时BGP Speaker会把自己所有BGP路由通告给对等体。

六、BGP的相关概念

AS(Autonomoussystem):自治系统,指在一个(有时是多个)组织管辖下的所有IP网络和路由器的全体,它们对互联网执行共同的路由策略。也就是说,对于互联网来说,一个AS是一个独立的整体网络。而BGP实现的网络自治也是指各个AS自治。每个AS有自己唯一的编号。

IGP(Interior Gateway Protocol):内部网关协议,在一个AS内部所使用的一种路由协议。一个AS内部也可以有多个路由器管理多个网络。各个路由器之间需要路由信息以知道子网络的可达信息。IGP就是用来管理这些路由。代表的实现有RIP和OSPF。

EGP(Exterior Gateway Protocol):外部网关协议,在多个AS之间使用的一种路由协议,现在已经淘汰,被BGP取而代之。

七、网络构建实例

(1)假设小明正在搭建一个云环境,提供虚拟机服务。

云里的虚机需要有互联网访问能力,于是小明向ISP(Internet service provider)申请了一个公网IP,这里的ISP可以是联通,移动,电信等等。虚机们可以通过路由器的NAT/PAT(Network / Port address translation)将自己的私网IP转换成这个公网IP,然后小明在云中路由器上将ISP router的地址设为默认路由。这样地址转换之后的IP包都发送到了ISP,进而发送到了互联网(这也是我们家用路由器能让家里的设备上网的原理)。这样小明的1.0版本云简单上线。这里小明不需要BGP。

(2)通过互联网访问虚机(也就是从互联网访问我们家里的电脑)

通过端口转发(Port Forward),将虚机的一个端口与公网IP的端口进行映射。例如将虚机的22端口映射到公网IP的1122端口,那么可以通过互联网ssh到公网IP:1122,登陆虚机。这部分工作仍然是在小明的云中路由器完成。这样,小明的2.0版本云上线了,这里小明还是不需要BGP。

2.0版本虽然支持了从互联网访问虚机,但是还有问题:每个虚机每开放一个端口都需要映射一次;公网IP的端口是有限的。

(3)申请了一些公网IP地址,对于需要从外网访问的虚机,直接给它们分配公网IP

为了解决问题,小明向联通申请了一些公网IP地址,对于需要从外网访问的虚机,直接给它们分配公网IP。这样小明的3.0版本云上线了,这里小明还是不需要BGP。因为:联通是小明云唯一连接的ISP,小明只能通过联通访问互联网,所以小明的云中路由器的默认路由只能设置成ISP 路由器的地址。小明云里面的公网IP都是联通分配的,联通当然知道该从哪个IP地址作为下一跳去访问那些IP地址。

(4)申请了自己的公网IP池,并向联通和电信买了线路。

小明向IANA(Internet Assigned Numbers Authority)申请了自己的公网IP池。因为有了自己的公网IP,也必须要考虑申请AS号。AS号是一个16bit的数字,全球共用这60000多个编号。1 – 64511 是全球唯一的,而 64512 – 65535 是可以自用的,类似于私网网段。每个自治网络都需要申请自己的AS编号,联通的AS号是9800。

然后,小明分别向联通和电信买了线路,这样就算联通断线还能用电信。

那现在问题来了:联通或者电信怎么知道小明申请的公网IP是什么。换言之,我现在拨号拨进了联通宽带,我怎么才能访问到小明云的公网IP?小明的云中路由器的默认路由该设置到联通的ISP路由器,还是电信的?

终于,在小明的4.0版本云上,小明需要用BGP了。通过BGP,小明可以将自己云中的路由信息发送到联通,电信,这样ISP就知道了改如何访问小明的公网虚拟机,也就是说我们普通的使用者通过ISP,能访问到小明的网络。另一方面,通过在云中运行BGP服务,小明可以管理云中路由器的默认路由。

部分文件来自于:https://zhuanlan.zhihu.com/p/25433049

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多