扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
BGP 概述
边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达,并选择最佳路由的 高级路径矢量路由协议。
自治系统AS(Autonomous System)由来
专业领域包括成都网站制作、网站建设、商城网站建设、微信营销、系统平台开发, 与其他网站设计及系统开发公司不同,创新互联的整合解决方案结合了帮做网络品牌建设经验和互联网整合营销的理念,并将策略和执行紧密结合,为客户提供全网互联网整合方案。为方便管理规模不断扩大的网络,网络被分成了不同的自治系统。1982年,外部网关协议EGP(Exterior Gateway Protocol)被用于实现在AS之间动态交换路由信息。
但是EGP设计得比较简单,只发布网络可达的路由信息,而不对路由信息进行优选,同时也没有考虑环路避免等问题,很快就无法满足网络管理的要求。
BGP是为取代最初的EGP而设计的另一种外部网关协议。不同于最初的EGP,BGP能够进行路由优选、避免路由环路、更高效率的传递路由和维护大量的路由信息。
虽然BGP用于在AS之间传递路由信息,但并不是所有AS之间传递路由信息都需要运行BGP。比如在数据中心上行的连入Internet的出口上,为了避免Internet海量路由对数据中心内部网络的影响,设备采用静态路由代替BGP与外部网络通信。
⦁ IANA(Internet Assigned Numbers Authority,因特网地址分配组织):IAB(Internet Architecture Board,因特网体系委员会)的下设组织。IANA授权NIC( Network Information Center,网络信息中心)和其他组织负责IP地址和域名分配,同时,IANA负责维护TCP/IP协议族所采用的协议标识符数据库,包括自治系统号。
⦁ 在长度为16bit的AS号表示方式中:64512-65534为私有AS号,在长度为32bit的AS号表示方式中:4200000000-4294967294为私有AS号。
⦁ VPN(virtual private network,虚拟专用网):使用虚拟专业网络技术可以从逻辑上建立一个直接连接的网络。
BGP从多方面保证了网络的安全性、灵活性、稳定性、可靠性和高效性:
1、BGP采用认证和GTSM的方式,保证了网络的安全性。
2、BGP提供了丰富的路由策略,能够灵活的进行路由选路。
3、BGP提供了路由聚合和路由衰减功能用于防止路由振荡,有效提高了网络的稳定性。
4、BGP使用TCP作为其传输层协议(端口号为179),并支持BGP与BFD联动,提高了网络的可靠性。三次握手
BGP建立对等体的对等体都会发起TCP三次握手,所以会建立两个TCP连接, 但是实际BGP只会保留其中一个TCP连接,从Open报文中获取对端BGP Identifier之后BGP对等体会比较本端的Router ID和对端的Router ID大小,如果本端Router ID小于对端Router ID,则会关闭本地建立的TCP连接,使用由对端主动发起创建的TCP连接进行后续的BGP报文交互。BGP报文类型
⦁ 不同于常见的IGP协议,BGP使用TCP作为传输层协议,端口号179,这使得BGP支持在非直连的路由器之间建立对等体关系。
BGP采用TCP作为传输层协议,两台路由器只要具备IP连通性,并且能够顺利地基于TCP179端口建立连接,就可以建立BGP对等体关系,因此BGP的对等体关系是可以跨设备建立的。
BGP报文
BGP对等体间通过以下5种报文进行交互,其中Keepalive报文为周期性发送,其余报文为触发式发送:
1、Open报文:
用于建立BGP对等体连接。
2、Update报文:
用于在对等体之间交换路由信息。需要在BGP 中 network 才会有Update报文
3、Notification(通告)报文:
用于中断BGP连接。
4、Keepalive报文:
用于保持BGP连接。
5、Route-refresh(刷新)报文:
用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新(Route-refresh)能力的BGP设备会发送和响应此报文。
可以抓取到 route-refresh 报文
⦁ Opt Parm Len:Optional parameters的长度。
⦁ Optional parameters:宣告自身对于一些可选功能的支持,比如认证、多协议支持。
除了IPv4单播路由信息,BGP4+还支持多种网络层协议(如IPv6、组播),在协商时BGP对等体之间会通过Optional parameters字段协商对网络层协议的支持能力。
⦁ Unfeasible routes length:不可达路由字段的长度,以Byte为单位。如果为0则说明没有Withdrawn Routes 字段。
⦁ Withdrawn Routes Length:标明Withdrawn Routes部分的长度。其值为零时,表示没有撤销的路由。
Total path attribute length:路径属性字段的长度,以Byte为单位。如果为0则说明没有Path Attributes 字段。
⦁ 在Open报文协商时会协商是否支持Route-refresh,如果对等体支持Route-refresh能力,则可以通过refresh bgp命令手工对BGP连接进行软复位,BGP软复位可以在不中断BGP连接的情况下重新刷新BGP路由表,并应用新的策略。BGP状态
⦁ 对于不支持Route-Refresh能力的BGP对等体,可以配置keep-all-routes命令,保留该对等体的所有原始路由,这样不需要复位BGP连接即可完成路由表的刷新。
缺省情况下未开启keep-all-routes。
BGP邻居建立状态:
idle:初始状态
connect:BGP等待TCP连接的建立
active:TCP连接失败,重新建立TCP连接
opensent:TCP建立成功,发送open报文
openconfirm:收到正确的OPEN报文
established:BGP邻居建立成功
1、Idle状态是BGP初始状态。
在Idle状态下,BGP拒绝邻居发送的连接请求。只有在收到本设备的Start事件后,BGP才开始尝试和其它BGP对等体进行TCP连接,并转至Connect(连接)状态。Start事件是由一个操作者配置一个BGP过程,或者重置一个已经存在的过程或者路由器软件重置BGP过程引起的。
任何状态中收到Notification(通告)报文或TCP拆链通知等Error事件后,BGP都会转至Idle状态。
2、在Connect(连接)状态下,BGP启动连接重传定时器(Connect Retry),等待TCP完成连接。
如果TCP连接成功,那么BGP向对等体发送Open报文,并转至OpenSent状态。
如果TCP连接失败,那么BGP转至Active(活跃)状态。
如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其它BGP对等体进行TCP连接,停留在Connect状态。
3、在Active状态下,BGP总是在试图建立TCP连接。
如果TCP连接成功,那么BGP向对等体发送Open报文,关闭重传定时器,并转至OpenSent状态。
如果TCP连接失败,那么BGP停留在Active状态。
如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP转至Connect状态。
4、在OpenSent状态下,BGP等待对等体的Open报文,并对收到的Open报文中的AS号、版本号、认证码等进行检查。
如果收到的Open报文正确,那么BGP发送Keepalive报文,并转至OpenConfirm状态。
如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至Idle状态。
5、在OpenConfirm状态下,BGP等待Keepalive或Notification报文。 如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态。
常见的 三种状态 Idle, Active,Established BGP邻居建立不成功的原因
6、在Established状态下,BGP可以和对等体交换Update、Keepalive、Route-refresh报文和Notification报文。
如果收到正确的Update或Keepalive报文,BGP就认为对端处于正常运行状态,将保持BGP连接。
如果收到错误的Update或Keepalive报文,BGP发送Notification报文通知对端,并转至Idle状态。
Route-refresh报文不会改变BGP状态。
如果收到Notification报文,那么BGP转至Idle状态。
如果收到TCP拆链通知,那么BGP断开连接,转至Idle状态。
BGP邻居建立不成功的原因ignore的应用1.AS号或peer邻居地址出错;
2.BGP的router ID是否有冲突;
3.BGP对等体两端是否均采用环回口创建邻居;
4.物理上非直连的EBGP邻居是否配置多跳;
5.用于创建底层TCP的路由是否可达;
6.创建BGP对等体两端认证配置是否一致;
7.BGP对等体是否配置了peer x.x.x.x ignore;
8.是否配置了禁止TCP端口179的ACL。
需要短暂中断邻居会话且该邻居配置量较大时,通过执行命令peer ignore可以避免重新配置的工作量。 例如,在一段时间内,对端升级或调整链路导致邻居频繁建立连接时,为了避免路由或邻居关系频繁震荡,需要暂时中断BGP邻居,则可以在较稳定的一端使用该命令。使用该命令可以停止与指定对等体(组)之间的会话,并且清除所有相关路由信息。对于一个对等体组,这就意味着大量与对端的会话突然终止。
R1:
bgp 100
peer 192.168.12.2 ignore
邻居关系会变成 idle
⦁ BGP对等体表的作用为列出本设备的BGP对等体,以及对等体的状态等信息。
⦁ MsgRcvd 、MsgSent:从对等体收到的报文个数,向对等体发送的报文个数。
OutQ:out queue,对外发送报文队列中排队的个数,一般为0。
列出本设备发现的所有BGP路由,如果到达同一个目的地存在多条路由,则将路由都进行罗列,但每个目的地只会优选一条路由。
通过display bgp routing-table ipv4-address { mask | mask-length } 可以显示指定IP地址/掩码长度的路由信息,在其中有关于该BGP路由的详细信息,如:路由始发者、下一跳地址、路由的路径属性等。
⦁ 执行聚合之后,在本地的BGP路由表中除了原本的明细路由条目之外,还会多出一条聚合的路由条目。
⦁ 如果在执行聚合时指定了detail-suppressed,则BGP只会向对等体通告聚合后的路由,而不通告聚合前的明细路由。
⦁ 在聚合时配置了抑制明细路由的参数,R3上查看路由表,将只能看到BGP路由:10.1.0.0/22,无法看到聚合前的明细路由。
⦁ 产生该问题根本原因为AS200域内未运行BGP的路由器并无从BGP学习到的路由条目,查找路由失败,导致R1丢弃报文。 为此制定了BGP同步原则:
当BGP的路由条目也存在于IGP路由表时才对外发送,以图中场景为例,当R3查看IGP路由表,OSPF路由表中并无路由10.0.4.0/24,因此并不会向R5发送该路由,自然也不会产生后续的访问失败问题。
⦁ 解决该问题的方式有:
⦁ 将BGP路由重分发到IGP中,基本不会使用该方式。 建立全互联的IBGP对等体关系,让全网所有路由器都拥有BGP路由。
如果没有配置Router ID,则BGP会自动选取系统视图下的Router ID作为BGP协议的Router ID。系统视图下的Router ID选择规则,请参见命令router-id中的描述。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流