18.网络技术——BGP的原理+实验题(后附练习题)

1. BGP的概述

边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。
边界网关协议( Border Gateway Protocol , BGP )是一种实现自治系统AS之 间的路由可达,并选择最佳路由的矢量性协议。早期发布的三个版本分别是BGP-1 ( RFC1105)、BGP-2 ( RFC1163 )和BGP-3 ( RFC1267 ) , 1994年开始使用BGP -4(RFC1771) , 2006年之后单播IPv4网络使用的版本是BGP-4 (RFC4271 ) ,其他网络使用的版本是MP-BGP ( RFC4760 )。

BGP的特点:
BGP能够承载大批量的路由信息,能够支撑大规模网络。
BGP提供了丰富的路由策略,能够灵活的进行路由选路,并能指导邻居按策略发布路由。
BGP能够支撑MPL S/VPN的应用,传递客户VPN路由。
BGP提供了路由聚合和路由衰减功能用于防止路由振荡,有效提高了网络的稳定性。
BGP使用TCP作为其传输层协议(端口号为179) , 并支持BGP与BFD联动、BGP Tracking、BGP
Auto FRR和BGP GR和NSR ,提高了网络的可靠性。

1.1 BGP消息类型及状态转换

BGP使用如下消息类型:
Open消息:Open消息是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。
Keepalive消息:BGP会周期性地向对等体发出Keepalive消息,用来保持连接的有效性。
Update消息:Update消息用于在对等体之间交换路由信息。它既可以发布可达路由信息,也可以撤销不可达路由信息。
Notification消息:当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中断。

五种报文:

报文名称作用是什么什么时候发包
Open协商BGP邻居的各项参数,建立邻居关系BGP对等体之间需先建立TCP连接,如果TCP连接成功,那么BGP向对等体发送Open报文
Update用于发送BGP路由信息连接建立后,有路由需要发送或路由变化时,发送UPDATE通告对端路由信息
Notification报告错误,中止对等体关系。当BGP在运行中发现错误时,要发送NOTIFICATION报文通告BGP对端
Keepalive维持BGP对等体关系定时发送Keepalive报文以保持BGP对等体关系的有效性
Route-refresh用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新能力的BGP设备会发送和响应此报文当路由策略发生变化时,触发请求对等体重新通告路由

BGP邻居建立中的状态和过程如下:
空闲(Idle):为初始状态,当协议激活后开始初始化,复位计时器,并发起第一个TCP连接,并开始倾听远程对等体所发起的连接,同时转向Connect状态。。
连接(Connect):开始TCP连接并等待TCP连接成功的消息。如果TCP连接成功,则进入OpenSent状态;如果TCP连接失败,进入Active状态。
行动(Active):BGP总是试图建立TCP连接,若连接计时器超时,则退回到Connect状态,TCP连接成功就转为Open sent状态。
OPEN发送(Open sent):TCP连接已建立,自己已发送第一个OPEN报文,等待接收对方的Open报文,并对报文进行检查,若发现错误则发送Notification消息报文并退回到Idle状态。若检查无误则发送Keepalive消息报文,Keepalive计时器开始计时,并转为Open confirm状态。
OPEN证实(Open confirm):BGP等待Keepalive报文,同时复位保持计时器。如果收到了Keepalive报文,就转为Established状态,邻居关系协商完成。如果系统收到一条更新或Keepalive消息,它将重新启动保持计时器;如果收到Notification消息,BGP就退回到空闲状态。
已建立(Established):即建立了邻居(对等体)关系,路由器将和邻居交换Update报文,同时复位保持计时器。

BGP状态:

Peer状态名称发什么包在做什么
ldle尝试建立TCP连接开始准备TCP的连接并监视远程peer启动TCP连接,启用BGP时,要准备足够的资源。
Connect发TCP包正在进行TCP连接,等待完成中,认证都是在TCP建立期间完成的。如果TCP连接建立失败则进入Active状态,反复尝试连接。
Active发TCP包TCP连接没建立成功,反复尝试TCP连接。
OpenSent发Open包TCP连接建立已经成功,开始发送Open包, Open包携带参数协商对等体的建立。
OpenConfirm发Keepalive包参数、能力特性协商成功,自己发送Keepalive包,等待对方的Keepalive包。
Established发Update包已经收到对方的Keepalive包,双方能力特性经协商发现-致,开始使用Update通告路由信息。

