首先我们需要清楚在公网中,路由器及其路由条目是非常之多的,而IGP,也就是RIP,OSPF,EIGRP等协议,由于IGP本身的算法关系,处理这么多的路由条目的时候负荷比较大,这时候BGP就应运而生了,加上BGP有强大的路由策略等等原因。
总结下使用BGP的原因:
1、BGP可以轻松处理大量的路由条目
2、BGP有强大的路由策略,可以实施路径选择
3、一些地方或者管理层要求使用
BGP是由EGP发展而来的,EGP由于无法检测路由环路,极慢的收敛速度,缺乏路由策略的工具等原因而被淘汰,所以EGP我们可以用来了解就行
BGP叫边界网关协议,是运行于TCP上的一种自治系统(AS)的路由协议,是标准的无类别EGP协议,也是唯一一个用来处理像因特网大小的网络的协议,还是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP构建在EGP的经验之上,BGP的路由条目是来源于IGP的,BGP系统的主要功能是和其他的BGP系统交换网络可达信息。网络可达信息包括列出的自治系统的信息。这些信息有效地构造了AS互联的拓朴图并由此清除了路由环路,同时在AS级别上可实施策略决策。(百度百科上面的)用自己的话说就是公网上才能用的一种路由协议。目前最新的版本是BGP第4版本,而且一个路由器只能属于一个AS。
自治系统号:又叫AS号是为了区分不同的AS,编号为0–65535(这些都是旧版本了,目前已经有其他命名规则,可以百度或者查看下面给出的网站),在这些编号中1-64511为公有、64512-65535为私有。
这里有个网站可以查看全世界的EGP的AS号:链接在这
注意:一个孤立的网络(比如局域网)只需要IGP协议就可以实现内部互通,但是需要和外部网络(如因特网)互通的时候就需要EGP协议并且IGP本身也需要存在,不存在说只运行BGP没有IGP的说法
名词 | 说明 |
---|---|
对等体 | 在BGP协议中,邻居应该叫对等体,因为不是真正意义上的上的邻居 |
EBGP邻居关系 | 不同AS区域的路由器间建立的BGP邻居关系,通过这种关系学习到的路由条目的管理距离为20 |
IBGP邻居关系 | 同一AS区域内的路由器间建立的BGP邻居关系,通过这种关系学习到的路由条目的管理距离为200 |
我们都知道,IGP作为内部网络协议追求收敛速度快、占用资源少、选路佳,而BGP不同,追求可靠性、可控性、AS-BY-AS
a、由于BGP协议适用于在大型网络中,路由条目是非常之大的,这时候就必须保证其协议有非常非常高的可靠性,所以BGP使用了可靠的TCP协议进行传输
b、由于TCP协议通信是单播加上需要三次握手,可以千里迢迢去和其他路由通信,而不是直连,所以BGP的邻居不叫邻居,应该叫对等体
c、由于不是直连也叫邻居,所以这里又验证了BGP协议必须在IGP协议基础之上建立
a、BGP协议由于是在大型网络中使用的,所以国家的一些政策或者是经济原因都会影响到BGP通信
b、由于在操作的时候一般是不找到其他大型网络的拓扑关系,所以BGP就没有选路佳这么一说
c、如果BGP是一种非常快速的路由协议的话,那么当在改变一些路由条目就会使得世界上所有AS区域的路由条目都改变,这样会使得路由器的负担过大
综合以上观点,得出BGP是需要较好的可控性的
如果将AS区域里面的所有路由器都看出单个路由器的话,那数量可想而知,所以在BGP协议中把一个AS区域当初一个大的路由器,就是说在同个AS区域内路由条目其属性或者参数不主动发生任何变化。
BGP的主旨是提供一种域间路由选择系统,确保自主系统只能够无环地交换路由选择信息
BGP在确定最佳路径时考虑的不是速度,而是让AS能够根据多种BGP属性来控制数据流的传输
无类别路径矢量就是距离矢量的升级版,虽然说BGP是无类别的路由协议,但是和IGP相比还是不一样的,所以取名也就不一样啦,加上BGP是将AS区域当成一个大的路由器,所以叫无类别路径矢量
BGP协议是基于TCP基于172端口工作的,所以是单播更新
由于BGP属于大型网络协议,需要传送非常多的路由条目,如果是周期更新的话,那都不要用户上网了,单单路由条目的传送都大半天,所以BGP需要使用触发更新或者叫增量更新,当路由条目有变化时,才进行更新
在BGP协议中由于需要可控性原因,所以BGP是通过丰富的属性来取代IGP中度量进行选路,以达到更好的可控性,BGP的度量只是诸多属性其中的一个
根据上面第4点我们可以清楚,有这么多属性肯定就可以用来实施流量控制策略了
在这种大型网络中,我们是不可能知道网络内部的拓扑情况的,而BGP有AS-BY-AS,所以BGP协议默认不被用于负载均衡,况且BGP协议只能通过各种选路规则产生一条最佳路径,用>标记
还是因为大型网络,如果没有聚合,那么全世界有那么多路由条目,一个一个传有点不切合实际,所以需要把路由条目进行聚合再传输会比较好
认证这个就不用都说了,一般情况协议都要有,就密码认证嘛
注意:BGP的聚合与IGP的汇总差不多意思,但是BGP的聚合是不仅仅是将CIDR汇总,还有包括超网,概念更广
BGP协议是基于TCP179端口进行传输的,所以和多数据包是已经省略掉了,比如:ACK包,BGP协议的邻居发现就是依靠TCP三次握手进行。
所有的BGP分组共享都有同样的公有首部,公有首部参数说明:
a、标记:这个16字节标记字段保留给鉴