BGP的起源

不同自治系统(路由域)间路由交换与管理的需求推动了EGP的发展,但是EGP的算法简单,无法选路,从而被BGP取代。

自治系统:(AS)

IGP:自治系统内部协议,ospf,rip,is-is,发现和计算路由信息

EGP:自治系统外部协议,传递路由信息,缺点:只负责传路由信息,不进行路由控制。

BGP(边界网关协议)是一种用于自治系统间的动态路由协议。

与其他协议的区别:作用在AS之间,IGP是自治系统学习路由信息和计算路由信息,BGP传递路由信息的,本身没有学习和计算路由表的功能。

BGP协议特性(单播传输)

  • BGP是自治系统外部路由协议,用来在AS之间传递路由信息。
  • 路径矢量路由协议(DV算法),从设计上避免了环路的发生(AS编号)
  • 由TCP协议承载,端口号为179
  • 支持CIDR(超网)和路由聚合
  • 路由附带丰富的属性
  • 只发送增量路由更新
  • 路由过滤和路由策略

BGP的术语:

  • BGP发言者(BGP Speaker):发送BGP消息的路由器称为BGP发言者(起了BGP协议就是BGP发言者)
  • BGP对等体(BGP peer):相互交换消息的BGP发言者互称为BGP对等体
  • EBGP对等体:处于不同AS的BGP对等体为EBGP对等体,通常情况下EBGP对等体是物理上直连。(RTA和RTB、RTD和RTE)
  1. BGP发言者从EBGP对等体获得的路由会向它所有BGP对等体通告(包括EBGP和IBGP)。
  • IBGP对等体:处在同一AS的BGP对等体为IBGP对等体,可以直连也可以不直连。 
  1. 从IBGP获得的路由不向它的IBGP对等体发布(防环)。
  2. 从IBGP获得的路由是否发布给它的EBGP对等体与是否同步相关。

BGP中转发"黑洞"产生:

RTA发送路由(100.10.1.0/24)给RTB,RTB给RTD发,如果不考虑其他因素,RTD会讲路由发给RTE。。RTE发送数据包给RTA后,到RTD上后查BGP路由表,有路由,但是下一跳是RTB,再查RTD的IGP路由表没有下一跳给RTC,但是RTC没有100.10.1.0的路由,所以数据包被丢弃。为什么RTC学不到路由呢?因为BGP是单播传的,从RTB发给RTC,发现目的地址不是自己,而是RTD的,根本就不会解包

解决方法:IBGP全连接的状态或者反射器。

BGP同步:(默认同步是关的)

BGP同步是指IBGP和IGP之前的同步,目的是为了防止在某种情况下转发"黑洞"的出现。。

开启同步后,只有在IGP也知道这条IBGP路由时,才会被发布给EBGP对等体。 

BGP的消息和状态机:

BGP消息种类:

Open:用于建立BGP对等体之间的连接关系(ospf的hello包),Open报文只发一次(建立邻居关系)(类型1)

Keepalive:周期性的向BGP对等体发出Keepalive消息,用来保持连接的有效性和对收到的Open消息进行回应,(保活的)发送周期60s,老化时间180s(类型4)

Update:携带的是路由更新(删减、增加)信息 (NLRI(更新的),Withdraw(删除该路由))(类型2)

Notification:当BGP检测到错误状态时,就向对等体发出Notifition消息,之后BGP连接会立即被关闭。(类型3)

Route-refresh:用于在改变路由策略后请求对等体重新发送路由信息(类型5)

refresh bgp all import|export ipv4 //BGP路由更新触发命令

open消息中的hold time是根据keepalive时间来的,如果两边Hold time时间不一致,会依据小的一边。

BGP的状态机:

  1. Idle状态(空闲状态):此状态为初始状态,不接受任何BGP连接,等待start事件产生。如果start事件(TCP连接)产生则系统开启ConnectRetry定时器,向邻居发起TCP连接,并将状态改为Connect。
  2. Connect状态(连接状态):在Connect状态,系统会等待TCP的连接建立完成。如果TCP状态为Established(已完成),则拆除ConnectRetry定时器,并发送Open信息,将状态变为Opensent;如果TCP建立失败则重置ConnectRetry定时器,转为Active状态。如果定时器超时,重新连接。
  3. Active状态(活跃状态):如果已经启动事件但TCP未完成,则处于Active状态
  4. Open-sent状态(Open消息已发送):此状态 表明系统已经发出Open消息,在等待BGP邻居发给自己的Open消息。
  5. Open-confirm(Open消息确定):此状态表明系统已经发出keepalive消息,并等待BGP邻居的Keepalive消息。
  6. Established状态(连接建立):如果处于Established状态,则说明BGP连接建立完成,可以发送Update消息交换路由信息。

