当前位置:网站首页>HCIP 第十天
HCIP 第十天
2022-08-02 07:17:00 【羊腿大大】
BGP --- 边界网关协议
IGP --- 内部网关协议 --- RIP OSPF
EGP --- 外部网关协议 --- BGP
AS --- 自治系统 --- 由单一的机构或组织所管理的一些列IP网络及设备所构成集合。
划分AS的原因:
1,网络范围太大,协议跑不过来;
2,自治管理
为了方便对自治系统进行管理,我们给每一个自治系统设计了一个号 --- AS号 ---- 16位二进制构成 ---- 取值范围:0 - 65535,其中0和65535为保留;AS号的可用值范围为1 - 65534 ---- 其中 64512 - 65534被设定为私有AS号,剩下的为公有AS号。
因为传统的AS号存在不够用的情况,所以,目前大部分设备均支持拓展的AS号 --- 32位二进制构成。
BGP协议 --- 目前在IPV4环境下 --- BGPV4 --- 目前市场上也存在BGPV4+ --- 在BGPV4的基础上,可以支持多种地址族
AS之间相互获取路由信息可以使用重发布,但是以重发布作为解决方案存
在问题:
1,选路不佳 --- 重发布在导入路由时会洗掉开销值。
2,ASBR的归属问题
BGP协议 --- 无类别的路径矢量协议
无类别 --- 传递路由信息时携带子网掩码
路径矢量 --- 1,距离矢量中的距离指的是协议将一个路由器作
为一跳来计算开销。而路径矢量是以一个AS作为一个单位来传递
信息的。
2,距离矢量型协议的分发是根据算法来分的,但
是BGP协议不存在算法的概念,因为BGP协议不需要去计算路由,
只需要将现有的传递到自己的邻居处即可。
IGP --- 选路佳,收敛快,占用资源少
EGP --- 1,可控性 --- AS之间需要传递大量的路由信息,所谓可
控,就是可以更方便的干涉选路,更容易做策略。 --- 弥补重发布
的不足
为了保证路由传递的可控性,更方便干涉选路,BGP协议舍
弃了开销值,取而代之的是他为路由信息设计了很多路径属
性。可以通过属性进行选路,是的选路过程更加灵活,可控
性更高。
2,可靠性 --- BGP协议为了保证传输的可靠性,直接选择TCP协议作为传输层的协议来完成数据收发 ---- 使用的是TCP 179号端口--- 使用TCP协议通讯造成的问题是,传输效率降低,只能实现单播通讯(TCP需要去建立会话),占用资源会加大 ---- 使用TCP之后,便不能通过广播或者组播去自动发现邻居进行通信了。
--- BGP协议可以实现非直连建邻,非直连建邻的前提条件是邻居双方网络可达 ---- BGP的非直连建邻是建立在IGP的基础上
我们可以根据邻居关系的建立情况,将BGP的邻居关系分为两种
AS之间:EBGP对等体 --- 如果建立对等体的两台路由器位于不同的AS中,则他们的关系被称为EBGP对等体关系。
AS内部:IBGP对等体 --- 如果建立对等体的两台路由器位于同一个AS中,则他们的关系被称为IBGP对等体关系。
因为EBGP对等体之间一般采用直连建邻的方法,所以,我们将EBGP
对等体之间的数据包中的TTL值设置为1;而IBGP对等体之间往往需要非直
连建邻,所以,IBGP对等体之间的数据报中的TTL值我们设置为255;当
然,如果EBGP对等体之间需要非直连建邻,则需要手工修改TTL值。
3,AS-BY-AS:BGP将一个AS作为一个单位来看待。
---- BGP的一个特性:BGP是不支持负载均衡。
1,BGP的数据包
ospf的hello包 --- 周期发现,建立和保活邻居关系。
发现邻居的任务 --- 在BGP中由手工指定邻居关系来替代建立邻居的任务 --- 在BGP中由OPEN报文来承担
保活邻居的任务 --- 在BGP中由Keeplive报文来承担
Open包 ---- 建立邻居关系
AS号:在手工建立邻居关系时声明的邻居的AS号。对端收到后会检查其是否和本地的AS号一致,一致则正常建立邻居关系。
认证:BGP也可以在建邻时做认证,需要比对双方认证口令,不一致则无法建立邻居关系。
Router-ID:主要区分和标定路由器。OPEN报文中携带RID的目的是为了确保双方的RID不一致。确保其唯一性,如果相同,则无法正常建立邻居关系。
----- RID 也是由32位二进制构成,并且遵循IP地址的格式。 ---- 也可以通过两种方法获取,一种是手工配置;另一 种是自动获取。(先在自己路由器的环回接口中选择最大的IP地址作为RID,如果没有环回接口,则在自己物理接口中选择IP地址最大的作为RID)
注意:在接受邻居数据包时,其中的源IP地址必须和手工指定的邻居的IP地址一致才可以正常建立邻居关系。(这个地址将作为之后的更新源地址)
OPEN报文在建立邻居关系的时候也会携带保活时间(holdtime)这个参数 --- 这个参数默认值为 180S --- 即180S内若收不到对方发送的keeplive或者UPdate包则将判定BGP链接中断。--- 双方建邻时携带这个值,但是并不要求必须相同。但是,执行时必须相同,所以,将会选择二者中较小的作为执行时间。
OPEN报文中也会将自身是否支持路由刷新功能的相关参数进行携带,双方进行协商,如果都支持,则可以开启路由刷新功能。
keeplive包 ---- 仅完成周期保活即可(保活TCP话),不需要携
带太多的参数,也不具备太多的功能。
--- Keeplive报文的发送周期 --- 保活时间(hold time)的
1/3,保活时间默认为180S,则周期发送时间默认为60S。
KeepLive包还有一个作用 ---- 在收到对方发送的OPEN报文后,
临时充当确认包的作用。 --- TCP本身具有确认机制,可以确保
传输的可靠性,这里的确认主要是确认OPEN报文中携带的参数,
如果认同对方的参数,则将回复Keeplive包进行确认。
Update包 --- 更新包 --- 携带路由信息的数据包 ---- 包括目标网段,子网掩码信息以及BGP的各种属性
在UPdate包中存在撤销路由字段,我们可以直接将不可达的路由信息放在该字段下进行通告,以达到传递失效信息的目的。而不需要像RIP那样采用带毒传输的方式。
Notification包 --- BGP设计的一个告警机制 --- 当BGP检测到一个错误的时候,他将会用这个包进行告警,告知对端错误点在哪Route-refresh包 --- 用于改变路由策略后请求对等体重新发送路由信息。(前提是对等体双方均支持路由刷新)
2,BGP的状态机
BGP的状态机仅描述BGP对等体建立过程中的状态变化。
因为BGP可以做到建立邻居关系和发布路由分开完成。
IDLE状态 --- 空闲状态 --- 一开始,启动BGP之后,先处于IDLE状态,之后手工指定邻居关系。
当手工指定好邻居之后,BGP将开启检查步骤。他需要确认指定的IP地址在本地路由表中是否路由可达,如果可达,则开始尝试建立TCP会话,进入下一个状态。如果不可达,则停留在IDLE状态。
connect状态 --- 进行TCP会话连接的状态。如果TCP会话连接建立成功,则进入OPENsent状态;如果TCP会话建立失败,则进入Active状态,反复尝试重新建立会话连接。
注意:在建立TCP会话连接时,双方都会尝试建立连接,一方建立成功,则将创建一个双向的TCP会话通道;双方都建立成功,则将会出现两个双向通道。则需要关闭一个TCP通道。后面开始发送OPEN报文,其中会携带RID,双方将比较RID,仅保留RID大
的一端发起的TCP连接,RID小的一端发起的TCP连接通道将被断开。
OPENsent --- 开始发送OPEN报文,报文中携带建立邻居关系所需的参数。当收到对端发送的OPEN报文后,将检查里面的参数。如果参数没有问题,则将回复一个keeplive作为确认,则进入下一个状态;
OPENConfirm --- OPEN确认状态 --- 对端收到本段的OPEN报文后,确认参数无误,则将发送keeplive包进行确认。此时,则代表双方的OPEN包中的参数都确认无误则进入下一个状态;
Established --- 建立完成状态 --- 标志着对等体关系的建立。
从流程图中可以看出,TCP连接失败,则进入ACTIVE状态,尝试重连,如果重连超时,则放弃重连,判断邻居关系建立失效,回到idle状态。整个环节中,任意环节出现问题,都将发送Notification包进行报错,之后将状态退回到IDLE状态。
3,BGP的工作过程
1,基于IGP(静态,直连)实现IP可达;
2,指定邻居关系,邻居间需要建立TCP会话通道。BGP之后发送的所有数据包都是通过TCP会话通道发送,来保证其传输的可靠性的。
3,使用OPEN报文和keeplive报文进行邻居关系的建立;生成邻居表;
4,使用Update报文共享路由信息,信息中携带目标网络号,掩码信息及各种属性;将收集和发送的所有路由信息记录在一张表中 --- BGP表。
5,之后,将BGP表中的最优路径加载到路由表中。(到达同一个目标网段可能收到多条路由信息,BGP仅加载一条(不存在负载均衡)最优路径,最优路径是通过属性来选择的)
6,收敛完成后,将使用keeplive包进行周期保活,默认保活时间为180S,周期发送时间为60S。
7,若出现错误信息,将使用notification报文进行告警;(这个错误信息可能出现在对等体建立的时候,也可能出现在之后。)
8,若发生结构突变,则将直接发送UPdate报文进行触发更新。
1,BGP的路由黑洞
由于BGP协议可以非直连建邻,故可能出现BGP协议跨越未运行BGP协
议的路由器,导致BGP路由传递后,显示控制层面可达,但是,数据层
面,流量经过未运行BGP协议的路由器时,无法通过,形成路由黑洞。
解决方案:
1,让AS内所有设备都运行BGP协议
2,可以在AS内部运行BGP的设备上像AS内部使用的IGP协议中进行重发布
3,使用MPLS技术解决路由黑洞问题 --- 是当前工程中主要使用的解决BGP
路由黑洞方案。
BGP为了防止BGP路由黑洞的产生,提出了BGP同步机制 --- 即当一台
路由器从自己IBGP对等体学习到一条BGP路由时,他不能将这条路由
通告给自己的EBGP对等体,除非他又从IGP协议中(包含静态路由)
学习到这条路由。也就是要求IBGP路由和IGP路由同步。
华为设备默认关闭BGP的同步规则。
2,BGP的防环机制
BGP使用的防环机制 ---- 水平分割
在BGP中的水平分割分为两种:
1,EBGP水平分割 --- 专门解决EBGP对等体之间可能出现的环路
问题。
2,IBGP水平分割 --- 专门解决IBGP对等体之间可能出现的环路
问题。
EBGP水平分割:
bgp协议在路由条目中记录所经过的AS编号 --- AS_PATH属性 (记载所有经
过AS编号的属性,该属性除了可以用来进行EBGP对等体之间的防环外,还
可以在特定情况下进行路由选路)。接收到的BGP路由条目中的AS_PATH中
若包含本地的AS号,则将拒绝接受,避免环路产出。
IBGP水平分割
因为BGP的AS-BY-AS的特性,导致AS内部被认为是一个整体,在默认
情况下,路由的属性是不会发生变化的,所以,无法通过属性来进行防
环。
所以,IBGP水平分割的做法 --- 当一个路由器从一个IBGP对等体出学习到
某一条BGP路由时,他将不再把这条路由信息通告给其他的IBGP对等体。
IBGP水平分割可以有效的解决IBGP对等体之间路由回传造成的环路问题,但是,也会引发路由信息传递障碍问题。想要避免IBGP水平分割带来的问题,可以让所有AS内部运行BGP的路由器均建立IBGP对等体关系。---- 这种建立全连的IBGP对等体的方案并不是最佳解决方案 --- 因为,当一个AS内运行BGP协议的路由器数量较多时,建立全连的邻居关系,将造成大量的资源浪费,并且降低网络的可扩展性。
所以,BGP存在两个技术专门用于解决IBGP水平分割带来的问题 ---
1,路由反射器
2,联邦
边栏推荐
- Metasploit (MSF) Basic Super Detailed Edition
- From cloud computing to function computing
- Agile, DevOps and Embedded Systems Testing
- 企业实训复现指导手册——基于华为ModelArts平台的OpenPose模型的训练和推理、基于关键点数据实现对攀爬和翻越护栏两种行为的识别、并完成在图片中只标注发生行为的人
- MySQL-底层设置
- Mysql error 2003 solution Can 't connect to Mysql server on' localhost '(10061).
- MySQL-FlinkCDC-Hudi enters the lake in real time
- MySQL-数据库设计规范
- (2022 Niu Ke Duo School 5) D-Birds in the tree (tree DP)
- 主流定时任务解决方案全横评
猜你喜欢
随机推荐
常用的云安全防护措施盘点
Enterprise training and reproduction guidebook - training and reasoning of the OpenPose model based on Huawei ModelArts platform, realizing the recognition of two behaviors of climbing and climbing ov
修改apt-get源为国内镜像源
Metasploit (MSF) Basic Super Detailed Edition
gdalinfo: error while loading shared libraries: libgdal.so.30: cannot open shared object file: No su
Splunk Field Caculated 计算字段
敏捷、DevOps和嵌入式系统测试
LeetCode刷题(7)
Neural network
MySQL - locking mechanism
spark architecture
Splunk Filed extraction field interception
MPLS和BGP的综合实验
替换ptmalloc,使用tcmalloc和jemalloc
2022-2023 十大应用开发趋势
regular expression
LeetCode 283. 移动零(简单、数组)
初探形式化方法基本原理
CollectionUtil: a collection of functional style tool
LeetCode 2360. The longest cycle in a graph