0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

BGP基础知识学习笔记

jf_77660882 来源:jf_77660882 作者:jf_77660882 2023-02-27 14:42 次阅读

今天海翎光电的小编为大家介绍一下BGP的相关基础知识,文章浅显易懂,适合对BGP完全没有了解的同学。

BGP(边界网关协议)是将互联网联合在一起的路由协议,海翎光电的小编将解释在哪些情况下我们需要 BGP 以及它是如何工作的。在您继续阅读之前,我应该告诉您“忘记”迄今为止您对RIP、OSPF和EIGRP等路由协议的了解……这三种路由协议有一个共同点:它们都是 IGP(内部网关协议)。我们只在我们的自治系统中使用它们,但它们不可扩展以用于像 Internet 这样大的网络。 RIP、OSPF 和 EIGRP 都不同,但它们有一个共同点……它们都想找到到达目的地的最短路径。当我们查看 Internet 时,我们并不关心找到最短路径,而是能够操纵流量路径更为重要,我们目前在 Internet 上使用的路由协议只有一种,即 BGP。

为什么需要BGP? 让我们先看一些场景,以便了解为什么以及何时需要 BGP:

poYBAGP8UA2AOoi1AADJq3__UVs110.png

现在几乎所有东西都连接到互联网,在上图中,我们有一个连接到 ISP(Internet 服务提供商)的客户网络,我们的 ISP 正在确保我们可以访问 Internet,我们的 ISP 为我们提供了一个可用于访问 Internet 的公共 IP 地址。为了确保客户方 LAN 上的每个人都可以访问 Internet,我们使用NAT/PAT(网络/端口地址转换)将我们的内部私有 IP 地址转换为这个单一的公共 IP 地址。当您只有需要访问 Internet 的客户端时,此方案非常适合。在我们的客户 LAN 上,我们只需要一个指向 ISP 路由器的默认路由,我们就完成了。对于这种情况,我们不需要 BGP...

pYYBAGP8UDeAQKVJAADp9tSVDlA075.png

也许客户有几个需要从 Internet 访问的服务器……也许是邮件服务器或网络服务器,我们可以使用端口映射并将正确的端口转发到这些服务器,因此我们仍然只需要一个 IP 地址,另一种选择是从我们的 ISP 获取更多公共 IP 地址,并使用这些地址来配置不同的服务器。对于这种情况,我们仍然不需要 BGP……

pYYBAGP8UEOALOstAAEfNOlffRw033.png

如果我想要更多的冗余怎么办?出现单点故障并不是一个好主意,我们可以在客户端添加另一个路由器并将其连接到 ISP,可以将主链接用于所有流量,并使用另一个链接作为备份,这种情况我们还是不需要BGP,可以用默认路由解决: 1、在客户主路由器上面配置低优先级的默认路由; 2、在客户的备路由器上面配置高优先级的默认路由; 这将确保您的 IGP 使用主链路发送所有流量,一旦链路出现故障,您的 IGP 将确保所有流量都沿备用链路发送,你可以考虑一下......我们可以在这两个链接之间做任何负载平衡吗?会很难么? 除非出现故障,否则您的 IGP 将沿主链路发送所有流量,而不会沿备用链路发送任何流量。您可以使用相同的度量发布默认路由,拥有 50/50% 的负载分担。如果我想在主链路上发送 80% 的出向流量,在备用链路上发送 20% 怎么办?上面的方法不会实现此需求,但使用 BGP 是可能的。

pYYBAGP8UE-ATCEIAAGOnTWDtyk491.png

一、BGP 含义

Border Gateway Protocol,边界网关协议,协议优先级为 255,目前所使用的版本为 v4。边界网关路由协议,EGP 网关协议,适用于大型路由网络结构,以 AS 为一个节点,每个 AS 有唯一确定的 AS-ID 用于标识。

二、BGP 版本

① 2006 年定义单播 IPV4 网络 MP-BGP

② MP-BGP 在 IPv6 单播网络上的应用称为 BGP4+

③ 在 IPv4 组播网络上的应用称为 MBGP(Multicast BGP)

