分享

您的BGP报文学习笔记(三)已抄送完毕,请查收!

 网络工程师老杨 2021-08-05

BGP防环机制

No.1

BGP防环

路由条目在跨越AS时,每经过一个AS的边界路由器,会将此路由器的AS号放入路由条目的AS-Path属性中(最左边),记录此路由条目所经历的AS-ID。当AS边界路由器收到路由条目,首先查看它的AS-Path属性,如果AS-Path属性中存在自己BGP的AS号,则认为出现环路,丢弃此路由条目。

No.2

IBGP防环

在AS内,没有一种BGP路由属性用来定义AS内防环的,所以IBGP采用水平分割的机制,当从IBGP邻居传递过来的路由,不会再次传递到IBGP邻居。

BGP配置过程

① 启用BGP并配置本地AS号

② Peer对等体

③ 等待建立邻居

④ Network宣告网段

No.1

启用BGP并配置本地AS号

全局模式下使用命令[Huawei]bgp 100启用BGP并配置本地AS号

AS-ID:

其中AS-ID在报文中占16bit,最多可以支持2^16=65535个ID:

① 公有AS号:1-64511

② 私有AS号:64512-65535

No.2

Peer对等体

在BGP进程下,使用命令peer 192.168.1.2 as-number 100指定邻居IP和AS号。

(1)默认直连建立邻居:

默认Peer对等体之后,路由器使用与对端直连的端口或IGP对应的出接口建立邻居。

(2)LoopBack口建立邻居:

当与对等体之间不止一条TCP链路时,可以使用逻辑地址建立邻居加强冗余,当一条实际物理链路断掉时,启用另一条建立TCP邻居。

使用命令[Huawei-bgp]peer  192.168.1.2 connect-interface loop 0进行端口修改,此命令只是对主动端发送Open报文时使用哪个接口的IP地址进行设置,如果被动端收到Open报文时,报文的源地址就是本设备的Peer地址,检测无误,则会使用Open报文中的目的地址为源地址回复Open报文建立邻居。

① AR1为主动端,在Connect状态主动发起Open报文,源地址为1.1.1.1,目标地址为2.2.2.2

② AR2收到Open报文后,源地址为Peer地址,报文通过,并且发送本端的Open报文,由于为TCP连接,使用源Open报文的源地址为本端Open报文的源地址

③ AR1收到Open报文后,通过检查,邻居建立

No.3

等待建立邻居

BGP协议使用单播TCP进行邻居的建立,可以使用本地任何端口进行邻居建立,单播建立邻居的好处是支持多跳邻居建立,默认EBGP TCP报文中的TTL值只有一跳,如果使用Loopback地址或跨跳建立邻居,会造成邻居不可达现象。

使用命令:[Huawei-bgp]peer  192.168.1.2 ebgp-max-hop 10 修改TTL值

EBGP报文抓包:

No.4

Network宣告网段

BGP使用命令network进行路由宣告,宣告路由的必须要存在路由表中,否则无法宣告。

No.5

BGP优化

从IBGP学到的路由条目,有可能没有*,表示没有被优化,如果BGP路由表中的路由没有被优化,此路由条目不会放入IP路由表,通常没有被优化的的原因为:

① 下一跳不可达

② BGP同步

(1)下一跳不可达:

默认从EBGP学习到的路由条目在传递给IBGP邻居的时候默认不会修改路由的下一跳地址,用于防止次优路径,但是会带来路由不可达的现象。

Ø 使用命令[Huawei-bgp]peer  192.168.1.1 next-hop-local修改源地址

Ø 在路由协议中引入之间接口

(2)BGP同步:

通过BGP学习到的路由,并且也可以通过IGP学习到,才能通告给对等体,称之为BGP同步,当开启BGP同步后,

如果足了同步的条件才能通告给邻居,华为undo synchronization默认不开启,并且无法开启

No.6

路由传递

BGP默认不使用附载均衡,所以当同一个目的地存在多条等价路径时,BGP协议也会选择出一条最优的路由放入IGP路由表,传递给邻居。

BGP对等体路由交互原则:

① IBGP路由,只发送给EBGP对等体

② EBGP路由,发布给所有EBGP和IBGP对等体

③ 只将最优路由发布给对等体

④ 只发送增量更新的BGP路由

路由反射器

Route Reflector,由于IBGP水平分割的原因,为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。假设在一个AS内部有n台设备,那么建立的IBGP连接数就为n(n-1)/2。当设备数目很多时,设备配置将十分复杂,而且配置后网络资源和CPU资源的消耗都很大。在IBGP对等体间使用路由反射器可以解决以上问题。

路由器反射器对路由进行反射,对于同一目标多条路由反射器只会选一条最优的(选路规则),并且默认不会修改任何的属性值,可以在Clint入路由进行修改。

注:如果在反射器上使用命令[Huawei-bgp]reflect change-path-attribute命令,此时可以修改反射器反射发送的路由属性参数(huawei交换机不支持)

No.1

反射器角色 

路由反射器定义了以下几种角色:

① Route Reflector 路由反射器

② Client 客户机

③ Non-Client 非客户机

④ Originator 始发者

⑤ Cluster集群 

(1)Route Reflector:

