网工笔记——BGP协议
1.简介
BGP,边界网关协议,是一种实现自治系统AS之间的路由可达协议
提供了丰富的路由策略,可以灵活实现路由选择
并且使用TCP作为其传输层协议(端口号为179)
什么是自治系统AS?
AS是指在一个实体管辖下拥有相同选路策略的IP网络,BGP网络中,每个AS都被分配一个唯一的AS号,用于区分不同的AS。
2.BGP的邻居关系类型
EBGP:运行与不同的AS之间的BGP
IBGP:运行与同一个AS内部的BGP
在IBGP中为了防止环路的产生,会进行水平分割原则,也就是BGP设备布将从IBGP对等体学到的路由通告给其他IBGP路由器。
但是又要进行通信,所以又需要全连接,但是这会造成设备的复杂,所以BGP设计了路由反射器和BGP联盟
3.BGP的路由器号(Router ID)
在OSPF和BGP配置路由器的时候,我们一般会配置一个环回口,这个环回口的地址,就是用来标志每个路由器的Router ID
通常采用32位,以IPv4的地址样式
通常可以采用手工配置,也可以采用自动选取,缺省选取环回口地址,没有环回口就选接口上最大的IP地址,一旦确定下来后续不会更改,除非重启BGP
4.BGP的五种报文
Open报文:建立BGP对等体连接
Update报文:用于更新对等体之间的路由信息
Notification报文:用于中断BGP连接
Keepalive报文:用于保持BGP连接
Route-refresh报文:用于改变路由策略后请求对等体重新发送路由信息,只有支持路由刷新能力的BGP设备会发送和响应此报文。
Keepalive报文是周期性发送,其余报文位触发式
5.BGP六种状态
Idle:空闲
Connect:连接
Active:活跃
OpenSent:Open报文已发送
OpenConfirm:Open报文已确认
Establish:连接已建立,最终状态
在BGP对等体建立中,通常可见的状态是Idle,Active和Establish。
6.BGP对等体之间的交互原则
1.从IBGP中获得的路由,只会转发给它对应的EBGP对等体
2.从EBGP学的路由,可以转发给EBGP和IBGP
3.当学到多条路由,只会发送最优的路由
4.路由更新后,只发送新的路由
5.BGP同步规则:当学到一条IBGP路由时候,它不能宣告给IBGP对等体和EBGP对等体,除非它又从IGP协议中学到了,这是为了规避路由黑洞问题
7.BGP和IGP的交互
1.BGP引入IGP路由
BGP本身不发现路由,只是路由的搬运工,需要将其他路由引入到BGP路由表中,使用Import和network方式
network方式要求网络号要精确匹配
2.IGP引入BGP路由(不多见)
当一个AS需要引入其他AS路由时候,AS边缘路由器会在IGP路由表中引入BGP路由,但大量的BGP路由对AS内的设备会造成影响,所以会使用一些路由策略,进行路由过滤。
8.BGP的路由优选原则
当到达同一个目的地有多条路由,BGP依据优选规则,去比较各个路由的BGP属性,以确定最优路由.
8.1BGP属性
四个大类:
1.公认必须遵循:所有BGP设备都可以识别,且都必须存在Update报文中,没有就报错
2.公认任意:所有BGP设备都可以识别,但不必须在Update报文中.
3.可选过渡:BGP设备可以不能识别,但可以进行转发.
4.可选非过度:BGP设备可以不认识这个属性,那就可以不进行转发.
这里只是属性,但是路由还是可以进行转发
常见的属性类型:
公认必须遵循:
Origin属性
AS_Path属性
Next_Hop属性
公认任意:
Local_Pref属性
可选过度:
团队属性
可选非过度:
MED属性
Originator_ID属性
Cluster_List属性
8.1.1Origin属性
用来定义路径信息来源,标记一条路由怎么成为BGP路由,有三个类型
1.IGP:优先级最高,通过network导入
2.EGP:次之,
3.Incomplete:最低,通过Import-route导入
8.1.2AS_Path属性
记录某条路由到达目标地址所要经过的所有AS编号
1.传播自身引入的路由时:
传给EBGP对等体,会在Update报文中,创建一个携带本AS号的,AS_Path列表
传给IBGP对等体,则是空的AS_Path列表
2.传播从其他BGP的Update报文中学习的路由时候:
如图,比如,AR1在传递某条路由给AR2的时候,AS_Path会携带一个300,但是AR2传递给AR3的时候,AS_Path还是300,但是当AR3传给AR4的时候则会再加上200.
8.1.3Next_Hop属性
记录了路由的下一跳,BGP的下一跳属性和IGP有所不同,不一定时邻居的IP地址,该属性遵循以下原则:
1.当向EBGP对等体发送某条路由的时候,该路由的下一跳是本路由与EBGP对等体建立邻居关系的接口ip地址,所以该下一跳,可能是直连接口,也可能是环回口.
2.同样发送给IBGP也是,该路由的下一跳是本路由与EBGP对等体建立邻居关系的接口ip地址
3.但如果路由是从EBGP对等体中学到的,并发送给IBGP对等体,则不会改变下一跳,通常会手工进行更改.
8.1.4Local_Pref属性
流量出去,该怎么出去,用于引导本自治系统中流量,从那个出口出去到下一个自治系统更优.
出口是本自治系统的路由器,默认100
8.1.5MED属性
流量进来,该怎么进来,用于引导外面自治系统中流量,从那个入口出去到本自治系统更优.
入口也同样是本自治系统的路由器,默认100
8.1.6团体属性
用于标识具有相同特征的BGP路由.
可分为自定义团体属性和公认团体属性
公认团体属性:
8.1.7Preferred_Value属性
与Local_Pref属性相似,但区别是再同一个路由器中的不同接口进行比较.
8.2优选规则
9.解决由于水平分割倒置要建立全连接,但配置复杂问题.
9.1路由反射器
概述:由于中间的路由器与各个周边的路由器建立邻居关系,同时自己位反射器,当其中有一条路由器给中间路由器传输路由时候,那么中间路由器就会传输给其他路由器
原理:
突破了水平分割的问题.
RR向IBGP邻居发布路由的原则:
1.从非客户机学到的路由,发布给所有客户机
2.从客户机学到的路由,发布给所有客户机和非客户机
3.从EBGP对等体学到的路由,发布给所有客户机和非客户机
9.2BGP联盟
把一个自治系统,再划分为多个子自治系统
10.路由聚合
将多个路由,继续合并的机制
1.自动聚合:按照自然网段进行聚合
2.手动聚合:根据具体需要进行汇总,IPv6只能支持手动聚合
为了避免汇总后产生环路,所以设计了AS_Set属性,标明聚合路由所经过的AS号
11.BGP配置
1.配置基本功能
配置各个接口的IP地址(略)
配置IBGP连接
RouterB
bgp 65009 #开启bgp
router-id 2.2.2.2 #手工指定router-id,建议
peer 9.1.1.2 as-number 65009 #指定他的邻居
peer 9.1.3.2 as-number 65009
RouterC
bgp 65009 #开启bgp
router-id 3.3.3.3 #手工指定router-id,建议
peer 9.1.3.1 as-number 65009 #指定他的邻居
peer 9.1.2.2 as-number 65009
RouterD
bgp 65009 #开启bgp
router-id 4.4.4.4 #手工指定router-id,建议
peer 9.1.1.1 as-number 65009 #指定他的邻居
peer 9.1.2.1 as-number 65009
配置EBGP连接
RouterA
bgp 65008
router-id 1.1.1.1
peer 200.1.1.1 as-number 65009 #ebgp对等体的as号#下面命令再路由器B上添加
bgp 65009
peer 200.1.1.2 as-number 65008
查看BGP对等体连接状态
display bgp peer
配置RouterA发布路由8.0.0.0/8
bgp 65008
ipv4-family unicast
network 8.0.0.0 255.0.0.0
quit
配置BGP引入直连路由
RouterB
bgp 65009
ipv4-family unicast
import-route direct
2.配置BGP的其他功能
通过环回口建立邻居会更加稳定,物理接口建立的话一旦两个直连的线路down了,那么邻居也没了
第八条,第九条,第十条命令一般不用配置