自学内容网 自学内容网

BGP协议

一、BGP基础

1.BGP简介

BGP(Border Gateway Protocol,边界网关协议)是一种用于自治系统(AS)之间交换路由信息的EGP类别动态路由协议。BGP协议为不同AS间共享路由,工作时隔离两个AS的内部网络,形成一个独立的交互空间,且同时可以实施强大的策略来干涉选路。

(1)AS——自治系统

标准AS号长度为16位,范围:0-65535 

公有:1-64511

私有:64512 -65535

扩展AS号长度为32位,范围:约42亿

互联网路由和自治系统详细报告:http://www.cidr-report.org/as2.0/

(2)IBG与EGP的区别

IGP追求:收敛速度快,选择路径佳(无环),占用资源少 hop-by-hop  

EGP追求:可控性,可靠性,AS-BY-AS

(3)可控性

BGP协议不是路由的产生者,仅为搬运者,且AS间正常应该存在大量的链路来保障稳定性,故BGP协议传递的路由条目很难默认最佳选路,需要管理员对路由进行大量的策略来干涉选路。

(3)可靠性

BGP协议虽然像距离矢量协议一样仅传递路由条目,但更新量依然很大,为了避免对设备资源的占用选择了增量更新(仅触发、无周期),故需要保障所有的路由传递到位(可靠),因此BGP协议,基于TCP工作,TCP的三次握手条件使得TCP只能基于单播工作,同时BGP需要非直连建立邻居,BGP基于IGP之上,先IGP使BGP设备间IP可达,然后BGP才能基于TCP建立非直连邻居关系。

(4)AS-BY-AS

AS-BY-AS—以一个AS为一跳,将一个AS看成一个整体。

(5)专业名词

EBGP:外部的BGP邻居关系,两台处于不同AS的BGP路由器间建立的邻居关系

IBGP:内部的BGP邻居关系,两台处于同一个AS内的BGP路由器间的建立的邻居关系

2.BGP特点

1)无类别路径矢量,距离矢量的升级版:AS-BY-AS

2)使用单播更新来发送所有信息,基于TCP 179端口工作

3)增量更新,仅触发无周期

4)具有丰富的属性来取代IGP中度量进行选路,多个参数控制协议

5)可以在进项和出项对流量实施强大的策略,可控性

6)默认不被用于负载均衡,通过各种选路规则仅仅产生一条最佳路径

7)BGP支持认证和聚合(汇总)

3.BGP数据包

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

(1)Open

仅负责邻居关系的建立,正常进收发一次即可,携带route-id,hold time 默认3min。

(2)Keeplive

保活,周期1min查询邻居关系是否存在,实际保活TCP会话。

(3)Update

携带路由条目,目标网络号+各种属性。

(4)Notification

出现错误数据时收发。

4.BGP工作过程

工作过程:

  1. 管理员定义邻居的ip地址,前提要求对邻居ip可达(IGP可达)
  2. 启动BGP协议后,先目标端口为179进行TCP的三次握手来建立TCP的会话
  3. 会话建立后,收发open报文来建立邻居关系,生成邻居表 
  4. 邻居关系建立后,邻居间使用update共享路由条目,在收发了路由信息后,本地生成BGP表BGP表中装载本地发出及接收到的所有路由条目
  5. 之后路由器将BGP表中的最优路径(不一定是最佳选路,仅为BGP参数最佳)加载于路由表
  6. 收敛完成,仅keeplive周期保活即可

结构突变:

  • 新增网段 – BGP更新源设备将使用update来告知本地所有的邻居
  • 断开网段 – BGP更新源设备将使用update来告知本地所有的邻居
  • 无法沟通 – 3min hold time到时时断开邻居关系和TCP会话,之后删除从该邻居处学习到的所有信息

ps:BGP更新源设备并不一定直连断开或新增网段的设备,而是第一台将该路由发布到BGP协议中的路由器

 5.BGP的三张表

(1)邻居表

查看邻居表的摘要信息

(2)BGP路由表

(3)BGP的IP路由表

注意: EBGP邻居之间传递路由最小间隔为30s;IBGP邻居之间传递路由最小间隔为15s

6.BGP路由黑洞

由于bgp协议可以非直连建立邻居关系,故若两台BGP邻居间存在未运行BGP协议的路由时,可能出现路由条目可以在控制层面正常单播传递,但数据层面流量经过未运行BGP协议的设备时,无法通行,控制层面可达,数据层面不可达。