1.2 BGP路由通告原则

BGP在进行路由通告的时候,需要遵循以下原则:
多条路径时,BGP Speaker只选最优的给自己使用(负载均衡和FRR除外)。
BGP Speaker只把自己使用的路由(最优路由)通告给相邻体。
BGP Speaker从EBGP获得的路由会向自己所有BGP相邻体通告(包括EBGP和IBGP)。
BGP Speaker从IBGP获得的路由不向自己的IBGP相邻体通告(反射器除外)。
BGP Speaker从IBGP获得的路由是否通告给自己的EBGP相邻体要根据IGP和BGP同步的情况来决定。
当收到对端的refresh报文并且本端邻居支持refresh能力,BGP Speaker将把自己所 有BGP路由通告给对等体。
GR过程中,主备倒换方在GR结束时BGP Speaker会把自己所有BGP路由通告给对等体。

1.3 BGP路径矢量特征

BGP通常被称为路径矢量路由协议( Path-Vector Routing Protocol )。
每条BGP路由都携带着多种路径属性( Path attribute ) , 在各种路径属性中, AS_ Path属性 是非常关键的一个。AS Path属性记录了BGP路由传递过程中所经过的AS号,实际上它是一个AS号的列表。BGP路由器不接受AS_ Path中包含其自身AS号的路由更新。AS_ Path属性值的长短( AS号的个数)会作为一个比较的依据,影响BGP路由选择的决策。

1.4 BGP协议特征

BGP使用TCP为传输层协议, TCP端口号179。路由器之间的BGP会话基于TCP连接而建立。
运行BGP的路由器被称为BGP发言者( BGP Speaker ) , 或BGP路由器。
两个建立BGP会话的路由器互为对等体( Peer )。BGP对等体之间交换BGP路由表。
BGP路由器只发送增量的BGP路由更新,或进行触发更新(不会周期性更新)。
BGP具有丰富的路径属性和强大的路由策略工具。
BGP能够承载大批量的路由前缀,用于大规模的网络中。

1.5 BGP Peer

1.运行BGP的路由器被称为BGP发言者,或者BGP路由器。
2.BGP对等体也叫BGP邻居,与OSPF、RIP等协议不同, BGP的会话是基于TCP建立的。建立BGP对等体关系的两台路由器并不要求必须直连。
3、BGP存在两种对等体关系类型: EBGP及IBGP,针对这两种对等体类型, BGP处理路由的操作存在较大差异。
4、IBGP ( Internal BGP ) : 位于相同自治系统的BGP路由器之间的BGP邻接关系。
5、两台路由器之间要建立IBGP对等体关系,必须满足两个条件:
两个路由器所属AS需相同(也即AS号相同)。
在配置BGP时, Peer命令所指定的对等体IP地址要求路由可达,并且TCP连接能够正确建立。
不能主动发现邻居关系,不能自动发现路由
peer 需要自己指定对端 建立关系

1.6 IBGP 水平分割规则

为了防止BGP路由在AS内部传递时发生环路, BGP要求:“路由器不能将自己从IBGP对等体学习到的路由再传递给其他IBGP对等体”, 这就是IBGP水平分割规则。
由于IBGP水平分割原则的存在, BGP要求AS内须保证IBGP对等体关系的全互联,因为只有这样,才能够确保每一个路由器都能学习到路由。
解决方案:路由反射器 联邦

1.7 IBGP 三张表

名称查看命令说明
BGP邻居表display bgp peer列出本设备的BGP对等体,以及对等体的状态等信息
BGP路由表display bgp routing-table列出本设备发 现的所有BGP路由,如果到达同一个目的地存在多条路由,则将路由都进行罗列,但每个目的地只会优选一条路由
路由表display ip routing-table设备的路由表,被优选的BGP路由会被加载到路由表中使用

2. BGP路径属性

