HCNP学习笔记之BGP协义原理与配置1-基础知识

动态路由协议可以按照工作范围分为IGP以及EGP。

IGP工作在同一个AS内,主要用来发现和计算路由,为AS内提供路由信息的交换;

AS:路由管理域的集合。

而EGP工作在AS与AS之间,在AS间提供无环路的路由信息交换,BGP则是EGP的一种。

BGP协议经常用于ISP之间。

自治系统AS:的典型定义是指由同一个技术管理机构管理,使用统一选路策略的一些路由器的集合。

每个自治系统都有唯一的自治系统编号,这个编号是由IANA分配的。1-65535(2个字节)

私有编号:64512-65535

现在编号扩充为4个字节

IGP与EGP的区别在于:

1.IGP是运行于AS内部的路由协议,主要有: RIP, OSPF及ISIS。IGP着重于发现和计算路由。

2.EGP是运行于AS之间的路由协议,现通常都是指BGP。(EGP已以淘汰)

3.IGP着重于发现和计算路由,BGP着重于控制路由的传播和选择最优的路由


BGP特点:(对于运营商网络,要求运行维护简单,占用资源少,简单高效)

  • BGP是外部路由协议(运行范围),用来在AS之间传递路由信息
  • 是一种增强的距离矢量路由协议(工作模式)
    • 可靠的路由更新机制 (基于TCP)
    • 丰富的Metric度量方法(控制路由的传播和选择最优的路由
    • 从设计上避免了环路的发生 (距离矢量由于不知道拓扑,可能产生环路)
  • 为路由附带属性信息
  • 支持CIDR(无类别域间选路)
  • 丰富的路由过滤和路由策略

2 工作机制-路由传递

AS2是中转AS,EBGP,IBGP



BGP使用TCP作为其承载协议,提高了协议的可靠性。

  1. 建立连接:SP边界路由器知道对方的IP地址后,就可以尝试跟对方建立连接了,如果连接不能建立,说明对方还未激活,于是会等待一段时间再进行连接,这个过程一直重复,直到连接建立。
  2. 能力交互:必须交换某些数据以确认对方的能力或确定自己下一步的行动,即所谓的能力交互。不是每个支持IP协议栈的设备都支持BGP,所以必须在该TCP连接上进行确认。 确认对方支持BGP协议后,就进行路由表的同步。
  3. 保持连接:路由同步时,就可以不用重新建立连接而马上进行数据的传输。建立连接的两台设备互为对等体(PEER)。
  4. KeepAlive:两端的设备通过该TCP连接周期性的发送KeepAlive消息,以向对端确认自己还存活。 如果一端设备在一个存活超时的时间内没有接收到对方的KeepAlive消息,则认为对方已经停止运行BGP进程,于是拆除该TCP连接,并把从对方接收到的路由全部删除。


3 工作机制-路由更新

  • 传输协议:TCP,端口号179
  • 无需周期性更新 路由更新
  • 只发送增量路由 周期性发送keepAlive报文检测TCP的连通性

保证了BGP和对端通信时占用最少的带宽。

说明:BGP邻居关系建立的前提是TCP连接建立,TCP连接的前提是路由可达。所以两个BGP之间可能相隔很远。

OSPF邻居关系需要通过组播发送hello包,点对点型直达,点对多点需要将类型改为p2mp,NBMA需要手动指定,广播要通过选举DR BDR

4 BGP报文种类

运行BGP的路由器称之为BGP Speaker,它们之间将会交换五种类型的报文,其中OPEN报文,KEEPALIVE报文以及NOTIFICATION报文用于邻居关系的建立和维护。

  • 三次握手建立TCP连接
  • Open:负责和对等体建立邻居关系。 主要包括BGP版本,AS号等信息。试图建立BGP邻居关系的两个路由器在建立了TCP会话之后开始交换OPEN信息以确认能否形成邻居关系。
  • Keepalive:该报文用于BGP邻居关系的维护,为周期***换的报文,用于判断对等体之间的可达性。
  • Notification:BGP的差错检测机制,一旦检测到任何形式的差错,BGP Speaker会发送一个NOTIFICATION报文,随后与之相关的邻居关系将被关闭。
  • Route-refresh:用来通知对等体自己支持路由刷新能力;
  • Update:该报文则是邻居之间用于交换路由信息的报文,其中包括撤销路由信息和可达路由信息及其各种路由属性。是BGP五个报文中最重要的报文。



实验:

bgp 100 //1个router只能属于1个管理机构(AS),bgp id是100

peer 12.1.1.2 as-number 200 //BGP需要手动指定邻居,建立TCP连接,不能自动发现

network 1.1.1.1 24

display bgp peer

peer 2.2.2. connnetc-interface loopback 0 //保存证可靠性

5 BGP报文头

  • Marker(标记):16字节,固定为1。
  • Length(长度):两字节无符号整数。指定了消息的全长,包括头部。
  • Type(类型):1 字节,指示报文类型,如OPEN、UPDATE报文等 。
  •   1 – OPEN 2 – UPDATE 3 – NOTIFICATION 4 – KEEPALIVE

Open报文(重要)

  • Version:BGP的版本号。对于BGPv4来说,其值为4。
  •  My Autonomous System:本地AS编号。通过比较两端的AS编号可以确定是EBGP连接还是IBGP连接。
  •  Hold Time:在建立对等体关系时两端要协商Hold time,并保持一致。如果两端所配置的Hold time时间不同,则BGP会选择较的值作为协商的结果。如果在这个时间内未收到对端发来的Keepalive消息,则认为BGP连接中断。Keeplive interval的3倍。keeplive时间根据hold Time调整。
  •  BGP Identifier:BGP路由器的Router ID,以IP地址的形式表示,用来识别BGP路由器。在VRP5.30系统中,如果没有通过命令router id进行配置,则按照如下规则进行选择:优选Loopback接口地址中最大的地址作为Router ID,如果没有Loopback接口配置了IP地址,则从其它配置了IP地址的物理接口中选择一个最大IP地址的作为Router ID。
  •  Opt Parm Len(Optional Parameters Length):可选参数的长度。如果为0则没有可选参数。 Optional Parameters:是一个可选参数用于BGP验证或多协议扩展(Multiprotocol Extensions)等功能。每一个参数为一个(Parameter Type-Parameter Length-Parameter Value)三元组。 对等体在接收到Open消息后,将发送Keepalive消息确认并保持连接的有效性。确认后,对等体间可以进行Update、Notification、Keepalive和Route-refresh消息的交换。


7 keepalive报文

keepAlive 消息在对等体之间的交换频率以保证对方保持定时器(Open 报文hold time属性协商)不超时为限。

当一台路由器与其邻居建立BGP连接之后,将以Keepalive-interval设定的时间间隔周期性地向对等体发送KeepAlive 报文,表明该连接是否还可保持。


8 update报文(重要)

UPDATE消息被用作在BGP对等体之间传递路由信息。
多条可达路由信息可以被通告到相应的对等体上,或者多条不可达路由信息被撤消。
UPDATE消息由以下五个部分组成:

  • Withdrawn Routes Length :(2字节无符号整数) 不可达路由长度,表示Withdrawn Routes字段的数据长度。如果Withdrawn Routes Length字段数值为0,则表示Withdrawn Routes字段没有任何数据,在UPDATE消息中不会被显示。
  •  Withdrawn Routes :(变长) 撤销路由。该字段包括一系列的IP地址前缀信息,以<length, prefix>的格式来表示,比如<19,198.18.160.0>表示一个198.18.160.0 255.255.224.0的网络。
  • Path Attribute Length :(2字节无符号整数) 路由属性长度,表示Path Attribute字段的数据长度。如果Path Attribute Length数值为0,则表示Path Attribute字段没有任何数据,在UPDATE消息中不会被显示。
  •  Path Attributes :(变长) 路径属性(用于选路)。每个路径属性都是由三元组所组成:<attribute type, attribute length, attribute value>。
  • Network Layer Reachability Information(NLRI) :(变长) 网络可达信息。包括一系列的IP地址前缀。格式与撤消路由字段一样<length, prefix>。

最小UPDATE消息的长度为23个字节(19字节的报文头+2字节的撤消路由长度+2字节的路径属性长度)。这样的UPDATE消息被称之为End-of-RIB,用于BGP GR。 一条UPDATE消息可以发布多条具有相同路由属性的可达路由,这些路由可共享一组路由属性。所有包含在一个给定的Update消息里的路由属性适用于该Update消息中的NLRI字段里的所有目的地(用IP前缀表示)。

一条UPDATE消息可以撤销多条不可达路由。每一个路由通过目的地(用IP前缀表示),清楚的定义了BGP Speaker之间先前通告过的路由。 一条UPDATE消息可以只用于撤销路由,这样就不需要包括路径属性或者网络可达信息。相反,也可以只用于通告可达路由,就不需要携带Withdrawn Routes了。


9 Notification报文,错误时发送

Notification报文主要在发生错误或对等体连接被关闭的情况下使用,该消息携带各种错误码(如定时器超时等),以及错误子码和错误信息。

  •   Errorcode:错误码。1字节长的字段。每个不同的错误都使用唯一的代码表示,而每一个错误码都可以拥有一个或多个错误子码,但如果某些错误码并不存在错误子码的话,则该错误子码字段以全0表示。
  • Errsubcode:错误子码。
    • 消息头错误子码: 1 – 连接非同步 2 – 错误的消息长度 3 – 错误的消息类型
    • OPEN消息错误子码: 1 – 不支持的版本号 2 – 错误的对等体AS号 3 – 错误的BGP ID 4 – 不支持的可选参数 5 – RFC1771里被定义为认证失败,RFC4271里则对此表示反对。 6 – 不可接受的保持时间(Hold Time)
    • UPDATE消息错误子码: 1 – 畸形的属性列表 2 – 无法识别的公认属性 3 – 缺少的公认属性 4 – 属性标志位错误 5 – 属性长度错误 6 – 无效的ORIGIN属性 7 – RFC1771里被定义为AS路由环路,RFC4271里对此表示反对。
    • 8 – 无效的下一跳属性 9 – 可选属性错误 10 – 无效的网络字段 11 – 畸形的AS_PATH
  •   Data:依赖于不同的错误码和错误子码,用于标识错误原因。是一个可变长的字段,被NOTIFICATION用作诊断错误的原因。注:Data字段的长度可以由以下公式来决定:消息长度=21+Data长度 (NOTIFICATION消息最小长度为21个字节,其中已经包括消息头。)


10 Route-refresh报文

在所有BGP路由器使能Route-refresh能力的情况下,如果BGP的入口路由策略发生了变化,本地BGP路由器会向对等体发布Route-refresh消息,收到此消息的对等体会将其路由信息重新发给本地BGP路由器。这样,可以在不中断BGP连接的情况下,对BGP路由表进行动态刷新,并应用新的路由策略。

本路由器的输入策略发生变化,会导致Loc-rib需要更新,所以发出refresh消息,收到该消息的路由器,会重新向本地路由发送路由信息。这样,本地路由就可以使用新策略更新loc-rib。

AFI(Address Family Identifier):地址族标识符(2字节)。

Res.(Reserved field):保留区域(1字节),发送方应将其设置为0,接收方应当忽略该区域的信息。

SAFI(Subsequent Address Family Identifier):子地址族标识符(8字节)。

11 BGP协议中消息的应用

  • 通过TCP建立BGP连接时,发送OPEN消息,BGP的握手协商的参数有:BGP版本、BGP连接保持时间、本地的路由器标识(Router ID)、授权信息等。这些信息都在Open消息中携带。
  • 连接建立后,如果有路由需要发送或路由变化时,发送UPDATE消息通告对端
  • 稳定后要定时发送KEEPALIVE消息以保持BGP连接的有效性
  • 当本地BGP在运行中发现错误时,要发送NOTIFICATION消息通告BGP对等体
  • ROUTE-REFRESH消息用来通知对等体自己支持路由刷新

12 BGP状态机(重要)

  • idle:BGP连接的第一个状态。在空闲状态,BGP在等待一个启动事件。启动事件出现以后,BGP初始化资源,复位连接重试计时器(Connect-Retry),发起一条TCP连接,同时转入Connect(连接)状态。
  • Connect:在此状态,BGP发起第一个TCP连接,如果连接重试计时器超时,就重新发起TCP连接,并继续保持在Connect状态,如果TCP连接成功,就转入OpenSent状态,如果TCP连接失败,就转入Active状态
  • Active:在此状态,BGP总是在试图建立TCP连接,如果连接重试计时器(Connect-Retry)超时,就退回到Connect状态,如果TCP连接成功,就转入OpenSent状态,如果TCP连接失败,就继续保持在Active状态,并继续发起TCP连接。
  • OpenSent:在此状态,TCP连接已经建立,BGP也已经发送了第一个Open报文,剩下的工作,BGP就在等待其对等体发送Open报文。并对收到的Open报文进行正确性检查,如果有错误,系统就会发送一条出错通知消息并退回到Idle状态,如果没有错误,BGP就开始发送Keepalive报文,并复位Keepalive计时器,开始计时。同时转入OpenConfirm状态。
  • OpenConfirm:在OpenConfirm状态,BGP等待一个Keepalive报文,同时复位保持计时器,如果收到了一个Keepalive报文,就转入Established阶段,BGP邻居关系就建立起来了。
  •  Established:在Established状态,BGP邻居关系已经建立,这时,BGP将和它的邻居们交换Update报文,同时复位保持计时器。

另外,在除Idle状态以外的其它五个状态出现任何Error的时候,BGP状态机就会退回到Idle状态。

在BGP对等体建立的过程中,通常可见的三个状态是:Idle、Active、Established。 Idle状态下,BGP拒绝任何进入的连接请求,是BGP初始状态。 Active状态下,BGP将尝试进行TCP连接的建立,是BGP的中间状态。 Established状态下,BGP对等体间可以交换Update报文、Route-refresh报文、Keepalive报文和Notification报文。

BGP对等体双方的状态必须都为Established,BGP邻居关系才能成立,双方通过Update报文交换路由信息。

小结:connect  开始建立tcp连接

        open-sent tcp连接建立,发送open

        open-confirm 确认收到的open报文,等待keeplive

        established 邻居关系已建立,交换Update报文

        任何状态出现error,状态机都会退回到idle状态


13 BGP数据库(重要)


BGP默认情况下不会形成负载均衡,只会把最优路由放入路由表

display bgp routing-table

注意状态代码:

从BGP路由表中选择最优路由放入IP 路由表

14 路由信息的处理

当从对等体接收到更新数据包时,路由器会把这些更新数据包存储到路由选择信息库(Routing Information Base, RIB)中,并指明是来自哪个对等体的(Adj-RIB-In)。

这些更新数据包被输入策略引擎过滤后,路由器将会执行路径选择算法,来为每一条前缀确定最佳路径。 得出的最佳路径被存储到本地BGP RIB (Loc-RIB)中,然后被提交给本地IP路由选择表(IP-RIB),以用作安装考虑。

Loc-RIB中的内容在被通告给其他对等体之前,必须通过输出策略引擎。只有那些成功通过输出策略引擎的路由,才会被安装到输出RIB (Adj-RIB-Out)中。

如果启用了多路径特性,最佳路径和所有等值路径都将被提交给IP-RIB考虑。 除了从对等体接收来的最佳路径外,Loc-RIB也会包含当前路由器注入的(被称为本地发起的路由),并被选择为最佳路径的BGP前缀。

1.BGP是怎样去发现邻居的?

答:BGP并没有邻居发现机制,所有的邻居关系都是手工指定的。

2.BGP是基于什么传输层协议的?端口号为多少?

答:BGP是基于TCP协议的一个域间路由协议,其端口号为179。

3.请说出BGP五种消息的作用?

答:

1OPEN:主要包括BGP版本,AS号码等信息。试图建立BGP邻居关系的两个路由器建立了TCP会话后开始交换OPEN信息以最终确认能否形成邻居关系。

4 KEEPALIVE:该报文用于BGP邻居关系的维护,为周期***换的报文,用于判断对等体之间的可达性。

3 NOTIFICATION:BGP的差错检测机制,一旦检测到任何形式的差错,BGP会发送一个NOTIFICATION报文,随后与之相关的邻居关系将被关闭。

2 UPDATE:这是BGP四个报文中最重要的报文。用于BGP邻居之间交换路由更新信息,它包括了BGP用来组建无环路的互连网络结构所需的所有信息,主要包括以下三个基本部分: 网络层可到达信息(NLRI) 路径属性(PATH ATTRIBUTES) 不可达的路由(WITHDRAWN  ROUTES)

5 ROUTE-REFRESH:用来通知对等体自己支持路由刷新。

时间: 2024-10-29 19:10:15

HCNP学习笔记之BGP协义原理与配置1-基础知识的相关文章

HCNP学习笔记之BGP协议原理及配置2-BGP工作原理

1 基于TCP连接的邻居关系 BGP邻居关系建立在TCP连接的基础之上 可以通过IGP或静态路由来提供TCP连接的IP可达性 同OSPF.ISIS一样,在BGP中,路由学习的依然要首先建立邻居关系. 所不同的是: OSPF.ISIS的邻居关系是自动建立的,而BGP邻居的建立必须手动完成,从邻居的建立开始就体现出了BGP是基于策略进行路由的(物理上直接相连未必是邻居,反过来物理上没有直接相连可以建立邻居关系). BGP邻居关系是建立在TCP会话的基础之上的,而两个运行BGP的路由器要建立TCP的会

HCNP学习笔记之BGP协议原理及配置3-路由聚合

BGP协议可以使用命令,将具体路由聚合成一条聚合路由. 路由聚合原则采用最长相同掩码匹配的方法. 路由聚合可以减小路由表的大小 没有路由明细可以减少路由翻动,不会因为单条路由变化引起路由翻动 1 自动聚合(现网中不用,可控性差,只能聚合成主类网络) 配置自动聚合后,生成聚合后的自然网段路由,而原引入的子网路由被抑制,不会被优选和发布给BGP邻居. summary automatic  //用来使能对引入的路由进行自动聚合 undo summary automatic    //命令用来取消对引入

DeepLearning.ai学习笔记(四)卷积神经网络 -- week1 卷积神经网络基础知识介绍

一.计算机视觉 如图示,之前课程中介绍的都是64* 64 3的图像,而一旦图像质量增加,例如变成1000 1000 * 3的时候那么此时的神经网络的计算量会巨大,显然这不现实.所以需要引入其他的方法来解决这个问题. 二.边缘检测示例 边缘检测可以是垂直边缘检测,也可以是水平边缘检测,如上图所示. 至于算法如何实现,下面举一个比较直观的例子: 可以很明显的看出原来6 * 6的矩阵有明显的垂直边缘,通过3 * 3的过滤器(也叫做 "核")卷积之后,仍然保留了原来的垂直边缘特征,虽然这个边缘

最大熵学习笔记(二)最大熵原理

  生活中我们经常听到人们说"不要把鸡蛋放到一个篮子里",这样可以降低风险.深究一下,这是为什么呢?其实,这里边包含了所谓的最大熵原理(The Maximum Entropy Principle).本文为一则读书笔记,将对最大熵原理以及由此导出的最大熵模型进行介绍,重点给出其中所涉及数学公式的理解和详细推导. 相关链接 最大熵学习笔记(零)目录和引言 最大熵学习笔记(一)预备知识 最大熵学习笔记(二)最大熵原理 最大熵学习笔记(三)最大熵模型 最大熵学习笔记(四)模型求解 最大熵学习笔

CCIE学习笔记之BGP

Aggregate-address address mask as-set 聚合路由时不然as-path信息丢失 R1(config-router)#aggregate-address 1.0.0.0255.0.0.0 as-set Aggregate-address address mask as-set advertise-maproute-map-name 用advertise-map决定聚合总保留那个AS路径信息 在R2上: aggregate-address 10.1.1.0 255.

Laravel学习笔记(三)--在CentOS上配置Laravel

在Laravel框架上开发了几天,不得不说,确实比较优雅,处理问题逻辑比较清楚. 今天打算在CentOS 7上配置一个Laravel,之前都是在本机上开发,打算实际配置一下. 1)系统上已经安装了Apache.PHP.mysql,安装命令为yum install httpd php mysql 因为CentOS 7自带的php模块很少,如果需要增加模块,需要编译才行,所以需要php-devel模块,用yum install php-devel命令就可以了. 2)安装laravel a)安装com

