BGP整理
BGP整理
主还是整理一下BGP相关的内容,毕竟有一段在BGP的实习,防止自己逐渐忘记。
简单介绍
BGP也是路由协议之一,主要用在AS间交换路由信息(eBGP),当然也可以用在AS内交换路由信息(iBGP)。
与其他路由协议利于ISIS、OSPF等建立在IP协议上,RIP建立在UDP上不同,BGP建立在TCP连接之上,默认端口号是179号端口,所以我们这里有个观念,就是BGP其实是一个应用层的协议,即使它是一个路由协议。
BGP既然建立在TCP连接之上,就要求BGP对等体之间有稳定的路由链路连接,并不要求对等体之间直接连接。所以BGP所在AS内需要通过ISIS、OSPF、RIP等建立起连接,而通过BGP和其他自治系统通信。
BGP是基于路径向量的,这既不同于距离向量,也不同于链路状态。BGP所要传递的信息不仅包含到达目的地的最佳路径,还会携带所经过的全部自治系统的AS号,避免路由环路。
同时,BGP设定了很多属性和策略,可以根据他们来决策不同的最佳路径,包括:本地优先级、多出口区分符(MED),权重等等。
常见问题
-
为什么其他路由不适合做域间路由?
a. 路由规模问题,IGP主要关注较小的网络环境,没有为处理大量路由信息而优化
b. 策略控制方面,常见的IGP协议没有提供BGP所提供的诸多策略控制属性,不能对流量进行细粒度控制
c. 防环方面,一些常用的IGP防环策略(1.最大跳数限制,2.水平分割(接口a收到的路由不会再从接口a广播出去),3.毒性逆转(路由失效的时候并不是直接删除,而是告知邻居自己与其距离无穷大))在跨AS其实并不能很好的使用
-
聊到了IGP的防环策略,那就聊一下BGP的防环策略吧
a. AS路径过滤,就是当收到的路由更新中包含自己的AS号,就忽略这条路由
b. IBGP水平分割,iBGP不会把自己从其他iBGP邻居学到的路由转发给另一个iBGP邻居,但是可以转发给他的eBGP邻居
c. 路由反射器,路由反射器允许一些路由器作为反射器,可以将从一个iBGP邻居学到的路由反射给其他iBGP邻居,解决了需要全连接iBGP才能防环的问题。路由反射器RR会接受与其建立iBGP连接(客户端)以及其他IGP连接(非客户端)的路由器的消息,从从客户端学到的路由反射给客户端和非客户端,从非客户端学到的路由仅反射给客户端。
路由反射器会在路由更新中添加Originator_ID,记录原始路由器ID,当再次收到相同Originator_ID的路由更新的时候忽略。
同时如果存在多个路由反射器,每个路由反射器会在Cluster_List里添加自己的Cluster_ID,如果发现自己的ID,就证明集群内循环,直接丢弃
d. BGP联邦。也就是在AS内划分多个BGP联邦,每个联邦自治,可以使用联邦AS号来避免环路
-
BGP和ISIS的区别
a. 一个是EGP,一个是IGP
b. 运行层次,一个运行在TCP的179端口上,一个运行在IP协议之上
c. 采用的路由算法不同,一个是使用路径向量算法,一个是使用链路状态算法
d. 适用规模不同,BGP适用于大规模组网,ISIS适合中大企业内部组网
e. 策略控制力度不同,BGP支持更加细粒度的策略控制
-
BGP和其他协议怎么互相学习
BGP有IGP路由引入
BGP的属性
-
Origin,路由来源,是通过什么协议学到的,比如IGP,EGP,还是重分布
-
AS_PATH,途经的全部AS号,主要用于防环和根据路径长度选路
-
Next_Hop,下一跳,iBGP一般不会修改下一跳,eBGP会把下一跳修改为本地路由器的接口地址
-
MED,多出口鉴别器,主要是影响其他自治系统如何选择进入本自治系统的路径,较低值优先。仅在两个相邻的AS之内生效。
-
Local_Pref,本地优先级,主要是用于选择怎么离开该自治系统,同样是较低值优先。
-
Community,主要用于路由分组
-
Weight,某些BGP实现商的特有属性,主要用于最佳路径选择
常见问题
-
说到BGP,了解运营商的单线或多线处理吗
主要是一个网络的ISP接入情况,单线指的是一个网络只使用一条线路或一个ISP截图,简单直接,但是会出现单点故障问题。
多线处理也被称为BGP多宿主,指的是通过多个ISP接入互联网哪过,通过BGP来管理优化这些连接。
多个ISP每个需要有独立的AS号,每个ISP之间需要建立eBGP对等体关系,配置出口策略和入口策略等。
BGP邻居建立过程
输入peer ip as_num as_num指令后一般会接受这些
- 建立TCP连接,首先要在两个路由器的179端口号上建立TCP连接,建立成功之后可以初始化BGP对话
- 交换Open消息,主要包括双方的AS号,保持时间,BGP标识符(通常是IP地址)
- 参数协商,主要是判断Open消息的参数是否正确,正确就进入Established状态
- Established状态要定期发送Keepalive消息来保活
- 然后就可以发送Update消息了