BGP工作原理:

——对等体之间的交互:

BGP对等体交互路由原则:

  • 从IBGP对等体获得的路由,只发布给EBGP(发的时候考虑同步)
  • 从EBGP对等体获得的路由,发布给所有IBGP和EBGP邻居
  • 只将BGP的最优路由发布给对等体
  • 只发送更新的BGP路由

注意:

1.IBGP的水平分割

2.as号,只能在EBGP邻居之间放环

——数据库:

IP路由表(IP-RIB)

  • 全局路由信息库,包括所有IP路由信息

BGP路由表:

  • BGP路由信息库,包括本地BGP Speakr选择的路由信息

邻居表:

  • 对等体邻居清单列表

Adj-RIB-In:

  • 对等体宣告给本地BGP Speaker的未处理的路由信息库

Adj-RIB-Out:

  • 本地BGP Speaker宣告给指定对等体的路由信息库

——信息处理过程:

BGP配置:

启动BGP:

[RT1]bgp 100

配置router ID(如果运行了ospf两个ID号尽量保持一致)

[RT1-bgp]router-id 1.1.1.1

指定邻居:

peer 12.1.1.2 as-number 200

对端地址           对端as号

默认情况下建立TCP的接口是出接口,当建立BGP连接的路由器存在冗余链路时,如果路由器上的接口发生故障,建立tcp连接的源接口就会发生改变,导致BGP需要建立tcp连接。

所以将tcp的源地址配置成loopback接口,而真实的tcp连接的源地址就是出接口,所以要指定建立tcp连接的源接口:(用loopback建立邻居关系时)

[RT2-bgp]peer 4.4.4.4 connect-interface loo 0 (只需要在一边配,tcp是单向认证)

对端的环回口               本地的环回口

当建立EBGP关系时,非直连,用loopback口建立邻居关系时(不建议)

[RT1-bgp]peer 2.2.2.2 ebgp-max-hop 2

[RT2-bgp]peer 1.1.1.1 ebgp-max-hop 2         //改变EBGP连接的最大路由器跳数

[RT1-bgp]peer 2.2.2.2 connect-interface loo 0        //指定建立邻居的源接口

将本地路由发布到BGP路由器中:

[RT1-bgp]netw 1.1.1.1 32        //公布的是路由表中的路由,且属性必须是IGP,sys

后面的掩码长度必须跟本地路由表一致

[RT1-bgp]dis bgp routing-table

Total Number of Routes: 1

BGP Local router ID is 1.1.1.1

Status codes: * - valid(有效), ^ - VPN best, > - best(最好的), d - damped,

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

Origin(属性) : i - IGP, e - EGP, ? - incomplete

Network            NextHop         MED        LocPrf     PrefVal Path/Ogn

* >  1.1.1.1/32         0.0.0.0         0                     0       i

bgp只会把有效的和最好的且是igp的发给邻居。

[RT2-bgp]peer 4.4.4.4 next-hop-local   //将发出的路由的下一跳指向本地(从EBGP学来的路由发给IBGP时)

[RT2-bgp]import-route ospf    //路由引入(引入的路由相当于本地通告的路由)

  • 被引入的路由必须存在于本地IP路由表中且为有效路由
  • 通过引入方式的路由的ORIGIN属性Incomplete
  • 可以通过策略来对引入的路由进行过滤及改变路由属性
  • 当引入ospf和rip时,引入前的cost作为BGP的med值,也就是开销。

[RT2-bgp]synchronization       //打开同步(默认是关闭的)

BGP路由属性:

BGP路由属性是路由信息所携带的一组参数,它对路由进行了进一步的描述,表达了每一条路由的各种特性。

  1. 公认必遵属性(必须遵守):所有BGP路由器都必须能够识别这种属性,且必须存在于Update消息中。ORIGIN属性、AS_PATH属性(选路、防环)、NECT_HOP属性。
  2. 公认可选属性:所有BGP路由器都可以识别,但不要求必须存在于Update消息中,可根据情况来选择。LOCAL_PREF属性、ATOMIC_AGGREGATE属性.
  3. 可选传递属性:在AS之间具有可传递性的属性。BGP路由器可以不支持此属性,但它仍然会接收带由此属性的路由,并通告给其他对等体。COMMUNITY属性、AGGREGATE属性(聚合者)。
  4. 可选非传递属性:如果BGP路由器不支持此属性,该属性被忽略,且不会通告给其他对等体。MED属性、CLUSTER_LIST属性(簇列表)、ORIGINATOR_ID属性(起始者ID)。

