精华内容
下载资源
问答
  • BGP协议
    千次阅读
    2022-01-21 08:57:59

    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,联邦                                                         

    3,BGP的基本配置

    BGP邻居建立过程

    1)EBGP对等体直连建邻

    1,启动BGP进程

    [r1]bgp 1 --- 1 指的是该路由器所在的AS号,并不是进程。因为一个路由器只能属于一个AS中,所以,一个路由器只能启动一

    个BGP进程

    [r1-bgp]

    2,配置RID

    [r1-bgp]router-id 1.1.1.1

    3,指定建立邻居关系

    [r1-bgp]peer 12.0.0.2 as-number 2 --- 指定建邻的IP地址和

    邻居所在的AS的编号(邻居关系指定是双向的)

    [r1-bgp]display bgp peer --- 可以查看BGP的邻居表

        由于,IBGP邻居处于同一个AS中,正常一个AS中存在大量的备份路径,若使用物理接口建立邻居关系,将浪费这些备份或者负载均衡的路径;故建议使用环回接口来进行IBGP对等体关系的建立。

    1. IBGP对等体环回建邻

    [r2-bgp]peer 3.3.3.3 as-number 2

    [r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0 --- 指定给邻居发送数据包的连接接口是环回接口

    切记:一旦使用环回地址作为建邻地址,同时需要修改源IP地址未本地环回地址。

    1. EBGP对等体环回建邻    因为EBGP对等体之间一般采用直连建邻的方法,所以,我们将EBGP对等体之间的数据包中的TTL值设置为1,同时,加入了直连检测(检测源目

    IP是否在同一个网段);     因为华为设备并没有直接关闭直连检测的方法,但是可以通过修改

    TTL值来让EBGP邻居间可以正常非直连建邻,直连检测将会自动失效。

    [r4-bgp]peer 5.5.5.5 ebgp-max-hop 2

    [r5-bgp]peer 4.4.4.4 ebgp-max-hop --- 后面不加数字,相当于将TTL值改为最大值,255。

        总结:再建立EBGP对等体关系时,建议使用第一种方法,EBGP对等体间直连建邻;IBGP对等体间建议使用环回接口进行建邻,即使用方法二。

    BGP的路由发布

    1)通过Network命令进行发布

    BGP可以将所有路由表中存在的路由条目通过NETWORK命令进行发布。

    [r1-bgp]network 1.1.1.0 24

    [r1-bgp]display bgp routing-table --- 查看设备的BGP表

    Network ---- 目标网段及掩码信息

    NextHop ---- 下一跳 ---- 属于BGP的路由属性 ---- 谁通告的,谁就是下一跳;如果是自己发布的,则下一条属性0.0.0.0

    再network前面出现的符号称为这条路由的状态码

    *---- 代表可用 ---- BGP设备每收到一条路由信息,都会检查其下一跳属性的可达性(通过路由表查询。)如果下一跳的地址是可达的,则代表该路由可用。不可达则不可用,不可用则该路由信息将不被接纳,直接不参与选择。

    >--- 代表优选 ---- 当收到多条到达相同网段的路由信息时,BGP将会在其中根据路由属性选择最好的最为优选路由,只有优选的路由才会被加载到路由表中,并且传递给其他BGP对等体。不优选的则不传递,不加表。

    当一台路由器收到来自EBGP对等体发送的路由信息正常加表后,该路由的协议类型为:EBGP,优先级:255

    I ---- 状态码为I ---- 则代表该路由信息是从IBGP对等体处学来的路由。

    因为BGP存在AS-BY-AS的特性,所以,IBGP邻居之间传递路由时,默认不会修改下一跳属性,可能导致从EBGP邻居处传递的路由信息在 IBGP邻居处不可达。所以,需要执行如下命令进行更改。

    [r2-bgp]peer 3.3.3.3 next-hop-local

    当一台路由器收到来自IBGP对等体发送的路由信息正常加表后,该路由的协议类型为:IBGP,优先级:255

    当通告的路由数量较大时,使用network逐条发布效率较低,则可以通过重发布的方法来批量发布路由。

    2)通过重发布来发布BGP路由

    [r2-bgp]import-route ospf 1 ---- 通过重发布将OSPF的路由发布到BGP中。

    OGN --- 起源码 --- 1,通过Network发布的路由 ---- I  ---- I代表该路由起源于IGP协议(包括静态路由和直连路由)。

          --- 2,通过EGP协议发布的路由 ---- e ---- 指的是BGP协议之前的外部网关协议 -- EGP协议,因为目前该协议基本上不用了,所以,e标记很少见。

           --- 3,通过除了以上两种方式发布的路由 ---- ? ---- 重发布路由的起源码标记就是?

    4,BGP路由聚合

    BGP的路由聚合 --- 自动聚合 --- 仅针对重发布的路由

                  --- 手工聚合

    自动聚合

    在R1上建立两条172.16.1.0/24和172.16.2.1/24直连路由,之后通过

    重发布发布到BGP中

    1,抓取流量

    [r1]ip ip-prefix aa permit 172.16.0.0 16 greater-equal 24 less-equal 24

    2,路由策略

    [r1]route-policy aa permit node  10 Info: New Sequence of this List. [r1-route-policy]if-match ip-prefix aa

    3,重发布中调用

    [r1-bgp]import-route direct route-policy aa

    自动聚合的问题 --- 1,只能聚合到主类,导致产生巨大的路由黑洞

                                  2,只能对重发布的路由生效 [r1-bgp]summary automatic ---- 华为设备默认关闭自动聚合功

    能,开销自动聚合

    Info: Automatic summarization is valid only for the routes imported through the import-route command.

    S --- 状态码 --- SUPPRESSED --- 抑制  ---- 一旦路由前面的状态码中添加S标记,则代表该路由被抑制,将不再加标和传递。自动聚合完成后会自动生成一条指向汇总的空接口路由进行防环。

    因为我们自动汇总的问题,所以,当我们需要对路由汇总进行精准把控时,手工聚合将是更理想的解决方案。

    手工聚合

    [r1-bgp]aggregate 172.16.0.0 22 --- 手动聚合的命令

    手工聚合的问题 --- 1,手工聚合时没有抑制明细路由,导致传递的路由条目没有减少,反而增加

                       2,手工聚合的路由条目存在路由属性缺失的问题,尤其是不懈怠明细路由中的AS_PATH属性,因为该属性是用来防环的,不携带可能会导致环路的产生。

    [r4-bgp]aggregate 172.16.0.0 22 detail-suppressed ---- 在聚

    合路由的同时已知所有明细路由

    但是,因为BGP协议的特殊性,导致在一些环境下,往往不能将所有明细路由全部抑制。

    所以,我们在做BGP的聚合时,往往仅抑制一部分路由信息,而实现这个效果,需要用到 --- suppress - Policy --- 抑制策略

    1,先抓取流量

    [r4]ip ip-prefix aa permit 172.16.1.0 24

    2,使用路由策略匹配流量

    [r4]route-policy aa permit node 10 Info: New Sequence of this List. [r4-route-policy]if-match ip-prefix aa

    3,使用抑制策略进行调用

    [r4-bgp]aggregate 172.16.0.0 22 suppress-policy aa

    [r4-bgp]aggregate 172.16.0.0 22 suppress-policy aa asset --- 通过激活AS_SET关键字,使汇总路由携带明细路由的

    AS_PATH属性。

    *>   172.16.0.0/22      127.0.0.1     0      {1 4}?  --- 当明细路由来自不同AS时的解决方案,在进行防环时,大括号中的AS号都需要考虑,但在进行选路时,大括号将被看作是一个整体,当作一个AS号。

    正因为聚合后的路由存在属性丢失的情况,所以,这样的汇总路由需

    要格外关注。为此,BGP专门设计了两个聚合相关的属性 ---

    ATOMIC_AGGREGATE,AGGRGATOR

    ATOMIC_AGGREGATE ---- 纯粹的预警属性,聚合路由将会携带(只有将所有明细路由全部抑制的汇总路由才会携带),意图是提醒该路由为聚合路由,可能存在属性丢失问题。

    AGGRGATOR ---- 将会记录执行汇总路由器所在的AS号及RID。

    [r4]display bgp routing-table 172.16.0.0 --- 可以查看一条路

    由的详情信息

    扩展:

    BGP 其着眼点不在于自动发现网络拓扑,而在于在AS之间选择最佳路由和控制路由的传播。

    Ⅰ、BGP使用TCP作为其传输层协议(监听端口号为179),提高了协议的可靠性,且不需要专门的机制来确保连接的可控性。

    (1)BGP进行域间的路由选择,对协议的稳定性要求非常高。因此用TCP协议的高可靠性来保证BGP协议的稳定性。
    (2)BGP的对等体之间必须在逻辑上连通,并进行TCP连接。目的端口号为179,本地端口号任意。
    Ⅱ、路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息。

    Ⅲ、BGP从设计上避免了环路的发生。

    (1)AS之间:BGP通过携带AS路径信息来标记途经的AS,带有本地AS号的路由将被丢弃,从而避免了域间产生环路。
    (2)AS内部:BGP在AS内学到的路由不再通告给AS内的BGP邻居,避免了AS内产生环路。
    Ⅳ、支持CIDR 无类域间路由

    Ⅵ、BGP提供了丰富的路由策略;提供了防止路由振荡的机制;BGP也易于扩展

     BGP选路规则与负载分担
    当到达同一目的地存在多条路由时,BGP采取如下策略进行路由选择:

    1、如果此路由的下一跳不可达,忽略此路由
    2、优选协议首选值(PrefVal)最高的路由 (华为设备特有属性)
    3、优选本地优先级(Local_Pref)最高的路由
    4、优选本地生成的路由
    5、优选AS路径(AS_Path)最短的路由
    6、比较Origin属性,依次优选Origin类型为IGP、EGP、Incomplete的路由
    7、优选MED值最低的路由
    8、优选从EBGP邻居学来的路由
    9、优选到BGP下一跳IGP Metric较小的路由
    当以上全部相同,则为“等价路由”,可以负载分担
    注:AS_PATH必须一致;当负载分担时,以下3条原则无效
    优选Cluster_List最短的路由
    优选Originator_ID 或者Router ID最小的路由器发布的路由
    比较对等体的IP Address,优选从具有较小IP Address的对等体学来的路由

    根据BGP的选路原则以及BGP常用的路径属性,我们可以总结出9个影响BGP选路的重要参数,分别为:

    Preferred Value
    LOCAL_PREF
    AS_PATH
    ORIGIN
    MED
    邻居类别是EBGP还是IBGP
    IGP内部开销值
    Cluster List /ROUTER_ID
    COMMUNITY
    以上参数都能直接地影响BGP的路径选择,其中我们常用的参数分别为LOCAL_PREF, AS_PATH和MED属性。

    BGP扩展特性
    Ⅰ、BGP安全特性:

     1、MD5:BGP使用TCP作为传输层协议,为提高BGP的安全性,可以在建立TCP连接时进行MD5认证。但BGP的MD5认证并不能对BGP报文认证,它只是为TCP连接设置MD5认证密码,由TCP完成认证。如果认证失败,则不建立TCP连接。
     2、GTSM(Generalized TTL Security Mechanism 即通用TTL安全保护机制):使能BGP的GTSM策略后,接口板对所有BGP报文的TTL值进行检查。根据实际组网的需要,对于不符合TTL值范围的报文,GTSM可以设置为通过或丢弃。配置GTSM缺省动作为丢弃时,可以根据网络拓扑选择合适的TTL有限值范围,不符合TTL值范围的报文会被接口板直接丢弃,这样就避免了网络攻击者模拟的“合法”BGP报文占用CPU。该功能与EBGP多跳互斥。
    3、 限制从对等体接收的路由数量,防止资源耗尽性攻击。
    4、AS_Path长度保护。通过在入口和出口两个方向对AS_Path的长度进行限定,直接丢弃AS_Path超限的报文。
    Ⅱ、路由衰减(EBGP)
    路由衰减(Route Dampening)用来解决路由不稳定的问题,即路由表中的某条路由反复消失和重现,也就是路由振荡。多数情况下,BGP协议都应用于复杂的网络环境中,路由变化十分频繁。为了防止持续的路由振荡带来的不利影响,BGP使用路由衰减来抑制不稳定的路由。

    BGP衰减使用惩罚值来衡量一条路由的稳定性,惩罚值越高则说明路由越不稳定。路由每发生一次振荡(路由从激活状态变为未激活状态,称为一次路由振荡),BGP便会给此路由增加一定的惩罚值(1000)。当惩罚值超过抑制阈值时,此路由被抑制,不加入到路由表中,也不再向其他BGP对等体发布更新报文。
    被抑制的路由每经过一段时间(900S),惩罚值便会减少一半,这个时间称为半衰期(Half-life)。当惩罚值降到再使用阈值时,此路由变为可用并被加入到路由表中,同时向其他BGP对等体发布更新报文

    路由衰减只适用于EBGP路由。对于从IBGP收来的路由不能进行衰减,因为IBGP路由经常含有本AS的路由,内部网络路由要求转发表尽可能一致,IGP快速收敛就是为了达到信息同步,转发一致。如果衰减对IBGP路由起作用,不同设备的衰减参数不一致时,会导致转发表不一致。
     

    更多相关内容
  • 保护BGP协议较为常见的方法是在网络边缘添加防火墙、流量分析仪等安全设备。从分析BGP邻居的建立过程及DDoS的攻击特点入手,提出一种新的思路,在不增加运营成本的前提下,实现BGP协议对DDoS的防御。
  • Bgp协议介绍

    2018-11-19 13:35:08
    Bgp协议介绍,BGP协议的基本原理,BGP协议的路由属性及其应用
  • BGP思维导图主要内容有基础知识,防环机制,路由反射器和路由联盟,报文,状态机制,属性和选路策略等,不喜勿喷
  • BGP协议总结

    2021-08-06 17:06:10
    1.bgp协议的定义 2.关于AS 二.IGP/EGP/IBGP/EBGP 三.BGP特点 四.BGP数据包 五、BGP的工作过程 六、BGP的路由黑洞问题 1.路由黑洞的描述 2.解决方法 七、BGP的防环机制 –水平分割 1、EBGP水平分割—解决EBGP环路; ...

    一.什么是BGP?

    1.bgp协议的定义

    BGP(Border Gateway Protocol)边界网关路由协议。无类别路径矢量EGP协议;工作于AS之间;专门用于解决AS之间路由共享问题;取代的是重发布基础。
    本身不产生路由,而是转发本地路由表中来自其他协议生成的路由条目;(所以Bgp不生产路由,只是路由的搬运工。)
    AS之间正常存在大量的BGP邻居关系,且BGP协议不会计算最佳路径;因此在BGP协议中管理员需要进行策略来干涉选路;

    2.关于AS

    划分AS的原因:
    1.网络半径-----igp协议的工作半径有限
    2.管理半径-----不同网络存在不同的设计,实施,维护,组织,不同组织的网络不会相互管理;
    AS—自治系统 标准AS编号 16位二进制 0-65535
    其中1-64511公有 64512----65535 私有
    扩展AS编号 32位二进制
    路径矢量(一个AS为一跳)— 距离矢量(一个路由器为一跳)
    在下列地址可以查看到AS编号的所属者:
    https://www.cidr-report.org
    其中:
    4134 是 中国电信的编号
    9929 是 中国联通(中国网通)

    二.IGP/EGP/IBGP/EBGP

    IGP协议 内部网关协议
    追求:
    1、无环(选路佳) 2、收敛快 3、占用资源少

    EGP协议 外部网关的协议
    追求:
    1:可控性强(管理员可以方便进行策略干涉选路)
    2、可靠性(BGP协议设备间需要交互大量的路由条目,但又不能选择周期更新来占用链路资源,故只能进行触发更新;且BGP协议工作环境中为节约成本,必然出现非直连。
    需要建立邻居关系—单播邻居)— 基于TCP工作 -三次握手四次断开 4种可靠传输机制 – TCP只能基于单播工作
    单播—需要IP可达—依赖IGP BGP承载于IGP之上
    3、AS-BY-AS 以一个AS为一跳;

    邻居—直连 因为BGP协议中存在非直连邻居的需求,故BGP邻居称为毗邻关系;
    EBGP邻居关系 ---- 外部BGP邻居关系,建邻的两台设备处于不同的AS中
    IBGP邻居关系 ---- 内部BGP邻居关系,建邻的两台设备处于相同的AS中
    以一幅图来理解这四个词:
    在这里插入图片描述

    三.BGP特点

    1)无类别路径矢量 -----距离矢量的升级版—AS–BY–AS
    2)使用单播更新来发送所有信息;基于TCP 179端口工作
    3)增量更新–仅触发无周期
    4)具有丰富的属性来取代IGP中度量进行选路----多个参数控制协议
    5)可以在进项和出项对流量实施强大的策略–可控性
    6)默认不被用于负载均衡-----通过各种选路规则仅仅产生一条最佳路径
    7)BGP支持认证和聚合(汇总)

    四.BGP数据包

    基于TCP的179端口工作;故BGP协议中所有的数据包均需要在tcp会话建立后,基于TCP的会话来进行传输及可靠性的保障;
    首先通过TCP的三次握手来寻找到邻居;

    • Open 仅负责邻居关系的建立,正常进收发一次即可;携带route-id;
    • Keeplive 保活 周期1min查询邻居关系是否存在;实际保活TCP会话;
    • Update 携带路由条目 目标网络号+各种属性
    • Notification 出现错误数据时收发;

    五、BGP的工作过程

    1、配置完成后,邻居间单播TCP三次握手,目标端口179,建立TCP的会话;之后所有的BGP协议数据包基于该会话进行传输;
    会话建立后,邻居间正常收发一次open报文建立BGP的邻居关系,生成邻居表;
    BGP协议的open报文中将携带本地的RID—生成方式和OSPF一致;仅需要本地及本地所有邻居唯一即可;
    邻居关系建立后,默认每1min,使用keeplive周期保活邻居关系(周期保活TCP会话)

    2、邻居关系建立后,管理员选择性将本地路由表中通过任意来源获取的路由条目,向BGP协议中进行宣告;使用updata数据包进行邻居间路由共享;之后生成BGP表;— 装载本地发出及接收到的所有路由条目;
    默认将最优路径加载于路由表中(最优-仅仅基于BGP的选路规则,不一定为最佳路径;BGP默认不支持负载均衡)

    3、收敛完成,仅keeplive周期保活即可;

    4、若出现错误信息,邻居间将使用Notification报文进行报错操作

    5、结构突变
    1)新增 — 本地使用updata向本地所有邻居告知,前提该路由不被已经发出的聚合路由包含
    2)断开 — 本地使用updata向本地所有邻居告知,前提该路由不被已经发出的聚合路由包含
    只有到聚合条目中包含的所有明细路由均在本地失效,才告知邻居删除聚合条目
    3)无法沟通 — hold time为3min,连续3次未收到邻居的keeplive;断开邻居关系、TCP会话,删除从该邻居处学习到的所有路由;

    六、BGP的路由黑洞问题

    1.路由黑洞的描述

    非直连建邻到达控制层面路由条目可传递,递归计算路由可达;
    而实际数据层面流量在经过没有运行BGP协议的路由器时无法通过,最终有去无回。

    举个例子:
    图片描述:
    一个云代表一个AS
    A和B之间是EBGP建邻,D和E是IBGP建邻,E和F是EBGP建邻
    B和E运行了BGP,C和D没有运行BGP
    当A有个环回x ,由EBGP单播传给B,再根据IBGP单播传给E,再由EBGP单播传给F。邻居共享完了之后F去pingA的环回x,当F去pingx的时候,首先是先到E,E一看要去x,下一跳是B,但是实际上的走的是D和C。到了D和C,因为D和C没有运行BGP所以,它不知道有x这个网段,也就会把这个路由给丢掉。所以ping不通。可以过去是控制层面可达,不能回来是,数据层面不可达。(控制层面指的是流量方向,数据层面是流量的反方向。)控制层面可达,数据层面不可达是非常典型的路由黑洞。

    在这里插入图片描述

    2.解决方法

    1、物理、逻辑拓扑全连 – 物理链路直连、或者vpn
    2、邻居关系全连 – 网络中所有设备运行BGP
    3、BGP重发布到IGP(LAB)
    4、MPLS 多协议标签交换— 推荐做法

    七、BGP的防环机制 –水平分割

    1、EBGP水平分割—解决EBGP环路;

    依赖了BGP路由条目中的一种属性来进行防环;AS-PASH路径属性;
    BGP协议在传递路由条目的过程中,将记录所有经过的AS的编号;
    EBGP水平分割—接收到的路由条目中,若存在本地的AS号将拒绝该条目进入;

    2、IBGP水平分割—解决IBGP环路由中的一种机制

    本地从一个IBGP邻居处学习到的路由条目,不得传递给本地的其他IBGP邻居;
    AS-BY-AS在一个AS内部条目传递的过程中,默认不会修改任何的属性;
    由于BGP可以非直连建立邻居关系,故在一个AS内部,可以通过与多台运行BGP协议的路由器建立BGP邻居关系,来稳定关系网络;因此在一个AS内部运行BGP协议的设备,正常均存在EBGP邻居(均同时连接其他AS)
    在IBGP水平分割的限制下,虽然避免了IBGP的环路产生,但同时也使得AS内部为了能够传递路由条目,必须两两间建立IBGP邻居关系,邻居关系成指数上升,配置量巨大;
    后期可以依赖打破水平分割的机制来解决—联邦、路由反射器

    有条件的打破IBGP水平分割;
    IBGP水平分割,用于避免在一个AS内部由IBGP邻居间产生的环路;
    规则:从一个iBGP邻居处学习到的BGP路由不能传递给下一个IBGP邻居;因为BGP的非直连建邻能力,因此可以在一个AS内部建立多个邻居来实现连接关系备份的作用;故正常一台设备只要运行bgp,那么应该处于AS的边界,存在ebgp邻居;
    所有运行bgp协议的设备正常都会从其他AS学习到路由条目,然后共享到本地所在的AS,由于IBGP水平分割,导致本地需要和所有本AS内部的BGP设备建立IBGP邻居关系;
    IBGP邻居关系的数量成指数上升;
    所谓有条件的打破是指在打破IBGP水平分割的时候,不能产生环路;–AS-BY-AS

    1、路由反射器 – RR(反射器)、客户端、非客户端;
    客户端、非客户端必须分别为RR的IBGP邻居关系;三种角色构建为一个簇(组);
    一个簇内可以存在多台设备,但至少一个簇内存在一个RR和一个客户端;
    规则:
    1)RR从一台EBGP邻居处学习到的路由可以共享给本地的其他客户端、非客户端、EBGP邻居;
    2)RR从一台客户端邻居处学习到的路由可以共享给本地的其他客户端、非客户端、EBGP邻居;
    3)RR从一台非客户端邻居处学习到的路由可以共享给本地的其他客户端、EBGP;不能共享给其他的非客户端;
    注:被反射路由,在反射过程中,其属性不发生任何变化;若RR接收的条目不优,不具备传递性,将不被反射;

    [r3-bgp]peer 2.2.2.2 reflect-client ibgp邻居2.2.2.2成为本地的客户端,同时本地成为RR;

    2、联邦,将一个大as逻辑为多个小as;小AS使用私有AS号,小AS间为联邦内的bepg邻居关系,可以像EBGP一样传递路由,但不能修改属性; 对于联邦外的AS,只能看到大AS号;
    1)所有的启动,建邻、管理均基于小AS号进行
    2)联邦内所有设备需要声明自己所在的大AS号
    3)小AS间的ebgp邻居需要互指对端的小as号

    [r3]bgp 64512
    [r3-bgp]router-id 3.3.3.3
    [r3-bgp]confederation id 2 声明本地的大AS号
    [r3-bgp]confederation peer-as 64513 对端小AS号
    [r3-bgp]pe 2.2.2.2 as-number 64512
    [r3-bgp]pe 2.2.2.2 connect-interface LoopBack 0
    [r3-bgp]pe 4.4.4.4 as-number 64513
    [r3-bgp]pe 4.4.4.4 connect-interface LoopBack 0
    [r3-bgp]pe 4.4.4.4 ebgp-max-hop 2

    注:在实际工程中,路由器反射器与联邦技术是结合,在一个拓扑中共同使用的;

    八、配置

    【1】建立BGP邻居关系
    [r1]bgp 1 启动时需要定义AS号,没有多进程概念;一台设备只能在一个AS中工作
    [r1-bgp]router-id 1.1.1.1 建议配置RID;RID的生成规则同OSPF;

    1、单链路的EBGP邻居关系
    [r1-bgp]peer 12.1.1.2 as-number 2
    对端接口ip地址 对端所在的AS号

    2、建立IBGP邻居关系;–由于一个AS的内部大多拓扑冗余比较丰富,若使用物理接口来作为源、目IP地址建立BGP邻居,将浪费冗余资源;建议使用环回接口作为源/目ip地址;
    稳定/且可以同时使用多条链路资源
    切记:在使用环回地址作为源、目ip地址时;及要定义目标为对端的环回,还需要修改本端的源为环回,否则将自动使用本地的物理出口作为源;
    [r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0

    3、多链路的EBGP邻居关系
    建议使用环回作为源、目标接口
    1)IP可达问题—一般使用静态
    [r4]ip route-static 5.5.5.0 24 45.1.1.2
    [r4]ip route-static 5.5.5.0 24 54.1.1.2
    2)建立EBGP邻居关系
    [r4]bgp 2
    [r4-bgp]peer 5.5.5.5 as-number 3
    [r4-bgp]peer 5.5.5.5 connect-interface LoopBack 0
    3)TTL问题,默认IBGP邻居间的数据包TTL值为255,EBGP邻居间TTL值为1;
    因此若使用环回来建立EBGP邻居关系,TTL不够;故,必须修改
    [r4-bgp]peer 5.5.5.5 ebgp-max-hop 2

    两端配置完成后,邻居间先进行TCP的三次握手,建立TCP的会话;
    [r1]display tcp status
    当TCP会话建立后,邻居间收发一次open包(携带RID),建立BGP的邻居关系;生成邻居表:
    [r1]display bgp peer
    BGP local router ID : 1.1.1.1
    Local AS number : 1
    Total number of peers : 1 Peers in established state : 1
    Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
    12.1.1.2 4 2 5 6 0 00:03:22 Established 0
    表格尾部的数字0,代表从该邻居处学习到的路由条目数量;

    九、宣告路由

    1.配置

    BGP协议所宣告路由为本地路由表中任何来源产生的路由信息;
    宣告时,可逐条选择本地路由表中的路由信息宣告:
    [r1]bgp 1
    [r1-bgp]network 1.1.1.0 24
    切记:宣告时,所宣告的网络号必须和本地路由表中的记录完全一致;

    当宣告配置完成后,本地生成BGP表;-装载本地发出及接收到所有BGP路由
    [r1]display bgp routing-table
    Total Number of Routes: 1
    Network NextHop MED LocPrf PrefVal Path/Ogn
    *> 1.1.1.0/24 0.0.0.0 0 0 i
    状态 目标网络号 后面的都是属性

    *可用
    .>优秀
    *> 是可用可优秀的意思
    使用i标识该条目通过本地的IBGP邻居学习
    一条条目可用且优秀才能传输给本地的其他邻居;才能加载到本地的路由表中;
    条目优秀的条件:
    1、同步问题—目前的设备同步规则默认关闭,该问题在当下已经不需要关注了
    同步问题—本地必须先通告IGP学习到该路由,在通过BGP学习
    2、下一跳不可达问题—因为AS-BY-AS规则 使得下一跳地址在一个AS内部传递时,默认不修改;故通过本地的IBGP邻居学习到的路由,大多下一跳不可达
    [r2]bgp 2
    [r2-bgp]peer 3.3.3.3 next-hop-local R2将路由传输给3.3.3.3时,修改下一跳地址为R2;
    不优的原因是下一跳地址,所以需要改下一跳地址

    2.宣告问题

    若通过BGP协议传递的路由条目与本地通过其他协议学习到的条目目标一致,将出现:
    1)该路由同时作为与其他BGP邻居建立邻居关系时的底层路由,那么这条BGP路由将不优,不能传递也不能加表
    2)该路由不作为建立其他BGP邻居的路由,将在本地不加表,但可以传递,属于优的路由;
    例:R2与R3运行了OSPF,之后R2学习到的R3的32位环回主机路由;
    再R2与R3建立BGP的邻居关系;之后R3在BGP协议中宣告了32位的环回路由,那么该条目到达R2后,将不优; --BGP的建邻路由与BGP的传递路由相同;
    但R2与R3建立邻居关系时,ospf将R3环回以32位传递,但BGP使用24位来传递该环回路由的话,那么等于BGP建邻为32位,bgp传递为24位,不是同一条路由,可以优,可以传递,也可以加表;
    注:以上问题在华为设备将出现,但cisco中若bgp传递路由在本地路由表中已经通过其他IGP拥有,将被标记为r-RIB 不装载—本地不加表,但可以传递;

    在BGP协议中进行宣告时,是宣告本地路由表中任意路由,不关注这些条目的产生方式;
    默认将携带这些路由的cost值到BGP的路由条目中去;若本地将本地宣告的BGP路由传递给本地的EBGP邻居,将携带这些cost,便于本地的EBGP邻居所在AS内部设备选路,当然这路由在进入其他AS时不会修改度量;
    若本地通过IBGP邻居学习到了BGP路由,优且存在cost值,在本地将这些路由传递给本地的EBGP邻居时,将cost值归0,因为这些度量不是本地产生的;
    例:R2与R1为EBGP邻居,那么R2宣告本地通过OSPF协议学习到的路由4.4.4.4/32度量为2,那么这条路由在进入BGP表时携带度量值2,传递给R1,R1在路由表中显示该度量,同时传递给R1内部AS时度量不变;
    该拓扑中R2与R4为IBGP邻居,这条BGP路由也会被R2传递给R4,但R4 再将该路由传递给R4的EBGP邻居关系R5时,将度量归0; 若R4也宣告4.4.4.4/32这条路由,那么传递给R5时将携带R4到达该网段的cost值,因为只有本地最优路由可以传递,本地宣告优于其他邻居传递过来的BGP路由;

    总结:存在EBGP邻居关系(连接其他的AS)的所有BGP设备均建议宣告内部AS的路由;

    3.重发布

    BGP协议宣告的路由,基本是本地通过IGP学习到的本as路由;数量较大,若逐条宣告,配置量很大,但可控性强; 也可以在同时运行BGP和igp的设备,将IGP协议重发布到BGP协议中,来实现批量的路由宣告效果;
    宣告相当于逐条的重发布,重发布相当于批量的宣告;两者产生的路由条目,起源属性不同,其他属性默认完全一致;
    总结:存在EBGP邻居关系(连接其他的AS)的所有BGP设备均建议重发布IGP到BGP;

    4.自动汇总 默认cisco和华为设备均关闭了自动汇总

    自动汇总对于BGP正常通过network宣告产生的路由没有影响;
    仅针对从IGP重发布到BGP的路由条目产生影响;— 路由条目以主类长度发送,不携带cost值;
    [r1]bgp 1
    [r1-bgp]summary automatic 开启自动汇总,建议维持默认关闭状态

    5.手工汇总—聚合

    1)利用了BGP的宣告的特点,本地路由表中任意路由,不关注来源均可以宣告到BGP中;
    不用逐一宣告明细路由,先本地手工静态一条指向汇总网段的空接口防环路由,然后再将其宣告到BGP协议中来;从IGP表中宣告到BGP协议中的条目,仅携带目标网络号和度量值;
    所以空接口路由也可宣告

    聚合的缺点是将多个网络号合成一个,导致访问整个聚合网段时,仅存在唯一的路径;
    若在多路径建邻的前提下,将无法精确的选路;故在大型的多链路的网络中为了更好控制选路,必然在传递聚合条目的同时,再在最佳路径处传递部分的明细路由;

    若需要在传递聚合条目的同时,传递部分明细路由,只需要在宣告的空接口路由后,逐一宣告需要的明细路由即可;
    以上做法的缺点是不能携带原有明细路由的cost值,因为宣告的是本地路由表中人为添加那条静态空接口路由;

    2)标准的BGP路由聚合—先逐一手工宣告明细,或批量重发布路由;
    再进行聚合配置;默认在本地生成空接口防环路由;
    [r2-bgp]aggregate 3.3.0.0 21 聚合和所有明细路由均发送
    [r2-bgp]aggregate 3.3.0.0 21 detail-suppressed 抑制所有的明细路由,仅发送聚合条目;
    以上操作方法:若需要在发送聚合条目的同时携带部分的明细路由,需要使用策略
    1、抑制列表
    [r2]ip ip-prefix ss permit 3.3.4.1 32

    [r2]route-policy ss permit node 10
    [r2-route-policy]if-match ip-prefix ss

    [r2]bgp 2
    [r2-bgp]aggregate 3.3.0.0 21 suppress-policy ss 在传递聚合条目的同时,在抑制3.3.4.1/32这一条明细,其他明细正常转发;

    2、使用路由策略在邻居间直接进行收发路由的管理
    [r2]ip ip-prefix qq permit 3.3.3.3 32

    [r2]route-policy qq deny node 10
    [r2-route-policy]if-match ip-prefix qq
    [r2-route-policy]q
    [r2]route-policy qq permit node 20

    [r2]bgp 2
    [r2-bgp]aggregate 3.3.0.0 21
    [r2-bgp]peer 12.1.1.1 route-policy qq export

    3、直接使用前缀列表来实现方法的功能
    [r2]ip ip-prefix ww deny 3.3.3.3 32 拒绝这个
    [r2]ip ip-prefix ww permit 0.0.0.0 0 le 32 要除了上面的那个全都要
    [r2]bgp 2
    [r2-bgp]pe 12.1.1.1 ip-prefix ww export

    十、BGP的选路

    比较前提,多条BGP路由目标相同,且均可优(下一跳可达、同步关闭),具有相同的优先级(管理距离)
    优选Preference_Value值最高的路由(私有属性,仅本地有效)。
    不传递 权限最高属性 可以干涉EBGP/IBGP选路
    优选本地优先级(Local_Preference)最高的路由。
    IBGP邻居关系间传递 只能,最常干涉IBGP关系的选路
    优选手动聚合>自动聚合>network>import>从对等体学到的。
    优选AS_Path短的路由。
    EBGP/IBGP关系均可被干涉,但只能在EBGP邻居间修改;
    起源类型IGP>EGP>Incomplete。
    起源属性 i优于e优于?; 可在控制层面任意接口修改;
    对于来自同一AS的路由,优选MED值小的。
    默认为0,宣告或重发布(关闭自动汇总)路由时携带本地到达目标的cost
    最常用于干涉EBGP选路的属性
    优选从EBGP学来的路由(EBGP>IBGP)。
    优选AS内部IGP的Metric(度量即在华为里面是cost值)最小的路由。本地到的BGP下一跳地址的IGP的cost值最小
    优选Cluster_List最短的路由。
    优选Orginator_ID最小的路由。
    优选Router_ID最小的路由器发布的路由。
    优选具有较小IP地址的邻居学来的路由。

    这种情况是用环回建bgp

    十一、属性

    华为和cisco均存在6种基本属性 第一种均为私有属性

    1、权重 Preference_Value

    传播范围: 不传播
    默认值: 0
    大优或者小优: 大
    华为设备的私有属性
    全局操作:
    [r3-bgp]pe 2.2.2.2 preferred-value 1 本地从邻居2.2.2.2处学习到的所有路由优先值修改为1;
    缺点:
    两条路只能走一条

    负载分担:访问不同的目标网段时,让流量进入不同链路来进行通讯;将所有链路利用起来,而不是仅只用唯一链路通讯;
    使用前缀抓取需要修改属性的网段
    [r3]ip ip-prefix w permit 1.1.1.0 24
    定制策略来进行修改,一定关注是否需要空表来允许其他路由通过
    [r3]route-policy w permit node 10
    [r3-route-policy]if-match ip-prefix w
    [r3-route-policy]apply preferred-value 1
    [r3-route-policy]q
    [r3]route-policy w permit node 20 (空表格,给其他路由做备份)
    [r3-route-policy]q
    再在协议中针对某个邻居调用
    [r3]bgp 2
    [r3-bgp]peer 2.2.2.2 route-policy w import 因为该属性为私有不传递属性,故调用时,只能在控制层面的入向调用,来影响本地的BGP生成;

    2、本地优先级

    传播范围: IBGP邻居关系间
    默认值: 100
    大优或者小优: 大
    第一个公有属性,
    也是最常用于干涉IBGP选路,
    最常使用的属性
    全局修改;(用的不多)
    [r4-bgp]default local-preference 101
    本地所有传输到IBGP的路由条目,其中本地优先级修改为101;

    使用本地优先级实现负载分担
    [r2]ip ip-prefix p permit 1.1.1.0 24

    [r2]route-policy p permit node 10
    [r2-route-policy]if-match ip-prefix p
    [r2-route-policy]apply local-preference 101
    [r2-route-policy]q
    [r2]route-policy p permit node 20
    [r2-route-policy]q

    [r2]bgp 2
    [r2-bgp]pe 3.3.3.3 route-policy p export 调用时在控制层面的出或入向均可,但必须为IBGP邻居关系;export出口
    EBGP水平分割 路由信息在传递的过程中,将记录所有经过过的AS编号;接收到的路由中;若出现本地的AS号将拒绝接收;
    优先经过的AS数量最少的路径;
    在这里插入图片描述

    由图可知:as2的path为 2 1 ,as5的path为5 4 1
    因为上面as编号最少就选择上面的

    3、as-path

    优选经过AS数量较少路径;该属性的自动添加是在EBGP邻居关系间进行;
    条目在AS内部传递时,AS-path不添加AS号码的;
    在AS-A和AS-B中间的EBGP邻居添加;
    AS1的BGP设备在将路由条目传递给AS2的EBGP邻居时,在发出路由的同时添加AS号;
    利用AS-path属性干涉也是可以的;人为的增添path中的数字;只能在EBGP邻居间配置;由于path属性又是防环属性;故只能人为的增添,不能减少;及可用于干涉EBGP关系选路,
    也可用于干涉IBGP选路

    [r4]ip ip-prefix as permit 1.1.1.0 24

    [r4]route-policy as permit node 10
    [r4-route-policy]if-match ip-prefix as
    [r4-route-policy]apply as-path 3 4 5 additive
    [r4-route-policy]q
    [r4]route-policy as permit node 20
    [r4-route-policy]q

    [r4]bgp 2
    [r4-bgp]pe 14.1.1.1 route-policy as import 注:可以在控制层面的入或出方向调用,但只能在ebgp邻居间操作;可干涉ebgp、ibgp关系选路;选路只看数量不看相不相同,防环看有没有我的号,不看我的号出现几次

    出向调用 x 3 4 5 x为实际经过的AS号;最前端号码为最新经过的AS号;
    入向调用 3 4 5 x

    切记:as-path 属性又用于EBGP的水平分割,若人为添加的as号,在网络后端实际存在,将导致这些路由无法进入这些AS;解决方案:反复添加已经经过的AS编号;

    4、起源属性(ogn) 条目的产生方式

    network 宣告本地路由表中的任意路由(在bgp协议中network逐一宣告导入)i
    import 将本地通过其他协议学习的路由重发布到BGP协议中;批量导入 ?
    egp 早期的ebg协议学习的路由重发布到BGP协议中,导入产生 e
    I>e>?
    在这里插入图片描述
    egp就是e,igp就是i,incomplete就是?

    该属性的修改可以在整个控制层面流量经过的任意接口修改;
    [r4]ip ip-prefix o permit 1.1.1.0 24

    [r4]route-policy o permit node 10
    [r4-route-policy]if-match ip-prefix o
    [r4-route-policy]apply origin egp 2 此处配置的AS为对端邻居的AS号
    [r4]route-policy o permit node 20
    [r4-route-policy]q
    [r4]bgp 2
    [r4-bgp]pe 3.3.3.3 route-policy o export

    5、MED 多出口的鉴别属性

    BGP协议默认不存在cost;没有度量;
    MED就是人为的利用路由器优选路径的规则—先比较管理距离(华为为优先级,即先比较路由条目的优先级),若相同再比较度量值(华为为cost),小优
    BGP协议在特定条件下携带本地到达目标的cost值;本地宣告(重发布)自己路由表中的路由后,将其传递给本地的ebgp邻居,将携带cost值;对于其他AS的设备学习到从同一个as传递过来的路由,优选MED最小的路径;
    所谓MED,就是只人为的利用该规则,在路由条目中放置一个数字;最终干涉选路;
    最常用于干涉EBGP关系选路;
    常常用于AS1干涉AS2对AS1的选路;
    管理员可以在控制层面传递路由的过程中,手工修改MDE;最常用于干涉ebgp选路;
    常常用于AS1干涉AS2对AS1的选路;
    [r1]ip ip-prefix med permit 1.1.1.0 24
    [r1]route-policy med permit node 10
    [r1-route-policy]if-match ip-prefix med
    [r1-route-policy]apply cost 10
    [r1-route-policy]q
    r1]route-policy med permit node 20
    [r1-route-policy]q
    [r1]bgp 1
    [r1-bgp]pe 14.1.1.2 route-policy med export

    由于实际工程中,管理员只能在一个AS中配置,故无法通过查看BGP表来判断选路结果,可以通过扩展ping来解决
    [r1]ping -r -a 1.1.1.1 3.3.3.3

    6.BGP的社团属性 –BGP的扩展属性

    默认大多数厂商的产品在BGP协议中不携带社团属性
    例:控制传播范围的社团属性
    [r1]route-policy com permit node 10
    [r1-route-policy]apply community no-advertise 针对所有的流量修改属性
    [r1]bgp 1
    [r1-bgp]peer 12.1.1.2 route-policy com export
    默认华为设备也不传递社团属性,故使用社团属性时必须定义传递性
    [r1-bgp]peer 12.1.1.2 advertise-community 逐跳行为,每台设备均需开启传递性 (这样才可以把属性传递给下一个路由器)
    no-advertise 接收到的条目中若存在该社团属性,将不再传递该路由
    no-export 接收到的条目若存在该社团属性,将不传递给下一个AS
    no-export-subconfed 接收到的条目若存在该社团属性,将不传递给下一个小AS
    若网络没有小AS,仅存在大AS时no-export和no-export-subconfed作用一致

    7.总结

    1.权重。本地有效,不传播;最高权限属性,大优;
    2.本地优先级。最常用于IBGP关系干涉,IBGP邻居间传播;IBGP的邻居的出或入向均可配置
    3.AS-path 。经过的AS数量,只能再EBGP邻居间添加;但IBGP/EBGP关系均可干涉选路;反复添加同一个已经经过的AS号,来避免EBGP水平分割
    4.起源 i>e>?
    5.MED cost值
    6.社团属性

    十二、关于BGP协议的MA网络中下一跳问题

    在一个MA网段中运行BGP协议;若该网段存在EBGP邻居关系;那么只要使用该网段内的物理接口ip地址,作为邻居建立地址,那么ICMP重定向将为我们定义最佳下一跳地址,作为BGP路由中的下一跳地址;
    [r1]display bgp routing-table peer 123.1.1.2 advertised-routes 查看本地向该邻居发送的BGP路由
    [r1]display bgp routing-table peer 123.1.1.2 received-routes 查看本地从该邻居处学习到的路由

    十三、BGP的认证

    [r3-bgp]peer 34.1.1.2 password cipher 123456
    双方密码需要一致,密码默认基于MD5计算后转发

    都说实践是检验真理的唯一标准,所以学完了理论知识之后,做做实验可以更能深刻的理解这些原理
    以下有两个实验:
    BGP实验1—简单版
    BGP实验2—进阶版
    快来试试看吧。
    在这里插入图片描述

    展开全文
  • BGP协议介绍

    千次阅读 2022-04-21 11:32:59
    BGP协议概述 BGP用于在不同的自治系统(AS)之间交换路由信息。当两个AS需要交换路由信息时,每个AS都必须指定一个运行BGP的节点,来代表AS与其他的AS交换路由信息。通常是路由器来执行BGP。两个AS中利用BGP交换...

    一. BGP协议概述

    BGP用于在不同的自治系统(AS)之间交换路由信息。当两个AS需要交换路由信息时,每个AS都必须指定一个运行BGP的节点,来代表AS与其他的AS交换路由信息。通常是路由器来执行BGP。两个AS中利用BGP交换信息的路由器也被称为边界网关(Border Gateway)或边界路由器(Border Router)。
    (http://127.0.0.1/bgp_basic.jpg)
    在这里插入图片描述

    二. BGP的基本概念

    AS(Autonomous System)自治系统:

    自治系统就是处于一个管理机构控制之下的路由器和网络群组。在一个自治系统中的所有路由器必须相互连接,运行相同的路由协议,同时分配同一个自治系统编号。

    BGP发言者(BGP Speaker):

    发送BGP消息的路由器称为BGP发言者,它接收或者产生新的路由信息,并发布给其他BGP发言者。

    Router ID(RID):

    用来在自治系统中唯一标识一台路由器。Router ID可以是手工配置或这是路由协议自动选举。

    BGP对等体(BGP Peer):

    相互交换消息的BGP发言者之间互称对等体(Peer),也可以称为BGP邻居。

    IBGP对等体(Internal BGP Peer):

    如果BGP对等体处于同一自治系统内,被称为IBGP对等体,要求TCP可达。为了防止环路,BGP协议规定BGP发言者从IBGP获得的路由不向它的IBGP对等体发布。

    EBGP对等体(External BGP Peer):

    BGP对等体处于不同自治系统时,被称为EBGP对等体,一般物理直连。BGP Speaker从EBGP对等体获得的路由会向它所有BGP对等体通告(包括EBGP和IBGP);同时为了防止环路,他不会将学习到的路由再向原发布者发布。

    AS-PATH:

    BGP的路由可能会从一个AS发往另外一个AS,从而穿越多个AS,可能在经过转发之后,又回到了最初的AS之中,最终形成路由环路,出于防止环路的目的考虑,BGP在将路由发往其它AS(EBGP邻居)时,需要在路由中写上自己的AS号码,下一个AS收到路由后,除了保留之前的AS号码之外,也要添加上自己的AS号码,这样的写在路由中的AS被称为AS-path,如果BGP收到的路由的AS_PATH中包含自己的AS号码,就认为路由被发了回来,以此断定出现了路由环路。
    (http://127.0.0.1/bgp_as_path.jpg)
    在这里插入图片描述

    三.BGP工作过程

    BGP邻居建立
    • Idle状态:初始空闲状态,不接受任何BGP连接,等待start事件的产生。

    • Connect状态:连接状态。

    • Active状态:活跃状态。

    • Opensent状态:OPEN消息已发送。

    • OpenConfirm状态:OPEN消息确认。

    • Established状态:连接建立。
      (http://127.0.0.1/bgp_connect.jpg)
      在这里插入图片描述

    • Open消息:用于BGP对等体之间建立连接并进行参数协商。内容包括使用的BGP版本号、自己所属的AS号、路由器ID、Hold Time值、认证信息等信息。

    • Keepalive消息:BGP会周期性(30s)向对等体发出Keepalive消息,主要作用就是保持邻居关系的稳定;另外一个作用就是对收到的Open消息的回应。
      (http://127.0.0.1/bgp_open_message.jpg)
      bgp_open_message

    BGP路由表导入

    默认情况下,任何路由都不会自动进入BGP路由表,BGP路由表的路由获得有多种方式,可以从BGP邻居获得,也可以手工将IGP路由导入BGP路由表,还可以将其它路由重分布进BGP。

    BGP路由更新和撤销

    • UPdate消息:主要用于在对等体之间交换路由信息。它既可以发布可达路由信息,也可以发布不可达路由消息。
    • Notification消息:如果检测到对方发过来的消息有错误或者主动断开BGP链接,都会发出Notification消息来通知BGP邻居,并关闭链接回到idle状态;接收端也会变为idle状态。
    • Route-refresh消息:Route-refresh用来要求对等体重新发送指定地址族的路由信息。
      (http://127.0.0.1/bgp_update_message.jpg)
      在这里插入图片描述

    四.BGP路径属性

    公认必遵属性:ORIGIN、AS-PATH、NEXT_HOP

    是公认所有BGP实现都必须识别的属性,这些属性被传递给BGP邻居。

    ORIGIN:

    来源属性就反映出了路由是如何进入BGP路由表的。
    0表示IGP,通过network命令导入AS内部的IGP路由;
    1表示EGP,通过EGP学习的路由;
    2表示INCOMPLETE,通过其他方式学习的路由;

    AS-PATH:

    路由到达一个目的地所经过的一系列自制系统号码的有序列表,用于防止环路。BGP发言者在向EBGP邻居发送路由更新时修改AS_PATH属性,向IGP邻居发送时不修改该属性。

    NEXT_HOP:

    路由信息的下一跳信息。
    1、BGP发言者把自己产生的路由发给所有邻居时,下一跳为自己接口地址;
    2、BGP发言者把从EGP邻居得到的路由发给IBGP邻居时,不修改下一跳属性;
    3、BGP发言者把收到的路由发给EBGP对等体时,把下一跳属性设置为本地与对端连接的接口地址。

    公认可选属性:LOCAL—PREF、ATOMIC_AGGREGATE

    是公认所有BGP实现都必须识别的属性,但是为路由写入公认自选属性并不是必须的。

    LOCAL_PREF:

    用于AS内IBGP邻居选择离开本地AS时的最佳路由,表明的是BGP路由的优先级,该 属性只在AS内部传播,不传递到AS外。

    ATOMIC_AGGREGATE(原子聚合):

    是用来通告路由接收者,该路由是经过聚合的。它实际上是一种警告,因为发布更粗略的路由意味着更精细的路由信息在发布过程中丢失了。在进行路由聚合时,对于聚合的路由信息会添加ATOMIC-AGGREGATE属性。

    可选传递属性:COMMUNITY、AGGREGATOR

    并不是所有的BGP路由器都能识别的属性,也并不一定能保留和传递该属性。

    COMMUNITY(团体):

    此属性指共享一个公共属性的一组路由器。

    AGGREGATOR(聚合者)::

    此属性标明了实施路由聚合的BGP路由器ID和聚合路由的路由器的AS号。

    可选不可传递属性:MED、CLUSTER-LIST、ORIGINATOR-ID

    只有特定的BGP路由器才理解和支持可选不可传递属性,并且可选不可传递属性理论上是不能手工设置的,这些属性也不能任意传递,只可以传递到特定的BGP路由器。

    MED(MULTI-EXIT-DISC 多出口区分):

    MED就是BGP路由中的metric,是被设计用来影响在多个下一跳都为eBGP邻居时,如何选择最优路径,MED越小优先级越高,默认值为0。

    CLUSTER_LIST(簇列表):

    此属性显示了采用的反射路径,类似AS_PATH。当一台RR向另外一台RR放射路由时会加上cluster-list属性,一般是自己的cluster id号来填充。

    ORIGINATOR_ID(起源ID):

    路由反射器会附加到这个属性上,它携带本AS路由器的路由器ID,用以防止环路。

    五.BGP路由优选

    • 优选Preferred_value(Weight)值最大的路由;
    • 优选本地优先级(LOCAL_PREF)最大的路由;
    • 依次选择network命令生成的路由、import-route命令引入的路由、聚合路由;
    • 优选AS路径(AS_PATH)最短的路由;
    • 依次选择ORIGIN属性为IGP、EGP、Incomplete的路由;
    • 优选MED值最低的路由;
    • 依次选择从EBGP、IBGP学来的路由;
    • 优选下一跳度量值(Metric)最低的路由;
    • 优选CLUSTER_LIST长度最短的路由;
    • 优选ORIGINATOR_ID最小的路由;
    • 优选Router ID最小的路由器发布的路由;
    • 优选IP地址最小的对等体发布的路由;

    六.BGP基本配置

    R1和R2建立IBGP邻居,IGP协议使用OSPF;
    R2和R3之间建立EBGP邻居;
    R2上通过network引入环回口路由11.1.1.1/32,通过重分布引入直连路由;
    R1上通过IBGP学习到R2引入的直连路由;
    R3上通过EBGP学习到R2引入的环回口路由和直连路由;
    (http://127.0.0.1/bgp_topo.jpg)
    在这里插入图片描述

    配置:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    结果:

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • BGP协议原理与配置

    千次阅读 2021-10-23 15:40:30
    AS(自治系统)是指由同一个技术管理机构管理,使用统一选路策略...AS之间:使用BGP(外部网关协议)来传递和控制路由 EGP:BGP的前身,只能在AS之间简单地传递路由信息,不会对路由进行任何优选,也没有考虑如何在AS之

    AS(自治系统)是指由同一个技术管理机构管理,使用统一选路策略的一些路由器的集合。
    私有自治系统,类似于私网那个IP地址,归属个人,不会连接到公网
    国际管理自治系统
    AS的内部:使用IGP(内部网关协议)来计算和发现路由,如OSPF,ISIS,RIP等,同一个AS内部的路由器之间是相互信任的,因此IGP的路由计算和信息泛洪完全处于开放状态,人工干预很少
    AS之间:使用BGP(外部网关协议)来传递和控制路由

    EGP:BGP的前身,只能在AS之间简单地传递路由信息,不会对路由进行任何优选,也没有考虑如何在AS之间避免路由环路等问题,因而EBP最终被BGP取代

    BGP:外部网关协议,用于在AS之间进行路由控制和优选
    AS编号:每个自治系统都有唯一的一个编号,由IANA分配,2009年1月之前,只能使用最多2字节长度的AS号码,即1-65535。
    其中1-64511为公有AS,64512-65534为私有AS。
    2009年1月之后,IANA决定使用4字节长度AS,范围是65536-4294967295

    BGP的基本作用:
    1.邻居的发现与邻居关系的建立;
    2.路由的获取,优选和通告;
    3.提供路由环路避免机制,并能够高效传递路由,维护大量的路由信息;
    4.在不完全信任的AS之间提供丰富的路由控制能力。

    在OSPF/ISIS通过直连链路建立邻居关系,不是直连建立不了邻居关系

    BGP邻居关系建立的参数:AS 号、router-id、hold time 向小兼容

    BGP优先级:255

    BGP协议特点:1.可以跨越多跳路由器建立邻居关系:因为是在AS之间传递路由,为保证数据的可靠性, BGP使用TCP作为其承载协议建立连接。因此与IGP逐跳路由器建立邻居不同,BGP可以跨越多跳路由器建立邻居关系
    2.BGP基于TCP协议,端口号为179
    3. 设计了诸多属性携带在路由中:AS之间的路由器是不完全相互信任的,为实现路由按需求进行控制和优选,BGP设计了诸多属性

    BGP邻居发现

    先启动BGP的一端先发起TCP连接,RTB先启动BGP协议,RTB使用随机端口号向RTA的179端口发起TCP连接
    *TCP采用单播建立连接,因此BGP协议并不像RIP和OSPF一样使用组播发现邻居。单播建立连接也使BGP只能手动指定邻居

    BGP邻居类型 :靠AS区分

    EBGP:运行在不同AS之间的BGP路由器建立的邻居关系为EBGP(External BGP)邻居关系
    IBGP:运行在相同AS内的BGP路由器建立的邻居关系为IBGP(Internal BGP)邻居关系
    peer关键字后面是对端邻居的接口地址
    AS-number后是邻居路由器所在的AS
    BGP邻居关系配置

    配置步骤:
    1.配置Router ID(标识路由器)(手动);
    没有配置Router ID:
    路由器在它的所有LoopBack接口上选择数值最高的IP地址;
    如果没有LoopBack接口,路由器会在它的所有物理接口上选择数值最高的IP地址。
    配置命令:router id X.X.X.X
    2.配置EBGP邻居关系(AS之间传递路由);
    (1)通过直连(物理)接口建立邻居关系(建立使用)
    bgp as号
    peer 对端直连接口IP地址 AS-number对端AS号
    对端一样指定邻居
    (2)通过loop back口建立邻居–保证IP地址路由可达
    首先通过静态路由/OSPF实现EBGP邻居之间loop back口的互通
    bgp as号
    peer 对端loop back口IP地址 AS-number对端AS号
    peer 对端loop back口 connect-interface 本地的loop back 口编号(默认情况下是物理接口建立邻居关系)
    peer 对端loop back口 EBGP-max-hop 2(只针对EBGP建立邻,默认为1,如果用直连链路建立的话不会有影响,因为一跳就已经到达了对端设备,但是如果使用loop back 口的话,原来是一跳,出了接口就是0跳,那么对端设备就会丢弃,没有意义,所有修改2跳就有意义)
    对端设备同样配置
    查看BGP邻居关系命令:dis bgp peer

     3.配置IBGP邻居关系(AS内部传递路由)
             建立IBGP邻居关系时,一般使用loop back口的IP地址,因为loop back口开启后一直处于UP状态,只要保证路由可达,邻居关系一直处于稳定状态,而建立EBGP邻居关系一般使用直连接口的IP地址,因为EBGP是跨AS建立邻居关系,邻居关系建立之前非直连接口之间的路由不可达
    

    (1)通过直连(物理)接口建立邻居关系(建立使用)
    bgp as号
    peer 对端直连接口IP地址 AS-number对端AS号
    对端一样指定邻居
    (2)通过loop back口建立邻居—保证IP地址路由可达
    bgp as号
    peer 对端loop back口IP地址 AS-number对端AS号
    peer 对端loop back口 connect-interface 本地的loop back 口编号(默认情况下是物理接口建立邻居关系)
    peer 对端loop back口 EBGP-max-hop 2(在IBGP中不需要,因为IBGP中默认为255跳)

    BGP邻居关系配置的优化:

       建立EBGP邻居关系时,一般使用直连接口的IP地址;建立IBGP邻居关系时,一般使用Loopback接口的IP地址
    

    BGP邻居关系建立

    BGP通过报文的交互完成邻居建立、路由更新等操作:
    建立邻居的过程:
    建立邻居时,router-id大的首先发起TCP连接并转至Connect状态
    在Connect状态下,BGP路由器启动连接重传定时器,等待TCP完成连接
    TCP连接成功,那么BGP路由器向邻居发送Open报文,并转至OpenSent状态
    TCP连接失败,那么BGP路由器转至Active状态。
    连接重传定时器超时,BGP路由器仍没有收到邻居的响应,那么BGP路由器继续尝试与其邻居进行TCP连接,停留在Connect状态
    在Active状态下,BGP路由器总是在试图建立TCP连接
    TCP连接成功,那么BGP路由器向邻居发送Open报文,关闭连接重传定时器,并转至OpenSent状态
    TCP连接失败,那么BGP路由器停留在Active状态
    连接重传定时器超时,BGP路由器仍没有收到邻居的响应,那么BGP路由器转至Connect状态
    在OpenSent状态下,BGP路由器等待邻居的Open报文,并对收到的Open报文中的AS号、版本号、认证码等进行检查
    收到的Open报文正确,那么BGP路由器发送Keepalive报文,并转至OpenConfirm状态
    发现收到的Open报文有错误,那么BGP路由器发送Notification报文给邻居,并转至Idle状态
    在OpenConfirm状态下,BGP路由器等待Keepalive或Notification报文
    收到Keepalive报文,则转至Established状态
    收到Notification报文,则转至Idle状态。
    在Established状态下,BGP路由器可以和邻居交换Update、Keepalive、Route-refresh报文和Notification报文

    一:BGP的报文:
    Open报文(打开报文):是TCP连接建立后发送的第一个报文,用于建立BGP邻居之间的连接关系,交互建立邻居所需要协商的参数。
    BGP邻居在接收到Open报文并协商成功后,将发送Keepalive报文确认并保持连接的有效性。确认后,BGP邻居间可以进行Update、Notification、Keepalive和Route-refresh报文的交换
    Open报文和Keepalive报文类似于OSPF的hello报文

    Update报文(更新报文):用于在BGP邻居之间交换路由信息,传递或撤销路由。Update报文可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息

          1. 可以发布多条具有相同路由属性的可达路由,这些路由可共享一组路由属性。所有包含在一个给定的Update报文里的路由属性适用于该Update报文中的NLRI(Network Layer Reachability Information)字段里的所有目的地(用IP前缀表示)
           2.可以撤销多条不可达路由。每一个路由通过目的地(用IP前缀表示),清楚地定义了BGP路由器之间先前通告过的路由
          3. 可以只用于撤销路由,这样就不需要包括路径属性或者NLRI。相反,也可以只用于通告可达路由,就不需要携带撤销路由信息了
    

    Notification报文(通告报文):通告差错,当BGP路由器检测到错误状态时,就向邻居发出Notification报文,之后BGP连接会立即中断

    Keepalive报文(保活报文):用于维护BGP邻居关系,保持连接的有效性
    BGP路由器会周期性60s的向邻居发出Keepalive报文,如果在hold time(180s)没有收到邻居的Keepalive报文,则邻居关系中断

    Route-refresh报文(路由刷新报文):用于邻居设备重新发送路由以便策略的应用(BGP支持大量的策略,有些策略在实施之后并不会立即出现效果,需要通过Route-refresh报文让邻居设备重新再发送一遍路由,然后让该策略生效)

    BGP邻居关系建立过程:分为两块:1.TCP建立
    2.BGP邻居关系建立
    二:BGP状态:
    Idle(空闲状态):BGP路由器不接受任何的TCP连接请求。(相当于初始状态,标识BGP没有运行)
    只有在收到本设备的Start事件后,BGP路由器才开始尝试与其邻居进行TCP连接,并转至Connect状态

    Connect(连接状态):BGP路由器启动连接重传定时器(Connect Retry),发起TCP连接并接受TCP连接
    如果TCP连接成功:BGP路由器向邻居发送Open报文,并转至OpenSent状态
    如果TCP连接失败:BGP路由器转至Active状态
    如果TCP连接建立超时:连接重传定时器超时,BGP路由器仍没有收到邻居的响应,那么BGP路由器继续尝试与其邻居进行TCP连接,停留在Connect状态

    Active:BGP路由器总是在试图建立TCP连接
    如果TCP连接成功,那么BGP路由器向邻居发送Open报文,关闭连接重传定时器,并转至OpenSent状态
    如果TCP连接失败,那么BGP路由器停留在Active状态。
    如果连接重传定时器超时,BGP路由器仍没有收到邻居的响应,那么BGP路由器转至Connect状态

    OpenSent:BGP路由器等待邻居的Open报文,并对收到的Open报文中的AS号、版本号、认证码等进行检查

             收到的Open报文正确:收到并接受来自邻居的open报文,BGP路由器发送Keepalive报文,并转至OpenConfirm状态
             收到的Open报文有错误:收到邻居发送的open报文但不接收报文中所携带的参数,那么BGP路由器发送Notification报文给邻居,并转至Idle状态
    

    OpenConfirm:该状态下BGP路由器发送Keepalive报文,等待Keepalive或Notification报文。如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态

    Established:BGP路由器可以和邻居交换Update、Keepalive、Route-refresh报文和Notification报文
    该状态标志BGP邻居状态建立完成

    BGP路由的生成方式 :是指BGP路由是从哪来,也就是说如何将IGP变为BGP
    1.Network命令:是逐条将IP路由表中已经存在的路由引入到BGP路由表中,将路由表的IGP路由引入到BGP路由表中,并不能全部的转,一条network就只能转一条BGP路由,适合路由量小的环境

    2.Import命令:是根据运行的路由协议(RIP,OSPF,ISIS等)将路由引入到BGP路由表中,同时import命令还可以引入直连和静态路由
    是批量的将路由表中的IGP路由引入到BGP路由表中,import一次只能针对一种路由协议

     为了防止其他路由被引入到BGP中,需要配置ip-prefix进行精确匹配,调用route-policy在BGP引入路由时进行控制          
             查询:display bgp routing-table
    

    Aggregate detail-suppressed:仅通告聚合路由给其他BGP邻居

    BGP路由表中的参数:
    状态码::代表可用
    >:代表最优(出现>必定出现
    ,最优的前提是可用,出现*不一定代表是最优的)
    i:表示这条路由是从IBGP里面学习的路由,不带i表示从EBGP里学习到的路由,出现在network的前面
    origin:起源属性,就是路由条目后面的一个字段Ong
    i:表示IGP
    e:表示EGP
    ?:表示引入
    状态:
    Network:显示BGP路由表中的网络地址
    NextHop:报文发送的下一跳地址
    MED:路由度量值,0,出现多条路由的目的地址一样
    LocPrf:本地优先级
    PrefVal:协议首选值
    Path/Ogn:显示AS路径号及Origin属性
    Community:团体属性信息

    BGP通告原则与路由处理:

    BGP的Update报文
    BGP通过Network和Import两种方式生成BGP路由,BGP路由封装在Update报文中通告给邻居。BGP在邻居关系建立后才开始通告路由信息。
    Update消息主要用来公布可用路由和撤销路由,Update中包含以下信息:
    网络层可达信息(NLRI):用来公布IP前缀和前缀长度。
    路径属性:为BGP提供环路检测,控制路由优选。
    撤销路由:用来描述无法到达且从业务中撤销的路由前缀和前缀长度。
    为了避免路由通告过程中出现问题,BGP路由通告需要遵守一定的规则:

    1.仅将自己最优的路由发布给邻居

    2.通过EBGP获得的最优路由发布给所有BGP邻居(包括EBGP邻居和IBGP邻居)
    问题:BGP路由器从EBGP邻居获得的最优路由发布给IBGP邻居时不改变下一跳,因此导致IBGP收到的邻居路由下一跳不可达,导致BGP路由无效
    解决:在BGP中配置:peer 对端邻居的IP地址 next-hop

    3.通过IBGP获得的最优路由不会发布给其他的IBGP邻居:为了防止在AS内部形成路由环路
    问题:由于BGP路由从IBGP邻居获得路由并不会发布给其他的IBGP,因此会导致AS内部路由获取不到路由
    解决:在AS内部部署IBGP全互联,两两之间建立邻居关系
    问题:在AS部署全互联会导致BGP路由器都需要维护大量的IBGP邻居关系,对设备带来压力
    解决:路由反射器,称为RR,或者联盟(不在IP讲述范围)

    4.BGP与IGP同步:BGP路由器从IBGP邻居获得的路由传递给EBGP时要保障所有的路由器都能学习到通告的路由:目的是为了解决中转AS的路由黑洞问题,通过将IGP引入到BGP中,和BGP同步

    BGP的路由黑洞
    因为考虑成本和实用性,正常在一个AS内部不是所有的设备都运行BGP协议,故将出现路由可达,但实际数据在传输时,经过中间未运行BGP协议的路由器后被丢弃。
    路由黑洞:控制层面可达,数据层面不可达(此概念出于MPLS时代)

    控制层面:传路由表的方向
    数据层面:访问目标的方向
    1、BGP协议是基于TCP单播沟通,可以穿越中间设备来传递路由
    2、BGP的路由正常均需要递归多次到直连路由,运行BGP协议的路由基本都可以完成递归,认为可达,不关注下一跳设备是否由路由,只要本地能到下一跳即可
    3、BGP生成的路由是唯一路径,但递归可以多条路径传输
    解决BGP路由黑洞:
    1)物理链路全连(IBGP中运行BGP协议的路由器太远不能实现)
    2)邻居关系全连(所有设备均运行BGP)
    3)将BGP重发布到IGP(LAB实验环境下应用,慎用)
    4)MPLS,多协议标签交换(最佳)

    BGP路由信息处理

    1.当从BGP邻居接收到Update报文时,路由器将会执行路径选择算法,选出最优路由
    2.将所有从BGP邻居接收的路由加入到本地BGP路由表(Local_RIB)中,然后将最优路由加入本地IP路由表(IP_RIB)
    3.被选出的有效的最优路由将会被封装在Update报文中,发送给对端的BGP邻居

    IP路由表(IP_RIB):全局路由信息库,包括所有的IP路由信息。
    BGP路由表(Local_RIB):BGP路由信息库,包括本地BGP路由器选择的路由信息,邻居表,邻居清单列表。

    BGP选路遇到的问题
    1.最优路径:在AS之间交换路由可达信息时,设计BGP能够提供丰富的属性,实现对路由的灵活控制和优选
    修改路由表,调整AS之间的链路Metric
    不修改路由表, 使用策略修改路由下一跳。但是这些方法在某些情况下具有局限性,不能满足网络的丰富需求
    2.环路:路由在AS之间传递时记录传播路径,防止环路的产生

    BGP的路径属性(BGP路由的附加信息)
    公认属性:所有BGP路由器都必须识别并支持的属性

        公认必遵:BGP的Update消息中必须包含的属性。BGP路由器在传递路由时,(必遵)BGP路由器必须携带该类属性,否则BGP路由会出错
                                    Origin:起源属性
                                       AS_Path:自治系统路径属性
                                       Next_hop:下一跳属性
        公认任意:不必存在于BGP的Update消息中,可以根据需求自由选择的属性
                                    Local_Preference:本地优先级属性
                                     Atomic aggregate:原子聚合属性
    可选属性:不要求所有的BGP路由器都能够识别的属性
         
      可选过渡:BGP不能识别该属性,但可以接收该属性并在传递路由时将其发布给它的邻居的属性。
                                   Aggregator:聚合者属性
                                   Community:团体属性
      可选非过渡:BGP可以不识别属性并且向它的邻居传递路由时不携带该类属性
                                    MED:类似于cost
    

    BGP属性 :

    1.Origin(起源属性):隶属于公认必遵属性
    作用:1.用于标识BGP路由的来源(标记一条路由是怎么成为BGP路由的)
    2.用于路径选择(选择最优路由)
    取值:
    i:表明BGP路由通过network命令注入;
    e:表明BGP路由是通过EGP路由转换而来(EGP协议在现网中很难见到,但可以通过路由策略将路由的Origin属性修改为e)
    ?: 即Incomplete,表明BGP路由通过其它方式学到路由信息,如使用import命令引入的路由。
    路径选择(优先级)为:i>e>Incomplete(?)

    2.AS_Path(自治系统属性):隶属于公认必遵属性
    作用:
    1.记录了路由在AS间传递的路径(BGP路由在AS间传递时,每经过一个AS,就会在原有的AS-path的基础上的左边附加本地AS号,可以知晓BGP路由的始发AS和BGP路由所途径AS以及BGP路由是从哪个AS传递过来的)
    2.防止AS间环路(BGP路由器收到BGP路由时,会检查BGP路由所携带的AS-path属性中是否携带本地AS号,若携带,则认为环路,并丢弃该路由)
    3.用于路径选择(选择最优路径) ,BGP路由器收到多条去往同一目的地的BGP路由时,将会比较多条路由的AS-path属性,优选AS-path长度最短的BGP路由,可以通过路由策略修改AS-path的长度
    AS_Path的4种类型:
    AS_Sequence(后续讲解BGP路由聚合时会详细说明);
    AS_Set(后续讲解BGP路由聚合时会详细说明);
    AS_Confed_Sequence(应用于联盟,本课程不涉及);
    AS_Confed_Set(应用于联盟,本课程不涉及)

    3.Next_hop(下一跳属性):隶属于公认必遵
    作用:
    用于记录路由的下一跳(如果路由下一跳不可达,则路由无效,连参与路径选择的资格都没有)
    路由在BGP邻居间传递时,下一跳改变规则:
    1.从IBGP邻居获得的路由传递给EBGP邻居:BGP邻居从IBGP邻居获得的路由传递给EBGP邻居时,下一跳改变为自身的IP地址(建立EBGP邻居所使用的IP地址)
    2.从EBGP邻居获得的路由传递给IBGP邻居:BGP邻居从EBGP邻居获得的路由传递给IBGP邻居时,下一跳不改变,因此会导致IBGP邻居收到的路由下一跳不可达,导致路由无效
    可以通过peer IP地址 next-hop local :强制修改下一跳(在BGP路由器上配置,配置后需重启BGP/重发一遍路由:用户视图下reset bgp AS号/route-refresh)
    3…从EBGP邻居获得的路由传递给EBGP邻居:BGP邻居从EBGP邻居获得的路由传递给EBGP邻居时,下一跳改变为自身的IP地址(建立EBGP邻居所使用的IP地址)

    4.Local_Preference(本地优先级属性):隶属于公认任意属性
    作用:用于路径选择(用于判断流量离开AS(出站流量,AS去往另一个AS)时的最佳路由,值越大越优,其默认值为100;
    * 当BGP路由器通过不同的IBGP邻居获得目的地址相同但是下一跳不同的多条路由(就是出现多个离开本地AS),将优先选择属性值高的路由
    仅在IBGP邻居之间有效,不通告给其他AS。它表明路由器的BGP优先级
    适用环境:当一个AS的BGP路由离开一个AS内的网络时,如果BGP路由器所在AS存在多个出口时,并且需要控制出站流量从哪个出口离开AS,可以通过修改路由器的Local_Preference属性值来实现出站流量

    5.MED:隶属于可选非过度,类似于cost
    作用:用于路径选路规则
    取值:默认为0,越小越优
    适用环境:当一个AS存在多个入口路由器时,如果本端AS希望对端AS访问自己(本端AS)的某个网络时,优选其中一个入口路由器作为入站流量的入口可以适用MED值,可通过路由策略修改其属性值,MED属性相当于IGP中使用的度量值(Metric),用于判断流量进入AS时的最优路由,当一个运行BGP的路由器通过不同EBGP邻居获得目的地址相同,但是下一跳不同的多条路由时,在其他条件相同的情况下,优选MED值小的
    仅在相邻两个AS之间传递,收到此属性的AS不会再将其通告给任何其他第三方AS

    6.Community(团体属性):隶属于可选过度
    作用:1.限定路由的传播范围。
    2.为路由附加标签,用于路由策略
    分类:1.公共团体属性:限制BGP路由传播范围
    Internet:默认属性,所有路由都属于Internet,只要不违背通告原则可以通告给所有BGP邻居,不受限制
    No_Export:不传出,BGP路由器收到此属性的路由后,只传递给IBGP邻居,不将该路由发布到其他AS
    No_Advertise:不通告,BGP路由器收到此属性的路由后,不将该路由通告给任何其他的BGP邻居
    No_Export_Subconfed:在联盟中使用
    2.自定义团体属性:为路由附加标签,用于路由策略
    采用 aa:nn 形式
    aa通常为AS编号,取值(0-65535)
    nn是管理员定义的团体属性标识,取值(0-65535)

    BGP路由优选原则

    BGP路由器将路由通告给邻居后,每个BGP邻居都会进行路由优选,路由选择有三种情况:
    • 该路由是到达目的地的唯一路由,直接优选。
    • 对到达同一目的地的多条路由,优选优先级最高的。
    • 对到达同一目的地且具有相同优先级的多条路由,必须用更细的原则去选择一条最优的。
    一般来说,BGP计算路由优先级的规则如下:
    1.丢弃下一跳不可达的路由。
    2.优选Preference_Value值最高的路由(私有属性,仅本地有效)。
    3.优选本地优先级(Local_Preference)最高的路由。
    4.优选手动聚合>自动聚合>network>import>从对等体学到的。
    5.优选AS_Path短的路由。
    6.起源类型IGP>EGP>Incomplete。
    7.对于来自同一AS的路由,优选MED值小的。
    8.优选从EBGP学来的路由(EBGP>IBGP)(内部路由优先级EBGP>IBGP:EBGP-20;IBGP-200–越小越优)。
    9.优选AS内部IGP的Metric最小的路由。
    10.优选Cluster_List最短的路由。
    11.优选Orginator_ID最小的路由。
    12.优选Router_ID最小的路由器发布的路由。
    13. 优选具有较小IP地址的邻居学来的路由。

    Preference_Value对选路的影响
    Preference_Value是BGP的私有属性(华为私有属性),Preference_Value相当于BGP选路规则中Weight值,仅在本地路由器生效。Preference_Value值越大越优先

    聚合方式对选路的影响
    聚合方式::
    自动聚合:只能对引入的BGP路由进行聚合
    手动聚合:可以对存在于BGP路由表中的路由进行聚合
    聚合路由的优先级:手动聚合>自动聚合

    1.EBGP邻居的路由优于IBGP邻居的路由
    根据选路原则,RTA会优选从EBGP邻居学来的路由

    2.AS内部IGP Metric对BGP选路的影响
    优选值小的

    3.Router-ID与IP地址对BGP选路的影响
    优选小的,先看router-id

    BGP路由聚合概述
    BGP在AS之间传递路由信息,随着AS数量的增多,单个AS规模的扩大,BGP路由表将变得十分庞大,因此带来如下两类问题:
    存储路由表将占用大量的内存资源,传输和处理路由信息需要消耗大量的带宽资源;
    如果传输的路由条目出现频繁的更新和撤销,对网络的稳定性会造成影响
    BGP路由聚合的必要性
    存储路由条目的路由表将占用大量的内存资源,传输路由信息需要占用大量的带宽资源;
    明细路由频繁震荡造成网络不稳定。
    BGP路由聚合方法
    静态:使用静态路由将明细路由聚合,下一跳指向NULL 0
    network 10.1.8.0 255.255.252.0
    ip route-static 10.1.8.0 255.255.252.0 NULL 0
    自动聚合:只对引入BGP的路由进行聚合,聚合到自然网段后发送给邻居(不建议使用)
    summary automatic
    手动聚合:手动聚合对BGP本地路由表里存在的路由进行聚合,并且能指定聚合路由的掩码
    aggregate 10.1.8.0 255.255.252.0
    detail-suppressed
    路由聚合解决了两类问题:
    一是减轻了设备传输和计算路由所需资源的负担,
    二是隐藏了具体的路由信息,减少了路由震荡的影响

    但带来问题: 潜在环路
    解决方法:detail-suppressed AS_Set:可以保留原来明细路由的AS_path属性

    设置了两个AS_Path属性
    1.Atomic-Aggregate:公认任意属性,用于警告下游路由器出现了信息丢失
    2.Aggregator:可选过度属性,该属性包含发起聚合的路由器的AS号和Router-ID,表明发生聚合的位置

    AS_Path属性有两种类型:
    AS_Sequence:表示AS_Path内的AS号是一个有序的列表。
    AS_Set:表示AS_Path内的AS号是一个无序的列表

    AS_Path本身是一个有序的列表,因为AS_Path每经过一个AS都会将AS号添加到AS_Path中,并且按经过的顺序从左到右排列

    BGP的工作过程
    1、启动配置完成后,本地和对端先单播进行TCP的三次握手,建立TCP的会话。
    2、会话建立后,使用open报文进行邻居关系的建立,正常收发一次open报文即可;建立关系后生成邻居表。
    3、邻居关系建立后,用户进行路由宣告;宣告配置完成后,BGP使用update包进行路由条目的传递—目标网络号+属性
    4、本地接收到的所有路由条目均存储在BGP表中;–装载本地发出和接收到的所有路由。
    5、默认仅从BGP表中挑选一条最优路径到路由表内。
    6、收敛完成,仅keeplive包继续周期保活TCP会话即可。

    注:所有BGP协议的数据包均基于TCP的会话传递;TCP会保证这些数据包的可靠性-确认、重传、排序、流控(窗口机制)
    若结构突变:
    1、新增网段–BGP路由上出现了新的宣告路由,使用更新包更新即可
    2、断开网段–BGP路由上出现断开路由,若本地给邻居发送的是汇总路由;那么只要所有明细没有全部断开,将不进行BGP更新;若明细全部消失,使用更新包告知即可;对端删除该信息即可;
    3、无法沟通—hold time到时时,断开邻居关系,删除所有通过该邻居学习到的信息

    展开全文
  • 一、路由选择协议分类、 二、BGP 协议 简介、 三、BGP 协议 信息交换过程、 三、BGP 协议 报文格式、 四、BGP 协议 特点、 五、BGP-4 协议的 四种报文、 六、RIP 、OSPF、BGP 对比、
  • BGP协议的总结

    2021-07-30 09:10:48
    BGP协议的总结 BGP:边界网关路由协议 无类别路径矢量EGP协议;工作于AS之间; AS—自治系统 标准AS编号 16位二进制 0-65535 扩展AS编号 32位二进制 路径矢量(一个AS为一跳)— 距离矢量(一个路由器为一跳) ...
  • bgp协议基本内容

    2021-07-30 16:45:31
    **BGP**(边界网关路由协议)是自治系统间的路由协议。是一种无类别路径矢量EGP协议BGP交换的网络可达性信息提供了足够的信息来检测路由回路并根据性能优先和策略约束对路由进行决策** 文章目录BGP1. BGP概述2. BGP...
  • bgp协议

    2012-03-01 13:48:00
    bgp协议
  • BGP协议简单实验

    千次阅读 2022-01-21 22:08:25
    使用BGP,按照真实网络环境的逻辑配置,实现所有PC段间互相连通 1.配置ip 2.相邻as间配置EBGP,as间使用ibgp 3.修改,改善 配置命令 [r1-LoopBack0]ip add 1.1.1.1 24 [r1-GigabitEthernet0/0/0]ip add 12.1....
  • BGP协议基础

    2021-09-06 10:06:40
    BGP 边界网关路由协议 边界:AS的边界 AS:同一个技术管理机构管理,如企业,ISP IGP:AS内部网关路由协议,实现AS内部的互联互通,如OSPF、ISIS BGP:AS互联互通的一种路由协议 AS号:取值范围1-65535 64512-65535...
  • 初学BGP协议实验

    2021-07-23 18:20:28
    AS1与AS2、AS2与AS3间建邻EBGP,AS2内部所有路由器建邻IBGP(为避免路由黑洞,所以此次实验中AS2内所有路由器皆启BGP协议,而实际工程不会这么做,因为能承载BGP协议的路由器价格昂贵,成本巨大;后期将使用MPLS 多...
  • 文章目录前提概念BGP的基本作用BGP协议特点BGP邻居关系和配置报文类型:BGP的简单连接配置 前提概念 IGP:内部网关路由协议:OSPF、RIP、IS-IS EGP:外部网关路由协议:BGP BGP:外部网关路由协议代表 AS概念区别:...
  • BGP 协议、IP组播

    2021-08-02 10:26:06
    文章目录BGP 协议路由选择协议分类BGP 协议概述BGP协议交换信息的过程BGP协议报文格式BGP 协议特点BGP-4 四种报文三种路由协议比较IP 组播IP数据报的三种传输方式IP 组播地址硬件组播IGMP协议与组播路由选择协议lGMP...
  • HCIP第十一天(BGP协议

    千次阅读 2022-02-12 11:42:56
    1、BGP协议(边界网关协议) IGP和EGP的特点 2、BGP的数据包 1、OPEN包:建立邻居关系 2、keeplive包 3、Updata包(更新包) 4、Notification包 5、Route-refresh包 3、BGP的状态机 IDLE状态(空闲状态) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,391
精华内容 11,356
关键字:

bgp 协议