BGP协议

不同AS之间的连接需求推动了外部网关协议的发展,BGP作为一种外部网关协议,用于在AS之间进行路由控制和优选

BGP不进行路由计算像rip一样直接发送路由信息

使用TCP作为协议建立连接  端口号179

AS之间的路由器是不完全相互信任的

为实现路由按需求进行控制和优选,BGP设计了诸多属性

 

BGP的前身EGP

非常简单,只能在AS之间简单地传递路由信息

不会对路由进行任何优选,也没有考虑如何在AS之间避免路由环路等问题 

EGP最终被BGP取代

相比于EGP,BGP更具有路由协议的特征

邻居的发现与邻居关系的建立

路由的获取,优选和通告

提供路由环路避免机制,并能够高效传递路由,维护大量的路由信息

在不完全信任的AS之间提供丰富的路由控制能力

AS自治系统

每个自治系统都有唯一的一个编号,这个编号由IANA分配

2009年1月之前,只能使用最多2字节长度的AS号码,即1-65535

中1-64511为公有AS,64512-65534为私有AS

在2009年1月之后,IANA决定使用4字节长度AS,范围是65536-4294967295

 

建立连接

BGP可以跨越多跳路由器建立邻居关系

1. 邻居发现

AS之间是广域网链路  在广域网上数据包传递会出现不可预测的链路拥堵或丢失等情况

所以BGP使用TCP作为保证

TCP只能采用单波建立连接   也使BGP只能手动指定邻居

三次握手

 2. 关系建立

Open   OSPFHello报文拆成了OpenKeepalive

TCP连接建立发送的第一个报文  用于建立邻居连接

Open报文协商成功后 发送Keepalive保持连接

Update

可以发布多条可达的路由信息,也可以撤销多条不可达的路由信息

可以发布多条具有相同路由信息的可达路由,这些路由共享一组属性

Ntification

当BGP路由检查测到错误状态时,发送该报文,BGP连接立即中断

KeepAlive

周期向邻居发送该报文,保证连接有效性

Route-refresh

用于改变路由策略后请求对等体重新发送路由信息

3. 邻居状态

上面为TCP连接

下面为邻居连接

TCP连接成功不代表可以传输数据

Idle状态 空闲

BGP初始状态 BGP路由器拒绝邻居发送的连接请求

收到本设备Start事件后才开始尝试进行TCP连接

如果TCP连接成功,那么BGP路由器向邻居发送Open报文,并转至OpenSent状态

如果TCP连接失败,那么BGP路由器转至Active状态   可能是双方参数有问题或者被拦截了

BGP邻居类型

如果直接将将公网路由引入AS内部 再将AS内部的路由信息直接引入出去

首先公网路由条目肯定比IGP协议多很多 引入后IGP协议无法承载大量的BGP路由

并且双方不一定可以无误的识别不同协议的路由信息 可能会丢失

所以还需要内部路由器进行路由传递

EBGP

用于AS之间传递路由

IBGP

用于AS内部传递路由

通告路由

使用network命令将IP路由表中已经存在的路由逐条通告到BGP中

network 10.0.0.1 24

使用import引入

为防止其他路由被引入到BGP中,需要配置ip-prefix进行精确匹配,调用route-policy在BGP引入路由时进行控制

import-route 【direct/static/ospf/rip…… 】【route-policy【自己创建的协议或者系统自带】】

ip-prefix 前缀列表

ip ip-prefix ip-prefix-name[ index index-number ] {permit | deny} ipv4-address mask-length

Name参数是本IP前缀列表的名称。

Index关键字及参数指示本表项在本IP前缀列表中的序号(或索引号),该关键字及参数是可选的。缺省情况下,该序号值按照配置先后顺序依次递增,每次加10,第一个序号值为10。

ip ip-prefix mkbk index 10 deny 10.0.0.0 24

import-route ospf route-policy mkbk

引入ospf中不包括10.0.0.0/24的所有网段

通告原则