路由反射器RR,允许把从IBGP对等体学到的路由反射到其他IBGP对等体的BGP设备,类似OSPF网络中的DR。

(2)Client:

客户机,与RR形成反射邻居关系的IBGP设备。在AS内部客户机只需要与RR直连。

(3)Non-Client:

非客户机,既不是RR也不是客户机的IBGP设备。在AS内部非客户机与RR之间,以及所有的非客户机之间仍然必须建立全连接关系。

(4)Originator:

Originator-ID为始发者Router-ID,在AS内部始发路由的设备。Originator_ID属性用于防止集群内产生路由环路。

(5)Cluster:

集群,路由反射器及其客户机的集合,通常一个集群中只有一个RR和一群客户端。Cluster_list属性用于防止集群间产生路由环路。

No.3

反射器原则

(1)反射器:

① 反射器从IBGP非客户端接收到的路由,传递给所有的客户端和EBGP邻居。

② 反射器从客户端接收到的路由,传递给所有的客户端、非客户端和EBGP邻居

③ 反射器从EBGP邻居接收的路由,传递给所有的客户端、非客户端和EBGP邻居

(2)客户端:

① 客户端从反射器学来的路由,只传递给EBGP邻居

No.3

反射器规划 

(1)同一集群内的客户机只与RR建立关系:

客户机需要通过RR便可以知道网络中的路由条目,所以同一个集群内所有的客户端只需要与RR建立邻居关系即可。

ClUSTER1配置:

R2:

[Huawei]bgp 200

[Huawei-bgp]router-id 2.2.2.2

[Huawei-bgp]reflector cluster-id 1----设置本端的簇为1

[Huawei-bgp]group g1----创建组g1

[Huawei-bgp]peer  4.4.4.4 group g1---将对端4.4.4.4加入组1

[Huawei-bgp]peer  5.5.5.5 group g1---将对端5.5.5.5加入组1

[Huawei-bgp]peer  6.6.6.6 group g1---将对端6.6.6.6加入组1

[Huawei-bgp]peer g1 reflect-client----将组g1设为此RR的客户端

CLENT:

在所有的客户端上,只需有建立余RR的邻居关系即可。

(2)集群间RR建立IBGP全互联关系:

每个集群只有一个RR,所以此时IBGP中的RR便可以建立全互联的IBGP邻居关系。

如果一个集群内存在多个RR做冗余:

Ø 由于Cluster id相同,所以另外一台RR不会接收,所以同RR之间不需要建立IBGP邻居

Ø 如果存在EBGP路由,此时RR之间需要建立IBGP邻居传递EBGP路由,因为没有破坏水平分割,所以RR不会增加这两种属性

No.4

反射器防环

增加了路由反射器破坏了IBGP的“水平分割”防环机制,所以为了防止路由在IBGP传递时防止出现环路,RR在传递路由时会增加两种属性值,并且这两种属性只在IBGP之间传递,当在EBGP之间传递时,会将这两种属性删除

注:只有在破坏“水平分割”的情况下才会增加这两种属性值,在RR收到EBGP邻居传递过来的路由时传递给Client时不会增加两种属性值,只有收到IBGP路由时反射给Client时会增加。

(1)Originator id:

起源属性,用于防止集群内出现环路

① 可选非过渡

② 用于集群内的防环

③ 由RR产生,携带了本地AS内该路由发送者的Router ID

原理:

① 路由第一次被RR反射给客户端时,RR会将传递给RR的路由器ID作为Orginator属性加到这条路由中,用来标识这条路由的起源路由器。

② 如果路由中已经存在Originator属性,反射器不会创建新的Originator。

③ 当其他BGP对等体收到这条路由时,将对收到的Originator和本地路由表中的BGP Router-ID进行比较如果两者相同,BGP对等体将会忽略掉这条路由,不做处理Originator属性可以传递给其它的Cluster,路由在AS内传递时该属性不会丢失。

注:如果AR2为AR3的RR,AR2再将1.1.1.1/32的路由传递给AR3时,由于没有破坏水平分割,所以不会增加着两种属性

(2)Cluster List:

Cluster List属性用于防止集群间产生路由环路

① 可选非过渡

② 用于集群间的防环

③ 由每个路由反射器产生,记录反射路由经过的集群

注:一个AS内可以有多个簇,每个簇可以存在多个RR,同簇中的RR相同,不同簇的ID不相同

原理:

① 当路由反射器在客户端之间或客户端与非客户端之间反射路由时,会将自己的

Cluster—ID增加到Cluster List中

② 路由反射器收到BGP路由后检查其中的Cluster List,如果发现自己的Cluster-ID位于Cluster-ID中,则表明出现了路由环路,会忽略掉该路由。

Ø 当客户机Client1从EBGP对等体接收到一条更新路由,它将通过IBGP向RR1和RR2通告这条路由。

Ø RR1和RR2在接收到该更新路由后,将本地Cluster ID添加到Cluster List前面,然后向其他的客户机(Client2、Client3)反射,同时相互反射。

Ø RR1和RR2在接收到该反射路由后,检查Cluster List,发现自己的Cluster ID已经包含在Cluster List中。于是RR1和RR2丢弃该更新路由,从而避免了路由环路。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多