必遵:next-hop、origin、as-path

可选:除以上三个除外

传递:必遵的三个,community(团体)、聚合(aggregate)

非传递:

公认:

私有:Preferred_value

1、AS_PATH属性(防环):只给EBGP邻居发的时,才修改该属性。

  • 公认必遵
  • 是路由到底一个目的地所经过的一系列自治系统号码的有序列表
  • 当BGP将一条路由通告到其他AS时,便会把自己的AS号添加在AS_PATH列表的最前面(只看AS的个数,不考虑AS的大小)
  • AS个数越少越好
  • AS可以防环
  • 普通的有两种记录类型:AS_SEQUENCE(序列号),AS_SET(聚合防环的)

2、NEXT_HOP属性:

  • 公认必遵
  • 为BGP发言者指示去往目的地的下一跳
  • 从EBGP邻居学来的路由,发给IBGP时NEXT_HOP不会改变。

3、ORIGIN属性:定义路由信息的来源,标记一条路由是怎么成为BGP路由的

  • 三种ORIGIN属性类型:

a.IGP:表明路由信息产生于AS内部,一般是聚合路由或者通过Network命令引入的路由,标识符:"i"

b.EGP:路由信息是通过EGP协议引入的(已淘汰)标识符:"e"

c.Incomplete:路由信息是通过其他方式学来的,一般是通过Import引入的IGP路由或者静态路由。标识符"?"

  • 在其它选路因素相同的情况下,BGP会比较ORIGIN属性来确定到达相同目的地的最佳路由

a.IGP优于EGP,EGP优先于Incomplete。

4、LOCAL_PREF属性:(数据怎么出去)只能在自治系统内传递(离开AS域)

  • 公认可选属性,非传递属性,只能在本AS内传递
  • 用于AS内IBGP邻居选择离开本AS时最佳路由,它表明BGP路由器的优先级
  • 仅在IBGP对等体之间交换,不传递或通告给其他EBGP对等体
  • 值越大,优先级越高,默认情况下LOCAL_PREF属性值为100

5、MED属性:(数据怎么进来)只在相邻的EBGP之间传递,只能比较来自同一自治系统的MED。(进入AS域)

  • 可选非传递属性 (运用在AS之间的那台路由器上 )
  • 相当于IGP路由协议使用的度量值metric,当一个AS有多个入口点时,用于判断流量进入AS时的最优路径
  • 仅在相邻两个AS之间传递(EBGP),收到此属性的AS一方不会再将其通告给任何其他第三方AS。
  • 值越小越优

6、Preferred_value属性(首选项值)(本地属性)

  • 是私有BGP属性
  • 为从对等体接收的路由分配首选值,从而影响选路
  • 只在本地有效,不随路由信息传播
  • 值越大越好,默认0

7COMMUNITY属性(团体属性):

团体属性用于标识具有相同特征的BGP路由,该属性可选传递。

分为:

  • 自定义团体属性
  • 公共团体属性
    • Internet(互联网属性)
    • No Advertise(不会将路由传给任何BGP邻居)
    • No Export(不会传给EBGP邻居)
    • No Export Subconfed(不会传给联盟EBGP邻居)

BGP路由处理流程:

BGP的路由优选:(选路前提是两条路由都是最优的,有可比性)

  1. 首先丢弃下一跳(NEXT_HOP)不可达的路由
  2. 优选Prefrerred_value值最大的路由
  3. 优选本地优先级(LOCAL_PREF)最高的路由
  4. 优选生成路由(聚合路由,发布的、import)
  5. 优选AS路径(AS_PATH)最短的路由
  6. 依次选择ORIGIN属性为IGP、EGP、Incomplete的路由
  7. 优选MED值最小的路由

8.依次选择从EBGP、联盟、IBGP学来的路由

9.优选下一跳度量值最低的路由

以上如果相同允许做负载分担:balance ibgp 2

10.优选CLUSTER_LIST(簇列表)长度最短的路由

11.优选ORIGINATOR_ID最小的路由

12.优选ROUTER ID最小的路由器发布的路由

13.优选地址最小的对等体发布的路由(同一路由器两条线)

BGP的负载分担时选路:

  • BGP协议本身一定能选出唯一一条到达目的网段的最优路由
  • 通过哦诶之允许BGP负载分担
  • BGP的负载分担与IGP的负载分担有所不同

