HCIP笔记五

BGP----- 边界网关协议
AS---- 自治系统
AS 定义:由一个单一的机构或组织所管理的一系列 IP 网络及其设备所构成的集合
AS 划分的原因
整个网络规模较大,伴随的是路由表中的路由数量进一步增加,路由表规模变大,路由收敛速度变
慢,设备性能消耗加大。 ----- 范围太大。
AS 之间可能是由不同的机构、公司,相互之间无法完全信任,使用 IGP 协议可能存在暴露 AS 内部的
网络信息的风险。
不同的 AS 通过 AS 号进行区分, AS 号存在 16bit 32bit 两种 IANA---- 互联网数字分配机构。
16 AS 号,取值范围 1-65534 (其中 0 65535 保留),其中 64512-65534 为私有的 AS 号,可以自
行使用,公有的 AS 号为 1-64511
保留 AS
RFC4893 标准, 23456 AS 号为保留 AS
RFC5398 标准
16 AS 号: 64496-64511-----16
32 AS 号: 65536-65551-----16
BGP 基础
HCIP笔记五_第1张图片

 

BGP-1------RFC1105
BGP-2------RFC1163
BGP-3------RFC1267
BGP-4------RFC1771----4271
BGP 协议介绍
1 、首先 RIP 是基于 UDP 进行数据传输的,而 UDP 是一个不可靠的协议,他在传输过程中可能会丢失某些
数据。
2 、缺省情况下, RIP 协议的路由更新报文的发送间隔是 30S ,而如果两个 AS 内部的路由表非常大, 30
的时间可能还不够将所有的路由信息传递给对方 AS ,这样,整条链路完全就是为了 RIP 的通告报文服
务,而不能转发数据流量。
解决方法:
UDP 协议更换为 TCP 协议。不用担心数据丢失,并且 TCP 会预先建立连接,也就让路由器有一个
准备的时间而不是像 RIP 一样毫无准备的接收大量更新数据。
取消周期更新,改为触发更新。
在第一次路由数据同步完成后,如果有路由增加,就发送通告路由增加的报文。如果路由删
除,就发送一个通告路由删除的报文。
如果路由信息发生改变,就先发送一个通告路由删除的报文,在发送一个通告路由增加的报
文。
运行 BGP 协议之间的设备传递路由信息,原因在于若传递拓扑信息,会导致路由器负载过高,并且会让
对端 AS 看到本端的拓扑信息,引发安全问题。
BGP 需要传递所有的通过 BGP 学习到的路由信息,并且运行了 BGP 协议的路由器,所维护的路由表是包
含了整个互联网的所有路由信息的。
BGP 特点
BGP 基于 TCP ,只要能够建立 TCP 连接,就可以建立 BGP 连接
触发式更新,不再进行周期更新
只传递路由信息,而不会暴露 AS 内的拓扑信息
不传递拓扑的原因
拓扑信息资源占用量大
会暴露 AS 内部的拓扑连接情况
无类别的路径矢量型协议
无类别 ----- 传递时携带真实子网掩码
矢量 ----- 方向性,谁传递的路由,谁为下一跳
距离矢量 ---- 将一个路由器看做一个单位计算距离
路径矢量 ---- 将一个 AS 看做一个整体,从而计算一跳。
IGP 协议的主要任务是将 AS 内部的未知网段信息计算获取到,而 BGP 则主要是将 IGP 协议计算出来的
路由信息进行搬运和传递,并不去计算路由 IGP 协议追求
收敛速度快
选路佳(无环路)
占用资源少
EGP 协议追求
可控性
可靠性
AS-BY-AS
BGP 的特征
IGP 协议特点
选路佳
收敛快
占用资源少
可控性
因为在重发布的过程中,由于会抹除原有度量值,会导致出现选路不佳的情况。而 BGP 为了弥补这个
不足点,直接舍弃了开销值。取而代之的是设计了很多的 路径属性
可靠性
BGP 因为只有触发更新,而不存在周期更新。所以,需要确保其可靠性,使用 TCP 为传输层协议。
端口号 179 ------- BGP 会话的建立是手工指定的(单播形式)
IGP 协议不选择使用 TCP 的原因:
TCP 传输效率低
TCP 传输占用资源大
TCP 协议只能实现单播,所以,无法通过组播或广播的形式发送数据,将导致 IGP 协议无法自
动发现邻居关系,只能手工指定。
AS-BY-AS
BGP 将一个 AS 看做是一个整体
BGP 协议不支持负载均衡
BGP 的对等关系
BGP 因为传输层使用的是 TCP 协议,所以只要在 TCP 协议可以正常建立会话的基础上就可以完成 BGP
建邻工作。
BGP 支持非直连建邻(网络可达) -----BGP 的非直连建邻是建立在 IGP (静态)之上的。
BGP 存在两种对等体关系类型: EBGP IBGP
EBGP 对等体关系
位于不同自治系统的 BGP 路由器之间的 BGP 对等体关系。
EBGP 对等体一般使用直连建立对等体关系。 EBGP 邻居之间的报文中 TTL 值被设置为 1
两台路由器之间要建立 EBGP 对等体关系,需要满足如下条件:
两个路由器属于不同 AS
在配置时, peer 命令所指定的对等体的 IP 地址必须路由可达, TCP 连接必须正常建立。
IBGP 对等体关系 位于相同自治系统的 BGP 路由器之间的 BGP 对等体关系。
IBGP 对等体一般使用非直连建邻。 IBGP 邻居之间的报文中 TTL 值被设置为 255
IBGP 对等体中,常使用环回接口地址作为源目 IP 地址。
环回接口稳定
并且可以借助 AS 内部的 IGP 和冗余拓扑来保证可靠性。
BGP 特点
1. 无类别路径矢量协议 -----AS-BY-AS
2. 使用单播更新来发送消息;基于 TCP 179 号端口工作。
3. 增量更新机制 ---- 仅触发更新,无周期更新
4. 具有丰富的路径属性来取代 IGP 中的度量值进行选路,可以由多个属性共同控制协议
5. 可以在流量的进出口实行路由策略 ---- 可控性
6. 默认不被用于负载均衡 ----- 会通过各种选路规则仅仅产生一条最佳路径
7. BGP 支持认证和聚合
BGP 的数据包
HCIP笔记五_第2张图片

 

