BGP协议
一、BGP(边界网关协议)协议简介
1.1 BGP协议特点
BGP(Border Gateway Protocol)边界网关协议,路径矢量协议(Path Vector Protocol),属于 外部网关协议(EGP,泛指所有用于AS间路由的协议)**,用于在 自治系统(AS)之间 动态交换路由信息和控制选路。
二、BGP(边界网关协议)协议结构
2.1 BGP报文类型
BGP封装在TCP(端口179)之上,以便确定是可靠传输。
2.1.1 BGP Header(BGP报文头基本格式)
字段 长度 含义 Marker 16字节 用于检查BGP对等体的同步信息是否完整,以及用于BGP验证的计算。
不使用验证时所有比特均为1(十六进制则全“FF”)。Length 2个字节(无符号位) BGP消息总长度(包括报文头在内),以字节为单位。长度范围是19~4096。 Type 1个字节(无符号位) BGP消息的类型。Type有6个可选值,表示BGP报文头后面所接的6类报文,只见过5种
Type1 open
Type2 UPDATE
Type3 NOTIFICATION
Type4 KEEPALIVE
Type5 REFRESH
Type6 CAPABILITY
2.1.2 Open报文
Open报文是TCP连接建立之后发送的第一个报文,用于建立BGP对等体之间的连接关系。
字段名 长度 含义 Version 1个字节 表示协议的版本号,现在BGP的版本号为4。 My Autonomous System 2个字节 发送者自己的AS域号
通过检查peer x.x.x.x as-number 号是否跟对方open包My As号是否一致Hold Time 2个字节 发送者自己设定的hold time值(单位:秒),用于协商BGP对等体间保持建立连接关系
发送KEEPALIVE或UPDATE等报文的时间间隔。
BGP的状态机必须在收到对等体的OPEN报文后,对发出的OPEN报文和收到的OPEN报文两者的hold time时间作比较,选择较小的时间作为协商结果。
系统的默认为180,KEEPALIVE的时间间隔默认是1/3的Hold Time值BGP Identifier 4个字节 发送者的Router ID。 Opt Parm Len 1个字节(无符号位) 表示Optional Parameters(可选参数)的长度。如果此值为0,表示没有可选参数。 Optional Parameters 可变 此值为BGP可选参数列表,每一个可选参数是一个TLV格式的单元。
Parm.Type:占1个字节(无符号位),为可选参数类型。我们现在的实现中,只在type值为2时有意义,表示携带的参数为协商能力。Parm.Length:占1个字节(无符号位),为Parameter Value的长度。
Parm.Value:根据Parm.Type的不同值填写不同的参数内容,在Parm.Type为2表示协商能力时,Parm.Value是表示所支持的各种协商能力的列表,列表中的每一个单元是如下的一个TLV三元组
Capability Code:所支持的能力编号,不同能力编号不同
Capability Length:表示Capability Value的长度,占2个字节。
Capability Value:根据Code值的不同其内容与长度也不同。
常见Capability Code
Code=1时 MP:multip protocol 多协议能力支持
Capability Value值是一个TLV三元组,共占4个字节:
AFI:地址族标识(Address Family Identifier),占2个字节,能力所支持地址族标识信息,用以和SAFI一同确定网络层协议和IP地址间的关系,编码方式与多协议扩展中的规定相同。其值按照相关RFC中ADDRESS FAMILY NUMBERS的定义;
Res:保留位,占1个字节,发送者应将其设置为0,在接受的时候忽略;
SAFI:子地址族标识(Address Family Identifier),占1个字节,能力所支持的子地址族标识信息,用以和AFI一同确定网络层协议和IP地址间的关系。
地址族 (Address Family) AFI SAFI IPv4 Unicast 1 1 IPv4 Multicast 1 2 IPv4 VPNv4 1 128 IPv6 Unicast 2 1
2.1.3 Update报文
Update报文用于在对等体之间传递路由信息,可以用于发布、撤销路由。
字段 长度 含义 Unfeasible routes length 2个字节(无符号位) 标明Withdrawn Routes部分的长度。
其值为零时,表示没有撤销的路由。Withdrawn Routes 变长 包含要撤销的路由列表,列表中的每个单元包含1字节的Length域和可变长度的Prefix域。
Length:待撤销路由的掩码。其值为零时,表示匹配所有的路由。
Prefix:传送的IP地址前缀必须用整字节表示。Total Path Attribute Length 2个字节(无符号位) 标明Path Attributes的长度。
其值为零时,表示没有路由及其路由属性要通告。Path Attributes 变长 包含要更新的路由属性列表,按其类型号从小到大的顺序排序,填写更新的路由的所有属性。
使用TLV格式
Attr.TYPE占2个字节(无符号位),包括1字节的Flags(无符号位)和1字节的Type Code(无符号位)。
Attr.Flags:占1个字节(8个bit)
表示属性的标记,其每个bit位的意义如下显示:O: Optional bit, 属性的可选性。决定属性是否为必携带属性。带可选属性(optional)设为1,公认属性(well-known)设为零。
T: Transitive bit 属性的可传递性。对于可选属性,是可传递的设为1,非可传递的设为0。对于公认属性必须设为1。
P: Partial bit 属性的局部性。对于可传递的可选属性是局部的设为1,是完全的设为零。对于非可传递的的可选属性和公认属性,必须设为零。
E: Extended Length bit 决定该属性的长度的字段(即Attr. Length)是否需要扩展。不需要扩展则设为零,需要扩展则设为1。
U: Unused bits 低4位没有使用,发送时必须全部设为零,并且在接收时被忽略。
Attr. Length占1个字节
Attr.Type Code:占1个字节(无符号位),表示属性的类型号。
Attr.Value:根据不同属性的类型填写不同内容。
Attr. Length占2个字节。Network Layer Reachability Information(NLRI) 变长 包含要更新的地址前缀列表,每一个地址前缀单元由一个LV二元组(prefix length, the prefix of the reachable route)组成,其编码填写方法与Withdrawn Routes的填写方法相同。 Path Attributes详细表
属性类型 属性值 1:Origin IGP、EGP、Incomplete 2:As_Path AS_SET、AS_SEQUENCE、AS_CONFED_SET、AS_CONFED_SEQUENCE 3:Next_Hop 下一跳的IP地址 4:Multi_Exit_Disc MED用于判断流量进入AS时的最佳路由 5:Local_Pref Local_Pref用于判断流量离开AS时的最佳路由 6:Atomic_Aggregate BGP Speaker选择聚合后的路由,而非具体的路由 7:Aggregator 发起聚合的Router ID和AS号 8:Community 团体属性 9:Originator_ID 反射路由发起者的Router ID 10:Cluster_List 反射路由经过的反射器列表 14:MP_REACH_NLRI 多协议可达NLRI 15:MP_UNREACH_NLRI 多协议不可达NLRI 16:Extended Communities 扩展团体属性
2.1.4 NOTIFICATION报文
当BGP检测到错误状态时(对等体关系建立时、建立之后都可能发生),就会向对等体发送Notification,告知对端错误原因。之后BGP连接将会立即中断。
字段名 长度 含义 Error code 1字节 主错误码,标识错误类型,非特定的错误类型用0表示。 Error subcode 1字节 子错误码,指定错误细节编号,非特定的错误细节编号用0表示。 Data 可变长 指定错误数据内容。 BGP的错误码
主错误码 子错误码 描述 说明与常见场景 1 1 连接未同步 BGP消息头中的Marker字段不匹配(可能由加密错误或传输干扰导致)。 2 错误的消息长度 消息长度与声明值不符(如报文被截断或格式错误)。 3 错误的消息类型 收到非法的BGP消息类型(如期望Open消息却收到Update)。 2 1 不支持的版本号 对端使用BGPv3等旧版本,而本地仅支持BGPv4。 2 错误的对等AS 配置的邻居AS号与实际收到的Open消息中的AS号不一致。 3 错误的BGP标识符 Open消息中的BGP Router ID非法(如全零或与预期不符)。 4 不支持的可选参数 Open消息包含未知可选参数(如不支持的Capability)。 5 认证失败 MD5密码不匹配或认证方式不支持。 6 不可接受的保持时间 对端提议的Hold Time为0,而本地要求非零值。 7 不支持的能力 对端声明了本地不支持的能力(如IPv6、VPNv4)。 3 1 畸形属性列表 Update消息中的属性顺序或格式错误(如必遵属性未按顺序排列)。 2 不可识别的公认属性 收到未知的公认必遵属性(如ORIGIN字段值超出0-2范围)。 3 缺少公认属性 必遵属性缺失(如Update消息缺少AS_PATH或NEXT_HOP)。 4 属性标志错误 属性标志位与实际长度不符(如TRANSITIVE标志被错误设置)。 5 属性长度错误 属性值长度与声明不一致(如AS_PATH长度超过报文剩余空间)。 6 无效Origin属性 ORIGIN字段值非法(非0/1/2)。 7 AS路由环路 AS_PATH中包含本AS号,触发环路保护。 8 无效Next_Hop属性 NEXT_HOP地址不可达(如IPv6下一跳地址格式错误)。 9 可选属性错误 可选属性解析失败(如MED值格式错误)。 10 无效网络字段 通告的前缀格式非法(如掩码长度超过32)。 11 畸形AS_Path AS_PATH格式错误(如包含非数字AS号或SEGMENT类型非法)。 4 0 Hold Timer超时 在Hold Time内未收到Keepalive或Update消息,连接被重置。 5 0 有限状态机错误 通用状态机异常(如收到非预期消息)。 1 OpenSent状态收到意外消息 在OpenSent状态下收到非Open或Notification消息。 2 OpenConfirm状态收到意外消息 在OpenConfirm状态下收到非Keepalive消息。 3 Established状态收到意外消息 已建立连接后收到Open消息(可能对端意外重置)。 6 1 前缀超过最大值 接收的路由数量超过配置的最大限制。 2 管理关闭 手动关闭BGP邻居(如执行 neighbor shutdown
)。3 删除邻居 配置中移除该邻居。 4 管理重置 手动重置BGP会话(如执行 clear bgp session
)。5 连接失败 TCP连接无法建立(端口阻塞或网络不可达)。 6 其他配置改变 邻居相关配置变更(如修改AS号或IP地址)。 7 连接冲突 两端同时尝试建立连接导致冲突。 8 资源短缺 系统资源不足(如内存耗尽无法分配新路由)。 9 BFD断开连接 BFD检测到链路故障,触发BGP会话终止。
2.1.5 KEEPALIVE报文
BGP路由器收到对端发送的Keepalive报文,将对等体状态置为已建立,同时后续定期发送keepalive报文用于保持连接。
Keepalive报文格式中只包含报文头,没有附加其他任何字段。
2.1.6 Refresh报文
在Open报文协商时会协商是否支持Route-refresh,如果对等体支持Route-refresh能力,则可以通过refresh bgp命令手工对BGP连接进行软复位,BGP软复位可以在不中断BGP连接的情况下重新刷新BGP路由表,并应用新的策略。
字段名 长度 含义 AFI 2字节(无符号位) 表示地址族id,与OPEN报文中的定义相同。 Res. 1字节(无符号位) 所有位应全为0,在接收报文时,此位被忽略。 SAFI 1字节(无符号位) 与OPEN报文中的定义相同。
三、BGP(边界网关协议)协议机制
3.1 邻居状态机
3.1.1 Idle
1.没有去往邻居地址的路由,无法完成TCP的3次握手。
2.邻居发起的TCP握手,被本端拒绝。拒绝的原因是邻居发送的TCP报文的源地址,不是本端指定的邻居地址。见active。
3.1.2 Connect
向peer地址发起TCP链接,或者接受peer地址向我发起的TCP请求后,BGP等待TCP连接建立完成后再决定后续操作
[!NOTE]
先启动BGP的一端先发起TCP连接,使用随机端口号向对端的179端口发起TCP连接,完成TCP连接的建立。BGP建立对等体的对等体都会发起TCP三次握手,所以会建立两个TCP连接,但是实际BGP只会保留其中一个TCP连接,从Open报文中获取对端BGP Identifier之后BGP对等体会比较本端的Router ID和对端的Router ID大小,如果本端Router ID小于对端Router ID,则会关闭本地建立的TCP连接,使用由对端主动发起创建的TCP连接进行后续的BGP报文交互。
当发送TCP连接的路由器 无法收到邻居TCP回应的报文,就会卡在connect 并且5秒后重传一次TCP连接请求,再等32s左右,重新再次发送TCP连接请求
3.1.3 Active
本端发送TCP连接,对端发送TCP的RST报文,本端将会进入到Active
[!TIP]
建立BGP邻居的源目地址不匹配导致。本端主动发送TCP连接的源地址和对端指定的邻居地址不匹配,本端处于active,对端处于Idle
三次握手接受
3.1.4 opensent
发送open报文后的状态
3.1.5 Openconfirm
收到对方的open报文,并进行参数检查和协商
3.1.6 Established
一旦收到对方keepalive,进入Establish状态。
后续BGP会发送Keepalive消息来维持邻居间的BGP连接。
3.2 BGP防环
机制 适用场景 关键作用 AS_PATH检查 EBGP 防止跨AS环路 IBGP水平分割 IBGP 避免AS内部环路
3.2.1 EBGP防环
通过AS-Path属性来进行防环
EBGP互联存在直连检测 TTL=1
Peer 10.1.3.3 connect-check-ignore # 忽略直连检测 Peer 10.1.4.4 ebgp-max-hop #修改TTL
3.2.2 IBGP防环
从IBGP对等体获取的路由,不会发送给IBGP对等体。可以通过RR反射器来破环。
TTL=255 不用考虑,一般使用环回口建立
3.3 RR反射器
为了解决IBGP水平防环的技术,现网中使用最多。也是BGP互联模式的一种解决方案。
3.3.1 传递规则
如果收到非客户端传来的BGP路由,则会反射给所有客户端。
如果收到客户端传来的BGP路由,则会反射给所有设备(指与RR建立邻居关系的设备)
如果RR学习到EBGP邻居传来的EBGP路由,则发送给所有客户、非客户IBGP对等体
3.3.2 防环属性
Originator_ID
当一条路由第一次被RR反射的时候,RR将Originator_ID属性加入这条路由,标识这条路由的发起路由器,Originator_ID的值为 路由始发者的BGP Router ID(即最初通告该路由的设备ID)
Cluster_List属性
由路由反射器产生,每个路由反射器和它的客户机组成一个集群(Cluster)。在一个AS内,每个路由反射器使用唯一的CLUSTER_ID作为标识,经过一个路由反射器反射的路由,会把路由反射器Cluster_List记录下来,形成Cluster_List。默认Cluster_List = Router ID
AR3: Bgp 234 router-id 3.3.3.3 reflector cluster-id 33.3.3.3---修改AR3的cluster-id是33.3.3.3
3.4 互联方案
为了解决IBGP的防环,BGP需要提出互联的解决方案。
3.4.1 全互联
优点:不依赖中间设备(如路由反射器),任意节点故障不影响其他邻居的路由同步,所有设备相互建立邻居数量为n(n-1)/2(n为IBGP设备数),所有IBGP邻居直接交换路由,避免信息丢失,确保路由表一致性。
缺点:每台设备需维护大量TCP连接(内存/CPU压力大),路由更新泛洪可能引发性能瓶颈,资源消耗太大。
3.4.2 RR
优点:客户端仅需与RR建立邻居,邻居数量降为O(n),支持大规模网络,新增客户端只需配置与RR的连接,无需修改其他节点。
缺点:RR故障会导致客户端路由更新中断(需部署冗余RR)。
3.4.3 隧道技术
优点:成本最低拓扑,只需要AS内部边界配置bgp邻居,mpls vpn组网拓扑
缺点:容易出现数据黑洞
3.4.4 BGP联盟
联盟将一个AS划分为若干个子AS。每个子AS内部建立IBGP全连接关系,子AS之间建立联盟EBGP连接关系
3.5 TTL安全机制
GTSM:generic TTL security mechanism 通用TTL安全机制,GTSM通过检测IP报文头中的TTL值是否在一个预先定义好的特定范围内,对IP层以上业务进行保护,增强系统的安全性。
配置 Bgp 234 Peer 10.1.4.4 as-number 432 Peer 10.1.4.4 connect-interface loopback 0 Peer 10.1.4.4 valid-ttl-hop 2 # 检测TTL的范围是否在255-2+1=254-255
四、BGP路由
4.1 BGP路由处理流程
4.2 路由引入
BGP协议自身不能发现路由,所以需要引入其他协议的路由(如IGP或者静态路由等)注入到BGP路由表中,从而将这些路由在AS之内和AS之间传播。
BGP引入路由时支持Import和Network两种方式,这两种方式决定了Origin属性,一般来说Network方式的是
I
,Import方式引入的是s
: Import方式是按协议类型,将RIP路由、OSPF路由、IS-IS路由、静态路由和直连路由等某一协议的路由注入到BGP路由表中。
Network方式比Import方式更精确,将指定前缀和掩码的一条路由注入到BGP路由表中。
4.3 路由属性分类
4.3.1 路由属性分类
见Update的Path Attributes字段
类别 定义 示例属性 公认必遵 (Well-known Mandatory) 所有BGP设备必须识别且必须包含在Update消息中。 ORIGIN、AS_PATH、NEXT_HOP 公认自决 (Well-known Discretionary) 所有BGP设备必须识别,但可以选择性包含在Update消息中。 LOCAL_PREF、ATOMIC_AGGREGATE 可选过渡 (Optional Transitive) BGP设备可选择支持,若不支持需保留并传递给其他邻居。 AGGREGATOR、Community 可选非过渡 (Optional Non-Transitive) BGP设备可选择支持,若不支持则丢弃且不传递。 MED、ORIGINATOR_ID、CLUSTER_LIST
4.3.2 路由选择
BGP在不配置负载分担时,基于13条选路原则
1.下一跳可达
2.PrefVal 首选值
PrefVal 只有本地有效,不会传递给其他Pee
# 1.对于Peer的整体影响 Bgp 235 Peer 10.1.3.3 preferred-value 10 # 来自10.1.3.3peer的所有的路由 # 2.方向策略,只能对于import方向,接收方配置 ip-prefix Ip ip-prefix 101.1 permit 101.1.1.0 24 route-policy r3-r2-im permit node 10 If-match ip-prefix 101.1 Apply preferred-value 10 Route-policy r3-r2-im permit node 20 3.引入时进行修改(无意义) BGP X Network 101.1.1.0 24 route-policy pv Import-route direct/ospf/isis route-policy pv Route-policy pv permit node 10 Apply preferred-value 10
2.local-preference 本地优先级
local-preference只能影响本AS去往其他AS的路径选路
1.import/export 因为local-preference的影响范围是整个AS域,所以会有多个方案 在边界路由器的EBGP import 方向配置,影响整个区域,配置简单 在边界路由器的IBGP export 方向配置,影响后续设备的选路 在后续设备的import方向进行配置,有选择的影响进行配置以及后续的设备 2.default Bgp 235 Default local-preference 300 影响所有向IBGP peer发送的local-preference值 影响所有ebgp路由放在本地bgp routing-table中local-preference属性
3.本地始发
Aggregate (手动)> summary auto(自动) > network > import-route > learning from peer(学习)
4.AS-PATH 路径
有四种形式,AS号最右侧是始发
类型 结构描述 选路处理方式 示例 AS_Sequence 有序的AS号列表,按经过顺序严格记录。 路径长度 = AS号数量(例如 100 200 300
视为3跳)。100 200 300 400
AS_Set 无序的AS号集合,使用大括号 {}
包裹。路径长度视为 1(例如 100 {12 13 14}
在选路时视为1跳,无论集合内有多少AS)。100 {12 13 14 15}
AS_Confed_Sequence 联盟内子AS的有序列表,使用圆括号 ()
包裹。忽略(出联盟时替换为联盟主AS号,选路时不计算子AS数)。 (64512 64544)
AS_Confed_Set 联盟内子AS的无序集合,使用方括号 []
包裹(部分厂商可能用其他符号)。忽略(出联盟时替换为联盟主AS号,选路时不计算子AS数)。 [64544 64512]
1.方向策略import/export 不同策略所得到的AS顺序不同 2.跳过AS-Path检测 Bgp 235 bestroute as-path-ignore 3.无视自己的AS-Path值 Peer 10.1.1.1 allow-as-loop x 4.增加自己的AS-Path数量
5.Origin 起源属性
起源实现
i=0:配置network e=1:配置import-route egp <as number> ?=2:配置import-route <protocol:除了egp以外的协议> # 现网中没e的标识,这种标识需要自己修改,其实保留的情况下起到一个过渡的作用。
6.MED
MED(Multi-Exit-Discriminator)默认是0,MED值只能传递到一个AS内,再次传递到下一个AS的时候,MED值将会丢失,即EBGP update下仅此一次。
BGP 1 bestroute med-none-as-maximum #丢失的MED无限大 # MED属性仅比较通过的AS区域传递的 Bgp 1 compare-different-as-med #不同AS进行对比 # 在联邦环境中,MED不进行比较 Bgp 1 bestroute med-confederation #强制比较 # 修改IGP的cost来修改继承的med # bgp 65001 peer 10.1.4.1 route-policy addmed100 export //向发往对等体10.1.4.1的路由应用出口路由策略addmed100,通过addmed100修改路由的MED # route-policy addmed100 permit node 10 //定义路由策略addmed100的第一个节点,设置路由1.1.1.9/32的MED为100 if-match ip-prefix p1 apply cost 100 # route-policy addmed100 permit node 20 //定义路由策略addmed100的第二个节点,不设置匹配条件,允许其他路由通过路由策略 # ip ip-prefix p1 index 10 permit 1.1.1.9 32 //定义地址前缀列表,匹配路由1.1.1.9/32
7.优选 EBGP 而非 IBGP
EBGP路由优先于IBGP路由
8.最小 IGP度量 到下一跳
到
NEXT_HOP
的IGP(如OSPF、IS-IS)路径成本最低。
9.优选cluster-list短
在路由反射器场景中,Cluster List长度最短的路径优先。
10.优选优选router-id小的
若多路径来自同一AS,选择邻居Router ID最小的路由。
11.在RR的场景下,originator id代替router-id进行比较
在路由反射器场景中,Cluster List长度最短的路径优先。
12.优选peer 地址小的路
选择邻居IP地址最小的路径
4.4 community属性
BGP Community(团体属性)是一种 可选过渡属性,用于标记路由以实现灵活的 策略控制(如过滤、选路修改)
团体属性用一组以4字节为单位的列表来表示,团体属性的格式是aa:nn或团体号。
团体号:团体号是0~4294967295的整数。基本团体属性使用,标准协议中定义,0(0x00000000)~65535(0x0000FFFF)和4294901760(0xFFFF0000)~4294967295(0xFFFFFFFF)是预留的。
aa:nn:aa和nn的取值范围都是0~65535,管理员可根据实际情况设置具体数值。通常aa表示自治系统AS编号,nn是管理员定义的团体属性标识。例如,来自AS 100的一条路由,管理员定义的团体属性标识是1,则该路由的团体属性格式是100:1。
4.4.1 基本团体属性
Community 团体号(十六进制) 作用 NO_EXPORT 0xFFFFFF01 路由不向相邻AS传播(仅在本AS内传递)。 NO_ADVERTISE 0xFFFFFF02 路由不向任何BGP邻居传播(仅本地保留)。 NO_EXPORT_SUBCONFED 0xFFFFFF03 路由不传播到联盟(Confederation)之外的AS(极少使用)。 Internet 0x00000000 可以传递到全网 Acl 2012 Rule permit source 11.1.12.0 0 Acl 2013 Rule permit source 11.1.13.0 0 Acl 2014 Rule permit source 11.1.14.0 0 Acl 2015 Rule permit source 11.1.15.0 0 route-policy r1-r2-ex permit node 10 if-match acl 2012 Apply community no-advertise route-policy r1-r2-ex permit node 20 if-match acl 2013 Apply community no-export-sub route-policy r1-r2-ex permit node 30 if-match acl 2014 Apply community no-export route-policy r1-r2-ex permit node 40 if-match acl 2015 Apply community internet Bgp X Peer X.X.X.X route-policy r1-r2-ex exportexport Peer X.X.X.X adverse-community #传递团队属性开关
4.4.2 扩展团体属性
route-policy route-policy-name { deny | permit } node node apply extcommunity { rt { as-number:nn | ipv4-address:nn } } &<1-16> [ additive ] peer { ipv4-address | group-name } route-policy route-policy-name export 将扩展团体属性传给对等体/对等体组。 peer { ipv4-address | group-name } advertise-ext-community 缺省情况下,不将扩展团体属性发布给任何对等体(组)。
4.5 路由聚合
4.5.1 本地发布聚合
一旦明细丢失,聚合路由也不会丢失,不能根据拓扑的变化去发生自动变更
# 写出隔壁黑洞路由 # Ip route-static 11.1.12.0 22 null0 # 提供防环 # Bgp 100 Network 11.1.12.0 22 # BGP宣告 # Bgp 100 import-route static # 引入路由
4.5.2 自动聚合
router bgp 65001 auto-summary # 启用自动聚合
汇总路由会自动产生IBGP路由黑洞路由,防环
Aggregator: AS 100, Aggregator ID 1.1.1.1 标识这条聚合路由聚合所在的AS号,以及聚合路由器的router-id,
但汇总路由会抑制明细路由(BGP向对等体只发送聚合后的路由),只能在始发路由器上配置,且只能聚合主类路由,不精确
4.5.3 手动聚合
bgp 65001 aggregate 10.0.0.0 掩码 # 聚合并抑制明细
较比自动聚合,并且汇聚更精准。
aggregate 11.1.0.0 255.255.0.0 detail-suppressed # 抑制明细 # 选择抑制 AR3: Acl 2000 Rule permit source 11.1.15.0 0 # route-policy SUP deny node 10 ------perimt是被抑制,deny是不被抑制 if-match acl 2000 route-policy SUP permit node 20 # Bgp 234 Aggregate 11.1.12.0 22 as-set suppress-policy SUP
[!TIP]
以上种种的聚合路由,都算是Local属性,即本地始发,无论是手写的黑洞路由还是自动生成的黑洞路由都会解决明细丢失后的环路问题。
但由于是Local属性,在手动聚合时可能会回灌到传递给的的AS域中,所以要做AS属性的继承。AS属性继承会继承团队属性等。
# 全部继承并且删除团队属性 route-policy ATT permit node 10 Apply community none------删除所有community # Bgp 234 Aggregate 11.1.12.0 22 as-set attribute-policy ATT
4.6 路由清理
4.6.1 硬清
[!WARNING]
工作中绝对不可以用
Reset bgp AS/PEER/address-family/external| internal/ all
优点:立即产生效果
缺点:重置tcp连接,重建邻居关系
4.6.1 软清
[!WARNING]
慎用
Refresh bgp AS/PEER/address-family/external| internal/ all + export/import
优点:不重置tcp连接,重新发送update,重新加载策略
缺点:可能cpu负载会增加
出向软清
Refresh bgp AS/PEER/address-family/external| internal/ all + export
重新发送路由,加载出向策略
入向软清
Refresh bgp AS/PEER/address-family/external| internal/ all + import
发送Refresh报文, 对方收到Refresh报文,再次向我发送update报文,我收到以后入向加载策略
4.7 BGP路由表说明
:valid,下一跳可达,如果下一跳不可达,就没有
>:best,最优
十三条选路原则比较出来最优的
d:damped:路由衰减/路由惩罚
路由惩罚主要针对ebgp,一旦发现路由多次抖动,就进行路由惩罚,不让其best,标志为d
h:history:当ebgp路由配置路由惩罚,一旦抖动一次,就会被记录下,标记为h
i:internal:ibgp的标识,如果路由从ibgp邻居学来,那么路由标记为internal,就不能传递给另外的ibgp邻居
s:suppressed:抑制,用于聚合路由,一旦路由被聚合(汇总),明细路由将会被抑制
S:stale:陈旧