侧边栏壁纸
  • 累计撰写 46 篇文章
  • 累计创建 11 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

BGP

加夫列尔·加西亚·马尔克斯
2024-04-15 / 0 评论 / 0 点赞 / 21 阅读 / 24892 字 / 正在检测是否收录...
温馨提示:
有问题欢迎加入QQ交流群交流:461796942
广告 广告

BGP

BGP

简介

  • BGP协议:边界网关协议(Border Gateway Protocol,BGP),是一种实现自治系统AS之间的路由可达,并选择最佳路由的矢量性协议

  • BGP由TCP(端口号179)承载运行在OSI模型的应用层

  • BGP的报文都是通过单播的方式发送的

  • 支持CIDR 无类域间路由

  • BGP本身只负责控制路由,数据转发依然靠静态或IGP路由

  • 一台路由器上只能配置一个BGP进程

一、BGP路由规则

  • 状态代码 > 表示该路由当前是最优的路由

  • 运行BGP的路由器,收到下一跳不可达的路由时,接收该路由,加入到BGP路由表中,但这条路由不会被BGP优选,不会加入IP路由表

  • 缺省情况下, BGP对等体邻接关系的保持时间(Hold Time)是180秒,发送keepalive时间为60秒,是其三分之一

  • BGP路由不周期性更新,只会发生变化时更新,路由更新时,BGP设备只发送更新的BGP路由,大大减少了BGP传播路由所占用的带宽

  • 通过import-route命令方式把IS-IS路由引入到BGP,必须指定进程号

  • 当存在多条到达同一目的地址的有效路由时,BGP设备只将最优路由发布给对等体

  • 所有对等体发送的路由,BGP设备都会接收

  • BGP支持network和import-route两种方式注入路由

  • BGP只要能够建立TCP连接并不一定需要直连

  • 当存在多条到达同一目的地址的有效路由时,BGP设备只将最优路由发布给对等体

二、BGP对等体建立

  • 在建立非直连EBGP邻居关系时,默认情况下EBGP更新报文的TTL(Time to Live)是1

  • 建立IBGP对等体时要让下一跳可达

  • 处于边界的IBGP对等体需要将下一跳指向自己

  • 一般BGP建立对等体都是环回口来建,因为环回口比较稳定

三、IBGP

  • 概念:运行于同一 AS 内部的 BGP 称为 IBGP

  • IBGP水平分割原则(AS内部防环):从IBGP对等体获得的BGP路由,BGP设备只发布给它的EBGP对等体

  • 所有IBGP对等体在传递过程中下一跳不变

  • 默认IBGP传递时TTL值为255

四、EBGP

  • 概念:运行于不同 AS 之间的 BGP 称为 EBGP

  • AS间防环:从EBGP对等体获得的BGP路由,BGP设备发布给它所有EBGP和IBGP对等体

  • 所有EBGP对等体在传递过程中下一跳改变

  • BGP中建立EBGP邻居关系时,报文的默认TTL值是1

五、BGP的Router-ID(路由器号)

  • BGP的Router-ID是一个用于标识BGP设备的32位值,通常是IPv4地址的形式

  • 在BGP会话建立时发送的Open报文中携带

  • 每个BGP设备都必须有唯一的Router ID,否则对等体之间不能建立BGP连接

  • BGP的Router-ID在BGP网络中必须是唯一的,可以采用手工配置,也可以让设备自动选取

  • 缺省情况下,Loopback接口为RID,没有则选择接口最大的作为RID,RID选举产生不可抢占

六、BGP报文

前言

  • BGP报文有5种消息类型

  • Keepalive报文为周期性发送,其余报文为触发式发送

1.Open

  • TCP连接后发送的第一个报文就是Open,用于建立对等体间连接关系

  • 用于协商BGP对等体的各项参数,主要包括BGP版本(V4)、AS号等信息,建立BGP对等体连接

  • 建立连接后,BGP邻居之间交换整个BGP路由表

  • 主要携带参数:

    • Hold Time

    • Router ID

    • 本地AS自治系统号

2.Update

  • BGP通过Update报文在对等体之间交换路由信息

  • Update消息可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息

  • 连接建立后,路由需要发送或者路由变化时,发送Update通告对端可达或者撤销路由信息及路径属性

  • 主要携带参数:

    • 路由属性

    • 撤销路由前缀信息

    • 可达路由前缀信息

