第十一天的笔记

BGP—边界网关协议

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

1,网络范围太大,协议跑不过来,需要进行划分

2,自治管理

为了方便区分和标定不同的AS,我们给每个自持系统设计了一个编号—AS号–16位二进制构成—0 - 65535;其中0和65535为保留值,不用,所以,AS号真正的取值范围为1-65534;我们将64512-65534AS号称为私有AS号—因为传统的A号存在不够用的问题,所以目前也存在拓展版的AS号—32位构成—目前绝大多数设备已经支持拓展版的AS号

EGP协议之前还存在一款协议—EGP,但是由于其功能有限,后来在其基础上进行优化和改进,生成了现在的BGP协议,目前AS之间使用最广泛的协议就是BGP协议

在目前IPV4环境下,使用最广泛BGP版本是BGPV4.目前市场上已经存在BGPV4+又称为MP-BGP–可以支持多种地址族的应用

在BGP的情况下,我们通过重发布技术也可以实现不同AS之间的路由信息共享,但是,之所以采用BGP而不是重发布,主要因为重发布本身存在缺陷:

1,重发布本身存在缺陷—在多点重发布中,因为种子度量值问题,必然造成选路不佳

2,ASBR设备归属问题

BGP在AS之间共享路由信息的方式一定是共享路由条目信息。原因主要是:

1,拓扑信息资源占用量太大,而BGP需要传递的数量巨大

2,拓扑信息将暴露AS内部的拓扑连接情况。

BGP协议被称为无类别的路径矢量协议。

路径矢量和距离矢量的区别— 1,距离矢量中的距离指的是开销,也就是跳数,是以一台路由器作为单位计算距离。而路径矢量中则是将一个AS看作一个整体,将一个AS作为一跳。

2,BGP协议不存在算法的概念,而距离矢量是根据算法来划分的,因为IGP协议本身需要通过算法来计算出未知网段的路由信息。BGP协议只是将IGP协议计算出来的路由信息传递给其他运行AS之中,相当于仅将现成的路由进行传递而不需要计算

IGP协议的评判标准 — 选路佳,收敛快,占用资源少

EGP协议的关注点

1,可控性 — AS之间需要传递大量的路由信息,所谓可控,就是可以更方便的干涉选路,更方便做路由策略 — 为了弥补重发布的缺陷。

为了保证路由的可控性,方便选路。BGP协议直接舍弃了开销值,取而代之的是BGP给每条路由信息附加了丰富的路径属性。我们可以通过多种路径属性进行灵活的选路,使得BGP协议具有强大的可操控性。因为BGP需要传递的路由信息的数量非常庞大,所以,他无法采用周期更新,只存在触发更新。

2,可靠性 — BGP协议为了保证传输的可靠性,直接采用TCP协议作为传输层的协议来工作。使用TCP 的179号端口来工作。

IGP协议不选择TCP的原因 – 1,TCP速度较慢;2,TCP占用资源较大;3,TCP只能实现单播,所以无法通过组播或者广播的形式发送,则将导致IGP协议无法自动发现邻居,只能手工指定

因为BGP选择使用的是TCP协议,所以,BGP需要手工建立邻居关系

BGP因为传输层使用的是tcp协议,所以,只要TCP协议在正常建立会话的基础上就可以完成BGP的建邻工作.—BGP支持非直连建邻----BGP的非直连建邻是承载在IGP(静态路由)的基础上的。

在BGP中,我们将邻居关系称为对等体关系

AS之间的 — EBGP对等体关系 — 如果建立对等体的两台路由器位于不同的AS中,则他们的关系就被称为EBGP对等体关系。

AS内部的 — IBGP对等体关系 — 如果建立对等体的两台路由器位于同一个的AS中,则他们的关系就被称为IBGP对等体关系。

一般情况下,IBGP对等体关系可以非直连建邻,而EBGP对等体关系之间是直连建邻的,所以,IBGP间建邻时,他所构成的数据包中的TTL值为255。但是,在EBGP对等体关系建邻时,他构成的数据报中TTL值为1。若EBGP对等体之间需要非直连建邻,则必须将数据包中的TTL值手工修改。

3,AS - BY - AS:在BGP中,始终是将一个AS看作是一个整体。 ----- BGP不支持负载均衡。不管到达相同网段存在多少条路由信息,BGP只会选择其中的一条加载到路由表中。

1,BGP的数据包

因为BGP传输层使用的是TCP协议,所以,传输的可靠性全部由TCP协议来保证,不需要额外的设计确认报文。

ospf中的hello包可以实现周期性的发现,建立和保活邻居关系

