摘自: https://blog.csdn.net/weixin_43751619/article/details/84954755

一,BGP协议原理与配置

边界网关协议( Border Gateway Protocol,BGP)是个复杂而又庞大的距离矢量动态路由协议,里面涉及许多非常复杂的配置。当然它的功能也非常强大,主要用于互联网AS之间的互连,BGP最主要的功能在于控制路由的传播和选择最优的路由。目前移动、电信和一些大的民营DC运行商都具有AS号,全国各大网络运行商都是通过BGP与自身的AS号来实现多线互联的。本次将依次介绍BGP路由协议工作原理以及应用场景和基本配置。

1,BGP协议概述

边界网关协议BGP是一种实现自治系统之间的路由可达,并选择最佳路由、提供无环路的域间距离矢量路由协议。早期发布的3个版本分别是BGP-1(RFC1105)、BGP-2(RFC1163)和BGP-3(RFC1267),1994年开始使用BGP4(RFC1771),2006年之后单播|PV4网络使用的版本是BGP4(RFC4271),其他网络(如|Pv6等)使用的版本是MP-BGP(RFC4760)。MP-BGP是对BGP4进行了扩展,来达到在不同网络中应用的目的,BGP-4原有的消息机制和路由机制并没有改变。MP-BGP在|Pv6单播网络上的应用称为BGP4+,在PV4组播网络上的应用称为MBGP( Multicast BGP)。BGP从多方面保证了网络的安全性、灵活性、稳定性、可靠性和高效性,BGP特征如下

  1. BGP采用认证和GTSM的方式,保证了网络的安全性
  2. BGP提供了丰富的路由策略,能够灵活地进行路由选路,并且能指导邻居按策略发布路由
  3. BGP提供了路由聚合和路由衰减功能用于防止路由振荡,有效提高了网络的稳定性。
  4. BGP使用TCP作为其传输层协议(端口号为179),并且支持BGP与BFD联动、 BGP Tracking和 BGP GR和NSR,提高了网络的可靠性在邻居数目多、路由量大且大部分邻居具有相同出口策略的场景下,BGP使用按组打包技术极大地提高了BGP打包发包性能。

2.BGP协议工作原理

BGP通过报文的交互完成邻居建立、路由更新等操作,共有Open、 Update、 Notification、 Keepalive

和 Route-refresh等5种报文类型。

  1. open报文:是TCP连接建立后发送的第一个报文,用于建立BGP邻居之间的连接关系。BGP邻居在接收到Open报文并协商成功后,将发送 Keepalive报文确认并保持连接的有效性。确认后,BGP邻居间可以进行 Update、 Notification、 Keepalive和 Route-refresh报文的交换。
  2. Update报文:用于在BGP邻居之间交换路由信息。 Update报文可以发布多条属性相同的可达路

    由信息,也可以撤销多条不可达路由信息。
  3. Notification报文:当BGP路由器检测到错误状态时,就向邻居发出 Notification报文,之后BGP

    连接会立即中断。
  4. Keepalive报文:BGP路由器会周期性地向邻居发出 Keepalive报文,用来保持连接的有效性。
  5. Route-refresh报文: Route-refresh用于在改变路由策略后请求对等体重新发送路由信息。

