作者:清默网络-于康
BGP 边界网关协议
AS:由一个组织管理,运行同一种路由协议,以及相同的路由控制方法。
BGP负责在AS之间传递路由信息。
AS号组成2B-4B
internet使用as号必须向IANA组织申请公网AS号
私有网络使用as号 64512-65535
为什么不使用IGP代替BGP
-IGP算法复杂
-简化、方便管理
BGP的使用环境: (不使用NAT)
1、单链路单宿主
用户使用缺省路由,并将自己的路由信息传递到ISP。
成本低,配置简单,但是稳定性差
2、双链路单宿主
用户发布缺省路由到内网,并将自己的路由信息传递到ISP。
配置简单,稳定性较高,可以实现负载均衡
以上都没有使用BGP的必要
3、单链路双宿主 (E:电信、网通) (可能需要使用BGP)
用户需要运行动态路由协议,去学习必要的网段,并且将自己的路由信息传递到各ISP。
入业务量和出业务量的控制。
4、双链路双宿主(需要使用BGP)
用户需要运行动态路由协议去学习必要的网段,并且将自己的路由信息传递到各ISP。
入业务量和出业务量的控制。
————结合用户的使用————以上
————ISP之间互联——————
5、ISP之间互联(必须使用BGP)
不同as之间传递并控制路由信息。
需要使用BGP
-用户需要学习公网路由
-当as是一个传输as
-用户需要更多的路由控制功能
BGP概述:
通过TCP传递更新建立对等体
单播建立邻居及传递更新
支持VLSM、CIDR,手工汇总
以一个as为一个单位的路径矢量路由协议
拥有丰富的路径属性和简单的选路算法
遵循AS间的水平分割
BGP工作:
BGP消息类型
OPEN
-标记位 16B 全1
-长度
-类型 1
-BGP版本 (目前全部使用bgp v4,如相邻设备之间版本不同,无法建立邻居)
-自治系统号(相同-IBGP 不同EBGP)
-hold time邻居存活时间默认180s,如果两个对等体hold time不同标准,协议以小的 为标准,同时hold time的三分之一时间作为后面keepalive报文的发送周期
-路由器标识
UPDATA
-公共头部
-网络层不可达信息的长度
-网络层不可达信息的内容
-路径属性长度
-路径属性
-NLRI网络层可达信息
一个updata报文只会传递一套属性,当网络层可达信息的属性唯一时,一个updata报文只传递一个可达前缀,除非多个前缀所携属性相同。
一个updata报文可以携带多个网络层不可达信息。
notification
-公有头部
-错误报告类型及代码
-一旦BGP对等体收到该报文,则邻居关系立即回到最初idle状态
keepalive
-公有头部
维持BGP邻居关系处于激活状态的消息报文,默认以60s为周期发送。在hold time时间内未收到该报文,则认为邻居断开。
BGP状态机
idle->connect->open sent->open confirm->estabished
TCP三次握手正常进入connect状态 - 发送open报文进入open sent状态 -收到回复open报文进入open confirm状态,接收keepalive报文进入established状态
建立连接失败进入active状态
idle
-单播建立邻居的目标地址在路由表中不存在
established
-邻居关系建立完整状态,之后发送updata报文和周期性的keepalive报文
active
-指定对等体的自治系统不匹配
BGP对等体建立的地址不对称
对端未激活BGP或其他原因TCP建立连接失败
BGP数据库
-邻居表
记录与本路由器建立IBGP对等体或ebgp对等体的路由器地址等
-BGP表
从所有邻居路由器收到updata报文中的NLRI
从上述内容中挑出可用,最优的路径标记位自己使用的BGP
对应每个条目都记录着BGP属性
-路由表
将BGP表中标记为可用最优的路由条目放入路由表
BGP基本配置
1、激活BGP路由协议
router bgp
2、手工建立单播邻居
neighbor x.x.x.x remote-as
需要建立邻居关系的对等体地址,以及对等体路由器所属的自治系统号
邻居地址不需要直连,但必须路由可达,可以是物理接口地址也可以是虚拟接口的地址
3、查看BGP邻居表
show ip bgp summary
4、宣告网段
network x.x.x.x 宣告主类网段
network x.x.x.x mask x.x.x.x 宣告子网网段
被宣告的前缀和掩码,必须在路由表中存在相同的路由条目,并且这个路由条目可以直连的也可以是非直连的。
5、查看BGP表
show ip bgp
6、另一种在BGP发布路由方式
引入 redistribute <>
IBGP对等体:
BGP的通告原则:
1、BGP选择最优可达的路径给自己使用
2、BGP只会将自己使用的路由表传递给邻居路由器
3、从ebgp对等体传递过来的路由信息,bgp可以传递到所有的其他对等体中
4、从ibgp对等体传递来的路由信息:
-不会传递到其他的IBGP对等体
-是否传递到其他EBGP对等体需要根据同步原则决定:
1)如果同步开启,要求该网段在IGP路由表中也存在。(即该条目在IGP和BGP表中同时存在)
2)关闭同步功能,只要该路由条目在BGP表中最优就可以传递到其他ebgp对等体中。
解决:
1、bgp对等体全互联
-可以关闭同步
2、将BGP引入到IGP中
-开启同步
解决下一跳不可达问题
1、将连接其他自治系统的接口宣告到本自治系统中(不建议使用)
2、更改路由器传递下一跳
neighbor x.x.x.x next-hop-self
BGP扩展配置:
1、使用loopback口建立邻居
-修改建立邻居的更新源
neighbor x.x.x.x updata-source <接口名称>
-修改EBGP多跳(more情况下EBGP对等体建立邻居时,发送报文的TTL为1)
neighbor x.x.x.x ebgp-multihop #
2、建立BGP对等体组
-创建对等体组
neighbor peer-group
-配置对等体组邻居as-num
neighbor remote-as ##
-配置对等体组策略
neighbor upda-source
ebgp-mulitihop
route-map
…………
-将邻居地址划分到对等体组中
neighbor x.x.x.x peer-group
BGP属性:
-公认必遵
所有运行BGP的路由器必须能够识别,并且发送更新的NLRI必须携带的属性
-公认可选
所有运行BGP的路由器必须能够识别,但并不是每一个更新的NLRI都要携带
-可选传递
运行BGP的路由器并不一定识别,但是如果收到NLRI携带这种属性,可将保留并传递给其他对等体
-可选非传递
运行BGP的路由器并不一定识别,但是如果收到NLRI携带这种属性,他会忽略该属性,而且不会把该属性传递给其他对等体。
BGP属性
1、权重 - cisco私有属性
本地发布的bgp路由条目为32768
从其他对等体学习的路由条目为0
在选择路径的过程越大越优
2、起源属性 \
3、as-path |—公认必遵
4、next-hop /
5、local-pre
6、原子聚合
7、聚合站
8、MED \___可选不传递
9、团体 /
起源origin
i—>通过network发布到BGP中的路由条目
e—>从EGP协议中引入到BGP协议中的路由条目
?—>通过引入
在路径选择时,i优于e优于?
as-path属性
防环:路由条目在传递的过程中,每经过一个as,则将该自治系统号添加到as-path中,当一个as的路由器收到的路由条目as-path属性中包含了本路由器的as,则忽略该路由条目。(水平分割)
选路:as-path路径长度越短越优
过滤:使用as-path的内容顾虑路由条目
next-hop属性
从ebgp对等体传递过来的条目
传递到其他ebgp对等体 改变
传递到ibgp对等体 不改变
从igbp对等体传递过来的条目
本自治系统的路由
传递到其他ibgp对等体 不改变
传递到ebgp对等体 改变
其他自治系统的路由
传递到ibgp对等体 不改变
传递到ebgp对等体 改变
如果是本路由器自己发布的路由条目下一跳地址为0.0.0.0
特例:
local-pre:
默认为100
优先级越高,路由越优先选择
一般用于控制出业务量
本地优先级只在as内部传递。
med:
直接发布直连的默认为0
如果发布IGP的路由或者引入IGP的路由,则直接使用IGP的metric值
越小越优
用于进业务量
bgp只会比较从同一个as传递过来的路由条目的med值,如需要比较不同as传来路由的med,则需要添加命令 bgp always-compare-med
BGP的选路原则:
1、首先比较比较路由条目的权值 越大越优
2、如果权值相同,则比较本地优先级,越大越优
3、如果本地优先级也相同,则优先选择本地路由器发布的路由(下一跳地址为0.0.0.0)
4、再比较as-path,越短越优
5、如果as-path相同则比较起源属性,i
6、如果起源属性也相同,则比较med,med越小越优
7、如果med也相同,ebgp对等体的路径优于igbp对等体
8、如果仍然相同,则比较路径的邻居地址在IGP路由表中的度量值,越小越优
9、如果igp度量值仍然相同,则选择在bgp表中存在时间较久的作为路由条目
10、如果时间也相同,则比较邻居路由器的router-id,越小越优
11、再比较建立邻居的两个地址
BGP默认情况下只能实现迭代负载均衡
BGP路由条目的下一跳在路由表中负载均衡
BGP默认情况下不支持BGP路由的负载均衡
可以通过命令修改 maximum-paths # (1-16)
如果BGP路由的权值、本地优先级、as-path、med都相同,则BGP就可以负载均衡了
补充:
团体属性 32bit
**:**
internet -默认
local-AS -只在本地自治系统中传递
no-advertise 不再向其它任何对等体发布
no-export 不传递到任何ebgp邻居 包括联盟EBGP对等体
保留团体号
00000000 -0000ffff
ffff0000- ffffffff
BGP在大型网络中的解决方案
1、配置对等体组
2、BGP的路由聚合
配置BGP路聚合路由
aggregate-address x.x.x.x x.x.x.x summary-only as-set
如果不添加summary-only参数,则汇总与明细会同时发布
当路由条目汇总后,会添加一个原子聚合属性(atomic-aggregate) - 仅仅用来表示该条目被汇总过,由于汇总会导致属性丢失,可能引起黑洞路由
配置
aggregate-address x.x.x.x x.x.x.x summary-only as-set
添加as-set后,则路由条目会修改as-path属性,将汇总路由中的所有明细路由的as-path属性添加到汇总路由的as-path中。
此外所有的汇总路由都会添加一个聚合站属性:
其中包括了发布汇总路由的路由器所在as-num以及发布汇总路由路由器的router-id
agregated by
3、IGBP对等体之间不传递路由
-全互联
必须关闭同步
缺点:当BGP对等体数量过多情况下,配置复杂,浪费资源
-IGP和BGP之间互引
将BGP条目引入到IGP中,通过IGP协议传递到AS中其他路由器,另一端使用IGP引入到BGP再发布到其他AS。
缺点:BGP条目引入到IGP时,属性全部丢失
IGP协议算法复杂度高,不适合计算大型网络中太多的路由条目
-建立BGP反射(针对IBGP对等体)
反射服务器端、反射客户端、非客户端
1、从EBGP对等体传递到反射服务器端的路由条目可以传递到其他所有对等体;
2、从反射客户端传递过来的路由条目,服务器端可以传递到其他所有对等体,包括客户端和非客户端;
3、从非客户端传递到反射服务器上的路由条目,服务器端只会将它传递到客户端路由器上;
配置:neighbor x.x.x.x router-reflectior-client
指定x.x.x.x路由器为本路由器的客户端,客户端路由器上0配置
补充BGP属性
Originator:发射该路由条目的router-id,用于防环-凡是收到路由条目的originator-id与本路由器的router-id相同的路由条目全部忽略
-用于选路:originator-id越小,路径约优
cluster list:记录反射簇id的列表,默认情况下反射簇id为反射服务器的router-id,cluster list中记录了每个反射簇的列表
用于防环 -路由器收到路由条目中cluster list包含本路由器的router-id,则忽略该条目 用于选路 -cluster list越短路径越优
4、建立BGP联盟
bgp confederation identifie
-当BGP与建立EBGP对等体时,使用200自治系统编号,建立IGBP对等体时,仍然使用子AS号;
bgp confederation peers
-当BGP建立ebgp对等体时,邻居路由器的as-num为配置peers的as-num则直接诶使用联盟子as-num建立ebgp对等体关系;
联盟EBGP对等体之间传递路由下一跳不会改变,即bgp下一跳属性的改变仍然保留了IGBP对等体之间的特点;
为保证BGP联盟内部子as号不传递到其他AS中,需要在每台路由器上都配置identifier和peers
5、建立×××隧道
6、BGP路由震荡
惩罚值:每当bgp中的路由条目up、down一次,该路由条目的惩罚值增加1000
惩罚门限:当BGP路由条目的惩罚值超过惩罚门限(默认2000),则该条目不会在被更新发布到其他路由器上。
半衰期:每经过一个半衰期,它的惩罚值降低为原来的一半
再使用门限:当路由条目的惩罚值经过一次或几次半衰期降低到再使用门限(默认750),重新发布更新使用。
最大抑制时间:BGP路由条目最长被抑制60分钟,bgp抑制的条目最多在四倍的半衰期内可以重新使用
最大惩罚值:12000s
bgp dampening - 激活
bgp dampening <半衰期> <再使用门限> <抑制门限> <最大抑制时间>
http://blog.sina.com.cn/ykccie
qq:1677151165
清默网络--于康