HCNP学习笔记之OSPF协议原理及配置9-基础知识特殊区域

为了减少外部路由对内部路由器的影响,可以通过设置特殊区域减少路由的数量. 因为对于内部路由不需要知道外部路由的明细. 即特殊区域是为了减少LSDB的规模. 1 stub区域,过滤了4类,5类 LSA,以一条到外部网络的默认路由替代. stub 区域实例: 由路由表可以看出,区域间路由(3类 network-summary-LSA)可以通告到stub中. 5类as-external-LSA被过滤,外部路由被转换成一条默认路由. 2 完全stub区域,过滤了3,4,5类LSA,拓扑和上例相同. 3

HCNP学习笔记之OSPF协议原理及配置1-基础知识

7.25日在济南博赛参加了HCNP的培训,感觉和HCDA不同,内容偏重理论,多而杂,现整理一下,和大家分享,也希望得到高手的指点. 先说下学习的感想和给初学者的建议: 学习的过程本身对自己就一种锻炼,要做好吃苦的准备,坚持下去,你一定会取得不凡的成就. 理论学习和操作是个迭代的过程. 很多同学花时间去背命令,我觉的不是可取的.命令只是一个工具,可以通过练习强化.但我们除了要知道怎么作(操作),还要知道为什么要这么做(理论).这样很好的解决实际当中遇到的问题. 所以,学习应该是理论-实践-理论-实

Hadoop学习笔记—22.Hadoop2.x环境搭建与配置

自从2015年花了2个多月时间把Hadoop1.x的学习教程学习了一遍,对Hadoop这个神奇的小象有了一个初步的了解,还对每次学习的内容进行了总结,也形成了我的一个博文系列<Hadoop学习笔记系列>.其实,早在2014年Hadoop2.x版本就已经开始流行了起来,并且已经成为了现在的主流.当然,还有一些非离线计算的框架如实时计算框架Storm,近实时计算框架Spark等等.相信了解Hadoop2.x的童鞋都应该知道2.x相较于1.x版本的更新应该不是一丁半点,最显著的体现在两点: (1)H