BGP协议基础

BGP 边界网关路由协议
边界:AS的边界
AS:同一个技术管理机构管理,如企业,ISP
IGP:AS内部网关路由协议,实现AS内部的互联互通,如OSPF、ISIS
BGP:AS互联互通的一种路由协议


AS号:取值范围1-65535
64512-65535,私有AS号,用于大型企业内部进行AS的规划
1-64511,公有AS号,需要为用户/企业提供互联网接入服务的时候分配
AS号老的长度:2个字节,16bit
AS号新的长度:4个字节,32bit


IGP:直连邻居之间传递路由信息,逐跳(逐路由器)的传递路由
BGP:是一种工作在应用层的路由协议,只要BGP邻居能够建立,那么就能在邻居之间传递路由信息

BGP的路由属性是人为设计的,是对BGP路由的进一步描述
作用:实现BGP路由的控制,如选路,防环,管理

BGP是一种基于TCP协议的应用层路由协议,所以邻居关系不会自动建立,需要手动配置
BGP采用单播通信,目的IP是事先知道的
BGP使用TCP 179端口号进行工作

BGP协议不产生路由,只是用来传递路由的
BGP只会传输自己正在使用的路由
BGP是一个路径矢量路由协议,并且是一个无环路径:AS内部采用水平分割机制防环,AS之间采用AS-Path防环


80 http
23 telnet
21 ftp
25 smtp
110 pop3
22 ssh


EBGP邻居配置流程
1、通过直连物理接口配置EBGP邻居
peer 10.0.12.2 as-number 2
指定的邻居地址为本端向该邻居发送BGP报文的目的地址,源地址默认情况下为去往改邻居地址路由的出接口IP地址

2、通过Loopback接口配置EBGP邻居
peer 1.1.1.1 as-number 1
peer 1.1.1.1 connect-interface Loopback 0
指定向邻居发送BGP报文的源地址为Loopbak 0接口的IP地址
peer 1.1.1.1 ebgp-max-hop 10
当EBGP邻居之间存在多跳时,指定EBGP邻居发送BGP报文的TTL值,仅在EBGP邻居之间使用,IBGP邻居默认TTL=1


IPv4 单播地址族
IPv6 单播地址族
VPNv4 单播地址族


BGP报文类型
所有BGP报文都有一个相同格式的头部,长度19字节,参数如下:

标记:保留字段,用于协议兼容性
长度:描述该BGP报文的长度(字节数)
类型:描述BGP报文的类型,常见的BGP报文类型与该字段对应关系如下:1-----Open报文;2-------Update报文;3--------Notification报文;4------Keepalive报文

Open报文:邻居建立和能力参数的协商,至少地址族能力要一致
Open报文参数如下:
版本号:描述BGP协议的版本号,对于BGPv4来说,该字段的值为4
AS号:描述BGP报文发送方所处AS的号码
保活时间:描述在多长时间(以秒为单位)内必须收到对方的Keepalive报文或Update报文,否则将该邻居视为无效
路由器标识符:描述BGP路由器的route-id,长度为32bit
可选参数长度:描述BGP报文中可选参数字段的长度(字节数)
可选参数:Open报文中可以包含多个可选参数,每个参数使用类型Type、长度Length以及值Value的三元组格式来描述。在Open报文 中,可选参数主要被用于宣告及协商BGP邻居的某些能力特性

1、邻居参数协商
自身AS号:要和邻居只当的AS号一致,否则邻居无法建立
BGP router id:不能冲突,否则邻居无法建立
Hold time:邻居失效时间,默认180s,如果不一致,则协商使用小的
BGP version:默认运行BGPv4,一般不存在版本不同的情况

2、BGP邻居能力的协商
地址族协商一致:不一致邻居无法建立,默认使用IPv4单播地址族
路由刷新能力:即手动触发更新能力
是否支持4字节AS号能力

双方都开始发送OPEN报文,然后进行一些参数的协商,主要是hold-time,如果双方不同,则选择一个小的hold-time;keepalive interval默认是hold-time时间的1/3;另外协商的参数还包括版本号,AS号,BGP路由器的ID以及其他可选参数

Keepalive报文:
BGP并不依赖TCP的保活机制,而是周期性的发送Keepalive报文来了解邻居的存活状况。默认每隔60s周期性发送,如果180s没有收到keepalive报文,则认为BGP邻居失效,断开TCP连接

