BGP:边界网关协议
使用范围: BGP范围,在AS之间使用的协议
协议的特点(算法):路径矢量型(有方向的路径,距离未知),没有算法
协议是否传递网络掩码 :传递网络掩码,支持VLSM CIDR
协议消息数据包封装:基于TCP封装,端口号:179
AS: 自治系统 自治系统范围:1-65535 , 公有AS (1-64511) 私有 AS(64512-65535)
- 一组共享相似路由策略并在单一管理域中运行的路由器的集合
- 可以是运营相同协议的路由器集合,也可以是运行不同路由协议但属于同一个组织机构的路由器集合
- 每个自治系统都有一个唯一的自治系统编号,由lANA分配
- 自治系统的编号范围是1-65535,1-65411是注册的Internet编号,65412-65535是专用网络编号
BGP协议特点
- BGP是一种路径矢量型路由协议
- BGP协议版本,当前版本V4(V4+)V1 V2 V3(有类别) V4(无类 别 仅仅支持IPV4单播路由传递) V4+(支持IPV4单播路由、IPV6单播 IPV4 组播 、IPV6组播、VPNV4 、VPNV6 等,除了IPV4单播路由之外 的其他的都称为 MP-BGP—多协议BGP;注意:默认仅仅支持传递 IPV4单播路由,传递其他方式路由时需要开启(激活))
- 更新地址:单播更新
- 更新方式:触发更新、增量更新
- BGP协议中存在大量的属性(是一种基于规则的路由协议)
- BGP协议支持路由认证
- 支持BGP路由聚合(汇总)
- BGP是一种非常消耗资源的路由协议
适合使用BGP的网络环境
1.传输AS
2.多宿主
3.需要对进入和离开的流量进行强大的策略控制时
BGP邻居关系
- IBGP :运行于同一AS内部的BGP(内部BGP邻居)
- EBGP:运行于不同AS之间的BGP(外部BGP邻居)
- IBGP邻居的防环机制:IBGP 水平分割机制(IBGP只传一跳规则,通 过一个IBGP邻居学习的路由不能传递给其他的IBGP邻居); nexthop、起源者属性、簇ID列表.。
- EBGP邻居的防环机制:AS-Path AS路径防环,BGP的一种属性,BGP的路由条目在传递过程中将记录所有经过的AS号,若接收到的路由条目中存在本地的AS号,将拒绝接收该条目。
BGP消息数据包
- Open
建立BGP邻居关系,只发送一次
- Keeplive
保活,维持BGP邻居关系。周期性发送 周期时间 keepalive 时间默认为60s
Hold 时间,保持时间默认为180s
-
Update 更新
- 通告路由
- 撤销路由
- 通告路由
-
notification 报告(错误报告)
BGP邻居状态机制
BGP邻居关系建立条件:
- router-id 必须不同
- BGP认证一致
- 指定正确的AS号
- 建立TCP三次握手的两端路由可达
BGP配置
注意:EBGP邻居之间传递路由最小间隔为30s
IBGP邻居之间传递路由最小间隔为15s
启动BGP进程,并指定BGP Router-ID:
[Router] bgp as-num
[Router-bgp] router-id x.x.x.x
- As-num参数为设备所处的AS号;
- 为了增加网络的可靠性,建议将BGP Router-ID手工配置为设备Loopback接口的地址。如果没有配 置,则BGP会自动选取系统视图下的Router-ID作为BGP协议的Router-ID。
配置BGP对等体:
[Router-bgp] peer x.x.x.x as-number as-num
- Peer关键字后面的x.x.x.x为对等体的IP地址,本设备与该IP地址之间必须路由可达。
- 在BGP中,对等体需要通过peer命令手工指定,无法像IGP那样通过协议自动发现。
- AS号码决定了与对等体建立的是EBGP会话还是IBGP会话。
使用network命令将路由通告到BGP:
[router-bgp] network ipv4-address [ mask | mask-length ]
- 使用network命令将路由表中的路由通告到BGP。路由必须存在于路由表中才能够被成功通告到 BGP。
- 如果上述命令没有指定mask或mask-length参数,则按有类地址处理。指定了mask,则仅当路由选择表中有与该网络完全匹配的条目时才被通告出去。
- BGP中的network命令与IGP中的network是大不相同的,BGP中的network命令用于将路由通告到 BGP,而不是在接口上激活BGP。
修改更新源;默认更新源为到达peer的本地出接口地址
- 指定用于建立BGP会话(也就是TCP连接)的源接口或源地址:
[Router-bgp] peer x.x.x.x connect-interface intf [ ipv4-src-address ] - 缺省情况下,BGP使用报文出接口的IP地址作为与对等体建立会话的源地址。
- 在部署IBGP对等体关系时,建议使用Loopback地址作为更新源地址。Loopback接口非常稳定,而且可以借助AS内的IGP和冗余拓扑来保证可靠性。
- 在部署EBGP对等体关系时,通常使用直连接口的IP地址作为源地址,如若使用Loopback接口建立EBGP对等体关系,则应注意EBGP多跳问题。
BGP基本配置-EBGP多跳
- 通常EBGP的对等体关系基于直连接口建立。如果EBGP的对等体关系并非基于直连接口建立,而是基于Loopback接口,又或者EBGP对等体不是直连的(中间隔着其他设备),那么要注意EBGP多跳的问题:在EBGP之间,所发送的BGP报文默认的TTL为1,因此如果EBGP对等体之间存在多跳,则需修改最大跳数限制。
- 命令如下:
[Router-bgp] peer ipv4-address ebgp-max-hop [ hop-count ]
(1.关闭EBGP之间直连检测;2.修改EBGP数据包的TTL值) - 如果配置上述命令时没有指定参数hop-count,则为255。
修改BGP路由下一跳为自身
- BGP是AS-by-AS的路由协议,而不是Router-by-Router的路由协议。在BGP中,Next-Hop属性值并不 意味着是下一台路由器,而是到达下一个AS的IP地址。
- 当路由器将一条BGP路由传递给自己的EBGP对等体时,缺省情况下该路由的Next-Hop属性值为其更新 源地址,一般为自己的接口IP地址。
- 当路由器将一条学习自EBGP对等体的路由传递给自己的IBGP对等体时,它会保持路由原有的NextHop属性不变。使用peer x.x.x.x next-hop-local命令可以将路由的Next-Hop修改为自己。
BGP相关的几张表
BGP邻居表详细信息:display bgp peer verbose
BGP邻居表
BGP路由表
查看BGP条目详细信息
BGP路由表
display ip routing-table protocal bgp
路由不优问题
原因:1.下一跳不可达 2.IBGP同步
下一跳属性规则:
- network 引入,默认next-hop属性为0.0.0.0
- IBGP或者EBGP邻居学习到的路由,下一跳默认为对方的更新源地址(即建立TCP三次握手的对方IP 地址)
- IBGP学习路由传递给EBGP邻居时,下一跳为EBGP邻居建立的更新源地址(EBGP邻居路由传递给 EBGP邻居时也一样)
- EBGP学习路由传递给IBGP邻居时,下一跳不发生改变,使用peer x.x.x.x next-hop-local命令可以将路由的Next-Hop修改为自己。
数据层面的路由黑洞:
(路由传递:分段;数据:源目IP不变)
- 在边界设备上将BGP重发布引入IGP协议(仅仅引入EBGP邻居学习并加表的路由)
- 在AS内建立全互联的IBGP邻居关系
- 减少IBGP邻居关系的数量,打破IBGP水平分割
a.路由反射器 b.EBGP 联邦 - MPLS
对等体组 peer group : 将多个peer划入一个group中,针对group实施BGP邻居关系。
优点:减少BGP配置;将多个peer划入一个group仅仅针对一个group一次性消耗CPU内存等资源。
配置:
group ccie internal #创建group
peer ccie connect-interface loopback 0
peer ccie next-hop-local #针对group定义配置
peer 3.3.3.3 group ccie #将peer划入对等体组
路由反射器:
反射规则:非非不传(非客户端收到的路由不能传递给其他的非客户端)
在路由反射器中,由于破坏了IBGP水平分割机制,可能导致路由环路,所以引起了起源者属性和簇ID属性进行防环。
设置路由反射器:设置对等体用户为路由反射器的客户端,同时宣告自身为路由反射器的服务器端。
peer 2.2.2.2 reflect-client
EBGP联邦
先部署小AS,再声明大AS。
注意:联邦BGP邻居既有IBGP邻居特性又有EBGP邻居特性
IBGP特性:下一跳问题;学习到的路由标记为IBGP
EBGP特性:邻居建立过程中存在EBGP邻居的非直连检测和TTL问题
联邦EBGP防环:引入联邦AS序列号进行防环(与AS-path区别:不计入选路,当传递出大的AS时消失)
confederation id 200 #声明大的AS号
confederation peer-as 567 #在需要建立联邦EBGP之间指定peer-as
BGP引入IGP路由
• 需注意的是:BGP本身不发现路由,因此需要将其他路由引入到BGP路由表。 • BGP引入路由时支持Import和Network两种方式: • Import方式是按协议类型,将RIP、OSPF、ISIS等协议的路由引入到BGP路由表中。Import方式还 可以引入静态路由和直连路由。 • Network方式是逐条将IP路由表中已经存在的路由引入到BGP路由表中。 • BGP在引入IGP的路由时,可以使用路由策略进行路由过滤和路由属性设置。