3.Keepalive

  • 用于保持BGP连接(保活)

  • 定时发送Keepalive报文以保持BGP对等体关系的有效性,响应收到的正确的Open报文

  • 缺省情况下, Keepalive的时间间隔是60秒

  • Keepalive报文主要用于保持BGP对等体间的连接

  • Keepalive报文只包含一个BGP数据报头

  • Keepalive报文周期性在两个BGP邻居之间发送

4.Notification

  • 用于中断BGP连接

  • Notification消息被用来在BGP Speaker间传递错误消息

  • 当BGP在运行中发现错误时,发送Notification报文通告BGP对端,随后与之相关的BGP连接会随即中断

  • 当本地BGP在运行中发现错误时,要发送NOTIFICATION消息通告BGP对等体

5.Route-Refresh

  • 用来通知对等体自己支持路由刷新

  • 通过OPEN消息告知BGP peer本地支持路由刷新能力

  • Route-refresh 报文不会改变 BGP 状态

连接建立过程图

七、BGP状态机

前言

  • BGP对等体建立的过程中,通常可见的3个状态是:Idle、Active和Established

1.Idle(空闲)

  • Idle 状态是 BGP 初始状态

  • 在 Idle 状态下, BGP 拒绝邻居发送的连接请求

  • 在收到本设备的 Start 事件后, BGP 才开始尝试和其它 BGP 对等体进行 TCP 连接

  • 随后转到Connect状态

2.Connect(连接)

  • Connect 状态下, BGP 启动连接重传定时器(Connect Retry),等待 TCP 完成连接

  • 如果 TCP 连接成功,那么 BGP 向对等体发送 Open 报文,并转至 OpenSent 状态

  • 如果 TCP 连接失败,那么 BGP 转至 Active 状态

  • 如果连接重传定时器超时, BGP 仍没有收到 BGP 对等体的响应,那么 BGP 继续尝试和其它 BGP 对等体进行 TCP 连接,停留在 Connect 状态

3.Active(活跃)

  • Active 状态下, BGP 依旧在试图建立 TCP 连接

  • 如果 TCP 连接成功,那么 BGP 向对等体发送 Open 报文,关闭连接重传定时器,并转至 OpenSent 状态

  • 如果 TCP 连接失败,那么 BGP 停留在 Active 状态

  • 如果连接重传定时器超时, BGP 仍没有收到 BGP 对等体的响应,那么 BGP 转至 Connect状态

4.OpenSent(Open 报文已发送)

  • OpenSent 状态下, BGP 等待对等体的 Open 报文,并对收到的 Open 报文中的 AS 号、版本号、 认证码等进行检查

  • 如果收到的 Open 报文正确,那么 BGP 发送 Keepalive 报文,并转至 OpenConfirm 状态

  • 如果发现收到的 Open 报文有错误,那么 BGP 发送 Notification 报文给对等体,并转至Idle 状态

5.Open Confirm(Open 报文已确认)

  • OpenConfirm 状态下, BGP 等待 Keepalive 或 Notification 报文

  • 如果收到 Keepalive 报文,则转至 Established 状态

  • 如果收到 Notification 报文,则转至 Idle 状态

6.Established(连接已建立)

  • Established 状态下, BGP 可以和对等体交换 Update、 Keepalive、 Route-refresh 报文和Notification 报文

  • 如果收到正确的 Update 或 Keepalive 报文,那么 BGP 就认为对端处于正常运行状态,将保持 BGP 连接

  • 如果收到错误的 Update 或 Keepalive 报文,那么 BGP 发送 Notification 报文通知对端,并转至 Idle 状态

  • 如果收到 Notification 报文,那么 BGP 转至 Idle 状态

  • 如果收到 TCP 拆链通知,那么 BGP 断开连接,转至 Idle 状态

状态机建立过程图

八、BGP报文中的角色

1.Speaker

  • 发送BGP报文的路由设备称为BGP发言者(Speaker)

  • 用于接收和产生路由信息,并发给其他(Advertise)的BGP Speaker

2.peer

  • 相互交换报文的BGP Speaker之间互称对等体(Peer)

九、BGP与IGP交互

  • BGP(外部网关协议)、IGP(内部网关协议)

  • BGP 与 IGP 在设备中使用不同的路由表

  • 为了便于通讯,BGP需要与IGP交互

1.BGP引入IGP路由

Import引入
  • 按照协议类型引入路由(将OSPF、IS-IS等路由引入,还可以引入静态路由和直连路由)

Network引入
  • 将IP路由表已经存在的路由逐条引入,使路由引入更加精确

2.IGP引入BGP路由

  • 引入过程中可以使用路由策略

