首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

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

  • 25-02-21 20:20
  • 3753
  • 9949
blog.csdn.net
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. BGP和IGP区别

        IGP:发现路由

        BGP:传递路由

6. BGP作用

        路由控制和优选

        传递路由

7. 基础配置

IBGP配置:(在同一个AS域内)

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

EBGP配置:(在不同AS域内)

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

查询命令:

  1. 查看BGP对等体信息:display bgp peer
  2. 查看BGP错误信息:display bgp error
  3. 查看BGP路由表信息:display bgp routing-table
  4. 查看一条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:        

  1. 进入回环接口:interface loopback 1
  2. 创建按回环地址:ip address 172.16.10.1 32
  3. ………
  4. 进入BGP宣告回环地址:network 172.16.10.1 32
  5. ……..
  6. 进入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属性更改配置

    配置允许环路:   

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

    选路配置:   

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

     as-path-filter工具

  1. 抓取AS:ip as-path-filter  asname permit 200
  2. route-policy设置: route-policy A deny node 10
  3.   if-math as-path-filter asname
  4. BGP中调用:BGP 100
  5.   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对等体。

  1. 进入BGP:BGP 200
  2. 设置下一跳为本地出接口:peer 1.1.1.1 next_hop_local
20. Local_preference属性配置

选路配置:

  1. 抓取网段:ip ip-prefix wh index 10 permit 1.1.1.1 32
  2. 使用路由策略:route-policy A permit node 10
  3.                        if-math ip-prefix  wh
  4.                        apply local-preference 1000
  5. BGP中调用:BGP 100
  6.       peer 192.168.10.1 route-policy A import

更改默认local_preference值:

  1. 进入BGP:BGP 200
  2. 更改默认本地优先级值: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发

路由配置:

  1. 抓取网段:ip ip-prefix wh index 10 permit 1.1.1.1 32
  2. 使用路由策略:route-policy A permit node 10
  3.                        if-math ip-prefix  wh
  4.                        apply community No-Export ( Internet,Advertise,No-Export-Subconfed ,100:200)
  5. BGP中调用:BGP 100
  6.       peer 192.168.10.1 route-policy A Export
  7. 开启团体属性: peer 192.168.10.1 advertise-community

        Community-filter工具

        AR1:

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

        AR4:

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

22. 联盟

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

        配置命令:

    

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

路由配置

  1. 抓取网段:ip ip-prefix 1 index 10 permit 4.4.4.4 32
  2. 使用路由策略:route-policy wh1 permit node 10
  3.                        if-match ip-prefix 1
  4.                        apply preferred-value 10000
  5.                       #
  6. 默认允许:route-policy wh1 permit node 20
  7. BGP中应用:bgp 100
  8. peer 2.2.2.2 as-number 100
  9. peer 2.2.2.2 connect-interface LoopBack0
  10. 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(聚合)的路由生效

路由配置:            

  1. 抓取网段:ip ip-prefix 1 index 10 permit 192.168.1.1 24
  2.              使用路由策略:route-policy wh1 permit node 10
  3.                                     if-match ip-prefix 1
  4.                                     apply cost 100
  5.             BGP中应用:bgp 100
  6. peer 2.2.2.2 as-number 100
  7. peer 2.2.2.2 connect-interface LoopBack0
  8. peer 2.2.2.2 route-policy wh1 import
  9. 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认为该条路由存在环路,因此将忽略关于该条路由的更新。

       命令配置:

  1. 进入BGP:BGP 200
  2. 配置他的对等体为客户端: peer 3.3.3.3 reflect-client
  3. 配置路由反射器集群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属性完全相同。

负载分担配置:

  1. 进入BGP:BGP 100
  2. 配置负载分担:maximum load-balancing ibgp 2
  3. 配置不比较AS_PATH:load_balancing  as_path_ignore

文章知识点与官方知识档案匹配,可进一步学习相关知识
网络技能树路由BGP46157 人正在系统学习中
注:本文转载自blog.csdn.net的hackD_K的文章"https://blog.csdn.net/wh940830165/article/details/137783025"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

129
网络与通信
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top