三、BGP 分类 ① IBGP:

Internal Border Gateway Protocol ,内部边界网关协议,用于在 AS 内部的 BGP协议

② EBGP:

External Border Gateway Protocol,外部边界网关协议,用于在 AS 之间的 BGP协议,默认数据包中的 TTL 值为 1 跳,邻居建立使用直连端口建立,通常两个 AS 之间是不存在 IGP 路由协议的,所以 AS 之间使用直连链路建立邻居

四、BGP 特性 BGP 路由具有以下特点:

① 可靠的路由更新机制② 丰富的 Metric 度量方法③ 从设计上避免了环路的发生④ 为路由附带属性信息⑤ 支持 CIDR⑥ 丰富的路由过滤和路由策略⑦ 支持认证⑧ 默认不使用附载分担

01、可靠的路由更新机制

BGP 使用 TCP 进行路由更新,保证路由传递的可靠性,源端口号随机,目的端口号为179。

02、丰富的 Metric 度量方法

BGP 使用 TCP 进行路由更新,保证路由传递的可靠性,源端口号随机,目的端口号为179。

03、从设计上避免了环路

IBGP 使用水平分割,EBGP 使用 AS-Path 属性。

04、为路由附带属性信息

路由信息携带不同的 BGP 路由属性,为 BGP 选路提供了多种多样的方式。

05、支持 CIDR、手动聚合

BGP 支持无类域间(CIDR)路由,支持手工汇总和自动汇总。

(1)、自动聚合:

默认情况下,自动聚合时关闭的。自动汇总不会自动汇总 BGP 邻居发送的路由以及使用 Network 命令通告的路由,只能聚合自身 import 注入的路由条目。当开启自动聚合后,BGP 路由默认会以主类路由进行聚合。此时聚合路由的属性为 Aggregate 属性使用以下命令进行自动聚合:[H******-bgp]summary automaticR1:Ø [H*****-bgp]network 1.1.1.1 32Ø 只引入 loo2 到 loo4Ø 启用路由聚合

(2)、手动汇总:

BGP 手动路由聚合时,可以手动控制聚合路由的掩码长度,修改聚合路由属性等,手动路由聚合又有 两种方式:

① network 静态路由② aggregate 宣告③ network 静态路由:

首先创建静态路由将网段聚合并指向 null0,BGP 采用 network 方式通告出去,由于直连优先级高于静态,优先选择直连的下一跳接口,当直连网段出现问题,匹配静态送往 Null0。 在 R1 上配置静态路由:[Huawei]ip route-static 172.16.0.0 255.255.0.0 NULL 0preference 254 使用 network 宣告出去:[Huawei-bgp]network 172.16.0.0 16

④ aggregate 宣告

直接在 BGP 试图下进行汇总

使用以下命令进行 aggregate 汇总:

[H****-bgp]aggregate 172.16.0.0 255.255.0.0 detail-suppressed

注 1:

默认聚合路由只继承 Community 属性和起源属性(如果明细都为 i,则为 i,有一个为?,则为?)

注 2:

默认聚合后的路由不会携带任何的 AS-path 属性,为了防止环路,如果想要携带 AS-path 属性,后面增加命令 as-set,此时汇总路由会继承所有明细路由的 AS 号,为无序的AS 号,如果增加了 AS-SET 之后,聚合路由会将明细路由的 AS-Path 放入 AS-SET 属性中,如果明细路由消失或属性修改都会造成聚合路由的抖动增加;如果明细路由的AS-PATH id 完全一致,此时聚合路由的 AS-PATH 类型为 AS-Sequence

注 3:

如果不加 detail-suppressed,会将明细路由和汇总路由全部发送出去,使用detail-suppressed 命令只通告汇总路由,此时汇总路由的属性为ATOMIC_Aggregate,用于通告下游的路由器成员信息被抑制,此时的汇总路由不会携带 Community 属性

注 4:

为了让聚合后的路由继承明细路由的路由属性,聚合命令后面增加attribute-policy 1,此时在定义 Route-policy,规划属性值

注 5:

origin-policy 的作用,定义 route-policy,当满足 if 条件中的路由条目时,聚合路由才会生效,如果定义的路由消失,则聚合路由为 ATOMIC_Aggregate

注 6:

suppress-policy 的作用是用于过滤掉某些明细路由,定义 route-policy,当满足 if 条件中的路由条目,明细路由就会被过滤掉,如果只抑制了一部分明细路由,属性依旧为 Aggregate;如过抑制了全部的明细路由,属性为 ATOMIC_Aggregate

注 7:

同 IGP 路由手动聚合对比,BGP 路由聚合,默认明细汇总都发布,IGP 只发布汇总路由;汇总之后 IGP 不会自动生成一条指向 Null0 的路由,而 BGP 路由汇总之后会自动生成一条指向 Null0 的汇总路由

(3)、默认路由发布

在 peer 对等体的时候,可以使用命令发布默认路由给对端邻居:[H******-bgp]peer 192.168.1.1 default-route-advertise

五、丰富的路由过滤和路由策略

BGP 携带了大量的属性信息,并支持 13 种选路规则。

六、支持认证

BGP 支持 MD5 认证方式,如果是 MD5 方式,路由器会根据 BGP 报文的某些字段和密钥计算出一个 128bit 的散列值,然后将 BGP 报文连同散列值发送给邻居。邻居路由器收到以后,

会在本地基于收到的 BGP 报文和相同的密钥在进行一次 HASH 运算。

如果计算出的散列值与接收到的散列值相同,则认证通过。

使用以下命令进行密码认证:

[H******-bgp]peer 192.168.1.1 password cipher h******/h*****

七、默认不使用附载分担

BGP 默认不使用附载分担,即使存在多条路径也会使用选路规则选出一条“最优路由”将其放入路由表中。开启附载分担方式:① 选路规则前 9 条一模一样(AS ID 顺序也一样),可以使用命令 maximumload-balancing bgp 进行附载分担,当比较到下一跳的 IGP 开销值一样时,会进行流量的负载分担② 当 BGP 路由中的下一跳地址在 IGP 路由表中存在附载分担,此时流量会附载分担③ 使用属性值对多个目标流量对半分流实现附载分担

八、EBGP 特性EBGP 默认存在以下特性:

① 在通告给 EBGP 邻居时会将 NEXT_Hop 属性设置为自身的接口 IP 地址② 将 Local_PREF 值清空③ 将 MED 数值除 0③ 在 AS_PATH 属性中增加自己的 AS-ID

九、扩展性强

BGP 扩展性强,在承载多协议路由时,在 MP NLRI 中增加属性值(TLV)进行扩展。

上面海翎光电的小编介绍了BGP的含义、BGP版本、BGP分类、BGP 特性等,接下来咱们继续这个话题

BGP收敛状态BGP 收敛主要经过以下几种状态:

① Idle 初始状态

② Connect 连接状态

Active 失败等待状态

④ Open Sent 协商状态

⑤ Open confirm 连接确立状态

⑥ Established 确定建立状态

poYBAGP8UIqAV0t4AAIsSM4j_Xw650.png

① Idle 初始状态

BGP 初始状态。在 Idle 状态下,BGP 拒绝邻居发送的连接请求。只有在收到本设备的Start 事件后,BGP 才开始尝试和其它 BGP 对等体进行 TCP 连接,并转至 Connect状态。Start 事件是由一个操作者配置一个 BGP 过程,或者重置一个已经存在的过程或者路由器软件重置 BGP 过程引起的。

② Connect 连接状态

连接状态,双方配置命令后,谁先配置完成谁先主动发起建立 TCP,源端口随机,目标端口 179,在 Connect 状态下,BGP 启动连接重传定时器,等待 TCP 完成连接

建立状态:

Ø 如果 TCP 连接成功,那么 BGP 向对等体发送 Open 报文,并转至 OpenSent 状态Ø 如果对方无响应,则 5S 后发送第二份组播报文,依旧没有响应,等待大约 25S 时候周期后开始下一轮的 TCP 报文发送,对方一直无响应,则停留在 Connect(对端没有去往本端的路由)Ø 如果对方回应拒绝建立 TCP 连接,则不在继续发送 TCP 报文,在大约 25S 后进入Active 状态

