当前位置: 代码网 > 服务器>网络>网络协议 > 网络协议——BGP(边界网关协议)全网最详解

网络协议——BGP(边界网关协议)全网最详解

2024年08月02日 网络协议 我要评论
AS: 指的是在同一个组织管理下,使用统一选路策略的设备集合,AS取值范围四字节( 0~43亿。
1. 什么是as?

as: 指的是在同一个组织管理下,使用统一选路策略的设备集合,as取值范围四字节( 0~43亿

2. bgp概念

        bgp是边界网关协议,用于自治系统间的动态协议路径矢量。基于tcp中应用层协议,端口号为179,只发送增量路由更新

3. bgp特点
  1. bgp使用tcp作为其传输层协议(端口号为179),使用触发式路由更新,而不是周期性路由更新。
  2. bgp能够承载大批量的路由信息,能够支撑大规模网络。
  3. bgp提供了丰富的路由策略,能够灵活的进行路由选路,并能指导对等体按策略发布路由。
  4. bgp能够支撑mpls/vpn的应用,传递客户vpn路由。
  5. bgp提供了路由聚合和路由衰减功能用于防止路由振荡,通过这两项功能有效地提高了网络稳定性。
4. bgp对等体关系

        ebgp:位于不同as的bgp路由器之间的bgp对等体关系。两台路由器之间要建立ebgp对等体关系,必须满足两个条件:

                        两个路由器所属as不同(即as号不同)。

                        在配置ebgp时,peer命令所指定的对等体ip地址要求路由可达,并且tcp连接能够正确建立。

        ibgp:位于相同自治系统的bgp路由器之间的bgp邻接关系。

5. bgpigp区别

        igp:发现路由

        bgp:传递路由

6. bgp作用

        路由控制和优选

        传递路由

7. 基础配置

ibgp配置(在同一个as域内)

进入bgp进程:bgp 100
绑定对端bgp: peer 10.1.1.2 as-number 100(绑定对端环回地址和as)
绑定自己环回接口:peer 10.1.1.2 connect-interface loopback0
宣告自己的环回地址:network  10.1.1.1 32

ebgp配置:(在不同as域内)

进入bgp进程:bgp 100
绑定对端bgp: peer 192.168.10.2 as-number 200 (绑定对端接口ip地址和as)
宣告自己的环回地址:network  10.1.1.1 32
    (如果用环回接口创建时)
      绑定对端bgp:peer 10.1.1.2 as-number 200 (绑定对端环回地址和as)
      改变最大跳数:peer 10.1.1.2 ebgp-max-hop 2

查询命令:

查看bgp对等体信息:display bgp peer
查看bgp错误信息:display bgp error
查看bgp路由表信息:display bgp routing-table
查看一条bgp详细信息:display bgp routing-table 10.1.1.1
8. tcp连接源地址

        缺省情况下,bgp使用报文出接口作为tcp连接的本地接口。

        在部署ibgp对等体关系时,建议使用loopback地址作为更新源地址。loopback接口非常稳定,而且可以借助as内的igp和冗余拓扑来保证可靠性。

        在部署ebgp对等体关系时,通常使用直连接口的ip地址作为源地址,如若使用loopback接口建立ebgp对等体关系,则应注意ebgp多跳问题。

9. bgp报文类型

10. open报文

        version(8bit):bgp的版本号。对于bgp 4来说,其值为4。

        my as(autonomous system):本地as号。通过比较两端的as号可以判断对端是否和本端处于相同as。

        hold time:保持时间。

        bgp identifier:bgp标识符,以ip地址的形式表示,用来识别bgp路由器。

11. update报文格式

        unfeasible routes length(2byte): 不可达路由字段的长度,以byte为单位。如果为0则说明没有withdrawn routes 字段。

        withdrawn routes(nbyte): 不可达路由的列表

total path attribute length(2byte):

        path attributes(nbyte): 路径属性列表,每个路径属性由一个tlv(type-length-value)三元组构成。

        nlri(nbyte): 可达路由的前缀和前缀长度二元组

 12. notification报文格式

        error code、error subcode:差错码、差错子码,用于告知对端具体的错误类型。

        data:用于辅助描述详细的错误内容,长度并不固定。

13. keepalive报文格式

        keepalive报文格式中只包含报文头,没有附加其他任何字段,周期60s

14. route-refresh报文格式

        afi:address family identifier,地址族标识,如ipv4。

        res.:保留,8个bit必须置0。

        safi:subsequent address family identifier,子地址族标识。

15. bgp状态机

        idle:开始准备tcp的连接并监视远程对等体,启用bgp时,要准备足够的资源

        connect正在进行tcp连接,等待完成中,认证都是在tcp建立期间完成的。如果tcp连接建立失败则进入active状态,反复尝试连接

        active:tcp连接没建立成功,反复尝试tcp连接

        opensent:tcp连接已经建立成功,开始发送open包,open包携带参数协商对等体的建立

        openconfirm参数、能力特性协商成功,自己发送keepalive包,等待对方的keepalive包

        established:已经收到对方的keepalive包,双方能力特性经协商发现一致,开始使用update通告路由信息.

        idle初始化状态,谁先建立tcp链接谁就是start事件发起者,进入connect状态建立tcp链接,建立成功进入opensent,建立失败进入active状态,在active中还会反复建立连接,在active建立成功进入opensent,建立失败返回connect,在opensent状态发送open包,协商对等体参数,对方收到open包进入opencofirm状态,在openconfirm状态发送keepalive包,当对端收到keepalive包进入established状态,至此对等体建立成功,除active状态中间任何一个状态建立失败都会返回idle状态

16.bgp路由生成

        bgp注入路由的方式有两种:

        network:注入路由

        import-route:(直连路由,静态路由,ospf路由,is-is路由,等协议的路由注入到bgp路由表中。)

17. bgp聚合路由

        手动聚合

        建立好对等体之后

        ar1:        

进入回环接口:interface loopback 1
创建按回环地址:ip address 172.16.10.1 32
………
进入bgp宣告回环地址:network 172.16.10.1 32
……..
进入bgp进行聚合:aggregate 172.168.10.0 255.255.255.0 detail-suppressed  as-set

        如果在执行聚合时指定了detail-suppressed,则bgp只会向对等体通告聚合后的路由,而不通告聚合前的明细路由。

ar2

查询聚合:display bgp router-table

自动聚合(只能聚合引入的路由)

进入bgp进行聚合:summary automatic

18. bgp路由通告原则

通告原则一:只发布最优且有效(即下一跳地址可达)路由。

通告原则二:从ebgp对等体获取的路由,会发布给所有对等体。

通告原则三:从ibgp对等体获取的路由,不会再发送给其他ibgp对等体。该条原则也被称为“ibgp水平分割”。

通告原则四:当一台路由器从自己的ibgp对等体学习到一条bgp路由时(这类路由被称为ibgp路由),它将不能使用该条路由或把这条路由通告给自己的ebgp对等体,除非它又从igp协议(例如ospf等,此处也包含静态路由)学习到这条路由,该条规则也被称为bgp同步原则。(ibgp和igp同步)

18. bgp路由表状态代码

*:表示路由有效,下一跳可达                  >:   表示选出的bgp最优路由

d: 表示路由是衰减路由                             h: 表示路由是历史路由

i: 表示内部路由                                        s: 表示被抑制状态

s:处于stale状态的路由,正在被删除

19. bgp属性:

        1. 公认: 

                1. 公认必遵:必须包括在每个update消息里

                    origin(起源):标识bgp路由的起源,去往一个目的地有多条起源,其他条件相同,顺   序优选路径为:ibgp>ebgp>incomplete

                    as-path:前往目标的路由经过的as号列表,防止ebgp环路,和进行路由优选

                    next_hop:指定到达目标下一跳地址

                2. 公认任意:可能包括在某些update中

                    local_preference(本地优先级):用于告诉as中的路由器,哪条是离开本as的首选路径,越大越优,缺省100c

  1.                     atomic_aggregate(原子聚合):用于标记聚合

          2. 可选:

                1. 可选过度:不识别此属性但依然会接收该属性通告给其他对等体

                  aggregator: 手工聚合

                  community(团体属性):是一种路由标记,用于简化路由策略的执行

        

         3. 可选非过度:不识别此属性会忽略此属性,也不会通告给其他对等体

                  med: 属性越小越优先

                  cluster-list:蔟列表

                  originator-id:路由反射器反射过去携带的属性

        4. 华为私有属性:preferred-value(协议首选值):优选preferred-vlue高的路由取值范围(0~65535)只能在本地设置,不会传递给对等体,主要用于as之间,选大

19. as-path属性更改配置

    配置允许环路:   

进入bgp视图:bgp200
宣告对等体:peer 192.168.10.1 as-number 100
允许环路:peer 192.168.10.1 allow-as-loop(允许环路)

    选路配置:   

acl抓取网段:acl 2000
            rule 5 permit source 1.1.1.1 0
route-policy设置:
                 route-policy name1 permit node 10
                 if-math acl 2000
                 apply as-path 10 20 30 40 50 additive(添加)(overwrite替换)(none overwrite清空)
  bgp调用:
          bgp 200
          peer 192.168.10.1 route-policy a import

     as-path-filter工具

抓取as:ip as-path-filter  asname permit 200
       route-policy设置: route-policy a deny node 10
       if-math as-path-filter asname

bgp中调用:bgp 100
           peer 192.168.10.1 route-policy a import
19. next_hop属性配置

next_hop默认三种下一跳不可达:

        1. 路由器将bgp路由通告给自己的ebgp对等体时,将该路由的next_hop设   置为自己的tcp连接源地址。

        2.  ebgp通告给ibgp时,会保持next_hop保持不变,

        3.  next_hop属性值与ebgp对等体(更新对象)同属一个网段,那么该条路由的next_hop地址将保持不变并传递给它的bgp对等体。

进入bgp:bgp 200
设置下一跳为本地出接口:peer 1.1.1.1 next_hop_local
20. local_preference属性配置

选路配置:

抓取网段:ip ip-prefix wh index 10 permit 1.1.1.1 32
使用路由策略:route-policy a permit node 10
                       if-math ip-prefix  wh
                       apply local-preference 1000
bgp中调用:bgp 100
      peer 192.168.10.1 route-policy a import

更改默认local_preference值:

进入bgp:bgp 200
更改默认本地优先级值:default local-preference 10000

local_preference注意事项:

  1. 不能在ebgp中传递
  2. 在传递到ibgp中ibgp会产生缺省local_preference,再传递给ibgp对等体
  3. 使用bgp default local-preference命令修改缺省local_preference值,该值缺省为100。
  4. 路由器在向其ebgp对等体发送路由更新时,不能携带local_preference属性,但是对方接收路由之后,会在本地为这条路由赋一个缺省local_preference值(100),然后再将路由传递给自己的ibgp对等体。
  5. 本地使用network命令及import-route命令引入的路由, local_preference为缺省值100,并能在as内向其他ibgp对等体传递,传递过程中除非受路由策略影响,否则local_preference不变。
21. community属性

        internet: 0  默认向所有的对等体发送路由

        no-advertise:0xffffff02 收到此属性路由不向任何对等体发送

        no-export:0xfffffff01 收到后不向as外发送路由

        no-export-subconfed:0xffffff03 收到路由后,即不向as外发也不向子as发

路由配置:

抓取网段:ip ip-prefix wh index 10 permit 1.1.1.1 32
使用路由策略:route-policy a permit node 10
                       if-math ip-prefix  wh
                       apply community no-export ( internet,advertise,no-export-subconfed ,100:200)
bgp中调用:bgp 100
          peer 192.168.10.1 route-policy a export
开启团体属性: peer 192.168.10.1 advertise-community

        community-filter工具

        ar1:

抓取网段:ip ip-prefix 4 index 20 permit 10.1.100.5 32
使用路由策略:route-policy w1 permit node 40
                                     if-match ip-prefix 4
                       apply community 100:200
bgp中调用:bgp 100
                    peer 192.168.1.2 route-policy w1 export

        ar4:

使用community-filter工具:ip community-filter 1 permit 100:200
使用路由策略:route-policy w2 deny node 10
                        if-match community-filter 1
bgp中调用:bgp 2001
                    peer 2.2.2.2 route-policy w2 import

22. 联盟

        将一个as内部划分为多个子as

        配置命令:

    

进入子asbgp: bgp2000
标识属于的联盟:confederation id 200
标识要建立对等体的子as号:confederation peer-as 2001 2002
建立对等体:peer 192.168.1.1 as-number 2001
peer 192.168.2.1 as-number 2002
更改下一跳为本地:peer 192.168.1.1 next-hop-local
                 peer 192.168.2.1 next-hop-local
22. preferred-value属性(华为特有属性,越大越优,本地有效)

路由配置

抓取网段:ip ip-prefix 1 index 10 permit 4.4.4.4 32
使用路由策略:route-policy wh1 permit node 10
                       if-match ip-prefix 1
                       apply preferred-value 10000
                      #
默认允许:route-policy wh1 permit node 20
bgp中应用:bgp 100
peer 2.2.2.2 as-number 100
peer 2.2.2.2 connect-interface loopback0
peer 2.2.2.2 route-policy wh1 import
23. med属性:

注意事项:1.  缺省情况下,路由器只比较来自同一相邻as的bgp路由的med值;

  1. 如果一条路由是本地开始通过import或network引入的,则默认携带med属性通告给med对等体
  1. 一条bgp路由为从bgp对等体学习到,那么该路由传递给ebgp对等体时缺省不会携带med属性。
  2. 在ibgp对等体之间传递路由时,med值会被保留并传递

默认操作:1. 如果路由器通过igp学习到一条路由,并通过network或import-route的方式将路由引入bgp,产生的bgp路由的med值继承路由在igp中的metric

    2. 如果路由器将本地直连、静态路由通过network或import-route的方式引入bgp,那么这条bgp路由的med为0,因为直连、静态路由cost为0

     3. 一条从bgp学习到的路由传递给其他ebgp对等体时,默认不携带med,med不会跨as传递

          4. 修改默认med值时只能通过import-route和aggregate(聚合)的路由生效

路由配置:            

抓取网段:ip ip-prefix 1 index 10 permit 192.168.1.1 24
             使用路由策略:route-policy wh1 permit node 10
                                    if-match ip-prefix 1
                                    apply cost 100
            bgp中应用:bgp 100
peer 2.2.2.2 as-number 100
peer 2.2.2.2 connect-interface loopback0
peer 2.2.2.2 route-policy wh1 import
compare-different-as-med (比较不同的as的med)  
24. bgp路由反射器

反射规则:

  1. rr从非客户端学习到的ibgp路由会反射给所有客户端
  2. rr从客户端学习到的ibgp路由会反射给所有的除该客户端之外客户端和非客户端
  3. rr从ebgp对等体学习到的路由会发送给所有的非客户和客户对等体

       反射和发送的区别反射携带特殊属性,发送不携带特殊属性 (originator_id,cluster_list)

       路由反射器特殊属性:

  1. originator_id:当bgp路由器收到一条携带originator_id属性的ibgp路由,并且originator_id属性值与自身的router id相同,则它会忽略关于该条路由的更新
  2. cluster_list:当一条路由被反射器反射后,该rr(该簇)的cluster_id就会被添加至路由的cluster_list属性中。 当rr收到一条携带cluster_list属性的bgp路由,且该属性值中包含该簇的cluster_id时,rr认为该条路由存在环路,因此将忽略关于该条路由的更新。

       命令配置:

进入bgp:bgp 200
配置他的对等体为客户端: peer 3.3.3.3 reflect-client
配置路由反射器集群id:reflector cluster-id
25. bgp选路原则
  1. 首先丢弃下一跳next_hop不可达的
  2. 优选协议首选值(preferred-value)值最大的路由
  3. 优选本地优先级(local_pref)最高的
  4. 优选手动聚合>自动聚合>network>import>对 等体学到的
  5. 优选as路径as_path最短的路由
  6. 优选origin属性最优的路由:i>e>?
  7. 优选med值最小的
  8. 优选ebgp对等体学习的路由
  9. 优选next_hop的igp度量值最小的
  10. 优选cluster_list最短的路由
  11. 优选router_id最小的设备通告的路由
  12. 优选具有最小ip地址的对等体通告的路由

16. bgp路由负载分担

负载分担前提条件:

  1. preferred-value属性值相同。
  2. local_preference属性值相同。
  3. 都是聚合路由或者非聚合路由。
  4. as_path属性长度相同。
  5. origin类型(igp、egp、incomplete)相同。
  6. med属性值相同。
  7. 都是ebgp路由或都是ibgp路由。
  8. as内部igp的metric相同。
  9. as_path属性完全相同。

负载分担配置:

进入bgp:bgp 100
配置负载分担:maximum load-balancing ibgp 2
配置不比较as_path:load_balancing  as_path_ignore

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com