十、路径属性

前言

1.公认必遵

  • 公认必须遵循(Well-known mandatory):所有 BGP 设备都可以识别此类属性,且必须存在于 Update 报文中。如果缺少这类属性,路由信息就会出错

Origin
  • 状态代码

  • 代表有效

    • > 代表最优

    • i 代表的是内部BGP学习到的路由

  • 起源代码

  • i 代表的是network注入的

    • ?代表的是import注入的

    • i > ?

  • IGP>EGP>Incomplete

  • Origin code 属性的取值为 i ,说明该路由是以network的方式宣告的

  • 通过import-route命令注入BGP的路由,其Origin属性为Incomplete

AS_Path
  • 作用:前往目标网络的路由经过的AS号列表,确保路由在EBGP对等体之间传递无环

  • 也作为路由优选的衡量标准之一

  • AS_Path属性仅在路由器离开AS时才会被更改,路由在被通告给EBGP对等体时,路由器会在该路由的AS_Path中追加上本地的AS号

  • 路由被通告给IBGP对等体时,AS-path不会发生改变

  • 可以使用route-policy在EBGP对等体之间改变EBGP路由的AS_Path属性,从而影响BGP路由的优选

  • AS号范围是1~65535

  • AS_Path越短的路径越优先

  • 在BGP协议使用过程中:^表示的是一个as-path的开始;$表示的是一个as-path 的结束;.∗ 表示的是任意长度的任意的as号

  • AS_Set属性用于解决路由聚合可能引起的路由环路问题,它是一种无序的AS路径集合,不保留AS号之间的顺序关系

  • 运行BGP的设备收到一条BGP路由,发现AS号在自己AS_Path内,将会执行直接丢弃操作(防环)

  • BGP在AS内学到的路由不再通告给AS内的BGP邻居,避免了AS内产生环路

Next hop
  • BGP在选择路由前首先会检查路由的下一跳是否可达,下一跳不可达的路由是不活跃路由,不能参与BGP选路

  • 如果正在宣告的路由器和接收路由器在同一个AS内,并且UPdate消息中的路由前缀NLRI目的也是在同一个AS 中,则next_hop为宣告路由器的IP地址

  • 如果宣告路由器和接收路由器是不同AS的路由器,那么所学到的路由的Next-Hop始终是宣告路由器的接口IP地址

2.公认任意

  • 公认任意(Well-known discretionary):所有 BGP 设备都可以识别此类属性,但不要求必须存在于 Update 报文中,即就算缺少这类属性,路由信息也不会出错

Local_Preference
  • 作用:用于告诉AS中的路由器,哪条路径是离开AS的首选路径

  • Local_Preference默认值是100

  • Local Preference只在IBGP对等体之间进行传递(除非做了策略否则Local_Preference值在IBGP对等体间传递过程中不会丢失)

  • 如果在EBGP对等体间收到的路由的路径属性中携带了Local_Preference,则会触发Notifacation报文,造成会话中断

  • AS边界路由器上使用Import方向的策略可以来修改Local_Preference属性值,也就是在收到路由之后,在本地为路由赋予Local_Preference

ATOMIC_Aggregate
  • 路由聚合产生的标记

  • S为抑制

  • 收到携带Atomic_Aggregate属性的路由表示这条路由不能再度明细化

3.可选过渡

  • 可选过渡(Optional transitive):BGP 设备可以不识别此类属性,如果 BGP 设备不识别此类属性,但它仍然会接收这类属性,并通告给其他对等体

Community
  • community-filter只能匹配路由,不能直接过滤路由

  • 将此BGP路由的团体属性设置成:No_export,则此路由不会发布到本地AS之外

  • 将此BGP路由的团体属性设置成:No_Advertise,则此路由不会通告给其他任何BGP对等体

  • 通过设置路由的Community属性可以将路由分类,然后根据类别设置不同路由选路的相关属性,比如Local_Preference、MED、as-path等(BGP选路中除了IBGP和EBGP类型外都可以),从而达到影响路由选择的目的

Aggreator

4.可选非过渡

  • 可选非过渡(Optional non-transitive):BGP 设备可以不识别此类属性,如果 BGP 设备不识别此类属性,则会被忽略该属性,且不会通告给其他对等体