解决方法:

  1. 物理或逻辑链路全连
  2. 全连的BGP邻居关系,所有设备运行bgp
  3. 将BGP路由条目重发布到IGP协议中(实验环境)
  4. MPLS多协议标签交换(最佳方案)

7.BGP防环机制

(1)EBGP水平分割(防止EBGP环路)

利用BGP条目中的as-path 属性,该属性将记录所有经过的AS编号,接收到的路由条目中,若as-path中存在本地的AS号,将拒绝接收。

(2)IBGP水平分割(防止IBGP环路)

基于AS-BY-AS特性,BGP的路由条目默认在一个AS内部传递时,其属性不变化;

从一个IBGP邻居处学习到的路由条目不得传递给本地其他IBGP邻居。 因为BGP协议具有非直连建立邻居的能力,故在一个AS内部只要设备运行BGP协议,那么其必然存在EBGP邻居关系(一定连接了其他的AS)。

IBGP水平分割规则将导致在一个AS内部所有运行了BGP协议的路由器间,均需要建立IBGP邻居关系,才能正常传递路由条目(建立邻居关系的配置成指数增长)。可以使用联邦和路由反射器来解决该问题。

二、BGP配置

1.BGP的基础配置

(1)使用直连接口ip地址来建立EBGP邻居关系

[r1]bgp 1        # 启动时需要定义真实的AS号,没有多进程概念
[r1-bgp]router-id 1.1.1.1        # 建议手工配置RID,手工(优先)-环回最大值(其次)-物理接口最大值(最后)
[r1-bgp]peer 12.1.1.2 as-number 2        # 对端IP地址,及对端所在的AS号

(2)使用环回接口ip地址来建立IBGP邻居关系

[r3]bgp 2

[r3-bgp]router-id 3.3.3.3

[r3-bgp]peer  2.2.2.2 as-number 2

[r3-bgp]peer  2.2.2.2 connect-interface LoopBack 0        # 一旦使用环回接口作为目标ip地址时,也应该修改源为本地的环回接口ip地址

(3)若EBGP邻居间存在多条直连链路时,也建议使用环回接口来建立

1.写到达环回接口的静态路由

[r4]ip route-static 5.5.5.0 24 45.1.1.2

2.建立BGP邻居关系

[r5]bgp  3

[r5-bgp]router-id 5.5.5.5

[r5-bgp]peer  4.4.4.4 as-number 2

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

(4)BGP规定EBGP邻居间默认所有的BGP数据包TTL值为1,导致环回建立邻居关系服务正常

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

2.BGP的路由宣告

BGP协议本身不计算生成路由条目;负责转发从其他BGP邻居传递过来的路由条目,同时可以将本地路由表中任意路由宣告到BGP协议中来。BGP宣告配置时,只能宣告本地路由表中的路由条目,且宣告配置中网络号的掩码必须和路由表中的记录完全的一致。

[r1]bgp 1

[r1-bgp]network 1.1.1.0 24

当BGP设备进行宣告配置后,本地生成BGP表:装载本地发出及接收到所有BGP路由

[r1]display  bgp routing-table

 BGP Local router ID is 1.1.1.1

 Status codes: * - valid, > - best, d - damped,

               h - history,  i - internal, s - suppressed, S - Stale

               Origin : i - IGP, e - EGP, ? - incomplete

 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)network引入默认next-hop 属性为0.0.0.0

2)network通告路由传递给IBGP邻居或EBGP邻居时,下一跳默认为更新源地址(即建立TCP三次握手的对方IP地址)
3)BGP学习路由传递给EBGP邻居时,下一跳为EBGP邻居建立的更新源地址(EBGP邻居路由传递给EBGP邻居时也一样)

4)EBGP学习路由传递给IBGP邻居时,下一跳不发生改变

ps:

在cisco中默认将IGP协议通告进入BGP时,将原IGP路由的下一跳地址作为BGP路由的下一跳属性传递给其他IBGP邻居时,IBGP邻居发现路由的下一跳属性为自己的接口地址,启用下一跳防环机制,阻止路由加表,下一跳属性具有防环功能。

在华为中,将所有的路由通告进入BGP时,下一跳属性为0.0.0.0,并且传递给其他IBGP邻居时下跳属性直接变为更新源地址,下一跳属性不存在防环功能,所有的再修改优先级的时候可能导致路由环路。

特别说明:在思科中,若IBGP和EBGP邻居都使用MA网络进行连接,同时EBGP邻居使用MA物理接口建立邻居,此时将IBGP邻居路由传递给EBGP邻居时,下一跳属性为到达IBGP邻居的MA物理接口地址。

[r2]bgp 2