BGP 报文头部
HCIP笔记五_第3张图片

 

Route-refresh ----- 路由刷新包
作用:用来要求对等体重新发送指定地址族的路由信息。
一般为本端修改了相关路由策略之后让对方重新发送更新报文,本端执行新的路由策略重新计算 BGP
路由。
双方均支持路由刷新功能
OSPF 中的 hello 报文 ------ 可以周期性的发现、建立和保活邻居关系。
Open
HCIP笔记五_第4张图片

 

TCP 连接建立之后发送的第一个报文,用于建立 BGP 对等体之间的连接关系。 Hold Time----- 保活时间
BGP Identifier-----BGP 的标识符( RID
OSPF 中的 RID 用法相同
全网唯一。
获取方式:手工配置 > 最大环回接口 > 最大物理接口
BGP 需要协商的参数
AS
BGP open 报文会携带本地的 AS 号,通过比较两端的 AS 号可以判断对端是否和本端处于相同
AS
不管这个 AS 号与本地的 AS 号是否相同,都不影响 BGP 对等体的建立。
另外, 如果对方的 AS 号和本地指定对等体时写的 AS 号不同,则会导致邻居关系无法建立
peer 12.0.0.2 as-number 100
RID
通过对比 open 报文中的 RID 值,可以判断是否相同,若相同则会导致建邻失败
认证字段
BGP 也可以进行认证,认证口令不同,则也会 导致建邻失败
该字段永远以 MD5 值的方式保存在 TCP 的选项字段。
保活时间 ----- 并不影响 BGP 对等体的建立。
BGP 在建立对等体关系时,需要协商该参数。
如果在该时间内未收到对端发来的 keepalive 报文或者 update 报文,则认为 BGP 连接中断。 -
---180S
报文更新时间 ---- 三分之一保活时间 ----60S
若双方保活时间不一致,则按照小的时间进行。
该参数可以设置为 0 ,若设置为 0 ,则代表不发送 keepalive 报文。
路由刷新功能
keepalive
作用:用来进行周期保活
除了保活机制外, keepalive 报文还在 open 报文协商参数时,临时充当确认报文 ----- 确认 open 报文中
的参数是否认可
update --- 更新包
HCIP笔记五_第5张图片

 

作用:用于在对等体之间传递路由信息,可以用于发布、撤销路由。 ----- 携带需要传递的路由信息。
需要携带的参数主要就是目的网络号、子网掩码信息和路径属性。
Notification
HCIP笔记五_第6张图片

 

纯粹的告警机制。当 BGP 检测到错误状态时(对等体关系建立时、建立之后都可能发送该报文),就
会向对等体发送该报文,告知对端错误原因。之后 BGP 连接会 立即 中断。
BGP 的状态机 BGP 的角色
Speaker
发送 BGP 报文的设备被称为 BGP Speaker (发言者)
它接收或产生新的报文信息,并发布给其他 BGP Speaker Speaker 角色是针对具体报文发送
过程而言的,网络中每台 BGP 路由器均可称为自己发送 BGP 报文的 Speaker
Peer
相互交换报文的 Speaker 之间互相称为 peer (对等体)
BGP 的状态机仅描述的是对等体关系建立过程的状态变化 BGP 可以将邻居建立过程和 BGP 路由收发
过程分开
HCIP笔记五_第7张图片

 

IDLE----- 空闲状态
所有设备启动 BGP 进程后,首先进入该状态。
进入该状态后,等待手工指定邻居。
当手工指定邻居之后,将会进入到一个 检查环节 。需要检查手工指定的 IP 地址在本地全局路由
表中是否可达,只有可达,才可以正常建立 TCP 的会话,如果不可达,则邻居关系建立失败,
停留在 IDLE 状态。
若检查成功,则进入 Connect 状态。
Connect----- 连接状态
建立 TCP 会话连接
在该状态下,会开启一个 连接重传定时器 ----32 秒。
如果成功建立 TCP 会话,会关闭连接重传定时器,并进入 OpenSent 状态。
如果建立失败,则进入 Active 状态。
如果重传定时器超时, BGP 仍然没有收到对等体的响应,那么 BGP 会继续尝试与对等体建立
TCP 会话,并一直处于 Connect 状态
Active 状态 ---- 尝试状态
该状态是因为第一次 TCP 会话建立失败进入的,在该状态会重新尝试建立 TCP 会话。
如果成功建立,则进入 OpenSent 状态,并会关闭连接重传定时器。
如果失败,则停留在 Active 状态。
Connect 状态共同使用同一个连接重传定时器。
OpenSent----- 发出本地的 Open 报文
也将收到对端发送的 open 报文,并会查看其中的参数,如果参数没有问题,则本地将发送
keepalive 报文进行确认,之后进入 openconfirm 状态。
如果发现收到的 open 报文中的参数不认可,那么 BGP 会发送 notification 报文给对等体,并进
idle 状态。 对等体关系的指定是双向的,所以当双方都使用 peer 命令指定了对等体后,均会主动与对等
体建立 TCP 连接。但是这样就会建立两条 TCP 的双向连接,所以 BGP 会选择第一个 TCP 链接断
OpenConfirm---- 等待确认状态
在该状态机是,等待对方发送的 keepalive 报文。如果接收到对端发送的 keepalive 报文,则代
表参数协商通过,会进入最终状态。
如果收到的是 notification 报文,则转至 idle 状态。
Established------ 连接建立完成状态
对等体关系建立完成的标志。
在该状态下, BGP 可以和对等体交互 Update 报文、 keepalive 报文、 Route-refersh 报文和
Notification 报文。
HCIP笔记五_第8张图片

 

BGP 的工作过程
1. 基于 IGP 协议或静态路由实现邻居 IP 可达
2. 启动 BGP 协议,并指定邻居关系
1. 邻居之间单播传输报文,通过三次握手机制,建立 TCP 会话通道。
2. 后续 BGP 所有的通讯都将基于 TCP 会话通道来传输。包括传输所需要的可靠性机制。
3. 使用 open 报文和 keepalive 报文进行对等体关系的建立。 open 报文用来携带建立对等体关系时所需
要使用的参数, keepalive 报文用于参数的确认。最终完成对等体关系的建立。生成 邻居表
4. 使用 update 报文来共享路由信息。信息中将携带目标网络号、掩码及路径属性;之后,设备会将所
有的自己发送的以及接收的路由信息记录在一张表中 ----- BGP
5. BGP 表中的最优路由信息(通过路径属性选择)加载到 全局路由表 中。
6. 此时路由收敛完成,将使用 keepalive 报文进行周期保活,默认保活时间为 180S ,周期发送时间默
认为保活时间的 1/3 ,即 60S
7. 如果出现错误信息,则将使用 notification 报文进行告警
8. 如果出现结构突变,则将使用 update 报文进行触发更新 BGP 的防环机制
EBGP 的水平分割

 

AS_Path 属性 ----- 记录 AS 路径的一个属性
当路由信息再一次传回本地 AS 时,路由器通过查看 AS_Pathshux1 ,可以清楚的知晓该属性包含本地
AS 号,故拒绝学习该路由信息。
IBGP 的水平分割
HCIP笔记五_第9张图片
BGP 规定,当路由器从一个 IBGP 对等体学习到某条 BGP 路由时,它将不能再把这条路由通告给任何
IBGP 对等体 -----IBGP 水平分割机制。
解决方案
1. 构建全联的 IBGP 对等体关系
1. AS 内部设备数量巨大时, IBGP 邻居关系会呈指数型增长,而非直连建邻之间传递的数据还
是要依靠物理链路,故全连接建邻会导致占据大量的链路资源,并且路由器维护大量的 TCP
BGP 会话连接,需要消耗大量的设备资源。
2. 网络的可扩展性差。
2. 打破 IBGP 水平分割
1. 联邦
2. 路由反射器
BGP 的路由黑洞
HCIP笔记五_第10张图片 由于BGP协议可以非直连建邻,所有导致 BGP 协议可能出现跨越未运行 BGP 协议的设备,导致 BGP

 

由传递后,控制层面可达。但是数据层面,流量流经未运行 BGP 协议的设备时,无法通过,形成路由黑
洞。
避免路由黑洞的方式 ---- -BGP 同步更新规则 ---- 当一台路由器从自己的 IBGP 对等体学习到一条 BGP 路由
时,它将不能使用该条路由或把这条路由信息通告给自己的 EBGP 对等体,除非它又从 IGP 协议学习到这
条路由,也就是要求 IBGP 路由与 IGP 路由同步
在华为数通设备上, BGP 同步更新规则缺省是被关闭的,并且华为也不允许开启 BGP 同步规则
解决方案
1. 让未运行 BGP 协议的设备运行 BGP 协议 --- 建立全连接的 IBGP 环境。
2. 物理或逻辑拓扑全联
3. IGP 协议中,重发布 BGP 协议的路由信息
4. MPLS---- 多标签标记交换
BGP 基本配置
HCIP笔记五_第11张图片

 

BGP 建邻的基本配置 使用直连接口 IP 地址建立 EBGP 对等体关系
1 、启动 BGP 协议
[r1]bgp 100 ----- 启动 BGP 进程,且标准本设备所在的 AS
2 、设置 Rid
[r1-bgp]router-id 1.1.1.1
3 、配置 BGP 对等体,并指定对等体所在的 AS
[r1-bgp]peer 12.0.0.2 as-number 200
[r1]display bgp peer ---- 查看 BGP 的邻居表
IBGP 对等体的建立
由于直连接口建立对等体时,若链路终端,则会中断 BGP 会话。故在实际工程中,一个 AS 内部正常具
有较为复杂的网络拓扑结构,设备到设备之间存在大量的备份和负载均衡路径,因此建立 IBGP 邻居关系
时, 建议使用双方的环回接口来作为源 / IP 地址
[r2]bgp 200
[r2-bgp]peer 3.3.3.3 as-number 200
[r3]bgp 200
[r3-bgp]router-id 3.3.3.3
[r3-bgp]peer 2.2.2.2 as-number 200
手工建立邻居关系时,所指定的建邻的 IP 地址必须和收到的数据包中的源 IP 地址相同才能正常建立邻
居关系。否则,邻居关系建立失败
[r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0 ----- R2 发送的数据包的源 IP 地址修改为
loopback 0 接口的 IP 地址
抓包后会发现一个问题,就是 BGP 此时仅建立了一次 TCP 连接,就完成了 BGP 会话的建立。这也就意
味着, BGP 会话的建立仅仅是依靠 TCP 会话,而并没有对这个 TCP 会话建立的方式有要求,该 TCP 会话是
由谁发起的,谁是客户端,谁是服务端并不影响 BGP 对等体的建立。 ------- BGP 协议中, TCP 会话建立
两次完全是多余的,而建立两次的原因也是因为双方路由器均会指定对等体(均将自己看做是客户
端),从而发起建立连接请求 而在当下场景中, R3 作为 TCP 会话的服务端,已经认知到了自己本地已经有接口 3.3.3.3 ,与自己本地
配置的对等体建立了连接,所以本地也不会在发送所谓的 TCP 连接建立请求。
一般情况下,双方均要修改本地数据包的源 IP 地址
使用环回接口 IP 地址建立 EBGP 对等体关系
EBGP 对等体之间存在多条直连链路时,才可使用环回接口建立对等体关系
1 、实现路由可达
ip route-static 5.5.5.5 255.255.255.255 45.0.0.5
ip route-static 4.4.4.4 255.255.255.255 45.0.0.4
2 、对等体配置
[r4]bgp 200
[r4-bgp]peer 5.5.5.5 as-number 300
[r4-bgp]peer 5.5.5.5 connect-interface LoopBack 0
[r5]bgp 300
[r5-bgp]router-id 5.5.5.5
[r5-bgp]peer 4.4.4.4 as-number 200
[r5-bgp]peer 4.4.4.4 connect-interface LoopBack 0
因为 EBGP 之间的数据包的 TTL 值为 1 ,故此时虽然可以建立 TCP 连接和 BGP 会话,但是路由器会认为该
连接和会话存在异常,在 BGP 对等体建立完成后,发送 notification 报文断开连接,从而会产生一个现象 -
--- 状态机震荡
解决方法:修改 TTL
[r4-bgp]peer 5.5.5.5 ebgp-max-hop 2
如果未标明参数值,则代表将 TTL 值修改为最大值 255
[r5-bgp]peer 4.4.4.4 ebgp-max-hop 2
两边均要修改,不然无法建立对等体关系,还存在状态机震荡。
BGP 的路由发布
通过 network 命令发布路由
路由发布 ---- 对于 BGP 而言,只要是路由表中存在的路由信息,都可以通过 network 命令发布
[r1-bgp]network 1.1.1.1 32 目标网络号 路由表中的掩码信息
注意: BGP 使用 network 命令宣告时,该路由信息必须与 全局路由表 中存在的路由项一致。
[r1-bgp]display bgp routing-table --- 查看 BGP network----- 目标网络号及掩码
nexthop----- 下一跳,谁发送的路由信息,则下一跳就写谁;如果是本地发布的路由,则下一跳写 0.0.0.0
状态码 ----
*
代表可用
所有设备收到路由条目后,首先会根据下一跳属性中的参数来查询本地路由表,查看该地址的
可达性。如果本地路由表中可达,则代表该路由信息可用;若本地不可达,则代表该路由信息
不可用。
如果该路由条目不可用,则将不会参与到路由信息的优选过程
>
代表优选
当收到多条到达相同网段的路由信息时,并且都可用,则将依据属性在其中选择最优的路由信
息进行 加表及传递
i
代表该路由信息是通过 IBGP 对等体学习到的
对于 R3 而言, R2 传递来的路由信息是不可用且不优的,原因在于下一跳属性未修改,无法递归。
解决思路:
[r2-bgp]peer 3.3.3.3 next-hop-local
将路由传递给自己的 3.3.3.3 邻居时,将路由中的下一跳属性该为本地。
总结一下配置逻辑
1. 完成所有路由器的 IGP 配置
2. 使用直连接口建立 EBGP 对等体关系
3. 使用环回接口建立 IBGP 对等体关系
4. 使用 connect-interface 命令修改 IBGP 建邻源 IP 地址,双方均修改
5. 使用 next-hop-local 命令修改路由传递的下一跳属性
6. 若存在使用环回接口建立 EBGP 对等体关系,则需要建立通讯条件,并且使用 ebgp-max-hop 命令
修改 TTL 使用 import 命令引入路由
[r2-bgp]import-route ospf 1
ONG---- 起源码属性 ---- 标识一条路由信息的起源类型
i---- 代表这条路由信息起源于 AS 内部使用 network 命令通告出来
不限于 IGP 、静态、直连
e----- 代表这条路有信息起源于 EGP 协议 ---- 现在几乎看不到该标识
?----- 除了以上两种方式,其他方式获取的路由信息都是该标识
BGP 路由通告原则
当一条 BGP 路由器发现了多条可以到达同一地址的路由条目,该设备会通过一个路由选择过程在这
些路由条目中选择一条最优的路由,将这条路由加入到全局路由表中,并且在向其他 BGP 对等体通
告该路由条目时,也只会通告最优的路由。
通常情况下,路由器只会将最优的路由加载到路由表中,除了激活了负载均衡情况外。
当一台路由器从 EBGP 邻居学习到了 BGP 路由时,缺省情况下,会将该路由条目通告给所有的 IBGP
对等体以及 EBGP 对等体。
当一台路由器从 IBGP 邻居学习到了 BGP 路由时,缺省情况下,不会将这条路由信息通告给其他的
IBGP 对等体。
因为 IBGP 水平分割原则
当一台路由器从自己的 IBGP 学习到 BGP 路由时,如果同步规则被激活,只有从 IGP 协议也学习到该
路由条目后,才会将 BGP 路由激活,并学习到本地,以及通告到 EBGP 对等体。如果同步规则被关
闭,即使没有从 IGP 学习到该路由,也会将 BGP 路由通告给 EBGP 对等体。

你可能感兴趣的:(网络,udp,网络协议)