BGP协议

BGP --- 边界网关协议

IGP --- 内部网关协议 --- RIP OSPF

EGP --- 外部网关协议 --- BGP

AS --- 自治系统 --- 由单一的机构或组织所管理的一系列IP网络及设备所构成集合。

为什么要划分AS?

划分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协议不需要去计算路由,只需要将现有的传递到自己的邻居处即可。

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是不支持负载均衡。

BGP的整个工作过程

1,BGP的数据包

ospf的hello包 --- 周期发现,建立和保活邻居关系。

发现邻居的任务 --- 在BGP中由手工指定邻居关系来替代

建立邻居的任务 --- 在BGP中由OPEN报文来承担

保活邻居的任务 --- 在BGP中由Keeplive报文来承担

1、Open包 --- 建立邻居关系

        AS号:在手工建立邻居关系时声明的邻居的AS号。对端收到后会检查其是否和本地的AS号一致,一致则正常建立邻居关系。

        认证:BGP也可以在建邻时做认证,需要比对双方认证口令,不一致则无法建立邻居关系。

        Router-ID:主要区分和标定路由器。OPEN报文中携带RID的目的是为了确保双方的RID不一致。确保其唯一性,如果相同,则无法正常建立邻居关系。RID 也是由32位二进制构成,并且遵循IP地址的格式。也可以通过两种方法获取,一种是手工配置;另一种是自动获取。(先在自己路由器的环回接口中选择最大的IP地址作为RID,如果没有环回接口,则在自己物理接口中选择IP地址最大的作为RID)

注意:在接受邻居数据包时,其中的源IP地址必须和手工指定的邻居的IP地址一致才可以正常建立邻居关系。(这个地址将作为之后的更新源地址)

OPEN报文在建立邻居关系的时候也会携带保活时间(hold time)这个参数 --- 这个参数默认值为180S(即180S内若收不到对方发送的keeplive包或者Update包则将判定BGP链接中断) 双方建邻时携带这个值,但是并不要求必须相同。但是,执行时必须相同,所以,将会选择二者中较小的作为执行时间。

OPEN报文中也会将自身是否支持路由刷新功能的相关参数进行携带,双方进行协商,如果都支持,则可以开启路由刷新功能。

2、Keeplive包 --- 仅完成周期保活即可(保活TCP会话),不需要携带太多的参数,也不具备太多的功能。

        Keeplive报文的发送周期 --- 保活时间(hold time)的1/3,保活时间默认为180S,则周期发送时间默认为60S。

KeepLive包还有一个作用 --- 在收到对方发送的OPEN报文后,临时充当确认包的作用。 --- TCP本身具有确认机制,可以确保传输的可靠性,这里的确认主要是确认OPEN报文中携带的参数,如果认同对方的参数,则将回复Keeplive包进行确认。

3、Update包 --- 更新包 --- 携带路由信息的数据包 --- 包括目标网段,子网掩码信息以及BGP的各种属性

在Update包中存在撤销路由字段,我们可以直接将不可达的路由信息放在该字段下进行通告,以达到传递失效信息的目的。而不需要像RIP那样采用带毒传输的方式。

4、Notification包 --- BGP设计的一个告警机制 --- 当BGP检测到一个错误的时候,他将会用这个包进行告警,告知对端错误点在哪

5、Route-refresh包 --- 用于改变路由策略后请求对等体重新发送路由信息。(前提是对等体双方均支持路由刷新)

2,BGP的状态机

BGP的状态机仅描述BGP对等体建立过程中的状态变化。

BGP与OSPF的状态机的差别

因为BGP可以做到建立邻居关系和发布路由分开完成。

BGP的六种状态机

1、Idle状态 --- 空闲状态 --- 一开始,启动BGP之后,先处于IDLE状态,之后手工指定邻居关系。

当手工指定好邻居之后,BGP将开启检查步骤。他需要确认指定的IP地址在本地路由表中是否路由可达,如果可达,则开始尝试建立TCP会话,进入下一个状态。如果不可达,则将停留在IDLE状态。

2、Connect状态 --- 进行TCP会话连接的状态。如果TCP会话连接建立成功,则进入OPENsent状态;如果TCP会话建立失败,则进入Active状态,反复尝试重新建立会话连接。

注意:在建立TCP会话连接时,双方都会尝试建立连接,一方建立成功,则将创建一个双向的TCP会话通道;双方都建立成功,则将会出现两个双向通道,则需要关闭一个TCP通道。后面开始发送OPEN报文,其中会携带RID,双方将比较RID,仅保留RID大的一端发起的TCP连接,RID小的一端发起的TCP连接通道将被断开。

3、Active状态 --- TCP没建立连接成功,反复尝试重新建立会话连接。

4、OpenSent状态 --- 开始发送OPEN报文,报文中携带建立邻居关系所需的参数。当收到对端发送的OPEN报文后,将检查里面的参数。如果参数没有问题,则将回复一个keeplive作为确认,则进入下一个状态。