MED
  • 作用:是一种度量值

  • 本地直连或者静态路由通过network或import-route的方式引入BGP.那么这条BGP路由的MED为0

  • MED主要用于在AS之间影响BGP的选路

  • MED默认为0

  • MED的优先级要低于AS Path- Preferred-Value、 Local_Preference和Origin

  • MED类似Cost,越小越优

  • 一般情况下,BGP设备只比较来自同一AS(不同对等体)的路由的MED属性值

  • 可以通过配置命令compare-different-as-med来允许BGP比较来自不同AS的路由的MED属性值

Originator_ID
  • RR的RID集合

  • 路由反射属性

  • 见路由反射器RR

Cluster——list
  • 路由产生者的RID

  • 路由反射属性

5.BGP属性表格

公认必遵

公认任意

BGP 必须都能识别,且在更新消息必须包含

BGP 必须都能识别,更新消息可包含可不包含

OriginAS-PathNext hop

Local-PreferenceATOMIC_Aggregate

可选传递/可选过渡

可选非传递/可选非过渡

可以不支持该属性,但即使不支持也应当接受包含该属性的路由并传递给其他邻居

可以不支持该属性,不识别的BGP进程忽略包含这个属性的更新消息并且不传递给其他BGP邻居

CommunityAggregator

MEDOriginator_ IDCluster_list

十一、BGP安全

  • BGP使用BGP认证和GTSM保证BGP对等体间交互的安全

  • 可以通过display bgp peer verbose命令查看BGP对等体的认证详细信息

1.BGP认证

  • BGP认证使用MD5和Keychain认证

  • MD5 认证只能为 TCP 连接设置认证密码

  • Keychain 认证除了可以为 TCP 连接设置认证密码外,还可以对 BGP 协议报文进行认证

  • 配置MD5认证密码时,如果使用simple选项,密码将以明文形式保存在配置文件中,存在安全隐患

2.BGP GTSM

  • BGP GTSM 检测 IP 报文头中的 TTL(time-to-live)值是否在一个预先设置好的特定范围内,并对不符合 TTL 值范围的报文进行允许通过或丢弃的操作,从而实现了保护 IP 层以上业务,增强系统安全性的目的

十二、路由优选

  • 如果此路由的下一跳不可达,忽略此路由

  • 当到达同一目的地存在多条路由时, BGP 依次对比下列属性来选择路由:

1.优选协议首选值(Preferred-Value)最高的路由

  • 协议首选值(PrefVal)是华为设备的特有属性,该属性仅在本地有效

  • BGP的Preferred-Value属性不会随着BGP的Update报文通告给邻居

  • 该属性值只影响本设备的路由优选

2.优选本地优先级(Local-Preference)最高的路由

  • 如果路由没有本地优先级, BGP 选路时将该路由按缺省的本地优先级 100 来处理

3.依次优选手动聚合路由、自动聚合路由、 network 命令引入的路由、 import-route 命令引入的路由、从对等体学习的路由

  • 聚合路由优于非聚会路由

  • 手动聚合优于自动聚合

  • Network引入的路由优于Imcomplete引入的路由

4.优选 AS 路径(AS_Path)最短的路由

5.依次优选 Origin 类型为 IGP、 EGP、 Incomplete 的路由

  • Origin的IGP优于EGP

  • Origin的EGP优于Imcomplete

6.优选MED值小的

  • 对于来自同一 AS 的路由,优选 MED(Multi Exit Discriminator)值最小的路由

7.EBGP路由优于IBGP路由

  • 依次优选 EBGP 路由、 IBGP 路由、 LocalCross 路由、 RemoteCross 路由

8.优选到 BGP 下一跳 IGP 度量值(metric)最小的路由

当以上全部相同,则为等价路由,可以负载分担(注意:AS_Path必须一致,当负载分担时,以下3条原则无效)

9.优选 Cluster_List 最短的路由

10.优选Originator_ID 值最小的

  • 如果路由不携带Originator_ID属性,选路过程中将比较RouterID的大小,并优选RouterID最小的路由

11.优选从 IP 地址最小的对等体学来的路由

Hold Time

  • Hold Time时间不同需要向小协商

路由聚合

  • 为了防止路由震荡,BGP可以采用路由聚合提高网络的稳定性

  • 对于IPv6路由,BGP支持手工聚合,不支持自动聚合

  • 可以通过summary automatic命令生成自动聚合路由

  • 可以手动通过aggregate命令在BGP视图内生成聚合路由

负载分担

  • 公网中到达同一目的地的IBGP和EBGP路由不能形成负载分担是对的,BGP选路中EBGP路由优于IBGP在等价之前

  • 默认情况下设备只会对AS_Path相同的路由进行负载分担。不是长度相同,而是要完全相同

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
广告 广告

评论区