路由器发送关于目标网络的BGP更新消息,更新的度量值被称为路径属性。属性可以是公认的或可选的、强制的或自由决定的、传递的或非传递的。属性也可以是部分的。并非组织的和有组合的都是合法的,路径属性分为4类:公认必遵、公认自决、可选过渡、可选非过渡。

公认属性:
1.公认必遵 :所有的BGP实现都必须都能识别,且在Update报文中必须携带
(Origin+AS_ Path+Nexthop)
2.公认自决:所有的BGP实现都必须都能识别,但不要求必须包含在Update报文中
(L ocal-Preference+ATOMIC_ Aggregate)

可选属性:
1.可选传递:设备可以不支持该属性,但即使不支持,也应当接收包含该属性的路由并传递给其他对等体
(Community+Aggregator)
2.可选非传递:设备可以不支持该属性,不识别的BGP进程忽略包含这个属性的路由更新,并且不传递给其他BGP对等体
(MED+Originator_ ID+Cluster_ list+pre_ value)

2.1 Preferred-Value

Preferred-Value只能在路由器本地配置,而且只影响本设备的路由优选。该属性不会传播给任何BGP对等体。路由器本地始发的BGP路由默认的Preferred-Value为0,从其他BGP对等体学习到的路由默认Preferred-Value也为0,相当于路由的权重值,取值范围:0~65535;该值越大,则路由越优先。

2.2 Local_Preference

即本地优先级属性,是公认自决属性,用于告诉AS中的路由器,哪条路径是离开AS的首选路径。
Local_Preference属性值越大则BGP路由越优。缺省的Local_Preference值为100。
该属性只能被传递给IBGP对等体,而不能传递给EBGP对等体。
注:Local_Preference注意事项
只能在IBGP对等体间传递
可以在AS边界路由器上使用Import方向的策略来修改Local_Preference属性值,也就是在收到路由之后,在本地为路由赋予Local_Preference。
使用bgp default local-preference命令修改缺省Local_Preference值,该值缺省为100。

2.3 AS_Path

该属性为公认必遵属性,是前往目标网络的路由经过的AS号列表,确保路由在EBGP对等体之间传递无环,也作为路由优选的衡量标准之一。路由在被通告给EBGP对等体时,路由器会在该路由的AS_Path中追加上本地的AS号,路由被通告给IBGP对等体时,AS-path不会发生改变。

AS Path的四种类型:

类型描述
AS_ SET一个 去往特定目的地所经路径上的无序AS号列表
AS_ SEQENCE一个有序的AS号列表
AS_ CONFED_ SEQUENCE一个去往特定目的地所经路径上的有序AS号列表,其用法与AS_ SEQUENCE完全-样,区别在于该列表中的AS号属于本地联邦中的AS
AS_ CONFED_ SET一个去往特定目的地所经路径上的无序AS号列表,其用方法与AS_ SET完全一样区别在于列表中的AS号属于本地联邦中的AS

2.4 Origin

该属性为公认必遵属性,它标识了BGP路由的起源。如下表所示,根据路由被引入BGP的方式不同,存在三种类型的Origin。
当去往同一个目的地存在多条不同Origin属性的路由时,在其他条件都相同的情况下,BGP将按如Origin的下顺序优选路由:IGP > EGP > Incomplete

名称标记描述
igpi通过BGP network的路由,也就是起源于IGP的路由, Origin为igp。因为BGP network必须保证该网络在路由表中。
egpE如果BGP路由是由EGP这种早期的协议重发布而来,那么其Origin为egp。
Incomplete?通过Import命令,从其他协议弓入到BGP的路由,其0rigin为Incomplete(确认该路由来源的信息完全)。

2.5 MED

MED(MultiExitDiscriminator)是可选非传递属性,是一种度量值,用于向外部对等体指出进入本AS的首选路径,即当进入本AS的入口有多个时,AS可以使用MED动态地影响其他AS选择进入的路径。
MED属性值越小则BGP路由越优。MED主要用于在AS之间影响BGP的选路。MED被传递给EBGP对等体后,对等体在其AS内传递路由时,携带该MED值,但将路由传递给其EBGP对等体时,缺省不会携带MED属性
注意事项:

2.6 Next_Hop

该属性是一个公认必遵属性,用于指定到达目标网络的下一跳地址。
当路由器学习到BGP路由后,需对BGP路由的Next_Hop属性值进行检查,该属性值(IP地址)必须在本地路由可达,如果不可达,则这条BGP路由不可用。
在EBGP及IBGP对等体的场景中,Next_Hop的缺省操作是存在差异的。

2.7 BGP路由优选规则

1.优选具有最大Preferred-Value的路由
2.优选具有最大Local_Preference的路由
3.优选起源于本地的路由
4.优选AS_Path最短的路由
5.Origin(IGP > EGP > Incomplete)
6.优选MED最小的路由
7.优选EBGP对等体所通告的路由
8.优选到Next_Hop的IGP度量值最小的路由
9.BGP路由负载分担
10.优选Cluster_List 最短的路由
11.优选Router-ID最小的BGP对等体发来的路由
12.优选Peer-IP地址最小的对等体发来的路由

3. BGP实验题

3.1 实验一:


R1:

[Huawei]sys r1
[r1]int g0/0/0
[r1-GigabitEthernet0/0/0]ip add 12.0.0.1 30
[r1-GigabitEthernet0/0/0]int g0/0/1
[r1-GigabitEthernet0/0/1]ip add 15.0.0.1 30
[r1-GigabitEthernet0/0/1]int loopback 0
[r1-LoopBack0]ip add 1.1.1.1 32
[r1-LoopBack0]q
[r1]ospf 1 router-id 1.1.1.1
[r1-ospf-1]area 0
[r1-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255
[r1-ospf-1-area-0.0.0.0]network 15.0.0.0 0.0.0.255
[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
[r1-ospf-1-area-0.0.0.0]q
[r1-ospf-1]q
[r1]bgp 100
[r1-bgp]router-id 1.1.1.1
[r1-bgp]peer 2.2.2.2 as-number 100  //配置对等体关系
[r1-bgp]peer 2.2.2.2 connect-interface loopback 0
[r1-bgp]peer 4.4.4.4 as-number 100
[r1-bgp]peer 4.4.4.4 connect-interface loopback 0

R2:

[Huawei]sys r2
[r2]int g0/0/0
[r2-GigabitEthernet0/0/0]ip add 12.0.0.2 30
[r2-GigabitEthernet0/0/0]int g0/0/1
[r2-GigabitEthernet0/0/1]ip add 23.0.0.1 30
[r2-GigabitEthernet0/0/1]int loopback 0
[r2-LoopBack0]ip add 2.2.2.2 32
[r2-LoopBack0]q
[r2]ospf 1 router-id 2.2.2.2
[r2-ospf-1]area 0
[r2-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255  
[r2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
[r2-ospf-1-area-0.0.0.0]q
[r2-ospf-1]q
[r2]rip 1
[r2-rip-1]version 2
[r2-rip-1]network 23.0.0.0
[r2-rip-1]q
[r2]bgp 100
[r2-bgp]router-id 2.2.2.2
[r2-bgp]peer 1.1.1.1 as-number 100 //配置对等体关系
[r2-bgp]peer 1.1.1.1 connect-interface loopback 0
[r2-bgp]peer 4.4.4.4 as-number 100
[r2-bgp]peer 4.4.4.4 connect-interface loopback 0
[r2-bgp]peer 23.0.0.2 as-number 200  //跟R3做EBGP
[r2-bgp]import-route ospf 1  //注入
[r2-bgp]peer 4.4.4.4 next-hop-local 
[r2-bgp]network 23.0.0.0 30

R3:

[Huawei]sys r3
[r3]int g0/0/0
[r3-GigabitEthernet0/0/0]ip add 23.0.0.2 30
[r3-GigabitEthernet0/0/0]int loopback 0
[r3-LoopBack0]ip add 3.3.3.3 32
[r3-LoopBack0]q
[r3]rip 1
[r3-rip-1]version 2
[r3-rip-1]network 23.0.0.0
[r3-rip-1]network 3.0.0.0
[r3-rip-1]q
[r3]bgp 200
[r3-bgp]router-id 3.3.3.3
[r3-bgp]peer 23.0.0.1 as-number 100
[r3-bgp]network 3.3.3.3 32
[r3-bgp]peer 2.2.2.2 next-hop-local 
Error: The peer does not exist.
[r3-bgp]q
[r3]dis bgp peer

R4:

[Huawei]sys r4
[r4]int g0/0/0
[r4-GigabitEthernet0/0/0]ip add 15.0.0.2 30
[r4-GigabitEthernet0/0/0]int loopback 0
[r4-LoopBack0]ip add 4.4.4.4 32
[r4-LoopBack0]int loopback 1
[r4-LoopBack1]ip add 202.0.0.1 24
[r4-LoopBack1]int loopback 2
[r4-LoopBack2]ip add 202.0.1.1 24
[r4-LoopBack2]q
[r4]ospf 1 router-id 4.4.4.4
[r4-ospf-1]area 0
[r4-ospf-1-area-0.0.0.0]network 15.0.0.0 0.0.0.255
[r4-ospf-1-area-0.0.0.0]network 4.4.4.4 0.0.0.0
[r4-ospf-1-area-0.0.0.0]q
[r4-ospf-1]q
[r4]bgp 100
[r4-bgp]router-id 4.4.4.4
[r4-bgp]peer 1.1.1.1 as-number 100  //配置与R1.R2的对等体关系,是双向配置的
[r4-bgp]peer 1.1.1.1 connect-interface loopback 0
[r4-bgp]peer 2.2.2.2 as-number 100
[r4-bgp]peer 2.2.2.2 connect-interface loopback 0
[r4-bgp]network 202.0.0.1 24  //讲网段信息通告给bgp
[r4-bgp]network 202.0.1.1 24


3.1 实验二:


R1:

[Huawei]sys r1
[r1]int loopback 0
[r1-LoopBack0]ip add 1.1.1.1 32
[r1-LoopBack0]int loopback 1
[r1-LoopBack1]ip add 100.1.1.0 24
Error: The specified IP address is invalid.
[r1-LoopBack1]ip add 100.1.1.1 24
[r1-LoopBack1]int g0/0/0
[r1-GigabitEthernet0/0/0]ip add 12.0.0.1 24
[r1-GigabitEthernet0/0/0]q
[r1]bgp 100
[r1-bgp]router-id 1.1.1.1
[r1-bgp]peer 12.0.0.2 as-number 300
[r1-bgp]network 100.1.1.1 24

R2:

[Huawei]sys r2
[r2]int loopback 0
[r2-LoopBack0]ip add 2.2.2.2 32
[r2-LoopBack0]int loopback 1
[r2-LoopBack1]ip add 100.1.1.1 24
[r2-LoopBack1]int g0/0/0
[r2-GigabitEthernet0/0/0]ip add 34.0.0.1 24
[r2-GigabitEthernet0/0/0]q
[r2]bgp 200
[r2-bgp]router-id 2.2.2.2
[r2-bgp]peer 34.0.0.2 as-number 300
[r2-bgp]network 100.1.1.1 24

R3:

[Huawei]sys r3
[r3]int loopback 0
[r3-LoopBack0]ip add 3.3.3.3 32
[r3-LoopBack0]int g0/0/0
[r3-GigabitEthernet0/0/0]ip add 12.0.0.2 24
[r3-GigabitEthernet0/0/0]int g0/0/1
[r3-GigabitEthernet0/0/1]ip add 23.0.0.1 24
[r3-GigabitEthernet0/0/1]q
[r3]ospf 1 router-id 3.3.3.3
[r3-ospf-1]area 0
[r3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
[r3-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255
[r3-ospf-1-area-0.0.0.0]q
[r3-ospf-1]q
[r3]bgp 300
[r3-bgp]router-id 3.3.3.3
[r3-bgp]peer 12.0.0.1 as-number 100
[r3-bgp]peer 5.5.5.5 as-number 300
[r3-bgp]peer 5.5.5.5 connect-interface loopback 0
[r3-bgp]peer 4.4.4.4 as-number 100
[r3-bgp]undo peer 4.4.4.4 as-number 100
                          ^
Error:Too many parameters found at '^' position.
[r3-bgp]dis this
[V200R003C00]
#
bgp 300
 router-id 3.3.3.3
 peer 4.4.4.4 as-number 100 
 peer 5.5.5.5 as-number 300 
 peer 5.5.5.5 connect-interface LoopBack0
 peer 12.0.0.1 as-number 100 
 #
 ipv4-family unicast
  undo synchronization
  peer 4.4.4.4 enable
  peer 5.5.5.5 enable
  peer 12.0.0.1 enable
#
return
[r3-bgp]undo peer 4.4.4.4
[r3-bgp]dis this
[V200R003C00]
#
bgp 300
 router-id 3.3.3.3
 peer 5.5.5.5 as-number 300 
 peer 5.5.5.5 connect-interface LoopBack0
 peer 12.0.0.1 as-number 100 
 #
 ipv4-family unicast
  undo synchronization
  peer 5.5.5.5 enable
  peer 12.0.0.1 enable
#
return
[r3-bgp]peer 4.4.4.4 as-number 300
[r3-bgp]peer 4.4.4.4 connect-interface loopback 0
[r3-bgp]peer 5.5.5.5 ne	
[r3-bgp]peer 5.5.5.5 next-hop-lo	
[r3-bgp]peer 5.5.5.5 next-hop-local 

R4:

[Huawei]sys r4
[r4]int loopback 0
[r4-LoopBack0]ip add 4.4.4.4 32
[r4-LoopBack0]int g0/0/0
[r4-GigabitEthernet0/0/0]ip add 34.0.0.2 24
[r4-GigabitEthernet0/0/0]int g0/0/1
[r4-GigabitEthernet0/0/1]ip add 45.0.0.1 24
[r4]ospf 1 router-id 4.4.4.4
[r4-ospf-1]area 0
[r4-ospf-1-area-0.0.0.0]network 4.4.4.4 0.0.0.0
[r4-ospf-1-area-0.0.0.0]network 45.0.0.0 0.0.0.255
[r4-ospf-1-area-0.0.0.0]q
[r4-ospf-1]q
[r4]bgp 300
[r4-bgp]router-id 4.4.4.4
[r4-bgp]peer 34.0.0.1 as-number 200
[r4-bgp]peer 3.3.3.3 as-number 300
[r4-bgp]peer 3.3.3.3 connect-interface loopback 0
[r4-bgp]peer 5.5.5.5 as-number 300
[r4-bgp]peer 5.5.5.5 connect-interface loopback 0
[r4-bgp]peer 5.5.5.5 ne	
[r4-bgp]peer 5.5.5.5 next-hop-lo	
[r4-bgp]peer 5.5.5.5 next-hop-local 

R5:

[Huawei]sys r5
[r5]int loopback 0
[r5-LoopBack0]ip add 5.5.5.5 32
[r5-LoopBack0]int g0/0/0
[r5-GigabitEthernet0/0/0]ip add 23.0.0.2 24
[r5-GigabitEthernet0/0/0]int g0/0/1
[r5-GigabitEthernet0/0/1]ip add 45.0.0.2 24
[r5]ospf 1 router-id 5.5.5.5
[r5-ospf-1]area 0
[r5-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255
[r5-ospf-1-area-0.0.0.0]network 45.0.0.0 0.0.0.255
[r5-ospf-1-area-0.0.0.0]network 5.5.5.5 0.0.0.0
[r5-ospf-1-area-0.0.0.0]q
[r5-ospf-1]q
[r5]bgp 300
[r5-bgp]router-id 5.5.5.5
[r5-bgp]peer 3.3.3.3 as-number 300
[r5-bgp]peer 3.3.3.3 connect-interface loopback 0
[r5-bgp]peer 4.4.4.4 as-number 300
[r5-bgp]peer 4.4.4.4 connect-interface loopback 0

看R5的BGP路由表显示为:100.1.1.0的网段选择3.3.3.3为最优路由
Emmmmmm 后面还没写完,待定。。。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值