如果可以接收OPEN报文中的参数,则发送Keepalive报文,用于对对方发送的OPEN报文的确认,此时意味着BGP邻居关系正式建立;然后开始发送Update报文;以后还要周期性的发送Keepalive报文,一 维持邻居关系

Update报文:用于BGP路由的传递以及撤销。第一次建立邻居后,邻居双方开始交换整个BGP表,后期只做触发式的增量更新
Update报文参数如下:

撤销路由的长度:Update报文中可以包含0条、1条或者多条准备撤销的BGP路由,该字段是一个无符号整数,它描述了Update报文中所包含的“撤销的路由条目”字段的长度
撤销路由条目:该字段用于描述需要被撤销的BGP路由前缀,如果有多条BGP路由需要使用这个Update报文来撤销,则该字段将包含一个BGP路由前缀的列表,每条BGP路由包含两元:前缀长度,路由前缀
总路径属性长度:描述Update报文中路径属性的总长度
路径属性:当BGP路由器使用Update报文向邻居通告BGP路由时,该报文中就包含着路径属性字段。BGP定义了丰富的路径属性类型
网络层科可达信息:该字段描述了需要被被通告的BGP路由前缀,如果有多条BGP路由需要通告,则该字段将包含一个BGP路由前缀的列表,每条BGP路由包含两元:前缀长度,路由前缀,当然,一个Update报文用于通告给你搞拥有相同路径属性的路由前缀

Route-refresh报文:用于手动进行BGP路由的出发更新,或用于ORF功能

Notification报文:通知报文,用于报错,收到该报文只有一个结果,就是断开TCP连接
报文参数:

错误代码:该字段是一个无符号整数,描述错误的类型
错误子代码:在错误代码的基础上进一步指示错误的类型
数据:该字段用于描述错误的原因

BGP状态机
Idle(空闲):Idle是BGP连接的第一个状态,即空闲状态,此时BGP在等待一个启动事件,当启动事件出现后,BGP开始初始化资源,复位连接重试器Connect-Retry,并发起一条TCP连接,同时转入Connect(连接)状态。路由器开始在由表中搜索去往邻居指定的IP 地址的路由,看是否有前往该地址的路由,如果没有明细路由,则邻居状态会一直处于
opensent:代表已经发送open报文,并等待接收邻居的open报文
opencofirm:代表收到邻居的open报文,并发送keepalive报文,等待接收邻居的keepalive报文
established:收到keepalive报文

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


BGP协议产生路由的方式
1、network
@BGP协议的network命令不具备将接口加入到BGP进程的功能
@network就是将路由表中的路由引入到BGP表,并通告给邻居

2、import-route
将路由表的路由引入到BGP中,高效快捷


BGP协议特点:
1、BGP不对路由进行计算
2、BGP只是路由的搬运工


BGP发布路由的逻辑:
你想要别人能够访问某条路由,那么你就需要把这条路由发布出去


BGP传递路由规则
1、仅传递最优路由
2、从EBGP邻居得到的路由可以传递给所有邻居(EBGP邻居、IBGP邻居)
3、从IBGP邻居得到的路由不传递给IBGP邻居
4、从IBGP邻居得到的路由只有当同步检测通过后,才能传递给EBGP邻居(华为设备无此规则,因为默认关闭了同步功能)
5、如果同步功能关闭,从IBGP得到的路由只要下一步可达并最优即可传递给EBGP邻居

注:BGP路由同步功能,仅仅是BGP路由黑洞的检测机制,并不能解决BGP黑洞问题

undo synchronization
华为设备默认关闭同步功能,且不可开启


如何解决BGP路由黑洞问题
@将EBGP路由引入到IGP协议中。比较消耗设备资源,因为BGP路由数量过于庞大,引入到IGP协议,增加了IGP协议计算路由的负担。可能导致BGP路由震荡,IGP路由也会产生震荡
@AS内部所有路由器均运行BGP协议,即IBGP全互联,主流架构,此时不再需要同步检测

总结:只要能解决BGP路由黑洞问题,BGP同步检查功能,开启和关闭就不再重要了


BGP防环机制
1、AS内部防环:IBGP水平分割,通过IBGP邻居得到的路由不会再传递给IBGP邻居


BGP路由传递给EBGP邻居时,下一跳自动修改为向该EBGP邻居发送BGP报文的源地址

从EBGP邻居传来的路由传递给IBGP邻居时,下一跳默认保持不变,这可能导致下一跳不可达大的问题
解决方法:(IBGP邻居配置三步骤)
peer 4.4.4.4 as-number 234
peer 4.4.4.4 connect-interface Loopback 0