注:

如果控制 TCP 的主动端和被动端可以使用命令 peer listen-only,此时设备只侦听对端,而不主动建立;或者控制主动端的连接端口地址

③ Active 失败等待状态

失败等待状态,huawei 设备依旧为主动建立连接,Active 状态一个时间周期(大约25S)只发送一次 TCP 报文。

建立状态:

Ø 如果建立成功,进入 OPENSENT 状态Ø 如果收到拒绝建立 TCP 报文(没有启用 BGP),则一个时间周期只发送一次,并停留在此状态Ø 如果对方无响应(无本端路由,比如进入 Active 状态,对端路由撤销掉了),一个时间周期后回到 Connect 状态

④ Open Sent 协商状态

协商状态,TCP 连接建立成功后,发送 open 报文后,进入 OPENSENT 状态,开始等待对端接收对端的 Open 报文Ø 根据 Open 报文中的 AS 号、版本号、认证码等进行检查。当接收到对端的 Open报文后,发现 Open 报文无误,会立刻发送 Keep alive 报文,并进入下一状态 。

建立状态:

Ø 如果发现收到的 Open 报文有错误,那么 BGP 发送 Notification 报文给对等体,并转至 Idle 状态OPEN 检测不通过的原因:

① Version 不相同② Route ID 冲突③ TTL 跳数④ 源 IP 与 Peer 地址不一样

注:BGP Hold-Timer 时间不一致不影响邻居的建立

⑤ Open confirm 连接确立状态

等待对端的 keep alive 报文,当收到对端的 keep alive,进入下一状态。

⑥ Established 确定建立状态

当成功接收对端 Keep Alive 报文后,进入 Established 状态,是一种稳态,并周期的发送 Keep Alive 报文。

BGP表

BGP 协议中,连接一旦建立,BGP Speaker 将把自己产生的所有 BGP 路由通告给对等体,有多条路径时,BGP Speaker 只会选最优的给自己使用放入 IP 路由表中,BGPSpeaker 只会选最优的给邻居对等体。

BGP 一共包含三张表:

① 邻居表② IP 路由表③ BGP 路由表

① 邻居表

用来查看当前的邻居,使用 display bgp peer 查看:

pYYBAGP8UJeAafC6AADtOs36lxQ396.png

① Peer Rcv:对端 IP② V:版本③ AS:对端 AS 号④ MsgRcvd:收到了几条 BGP 消息⑤ MsgSent:发出了几条 BGP 消息⑥ OutQ:等待发送指定对等体的消息⑦ State:状态⑧ Pref Rcv:从邻居学到多少 BGP 路由条数

② IP 路由表

全局路由表,包含目前可用的 BGP 路由

③ BGP 路由表BGP 路由表发送原则:

① IBGP 路由,只发送给 EBGP 对等体② EBGP 路由,发布给所有 EBGP 和 IBGP 对等体③ 只将最优路由发布给对等体④ 只发送增量更新的 BGP 路由

BGP 路由表无效:

① 下一跳不可达(不加入到 IP 路由表中)② IGP 同步开启,无相应的 IGP 路由(不加入 IP 路由表中)③ 存在相同的 IGP 路由(不加入 IP 路由表中)④ AS ID 相同(不接受此 BGP 路由)⑤ Cluster List 中包含本 RR 的簇 ID(不接受此 BGP 路由)⑥ Originator ID 和本路由器的 Router ID 相同(不接受此 BGP 路由)⑦ 使用 BGP 命令 bgp-rib-only(最优 BGP 路由不会放入 IP 路由表中)

pYYBAGP8UKGABaFGAAKGk8_xc_E819.png