❤IGP是通过协议自身定义的路由算法,对到达同一目的地址的不同路由,将度量值相等的路由进行负载分担

❤BGP本身并没有路由计算的算法,但BGP有丰富的选路原则,可以在对路由进行一定的选择后,有条件地进行负载分担。

BGP路由的发布策略:

  • 只讲最优路由发布给对等体(*>)
  • 只将自己使用的路由发给对等体
  • 从EBGP获得的路由会向它所有BGP对等体发布
  • 从IBGP获得的路由不向它的IBGP对等体发布

关闭BGP同步的情况下,IBGP路由被直接发布

开启BGP同步的情况下,改IBGP路由只有在IGP也发布了这条路由时才会被发布给EBGP对等体

  • BGP连接一旦建立,BGP发言者将把自己所有的BGP路由发布给新对等体。

BGP(边界网关协议)简述的更多相关文章

  1. 边界网关协议BGP

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

  2. BGP( Border Gateway Protocol)---边界网关协议

    摘自: https://blog.csdn.net/weixin_43751619/article/details/84954755 一,BGP协议原理与配置 边界网关协议( Border Gatew ...

  3. 1.Servlet介绍 和 HTTP协议简述

    1. Servlet是什么? sun公司制订的一种用来扩展web服务器功能的组件规范. (1)扩展web服务器功能 注: 早期的web服务器只能处理静态资源的请求,即需要事先将 html文件准备好,并 ...

  4. TCP握手协议简述

    TCP握手协议简述在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器 ...

  5. Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基础文件配置,Web框架的本质,服务器程序和应用程序(wsgiref服务端模块,jinja2模板渲染模块)的使用

    Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基 ...

  6. Http,Socket,TCP/IP 协议简述

    Http,Socket,TCP/IP 协议简述:https://blog.csdn.net/gordohu/article/details/54097841 TCP/IP协议,HTTP协议与webSo ...

  7. python网络编程01 /C/S架构|B/S架构、网络通信原理、五层协议、七层协议简述、端口映射技术

    python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述.端口映射技术 目录 python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述. ...

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

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

  9. FPGA实战操作(2) -- PCIe总线(协议简述)

    目录 1. PCIe基础知识 2. 事务层协议 2.1 数据包结构 2.2 帧头含义详述 3. 报文举例 3.1 寄存器读报文 3.2 完成报文 4. 机制简述 4.1 Non-Posted和Post ...

随机推荐

  1. java面试题之----spring与struts2的比较

    我们从以下几个维度来区分两者的概念: 1.  机制:spring mvc的入口是servlet,而struts2是filter.     补充几点知识:     < Filter 实现javax ...

  2. (三)svn 服务器端之创建仓库

    创建仓库 svn服务端创建完成需要创建仓库,仓库中存放 要被管理的文件. 通过开始菜单进入  VisualSVN server manager: 主界面为: 右键点击Repositories创建仓库 ...

  3. 媒体查询,screen and 和only screen and有什么不同

    最佳答案: 彩屏设备 和 (最小宽度768px) 和 (最大宽度959px) 仅限 彩屏设备 和 (最小宽度480px) 和 (最大宽度767px) 在你发的代码中其实没有什么不同,用起来效果都是一样 ...

  4. March 5 2017 Week 10 Sunday

    If you do what you love, you will never work a day in your life. 做你所爱的事情,你就不会觉得是在工作. Today, one mach ...

  5. selenium+python自动化登录脚本

    利用selenium+python写的一个关于登录的自动化脚本

  6. mvc做网站怎么在mvc中直接访问.html网页 [问题点数:20分]

    最近用.net mvc做一个网站 我想在mvc中直接访问一个 .html页面 怎么设置一下啊 现在直接访问是404不让访问的 放到view文件夹外面...

  7. axios简单了解

    简单介绍 axios是基于客户端的promise,面向浏览器和nodejs 特色 浏览器端发起XMLHttpRequests请求 node端发起http请求 支持Promise API 监听请求和返回 ...

  8. 【luogu P1462 通往奥格瑞玛的道路】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1462 记住HP=0也叫死. #include <queue> #include <cstd ...

  9. 手机移动端 web整合

    meta基础知识 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...

  10. 初探css3

    属性选择器: 1.完全匹配的属性选择器. 就是完全匹配的字符串. [id=article]{ color:red; } 2.包含匹配选择器.包含有指定的字符串. 语法是:[attribute*=val ...