[r2-bgp]peer  3.3.3.3 next-hop-local        # 将BGP路由传输给邻居3.3.3.3时修改下一跳属性为本地(2.2.2.2)条目传递给本地的ebgp邻居,自动修改属性,包括下一跳为本地;

[r3]bgp 2

[r3-bgp]peer 4.4.4.4 next-hop-invariable        # 保持原有下一跳,配合route-police使用

三、BGP进阶

1.对等体组

peer group : 将多个peer 划入一个group中,针对group实施BGP邻居关系建立的配置

创建group:

针对group定义配置(注意在IBGP peer-group中,所有在同一AS,所有不需要单独建立BGP邻居命令):

将peer划入对等组:

2.路由反射器

3种角色:RR(反射器) 客户端    非客户端     

3者构建一个簇:可以理解为RR为中心站点,客户端或非客户端是分支站点

要求所有分支与中心必须是IBGP邻居关系;在一个簇中至少存在一台客户端;

规则:

  1. RR从一台EBGP邻居处学习到的路由可以传输给本地的客户端、非客户端、其他EBGP邻居
  2. RR从一台客户端邻居处学习到的路由,可以传输给本地的其他客户端、非客户端、其他EBGP邻居
  3. RR从一台非客户端邻居处学习到的路由条目,可以传输给本地的客户端,其他EBGP邻居,不得传输给本地的其他非客户端

注意:若路由条目不优,不具有传递性,反射器也无法反射路由

[r3-bgp]peer 2.2.2.2 reflect-client        # 该指令的作用,是让2.2.2.2成为本地的客户端,同时本地成为路由反射器

3.联邦

将一个真实的大AS,逻辑的分为多个小AS,小AS的编号建议为私有编号,小AS间构建联邦内的EBGP邻居关系,可以向真实EBGP关系一样传递路由条目,但不修改属性,对于该大AS外的其他AS,是不知道内部的小AS情况。

(1)联邦内所有运行BGP协议的设备均声明自己所在的大AS号

[r2]bgp 64512

[r2-bgp]confederation id  2

(2)小AS间互指peer,在联邦内的ebgp邻居关系间的两台设备,互相定义对端的小AS号

[r4-bgp]confederation peer-as 64512

(3)配置邻居关系