5、OpenConfirm状态 --- OPEN确认状态 --- 对端收到本段的OPEN报文后,确认参数无误,则将发送keeplive包进行确认。此时,则代表双方的OPEN包中的参数都确认无误则进入下一个状态;

6、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报文进行触发更新

BGP协议

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的基本配置

 一、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对等体关系的建立。

2)IBGP对等体环回建邻

[r2-bgp]peer 3.3.3.3 as-number 2

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

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

3)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,通过除了以上两种方式发布的路由 --- ?--- 重发布路由的起源码标记就是?

三、BGP路由聚合

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

                           --- 手工聚合

1、自动聚合
在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标记,则代表该路由被抑制,将不再加表和传递。自动聚合完成后会自动生成一条指向汇总的空接口路由进行防环。

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

2、手工聚合
[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 as-set --- 通过激活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 --- 可以查看一条路由的详情信息

IBGP水平分割机制创建的两种技术

1、路由反射器 --- Router Reflector --- RR
        我们可以将一台IBGP设备配置成为路由反射器(RR),被配置为路由反射器的设备在一定条件下将反射学习到的路由信息。

配置为路由反射器的条件

        在我们指定一台设备成为路由反射器RR的同时,必须指定一个或者多个邻居成为他的客户,RR和客户之间构成的系统我们称为反射簇,每一个簇设定一个簇ID --- 这个反射簇中RR的RID。其他没定义为客户的邻居被称为非客户。

反射规则:
1,如果路由反射器从自己客户处学来一条IBGP路由,则他将反射给自己所有的客户和非客户。

2,如果路由反射器从自己非客户处学来一条IBGP路由,则他将反射给自己所有的客户,但是不反射给非客户。 --- 非非不传

3,当路由器在进行路由反射时,只反射自己BGP路由中最优的路由。--- 和BGP路由的传递规则相同。

        因为IBGP水平分割主要时为了防止路由环路产生,而路由反射器反射后相当于打破了IBGP水平分割的规则,则将有可能出现路由环路。所以,为了避免路由环路从产生,路由反射器在设计的时候,专门引入了两个属性,来避免环路从产生。 --- Originator_ID(起源者ID),Cluster_list(簇列表)

起源者ID --- 放射这条路由信息始发者的RID --- 当这条路由经过RR反射之后,反射出来的路由信息中将增加这个属性。如果RR收到一条路由信息中已经存在起源者ID属性,则不去修改这个属性。当一台设备收到一条路由信息后,发现里面的起源者ID是自己本地的RID,则将不去接受这条路由信息,避免路由回传。

        如果,一个AS内部存在多次反射的话,那么,一定存在多个反射簇,则每个RR在反射路由信息的时候,会在路由信息中的簇列表属性中加入本地的簇ID。

注意:

1、这两个属性,只是用来在IBGP内部进行防环的,所以,当这些路由被传递到EBGP对等体时,将不携带这两属性。

2、RR在进行路由反射时,除了会在路由信息中添加以上两个属性外,其他属性不变。

RR的基本配置
[r3-bgp]peer 2.2.2.2 reflect-client --- 指定R2作为反射器客户,同时R3自己成为RR。

 2、联邦
        联邦EBGP关系之间仅继承EBGP之间路由传递的规则,但是不能像EBGP对等体一样修改路由属性,还需要遵守AS-BY-AS规则,是一种特殊的存在。

        联邦EBGP之间防环可以直接采用EBGP水平分割的机制来进行防环,直接在AS_PATH属性中增加成员AS号来进行防环,只不过,联邦的AS号会使用小括号括起来,来进行区分。 --- 这个属性主要是用来进行AS内部防环使用,所以,也不会传递给EBGP对等体。

联邦的基本配置

 AR2

[r2]bgp 64512 --- 联邦成员启动BGP进程时需要使用小号(联邦成员的AS号)启动

[r2-bgp]router-id 2.2.2.2

[r2-bgp]confederation id 2 --- 联邦成员进程中一定要声明自己的大号(真实所在的AS号)

[r2-bgp]peer 12.0.0.1 as-number 1

[r2-bgp]peer 3.3.3.3 as-number 64512 --- 和联邦成员建立IBGP邻居关系时使用小号

[r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0

AR3

[r3]bgp 64512

[r3-bgp]router-id 3.3.3.3

[r3-bgp]confederation id 2

[r3-bgp]peer 2.2.2.2 as-number 64512

[r3-bgp]peer 2.2.2.2 connect-interface LoopBack 0

[r3-bgp]confederation peer-as 64513 --- 需要建立联邦的EBGP对等体关系时,需要先声明对方的小号

[r3-bgp]peer 4.4.4.4 as-number 64513

[r3-bgp]peer 4.4.4.4 connect-interface LoopBack 0

[r3-bgp]peer 4.4.4.4 ebgp-max-hop 2 --- 因为联邦EBGP之间是按照EBGP对等体的传输规则来完成的,所以,默认的TTL值为1,并且存在直连检测,所以,需要通过修改TTL值的方式,让其关闭直连检测。

联邦解决IBGP水平分割的缺陷是一个联邦内部只能存在一对IBGP对等体关系,因为IBGP之间路由只能传递一次,所以,实际工程中,往往可以将联邦和路由反射器结合来使用

BGP的路由过滤
1,通过路由策略进行过滤
[r1]ip ip-prefix aa permit 192.168.1.0 24

[r1]route-policy aa deny node 10

Info: New Sequence of this List.

[r1-route-policy]if-match ip-prefix aa

[r1-route-policy]q

[r1]route-policy aa permit no 20

Info: New Sequence of this List.

[r1-route-policy]q

[r1]bgp 1

[r1-bgp]peer 12.0.0.2 route-policy aa export

2,通过前缀列表来进行过滤
[r2]ip ip-prefix aa deny 192.168.2.0 24

[r2]ip ip-prefix aa permit 0.0.0.0 0 less-equal 32

[r2]bgp 2

[r2-bgp]peer 12.0.0.1 ip-prefix aa import

3,通过过滤列表进行过滤
[r3]acl 2000

[r3-acl-basic-2000]rule deny source 192.168.3.0 0

[r3-acl-basic-2000]rule permit source any

[r3-acl-basic-2000]q

[r3]bgp 2

[r3-bgp]peer 13.0.0.1 filter-policy 2000 import

BGP的社团属性

      社团属性可以类似的理解为路由标记。我们可以给不同的BGP路由当中打入不同社团属性,之后,携带社团属性进行通告,之后,便可以根据路由中的社团属性抓取流量,制定策略。

        社团属性本身其实就是个标号,用来区分路由的 --- 由32位二进制构成

两种写法

1,直接十进制表示;

2,十六位:十六位 --- 前16位设定为该路由所在AS的AS号,后16位为自定义编号。

        注意,一条路由中可以打入多个社团属性

BGP当中,也定义了几个公认的社团属性

1,0X00000000 --- internet

        所有BGP路由默认属于这个名称为“internet”的社团中。如果我们使用路由过滤器匹配社团属性为internet的路由时,将匹配到任意一条BGP路由

2,0XFFFFFF02 --- no - advertise

        被打上这个社团属性的路由将不被通告给其对等体

3,0XFFFFFF01 --- no - expor

        被打上这个社团属性的路由间无法通告给自己的EBGP邻居(不包括联邦的EBGP邻居)

4,0XFFFFFF03 --- no - export - subconfed

        被打上这个社团属性的路由间无法通告给自己的EBGP邻居,包括联邦的EBGP邻居

 以上图环境配置社团的基本配置

[r1]route-policy aa permit node 10

Info: New Sequence of this List.

[r1-route-policy]apply community ?

  INTEGER<0-4294967295>     Specify community number

  STRING<3-11>                        Specify aa<0-65535>:nn<0-65535>

  internet                                     Internet(well-known community attributes)

  no-advertise                             Do not advertise to any peer (well-known community attributes)

  no-export                                  Do not export to externa peers(well-known community attributes)

  no-export-subconfed                Do not send outside a sub-confederation(well-known community attributes)

  none                                         No community attribute

[r1-route-policy]apply community no-advertise --- 在路由信息中添加社团属性

[r1-bgp]peer 12.0.0.2 advertise-community --- 各大厂商默认传递BGP路由信息时不通告社团属性,所以,必须通过此命令让社团属性正常通告。

通过社团属性过滤器抓流量

[r1-bgp]network 172.16.1.0 24 route-policy com1 --- 发布流量时更改属性

[r1-bgp]network 172.16.3.0 24 route-policy com2

[r1]ip community-filter 1 permit 1:11 --- 通过community-filter来抓流量

[r1]ip community-filter 2 permit 1:22

[r1]route-policy bb deny node 10

Info: New Sequence of this List.

[r1-route-policy]if-match community-filter 1

[r1-route-policy]q

[r1]route-policy bb permit node 20

Info: New Sequence of this List

[r1-route-policy]if-match community-filter 2

[r1-route-policy]apply community ?

  INTEGER<0-4294967295>     Specify community number

  STRING<3-11>                        Specify aa<0-65535>:nn<0-65535>

  internet                                     Internet(well-known community attributes)

  no-advertise                             Do not advertise to any peer (well-known community attributes)

  no-export                                  Do not export to externa peers(well-known community attributes)

  no-export-subconfed                Do not send outside a sub-confederation(well-known community attributes)

  none                                         No community attribute

[r1-route-policy]apply community no-export additive --- 注意,添加多个社团属性需要后面加参数 --- additive

[r1]route-policy bb permit node 30 --- 空表放通所有 

[r1]bgp 1

[r1-bgp]peer 12.0.0.2 route-policy bb export --- 调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值