BGP基础知识学习笔记

电子说

1.3w人已加入

描述

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

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

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

BGP

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

BGP

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

BGP

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

BGP

    一、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 确定建立状态

BGP

① 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 查看:

BGP

① 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 路由表中)

BGP

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

  审核编辑:汤梓红

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分