peer 4.4.4.4 next-hop-local
该命令仅对IBGP邻居生效,将从EBGP邻居得到的路由传递给指定的IBGP邻居时,下一跳修改为自身向该IBGP邻居发送BGP报文的源地址

    • valid:有效的BGP路由,即下一跳可达的路由

refresh bgp all export
向所有BGP邻居手动触发路由更新


产生BGP路由的方式:
1、network
2、import-route


BGP路由属性的分类
1、公认:所有运行BGP协议的路由都能理解的属性
2、可选:厂家开发的某些满足特殊需求的属性,但并不是所有运行BGP协议的路由器都理解的属性


BGP路由的起源属性有三种
i 表明BGP路由时由network命令发布的
? 即incomplete,表明BGP路由时由import-route发布的
e 表明BGP路由时EGP协议引入的,EGP协议目前已经全面退出网络

起源属性可以被修改,一般起源属性时一种BGP选路属性,可以用于BGP路径的选路,通过修改起源属性可以控制BGP路径
优先级:i > e > ?


AS_PATH作用
1、选路,经过AS数量少的路径最优
2、防环,在AS之间实现BGP环路的防范(AS内部使用IBGP的水平分割实现防环)。从EBGP邻居得到路由时,检查该路由的AS_PATH属性,如果AS_PATH中存在自身的AS号,则丢弃该路由。
@当BGP路由传递给EBGP邻居时,会将自己的AS号添加到AS_PATH属性的最前面
@当BGP路由传递给IBGP邻居时,不会添加自己的AS号
3、防环检测机制
EBGP邻居之间进行AS_PATH检查,IBGP邻居之间不做AS_PATH检测
在这里插入图片描述

BGP团体属性
@限制BGP路由得分传递范围
@给BGP路由添加标记,方便管理
不同于IGP TAG,TAG只能打一个,管理能力优先,不能多维度的标识路由

BGP路由可以拥有多个团体属性,根据管理需求,业务需求等灵活进行路由管理

Internet:缺省属性,所有路由都属于Internet,此属性的路由可以通告给你所有BGP邻居
No_Export:收到此属性的路由后,不讲该路由发布到其他AS
No_Advertise:收到此属性的路由后,不将该路由通告给任何其他的BGP邻居
No_Export_Subconfed:在联盟中使用,仅在成员AS内传递

当路由存在多个公认团体属性时,传递范围最小的生效


BGP路由优选yuanze
一般来说,BGP计算优先级的规则如下:
1、丢弃下一跳不可达的路由
2、优选协议首选值(Preference Value)最高的路由(私有属性,仅本地有效)
3、优选本地优先级(Local Preference)最高的路由
4、优选手动聚合>自动聚合>network>import>从对等体学到的
5、优选AS_Path短的路由
6、起源类型IGP>EGP>Incomplete
7、对于来自同一AS的路由,优先MED值小的
8、优选从EBGP学来的路由(EBGP>IBGP)
9、优选AS内部IGP的Metric最小的路由
10、优选Cluster List最短的路由
11、优选Orginator_ID最小的路由
12、优选Router_ID最小的路由器发布的路由
13、优选具有较小IP地址的邻居学来的路由


BGP网络面临的问题
1、路由数量庞大,占用内存,消耗带宽
2、BGP网络震荡,到时稳定性下降

汇总方法:
1、利用静态路由执行BGP汇总
@并不是真正意义上的BGP路由汇总,只是利用BGP发布路由的特点来实现汇总的效果
@明细路由并不会被抑制,还是会正常的通告给邻居,需要做明细路由的过滤
@会丢失明细路由的某些BGP路由属性,存在路由环路的风险
@明细路由是否存在和汇总路由之间不存在依赖关系,导致汇总路由不能真正反映网络的现状

2、BGP自动汇总,一般不用
@仅对自身通过import-route命令发布的路由生效
@只能汇总成主类网络号
@明细路由会被抑制

3、BGP手动汇总,主流方式
@只要在BGP路由表中存在的路由都能被手动汇总
@可以实现精确汇总,可以支持CIDR
@可以对汇总路由的属性做编辑
@可以继承明细路由的AS_Path属性,防止环路
@明细路由全部失效,汇总路由才会失效

AS_Path 表明路由传递的AS的次序,有序的
as-set { } 无序的AS_Path,防环用的,并不表明路由传递的次序
{ } 中的AS号,只算1个AS长度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值