① >为最佳路由,存在多条路径时,BGP 会选择最佳路由放入路由表并传递给邻居② *为最优化路由,表示当前路由有效,当没有*标明此路 由不是最优③ i 为 IBGP 邻居学到的路由条目,如果位空表示本地产生或 EBGP 学到的路由

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 交换机
    +关注

    关注

    19

    文章

    2438

    浏览量

    95665
  • BGP
    BGP
    +关注

    关注

    0

    文章

    81

    浏览量

    15221
  • 边界网关协议

    关注

    0

    文章

    4

    浏览量

    1530
收藏 人收藏

    评论

    相关推荐

    怎么学习嵌入式系统基础知识

    如何学习嵌入式系统基础知识
    发表于 02-19 06:28

    STM32学习笔记(1)——STM32基础知识 精选资料推荐

    stm32开发板,教程很详细,强烈推荐! 〇 STM32基础知识❤ 2018.8.11○什么是STM32○ STM32有什么功能 ○ 开发板的硬件资...
    发表于 08-03 06:51

    MatLab基础知识介绍

    MatLab学习笔记(一)纲要:界面介绍帮助系统基础知识基本数据类型一.界面介绍 (基于 MATLAB R2018a)  MATLAB的工作界面形式简洁,主要由标题栏、功能区、工具栏、当前目录窗口
    发表于 08-17 07:08

    单片机基础知识学习笔记分享

    单片机基础知识学习笔记有关总线1.IIC总线2.SPI总线
    发表于 11-23 07:37

    FreeRTOS任务的基础知识学习笔记

    FreeRTOS学习笔记(一):任务的基础知识一、多任务系统1.1 前后台系统在学习操作系统之前都是都是裸机开发的,单片机中没有操作系统。裸机开发的特点就是在main函数里进行一个wh
    发表于 01-06 07:10

    C语言基础知识汇总

    单片机-C语言基础知识总结本文为个人学习笔记,仅供学习参考用,如有侵权,请联系zhankun3280@139.com(一)简单理解32位操作系统只能支持4G内存(二)数据类型(❤表示重
    发表于 01-24 07:28

    FPGA开发经验与技巧_基础知识学习篇(1)

    FLC1301T00 基础知识学习篇希望会对朋友们的学习有帮助!
    发表于 12-16 15:27 3次下载

    使用Eclipse基础知识

    使用Eclipse 基础知识 使用Eclipse 基础知识 适合初学者学习使用
    发表于 02-26 10:30 0次下载

    PLC基础知识学习,不看后悔

    PLC基础知识学习,不看后悔
    发表于 09-09 08:43 102次下载
    PLC<b class='flag-5'>基础知识</b><b class='flag-5'>学习</b>,不看后悔

    51单片机的基础知识学习笔记资料免费下载

    本文档的主要内容详细介绍的是51单片机的基础知识学习笔记资料免费下载包括了:一.单片机三大资源,二.单片机的最小系统,三.进制转换
    发表于 06-17 17:44 6次下载
    51单片机的<b class='flag-5'>基础知识</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>资料免费下载

    学习PLC必备四方面基础知识

    PLC本身就是控制电器线路,故学习PLC必备基础中以电工基础最重要。零基础学习PLC其实是从学习电工基础知识开始的,若是多年从事电工行业的老司机,可以直接跳过电工基础
    发表于 01-15 08:59 7723次阅读

    机器学习基础知识详细说明

    本文档的主要内容详细介绍的是机器学习基础知识详细说明。
    发表于 03-24 08:00 0次下载
    机器<b class='flag-5'>学习</b>的<b class='flag-5'>基础知识</b>详细说明

    了解一下机器学习中的基础知识

    机器学习中的基础知识 demi 在 周四, 03/07/2019 - 09:16 提交 机器学习中涉及到了很多的概念,当然要想了解机器学习的话就需要对这些
    的头像 发表于 03-31 17:08 3529次阅读

    51单片机学习 基础知识总结

    51单片机学习 基础知识总结
    发表于 11-11 19:21 39次下载
    51单片机<b class='flag-5'>学习</b>    <b class='flag-5'>基础知识</b>总结

    单片机基础知识学习笔记

    单片机基础知识学习笔记有关总线1.IIC总线2.SPI总线
    发表于 11-14 16:51 26次下载
    单片机<b class='flag-5'>基础知识</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>