BGP路由器——仅向邻居通告最优路由

*     可用路由

>    最优路由

Origin : i -IGP e -EGP ? –incomplete   表示通告来源  i network通告  e 自动从EGP学习 ? import通告

Network:显示BGP路由表中的网络地址

NextHop:报文发送的下一跳地址

MED:路由度量值

LocPrf:本地优先级

PrefVal:协议首选值

Path/Ogn:显示AS路径号及Origin属性

Community:团体属性信息

IBGP获得的路由不向其它IBGP邻居发送

为了防止AS内部形成环路

RTA将100.0.0.0/24网段发布给RTB RTC 但是RTB RTC之间不会互相转发



IGP BGP同步

理论上 IGP内部路由器发现路由表中没有BGP路由器转发进来的路由条目,不知道该怎么到达,丢弃目的地址不可达报文

当只有RTB RTD建立IBGP连接时,RTA将网络通告进去,RTB通过IBGP连接通告给RTD再利用EBGP连接通告给E。

当RTE访问100网络时,会发给D,D查询路由器表发现下一跳是B,但是出接口还是到C,但是此时C并不知道A的100网络,所以会将不可达报文进行丢弃。形成路由黑洞

Null0是系统保留的逻辑接口,当转发网络设备在转发某些数据包时,如果使用出接口为Null0的路由,那么这些报文会被直接丢弃,就像直接丢进一个黑洞里,因此出接口为Null0的路由被称为黑洞路由。

所以解决的办法一个就是保证IGP BGP保持同步,但是外网数量巨大,IGP无法承受,所以不可行

另一种就是IGP内部全部建立IGBP连接,保证外部网络全部通告出去

BGP属性

分为四类

公认  所有BGP路由器必须识别并可支持的属性

必遵  Origin AS_Path Next_hop(Update必须包含)

任意  Local_Pref  Atomic_aggregate(自由选择)

可选  不要求所有BGP路由器都能识别的属性

过渡  Aggregator  Communtiy (BGP不能识别,但是可以接收并转发)

非过渡  MED  (BGP可以忽略包含该属性的消息并且不转发)

Origin  路径信息来源

优先级   i>e>incomplete

AS_Path  AS路径

可以防止环路  当收到含有自己AS区域号的消息就不再接受转发

并且 AS编号越少 路径越优先

当你需要换条线路时 也可以对AS_Path进行更改  AS_Path(2,4)-->AS_Path(2,2,2,4)在不改变路径的情况下增加他的数量

AS_Path四种类型

AS_Sequence

AS_Set

AS_Confed_Sequence

AS_Confed_Set

Next_hop

缺省情况下,向EBGP对等体/对等体组发布的所有路由,都将下一跳属性修改为自身的地址;

向IBGP对等体/对等体组发布的EBGP路由,不修改下一跳属性。

Local_Preference

仅在IBGP邻居之间有效,不通告其它AS  可以判断最佳路由

可以通过ip-prefix前缀列表设置

默认100 越高越优先

MED

仅在相邻AS间传递

相当于IGP的度量值

当一个运行BGP的路由器通过不同的EBGP邻居获得目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED值较小者作为最佳路由

Community

peer ebgp-max-hop命令用来配置允许BGP同非直连网络上的对等体建立EBGP连接,并同时可以指定允许的最大跳数。

BGP使用Loopback口建立EBGP邻居时,必须配置命令peer ebgp-max-hop(其中hop-count≥2),否则邻居无法建立。

前置条件

配置本命令前,需要先使用peer as-number命令建立相应的对等体关系。