BGP中发现邻居关系 — 需要通过人手工来指定邻居关系。

BGP中建立邻居关系 — 由open报文来完成

BGP中保活邻居关系 — Keeplive包来完成

在BGP中,发现邻居关系的过程变为由人手工指定,主要是因为tcp协议需要建立会话通道,之后才会基于通道发送数据

open包 — 建立BGP对等体关系。---- 邻居关系的建立无非就是参数协商的过程。BGP建立邻居关系需要通过OPEN包来携带参数,进行比对协商

AS号 — 在创建邻居关系时需要指定对方的AS号,并且,这个AS号会在OPEN报文中携带。若对方收到数据包中发AS号和本地的AS号不同,则将无法正常建立邻居关系。

认证 — 在BGP中也可以进行邻居间的认证,在数据包中将携带认证口令,口令相同,则将正常建立邻居关系,不同,则无法建立。

Router-ID — 其作用也是用来区分和标定不同路由器的,在OPEN报文中也会携带这个参数。对端在收到后将会比较数据包中的RID和本地的RID,相同则代表冲突,无法建立邻居关系。不同,则可以正常建立邻居关系。

BGP中的RID和OSPF中的完全一样 — 也是由32位二进制

构成,按照IP地址的格式配置。

生成方法 — 1,手工配置;2,自动生成(先看本地环回接口,取最大的作为RID,如果没有环回,则取物理接口IP最大的作为RID。)

手工指定邻居关系时所配置的目标IP地址必须和邻居发来的OPEN报文中的源IP地址一致,否则将无法正常建立邻居关系。

Holdtime — 保活时间 — 默认时间为180S,在保活时间内,如果没有收到对方发送的keeplive包或者update包,则将断开BGP邻居关系。这个参数在open报文中将被携带,但是,双方不一致不会影响邻居关系的建立,但是在执行时,这个时间必须是一

致的,则将采用双方中较小的保活时间来使用。

路由器是否支持刷新功能也将成为OPEN报文中所携带的一个协商

参数。

keeplive包 — 周期保活 — 周期发送时间等于保活时间的1/3。默认

保活时间180S,则默认的周期发送时间为60S。除了保活之外,keeplive包还将在open报文协商参数时临时充当确认包的作用。

TCP协议进行确认的目的是为了保证数据传输的可靠性,而keeplive报文确认的目的是为了确认认可对方发送的open报文中的参数。

update包 — 更新包 — 携带需要传递的路由信息的数据包。表示一

条路由条目信息,需要携带的参数主要就是目标网络号和子网掩码信息,以及路径属性。

在更新包中,存在一个撤销路由条目字段,在这个字段下的路由条

目将需要对端删除,而不再需要通过带毒传输的方式来表达。

notification包 — BGP中设计的一个告警机制。

Route-refresh包 — 用于改变路由策略变更后请求对等体重新发送路由信息。(前提条件是双方均支持路由刷新功能才行。)

2,BGP的状态机

BGP的状态机描述的是BGP对等体建立过程中状态的变化。因为BGP这个协议可以将邻居建立过程和路由收发过程分开进行。BGP的状态机 — 6种

IDLE — 空闲状态 — 路由器启动BGP进程之后,将先处于idle状态。当你手工指定邻居关系后,BGP将进入到一个检查环节,检查指定的IP地址在本地路由表中是否可达。如果可达,则将进入到下一个状态 — connect。

Connect — 连接状态,该状态完成TCP会话的建立。如果TCP会话建立成功,则将进入到opensent状态,发送open报文。如果TCP会话建立失败,则将进入ACTIVE状态,尝试重新建立TCP会话。

在建立TCP会话过程中,因为双方都会主动发起建立会话的过程,而最终建立的都是一个双向的会话。所以,最终只需要保持一个会话通道即可。选择方式是通过后续open报文中的RID进行比较,选择保留RID大的设备发起的TCP会话。

Opensent — 发出本地的open报文。收到对端发送的open报文,查看里面的参数,之后,如果确认参数无误。则将回复keeplive报文作为确认。

Openconfirm — open报文确认状态 — 对端也收到本地发送的open报文,之后根据里面的参数进行确认。如果确认无误则将发送keeplive报文。本段收到对方发送的keeplive报文之后将进入下一个状态。

Established — 建立状态 — 标志着BGP对等体关系的建立。

3,BGP的工作过程

1,基于IGP协议实现IP可达

2,指定邻居关系,通过三次握手,建立TCP的会话通道。之后所有BGP的数据报都将基于TCP会话通道来进行传递。

3,使用open报文和keeolive报文进行邻居关系的建立。之后将邻居关系收集到一张表中 — 邻居表。