[r3]bgp 64512

 [r3-bgp]router-id 3.3.3.3

 [r3-bgp]peer 2.2.2.2 as-number 64512

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

 [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

注意:华为设备,必须先定义联邦的id,和互相小AS号后再配置邻居关系建立的命令

4.团体属性

团体属性为可选可传递属性。

标准团体属性:针对传递的路由信息进行标记

扩展团体属性:定义BGP路由的传播范围

扩展团体属性类型:

Internet——可以传递给所有邻居

no-advertise——不能传递给任何邻居

no-export——不能传递出大的AS

no-export-subconfed——不能传递出小的AS

默认情况下,所有路由器识别并支持所有的属性,但是不传递。

开启支持传递标准团体属性:

开启支持传递扩展团体属性:

四、BGP特性

1.路由导入和导出

(1)路由导入 :1.network 自身通告(可以通告所有路由表的路由条目) 2.import 重发布引入

1.network 引入next-hop属性永远为0.0.0.0,将原本IGP中的metric值以MED属性的方式引入

注意: 在思科中,若引入的路由是存在下一跳地址的(IGP或下一跳做法的静态),则引入的路由下一跳属性为原始路由的下一跳地址目的是为了IBGP协议防环,BGP不接收下一跳为自己的BGP路由;在华为中,network引入的路由下一跳属性为0.0.0.0,失去了下一跳防环机制可能会导致路由环路。

2.默认import引入属性与network通告属性相同(区别: 起源码属性为?)

3.BGP协议默认关闭自动汇总,若开启自动,仅仅针对重发布进入的路由生效,将引入的明细路由进行抑制,进行自动汇总(汇总成主类),同时MED属性丢失

开启或关闭自动汇总:

(2)路由的导出: import

BGP协议import进入IGP协议时,默认只能将EBGP邻居学习并加表的路由导出进入IGP协议,可以通过参数permit-ibgp,将IBGP邻居学习路由也引入进IGP协议。

2.增加BGP协议的安全性

(1)BGP路由认证:BGP的路由认证信息存在于TCP数据结构中,密码信息使用MD5 方式

查看BGP认证信息

(2)限制BGP邻屁的TTL值,启用BGP TTL限制:修改了TTL值限制之后,EBGP邻居建立过程中相当于修改EBGP多跳

3.BGP邻居关系重置

(1)重置BGP邻居(断开三次插手,重新建立):

(2)手工进行BGP路由刷新(默认该属性已开启):

4.路由过滤

方法一:使用 route-policy 进行路由过滤(可以在import export方向上实施)

方法二:使用 filter-policy ,可以在BGP协议中直接使用(filter-policy可以正常调用ACL或前缀列表),在针对某BGP邻居过程中使用过滤列表只能调用ACL

(1)方法一配置:
1.使用ACL或前缀列表抓取需要被过滤的路由

2.使用 route-policy 过滤路由

3.BGP peer之间调用 route-policy

(2)方法二配置:

1.使用ACL 或前缀列表定义策略

2.全局中 fitter-policy 调用

在BGP邻居关系建立过程中进行路由过滤(使用fitter-policy只能调用ACL )

1.定义ACL

2.调用

5.路由聚合

(1)利用BGP可以network所有加表的路由

使用静态可以将网段聚合:

宣告:

(2)使用聚合者属性进行路由聚合

注释:
1.默认情况,发送聚合路由也发送所有的明细路由。

2.detail-suppressed,仅仅发送聚合路由,抑制所有的明细路由发送。

3.suppress-policy ,使用抑制列表进行控制,抑制列表调用route-policy,此时route-policy仅仅抓取感兴趣路由(只有permit),抑制列表自身有过滤功能。

4.origin-policy,就是条件策略,针对origin-policy中匹配的路由存在时,聚合才会生效。

5.attribute-policy ,仅仅针对聚合路由进行策略控制(改变聚合路由属性)。

6.as-set,可以还原聚合路由中丢失的某些属性(例如AS-path)。

注意:在进行路由聚合时,会丢弃某些属性,例如AS-path,导致网络故障(严重的会出现路由环路),还有一些属性会自动生成一些默认值。

存在问题的属性:

1.AS-Path(丢失)

2.origin((默认使用所有明细中最差的)

3.LP(丢失)

4.团体属性(丢失)

使用AS-SET属性之后:

AS-PATH:会将经过的所有AS恢复,若存在重复的多个AS路径中,将所有经过的AS写入到个叫做AS序列属性中, 在计算AS-path长度时仅仅算一个。

Origin:默认使用所有明细中最差的 (思科中默认使用i,使用了AS-SET之后才会选择最差的)

LP:丢失(思科中,使用最小的LP)

COM:丢失(在思科中会恢复所有团体属性,同时使用)

 6.路由惩罚

特点:

1.被惩罚的路由不能参与选路,不能加入本地的IP路由表,不能传递。

2.路由惩罚仅仅针对EBGP邻居学习的路由,并且针对的是某一个邻居传递的路由并非路由条目本身。

惩罚值:路由条目每翻滚一次,惩罚值+1000,路由属性每改变一次惩罚值+500,不能修改。

惩罚门限:超过了惩罚门限开启路由惩罚,默认值为2000。

重用门限:当惩罚值低于该值,重新使用该路由信息,默认750。

半衰期:默认为15分钟。

思科:设置了一个最大的惩罚时间默认为60分钟。即Maxpenalty=reuselimit*2^(maximulnsuppresstime/halftime)

在思科中,最大惩罚值是计算出来的,所以值修改路由惩罚参数时,需要提前运算,保证最大惩罚值一定时大于惩罚门限的。

华为:最大惩罚值默认为16000。

启用路由惩罚:

查看路由惩罚参数:

查看被惩罚的路由:

清除所有被惩罚的路由信息:

五、BGP选路

选路条件:BGP路由必须有效,无环的,不能被惩罚。

当到达同一目的地存在多条路由时,BGP依次对比下列属性来选择路由:

1.优选协会首选值(PrefVal)最高的路由。协议首选值是华为设备的特有属性,该属性仅在本地有效。

2.优选本地优先级(Local_Pref)最高的路由。

3.next-top为0.0.0.0最优先。

4.优选AS路径(AS_Path)最短的路由。

5.依次优选Origin类型为IGP、EGP、Incomplete的路由。

6.对于来自同一AS的路由,优选MED值最低的路由。

7.EBGP邻居学习路由优于IBGP邻居学习路由。(联邦EBGP当作普通IBGP路由对待)

8.优选最近的下一跳(下一跳地址在本地路由表中的metric值)

9.可以执行负载均衡---

10.最小的router-id(若存在起源者属性,比router-id时使用起源者属性,若相同则继续比较)

11.优选Cluster_List最短的路由

12.最小的peer IP地址


原文地址:https://blog.csdn.net/obboda/article/details/141335514

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!