<think> 首先,用户要求介绍BGP协议,基于提供的引用。引用来自用户的消息:[1]、[2]、[3]。我需要整合这些信息,确保回答结构清晰、可靠。 关键点从引用中提取: - 引用[1]: BGP是边界网关协议,涉及自治系统(AS),BGP路由器号,工作原理(报文、状态机、交互原则),配置、选路原则,路由反射器等。 - 引用[2]: BGP是用于自治系统(AS)之间交换路由信息的EGP动态路由协议,它在AS间共享路由,实施策略干涉选路。 - 引用[3]: BGP用于不同AS间交换路由信息,每个AS指定一个BGP节点(通常是路由器),称为边界网关或边界路由器。 我的回答必须遵循系统级指令: 1. 所有行内数学表达式用$...$格式——但BGP主题可能不涉及数学,所以可能不需要。 2. 独立公式用$$...$$单独成段——同样,可能不适用。 3. LaTeX语法正确——如果有公式,但这里可能不需要。 4. 使用中文回答。 5. 生成相关问题——在结尾添加相关问题。 6. 引用段落末尾添加引用标识如[^1]。 回答结构:帮助用户逐步解决问题,清晰可靠。 用户消息说:"上述引用仅供参考,并不是用户真正的需求,请尽可能多的参考用户上一次的问题和你的回答。" 但我没有上一次对话历史。用户说"用户上一次的问题和你的回答",但在这个新对话中,这是第一个用户查询。所以,我应该基于当前提供的引用回答。 用户查询:"我想了解BGP协议的相关信息 请问BGP协议介绍" 所以,我需要提供一个全面的BGP协议介绍。 结构化回答: 1. **引言**:定义BGP协议,基于引用。 2. **基本概念**:如自治系统(AS)、BGP特点等。 3. **工作原理**:报文、状态机等。 4. **关键组件**:路由选择、配置等。 5. **总结**。 在引用段落末尾添加标识:[^1], [^2], [^3]。 结尾添加相关问题。 大纲: - **BGP协议概述** - 定义和目的:从引用[2]和[3],BGP是用于自治系统(AS)之间交换路由信息的动态路由协议,属于EGP类别。[^2][^3] - **基本概念** - 自治系统(AS):一个独立的网络管理机构,如引用[1]和[3]所述。(AS概述)[^1][^3] - BGP特点:在AS间共享路由,隔离内部网络,实施策略。[^1][^2] - BGP分类:引用[1]提到BGP的分类,但没有细节;可能需要简要提及。 - BGP路由器号(Router-ID):唯一标识BGP路由器。[^1] - **工作原理** - 五种报文:如Open, Update, Keepalive等。[^1] - 六种状态机:描述BGP对等体之间的关系状态。[^1] - 交互原则:如引用[1]提到的对等体交互原则。 - **其他方面** - 选路原则:如引用[1]提到的选路原则和属性。 - 路由反射器:用于解决IBGP水平分割问题。[^1] - **配置和实际应用** - 简要提及配置和路由汇总。[^1] 使用中文清晰地写。 在描述中添加引用。 结尾生成相关问题。 相关问题例子: 1. BGP协议如何确保路由信息的可靠性? 2. BGP选路原则有哪些具体步骤? 3. 路由反射器的作用和工作原理是什么? 确保回答真实可靠,基于引用。 </think> ### BGP协议介绍 BGP(边界网关协议,Border Gateway Protocol)是一种用于在不同自治系统(AS)之间交换路由信息的动态路由协议,属于外部网关协议(EGP)类别[^2][^3]。作为互联网的核心路由协议BGP主要用于在大型网络(如ISP或企业网络)间传递路由信息,实现跨AS的连通性。它的核心目标是允许AS自主控制进出流量,并通过策略干涉路由选择,确保网络稳定性和可扩展性[^1][^2]。下面我将逐步介绍BGP的关键方面,确保内容基于可靠的网络工程原理。 #### 一、BGP基本概念 1. **自治系统(AS)**:AS是由单一管理机构控制的一组路由器集合,拥有统一的内部路由策略。每个AS由一个唯一的AS号(ASN)标识,例如AS65000。互联网由成千上万个AS互联构成,BGP则充当AS之间的“桥梁”[^1][^3]。 2. **BGP的特点**: - 面向外部:BGP专门用于AS间路由交换,隔离内部网络(如使用OSPF或RIP的内部路由),形成一个独立的交互空间[^2]。 - 策略驱动:允许管理员基于路径属性(如AS路径长度或本地偏好)实施策略,控制流量流向,例如优先选择特定ISP的路径[^1][^2]。 - 可靠性:BGP基于TCP传输(端口179),确保可靠连接;它不依赖广播机制,而是增量更新路由变化[^1]。 3. **BGP的分类**:BGP分为两类: - eBGP(外部BGP):在不同AS的边界路由器之间运行,用于交换AS间路由。 - iBGP(内部BGP):在相同AS的内部路由器之间运行,确保AS内所有路由器共享一致的外部路由信息[^1]。 4. **BGP路由器号(Router-ID)**:每个BGP路由器必须有一个唯一的Router-ID,通常使用路由器的IP地址(如环回接口地址),用于标识对等体关系[^1]。 #### 二、BGP的工作原理 BGP通过在路由器间建立TCP连接来交换路由信息,整个过程涉及报文、状态机和交互原则。 1. **五种报文**: - Open报文:用于初始化连接,协商参数如版本号和Router-ID。 - Update报文:承载路由更新信息,包括新增或撤销路由。 - Keepalive报文:周期性发送,确认连接活动(默认每60秒)。 - Notification报文:用于错误报告,如参数不匹配时终止连接。 - Route-refresh报文:可选,用于请求路由信息的重新发送[^1]。 2. **六种状态机**:描述BGP对等体(peer)关系的状态转换: - Idle:初始状态,等待启动连接。 - Connect:尝试建立TCP连接。 - Active:处理连接请求。 - OpenSent:发送Open报文后等待响应。 - OpenConfirm:收到Open响应后验证参数。 - Established:正常工作状态,开始交换路由更新[^1]。 3. **交互原则**:BGP对等体遵循以下规则: - 仅在eBGP对等体间直接交换路由;iBGP对等体需通过路由反射器或全互联避免环路。 - 使用增量更新机制,仅传输变化的路由,减少带宽消耗。 - 实施路由策略,如过滤或修改属性,确保路由决策符合管理员意愿[^1]。 #### 三、BGP的选路原则 BGP的核心优势在于其灵活的选路能力。当多条路径存在时,BGP基于路径属性(Path Attributes)进行决策: 1. **路径属性**: - 公认强制属性:必须包含在所有更新报文中,如AS_PATH(记录路径经过的AS序列)和NEXT_HOP(指向下一跳路由器)。 - 可选属性:如LOCAL_PREF(本地优先级,用于iBGP决策)和MED(多出口鉴别器,影响入口流量)[^1]。 2. **BGP选路原则**:决策顺序通常为: 1. 最高权重(Cisco专有)。 2. 最高LOCAL_PREF值。 3. 本地生成的路由优先。 4. 最短AS_PATH长度。 5. 最低起源类型(IGP优于EGP)。 6. 最低MED值。 7. 其他因素如邻居类型(eBGP优于iBGP)。 选路过程确保最优路径选择,同时允许策略干预[^1]。 #### 四、关键扩展组件 1. **路由反射器(Route Reflector)**:用于解决iBGP水平分割规则(即iBGP路由器不能将从iBGP邻居学到的路由转发给其他iBGP邻居)。路由反射器作为中心节点,将路由反射给客户路由器,简化网络拓扑[^1]。 2. **BGP路由汇总**:通过汇总多条路由为聚合路由(如192.168.0.0/16),减少路由表大小和更新流量,提高可扩展性[^1]。 #### 总结 BGP是互联网的“骨干协议”,通过自治系统间的路由交换,支持全球网络的互联。其核心在于策略驱动、可靠传输和灵活的选路机制,适用于大规模分布式环境,如ISP骨干网或多云互联[^1][^2]。实际部署中,BGP常与内部路由协议结合,确保高效稳定的路由管理。如需深入了解,可以参考标准文档如RFC 4271。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值