4,通过update报文传递路由信息。传递的路由条目信息中主要包含目标网络号,掩码信息,以及各种路径属性。之后,设备会将所有自己发出的以及收到的路由信息记录在一张表中 — BGP表。

5,之后将BGP表中的最优路径加载到路由表中。

6,收敛完成后,BGP将周期使用keeplive报文进行保活。保活时间默认为180S,周期发送时间默认为保活时间的1/3,即60S。

7,若出现错误信息,将使用notification报文进行告警。

8,若发生结构突变,则将使用update报文进行触发更行。

4,BGP的路由黑洞

6,BGP的基本配置

1,BGP建邻的基本配置

1,EBGP对等体关系直连建邻

[r1]bgp 1 ---- 启动BGP进程 ---- 后面的1不是进程号,而是配置路由器所在AS的AS号

[r1-bgp]

[r1-bgp]router-id 1.1.1.1 — 配置RID

[r1-bgp]peer 12.0.0.2 as-number 2 — 手工指定对等体关系

[r1]display bgp peer — 查看BGP邻居表的命令

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

[r2-bgp]peer 3.3.3.3 as-number 2

[r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0 — 指定在给3.3.3.3发包时使用的源IP地址为环回接口0的IP地址。

注意:在使用环回接口建立对等体关系时,一定要修改发接口。

3,EBGP对等体关系之间的非直连建邻

注意:在EBGP对等体关系之间,一般是不具备非直连建邻的路由基础的,所以,需要先保证地址可达才行。

[r4-bgp]peer 5.5.5.5 as-number 3

[r4-bgp]peer 5.5.5.5 connect-interface LoopBack 0

[r4-bgp]peer 5.5.5.5 ebgp-max-hop 2 — 因为EBGP对等体之间一般是直连建邻,所以,数据包中的TTL值设置为1,要想非直连建邻,则需要将这个值改大。

[r5-bgp]peer 4.4.4.4 ebgp-max-hop — 如果后面不跟参数,则代表将TTL值修改为最大值255

2,发布路由

1,network — 在BGP中只能用来发布路由条目信息

注意:只要是路由表中存在的路由条目信息,BGP都可以通过Network来进行发送。

[r1-bgp]network 1.1.1.0 24 — 目标网段信息及掩码必须和路由表中的完全一致才行。

[r1-bgp]display bgp routing-table — 查看BGP表

Network NextHop MED LocPrf PrefVal Path/Ogn *> 1.1.1.0/24 0.0.0.0 0 0 i

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

NextHop — BGP的一个路径属性 ---- 谁发的路由信息,下一跳就是谁,如果是自己发的,则下一跳为0.0.0.0。

状态码

* — 代表可用 — 设备每收到一跳路由信息,都会检查其下一跳的可达性。即根据下一跳在路由表中递归查询,只要可达,则改

路由信息可用。

> — 代表优选 — 当收到到达相同网段存在多条路由信息时,

BGP将在其中根据属性优选出一条加载到路由表中。这条优选路由将赋予这个标记。注意:只有一条路由条目是可用且优选的,他才能够被加到路由

表中,也才能够被传递给其他的BGP对等体。

1.1.1.0/24 EBGP 255 — 通过EBGP对等体学到的BGP路由信息,其标记为EBGP,默认的优先级为255。

I — 状态码I — 代表BGP路由信息是从自己IBGP对等体处学到的

i 1.1.1.0/24 12.0.0.1 — 因为在AS内部存在AS-BY-AS规

则,所以,默认情况下传递的属性信息是一致的,因为这个下一跳也属于路属性之一,默认情况下也不会传递,则将可能导致路由可用性校验失败。

[r2-bgp]peer 3.3.3.3 next-hop-local — 在给3.3.3.3传递路由信息是将下一跳属性改为本地

1.1.1.0/24 IBGP 255 — 通过IBGP对等体学到的BGP路由信

息,其标记为IBGP,默认的优先级为255。路由表中的NextHop直接使用的是BGP属性中的下一跳,因为之前进行过可用性校验,所以,可以保证能够递归查找找到这个下一跳。

2,重发布

[r2-bgp]import-route ospf 1 — 将OSPF的路由信息导入到BGP当中。

OGN — 起源码 — I,e,? — 用来标识路由条目的起源

I — 代表该路由信息起源于IGP协议(不局限于IGP协议,包括静态,直连),代表该路由条目起源于AS内部 —通过network发布出来的路由信息其起源码为IE — 代表该路由信息起源于EGP协议 — EGP指的是BGP之前使用的外部网关协议

? — 通过除了以上两种方式学习到的路由 — 重发布导入的路由起源码都是?

7,BGP的路由聚合

自动聚合 — 1,该方法只能针对重发布发布的路由信息生效。 2,自动聚合的路由只能按照主类进行聚合,将造成巨大的路由黑洞。所

以,华为设备BGP的自动聚合功能是默认关闭的。

1,抓取流量

[r1]ip ip-prefix aa permit 172.16.0.0 22 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

[r1-route-policy]q

3,在重发布过程中调用路由策略

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

[r1-bgp]summary automatic — 开启自动聚合的方法

Info: Automatic summarization is valid only for the routes imported

through the import-route command.

*> 172.16.0.0 127.0.0.1 — 通过自动聚合会发布一条新的汇总路由,他是不携带子网掩码的,因为按照主类汇总,则子网掩码取主类默认值。而且通过聚合发布的路由信息其下一跳属性为127.0.0.1

注意:自动聚合之后,发布的汇总路由信息将在本地路由表中产

生一条指向汇总的空接口,自动防环。

状态码 — S — suppressed — 抑制 — 抑制路由条目的传递手工聚合 — 因为自动聚合存在两个缺陷,所以,如果需要对汇总进行精准把控时,手工聚合将是更理想的方案。

[r1-bgp]aggregate 172.16.0.0 22 — 手工聚合

*> 172.16.0.0/22 127.0.0.1 — 手工聚合后发布的路由条目将携带掩码信息,并且下一跳也是指向127.0.0.1,则其也会自动生成一条到达汇总网段指向空接口的路由进行防环。

手工聚合的问题:1,发布聚合路由的情况下,不会抑制明细路由,导致汇总操作并没有减少路由条目数量,反而增加了。2,在进行汇总的时候,发布的汇总路由不会继承明细路由的属性,尤其是AS_PATH,则将导致汇总路由部分属性缺失,甚至可能出现环路。

为了避免以上两个问题的产生,我们必须在配置过程中增加命令

来完成。

[r4-bgp]aggregate 172.16.0.0 22 detail-suppressed — 在发布汇总

路由条目的同时将抑制所有的明细路由但是,因为BGP协议的一些特殊性,我们往往不能将其所有的明细路由全部抑制。只能够抑制部分的路由信息 — 所以我们需要使用到suppressed - 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

[r4-route-policy]q

3,使用抑制策略调用路由策略

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

对于第二个问题,我们专门设计了一个AS_SET关键字,如果在配置命令的时候,将这个关键字激活,则BGP在汇总路由时,将携带上明细的AS_PATH属性,来进行防环。

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

*> 172.16.0.0/22 127.0.0.1 0 {1 4}? — 如果

明细路由携带的AS_PATH属性不一样,则在激活了AS_SET属性后,汇总路由将会把明细路由的AS号都携带上并且用大括号括起来,之后,在进行防环的时候,里面所有AS号都将生效,都不能回传。但是,在使用AS_PATH属性进行选路的时候,当作一个AS来看待。

因为聚合后的路由信息存在属性丢失问题,所以,这样的汇总路

由需要格外的关注。为此,我们为BGP专门引入了两个属性 —

ATOMIC_AGGREGATE,AGGREGATOR

ATOMIC_AGGREGATE — 纯粹预警属性 — 只有在抑制全部明细路由时才会携带

AGGREGATOR — 将携带汇总者的RID以及其所在的AS号

Aggregator: AS 2, Aggregator ID 4.4.4.4, Atomic-aggregate

[r4]display bgp routing-table 172.16.0.0 — 查看一条路由的详细情

8,路由反射器

Router Reflector — 路由反射器 — RR ---- 我们可以通过配置,将某些设备在一定的条件下设置称为路由反射器,之后,该设备将可以反射所学习到的IBGP路由信息

我们在指定一台路由器称为路由反射器(RR)的同时,必须在他

的IBGP对等体关系中选择一个或者多个设备称为他的客户(client),RR和客户之间所构成的系统我们称为反射簇(Cluster)。每一个反射簇都将使用RR的RID作为簇ID。其余没有称为RR客户的IBGP对等体关系,我们将称其为非客户。

路由反射器的反射规则:

1,当路由反射器从自己客户处学习到一条路由,则他将会把这条路

由信息反射给自己所有的客户以及非客户

2,如果路由反射器从自己的非客户处学习到一跳路由,则他将把这

条路由信息反射给自己所有的客户但是不能反射给非客户。“非非不传”

3,当路由器执行路由反射时,他只将自己使用的最优的BGP路由进行反射。

9,联邦

10,BGP的选路原则

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值