二,BGP选路规则

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

  1. 优选协议首选值( Prefva)最高的路由。协议首选值( Prefval)是华为设备的特有属性,该属性仅在本地有效。
  2. 优选本地优先级( Local Pref))最高的路由。如果路由没有本地优先级,BGP选路时将该路由按缺省的本地优先级100来处理。
  3. 依次优选手动聚合路由、自动聚合路由、 network命令引入的路由、 Import-route命令引入的路由,从对等体学习的路由。
  4. 优选AS路径( AS Path)最短的路由。
  5. 依次优选ogn类型为Gp.EGP、 Incomplete的路由。
  6. 对于来自同一AS的路由,优选MED值最低的路由。
  7. 依次优选EBGP路由、|BGP路由、 Localcross路由、 Remote Cross路由。PE上某个VPN实例的vPN4路由的ERT匹配其他VPN实例的RT后复制到该VPN实例,称为 LocalCross:从远端PE学习到的vPNw4路由的ERT匹配某个VPN实例的RT后复制到该VPN实例,称为 RemoteCross
  8. 优选到BGP下一跳GP度量值( metric最小的路由
  9. 优选 Cluster List最短的路由
  10. 优选 Router ID最小的设备发布的路由。如果路由携带 Originator ID属性,选路过程中将比较Originator ID的大小(不再比较 Router ID),并且优选 Originator ID最小的路由
  11. 优选从具有最小 IP Address I的对等体学来的路由。当到达同一目的地址存在多条等价路由时,可以通过BGP等价负载分担实现均衡流量的目的。形成BGP等价负载分担的条件是"BGP选择路由的策略”的1~8条规则中需要比较的属性完全相同。

BGP( Border Gateway Protocol)---边界网关协议的更多相关文章

  1. BGP路由协议(Border Gateway Protocol)

    BGP路由协议(Border Gateway Protocol) 目录 BGP路由协议(Border Gateway Protocol) 一.BGP概述 1.自治系统(AS,autonomous sy ...

  2. RIP、OSPF、BGP、动态路由选路协议、自治域AS

    相关学习资料 tcp-ip详解卷1:协议.pdf http://www.rfc-editor.org/rfc/rfc1058.txt http://www.rfc-editor.org/rfc/rfc ...

  3. 边界网关协议BGP

    Border Gateway Protocol (BGP) is a standardized exterior gateway protocol designed to exchange routi ...

  4. BGP(边界网关协议)简述

    BGP的起源 不同自治系统(路由域)间路由交换与管理的需求推动了EGP的发展,但是EGP的算法简单,无法选路,从而被BGP取代. 自治系统:(AS) IGP:自治系统内部协议,ospf,rip,is- ...

  5. protocol(协议) 和 delegate(委托)也叫(代理)---辨析

    protocol和delegate完全不是一回事. 协议(protocol),(名词)要求.就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现. 委托(delegate),(动 ...

  6. OC语言的Block与Protocol(协议)

    Block ● Block封装了一段代码,可以在任何时候执⾏行 ● Block可以作为函数参数或者函数的返回值,⽽而其本⾝身又可以带输⼊入参数或返回值. ● 苹果官⽅方建议尽量多⽤用block.在多线 ...

  7. loadrunner 脚本录制-Protocol Advisor协议分析器的使用

    脚本录制-Protocol Advisor协议分析器的使用 by:授客 QQ:1033553122 1.启动Protocol Advisor File > Protocol Advisor &g ...

  8. Protocol(协议)

    Protocol(协议) (一) (1)简介 1.Protocol:就一个用途,用来声明一大堆的方法(不能声明成员变量),不能写实现.看起来类似于一个类的接口, 不同的是协议没有父类,也不能定义实例变 ...

  9. 如何使用 Quagga BGP(边界网关协议)路由器来过滤 BGP 路由

    在之前的文章中,我们介绍了如何使用 Quagga 将 CentOS 服务器变成一个 BGP 路由器,也介绍了 BGP 对等体和前缀交换设置.在本教程中,我们将重点放在如何使用前缀列表prefix-li ...

随机推荐

  1. 二进制格式mysql

    1.二进制MySQL安装 #下载二进制格式的mysql软件包 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.31- ...

  2. 30天自制操作系统-day3

    30天自制操作系统-day3 前2天我们分别使用了直接使用二进制编辑器和简单的汇编指令生成了img文件,今天我们尝试一下使用稍微复杂一点的汇编指令 os.asm文件内容如下: ; hello-os ; ...

  3. [从源码学设计]蚂蚁金服SOFARegistry之服务上线

    [从源码学设计]蚂蚁金服SOFARegistry之服务上线 目录 [从源码学设计]蚂蚁金服SOFARegistry之服务上线 0x00 摘要 0x01 业务领域 1.1 应用场景 1.1.1 服务发布 ...

  4. HarmonyOS分布式任务调度开发之--你必须知道的bundleName

    背景 最近基于HarmonyOS在写一个通讯录的项目,已经完成了一个java版本的通讯录,通讯录数据全部存储在sqlite数据库中.现在在着手写一个JS版本的通讯录,这时候关于JS版本中数据的读取,我 ...

  5. 在项目中应该使用Boolean还是使用boolean?

    起因 在公司看代码时,看到了使用Boolean对象来完成业务逻辑判断的操作.和我的习惯不一致,于是引起了一些反思. boolean和Boolean的差别咱就不说了,我们仅探讨使用boolean与Boo ...

  6. 电子邮箱、邮件地址、网站地址正则表达式!几个有用的RE、regex、regexp!

    几个常用的正则表达式! r"\w[-\w\.]*@\w[-\w]*(\.\w[-\w]*)+" 这个是电子邮件地址的. r"<TAG\b[^>]*<(. ...

  7. 一文读懂 Kubernetes APIServer 原理

    前言 整个Kubernetes技术体系由声明式API以及Controller构成,而kube-apiserver是Kubernetes的声明式api server,并为其它组件交互提供了桥梁.因此加深 ...

  8. service代理模式及负载均衡

    [root@k8s-master ~]# vim service.yaml apiVersion: v1 kind: Service metadata: name: my-service spec: ...

  9. BINARY SEARCH 的一点说明

    在sap 之abap语言中,有‍BINARY SEARCH这个查找条件.使用read table 来读取内表时,使用‍BINARY SEARCH可以大大的提高查找的效率,为什么呢?学过数据库的人会知道 ...

  10. 关于SQL Server 镜像数据库快照的创建及使用

    从SQL Server 2005 SP 起,SQL 开始支持数据库镜像.它的设计目的是试图为SQL Server 提供一个具有实时性数据同步的灾难恢复技术,即能够提供数据冗余备份,切换起来比较方便.每 ...