OSPF路由控制原理与实验

OSPF路由汇总原理

路由汇总,又被称为路由聚合(Route Aggregation or RouteSummarization),指的是把一组路由汇聚成一条路由条目的操作。这组路由被称为明细路由,而所汇聚成的路由被称为汇总路由。路由汇总是一种重要的思想,在大型的项目中是必须考虑的一个重点事项。我们都知道,随着网络的规模越来越大,网络中的设备所需维护的路由表项也就会越来越多,路由表的规模也就会逐渐变大,而路由表是需要占用设备的内存空间的,路由的查询也是需要占用设备的资源的,因此我们需要考虑(尤其在一些大型的网络中)在保证网络中路由畅通的同时,减小路由表的规模。路由汇总就是一个有效的手段。几乎所有的路由协议都支持路由汇总。RIP、EIGRP等协议支持自动及手工路由汇总,而OSPF只支持手工路由汇总。OSPF支持两种形式的手工自动汇总:一种部署在ABR上,另一种则部署在ASBR上。

当OSPF网络规模较大时,配置路由聚合可以有效减少路由表中的条目,减少对系统资源的占用。配置路由聚合后,如果被聚合的IP地址范围内的某条链路频繁UP和Down,该变化并不会通告到被聚合的IP地址范围外的设备(因为被聚合的各子路由最终是以聚合路由的形式对外进行通告的),可以避免网络中的路由震荡,在一定程度上提高了网络的稳定性。并且仅可在ABR和ASBR上配置路由聚合。

在ABR或ASBR上配置路由聚合后,ABR和ASBR本地的OSPF路由表示保持不变的,仍为各网段的明细路由,但是在它们区域内其他OSPFS设备通告时,这些连续子网路由将只以一条聚合路由进行通告,这样区域内其他路由器上的OSPF路由表中只有这条聚合路由到达对应聚合网段。直到网络中被聚合的路由都出现故障而消失时,该聚合路由才会消失。

在ASBR上对引入的路由进行路由聚合后,有以下几个情况:

  1. 如果本地设备是ASBR且处于普通区域中,本地设备将对引入的聚合地址范围内的所有Type-5 LSA进行路由聚合。
  2. 如果本地设备是ASBR且处于NSSA区域或者Totally NSSA区域中,本地设备对引入的聚合地址范围内的所有Type-5 LSA和Type-7 LSA进行路由聚合。
  3. 如果本地设备既是ASBR又是ABR且处于NSSA或者完全NSSA区域中,本地设备除对引入的聚合地址范围内的Type-5 LSA个Type-7 LSA进行路由聚合外,还将对Type-7 LSA转换为Type-5 LSA的路由也进行聚合,所以说只要符合的LSA都会进行聚合。

区域中路由的聚合:
进入ABR的对应区域视图下进行(所有在其区域中的ABR都有配置相应的命令),路由聚合是按区域进行的,不能一次性聚合两个不同的路由中。
外部路由的聚合:
在引入路由的ASBR上ospf进程下进行,如果ASBR还是ABR,也可以按照区域间路由进行配置。

场景1:在ABR上的路由汇总
在这里插入图片描述
规划:
网络拓扑如上图所示。R1、R2、R3、R4及R5运行OSPF,OSPF区域的规划如图。
R5将三个直连网段(172.16.1.0/24、172.16.2.0/24及172.16.3.0/24)都network到OSPF。
R1将三个直连网段(10.1.1.0/24、10.1.2.0/24及10.1.3.0/24)都重发布到OSPF。
完成上述配置后,所有的路由器应该都能学习到全网的路由。

在一个区域中所有的ABR上进行,因为所有的ABR都会进行3类LSA的转发,如果只在其中一个上进行,其他ABR也会进行明细LSA的转发,这样其他区域就会收到汇总和没有汇总的路由条目
在R3(ABR)上对Area2内的路由执行汇总:
[Huawei-ospf-1-area-0.0.0.2]abr-summary 172.16.0.0 255.255.255.0 cost ? //进入需要汇总条目的的区域中进行汇总,汇总还能添加cost值,注意这里的掩码需要。

注意,这种汇总方式(abr-summary)只能在ABR上配置,而且只能对ABR直接连接的区域中的Intra-Area路由(区域内部路由)执行汇总。R3执行汇总后,R1及R2的路由表中将出现172.16.0.0/16的汇总路由,而不会再学习到明细路由。如此一来,R1及R2的路由表就精简了,而且当它们需要访问R5下挂的那三个网段时,可以通过这条汇总路由到达。

要强点的是,如果不是在R3,而是在R2上对R5下挂的网段进行汇总,则无法实现。因此此时R3作为ABR,已经将描述这些网段的3类LSA注入到了Area0,而在R2上,是无法对这些3类LSA进行路由汇总的。

场景2:在ASBR上进行路由的汇总
在这里插入图片描述
在R1上对其自己重发布进OSPF的路由执行汇总:
ospf 1
asbr-summary 10.1.0.0 255.255.0.0
完成上述配置后,R2、R3、R4及R5都会学习到一条10.1.0.0/16的汇总路由(使用Type-5LSA描述),而不会再学习到10.1.1.0/24、10.1.2.0/24以及10.1.3.0/24这三条明细路由。

场景3:在NSSA的ABR上执行路由汇总
在这里插入图片描述
过滤:OSPF的过滤方式很多,需要灵活的应用将网络做一点小小的变更,Area1被配置为NSSA。R1将三条直连路由引入NSSA,R2会学习到这三条外部路由(Type-7LSA),并执行Type-7 LSA转Type-5 LSA的动作,因此其实R2既是ABR又是ASBR,这些Type-5LSA是由其产生的,那么R2也能执行路由汇总:
ospf 1
asbr-summary 10.1.0.0 255.255.0.0

OSPF汇总防环设计:
在这里插入图片描述
在上图所示的场景中,R3将R5下挂的三个子网汇总成172.16.0.0/16并向R2通告这条汇总路由。R1则下发一条OSPF默认路由到整个OSPF域。此时R5下挂的某个子网里有PC中毒,疯狂扫描一个并不存在的子网的IP地址(如172.16.222.0/24子网),这些数据包被发给网关R5,R5通过路由表查询,最终将这些报文依照默认路由进行转发,也就是发送给R4,而R4也一样,将报文依照默认路由转发给R3,R3再转给R2,而R2由于已经收到R3传递过来的汇总路由(172.16.0.0/16),因此经过路由表查询后,数据包的目的地址匹配上了这条汇总路由,于是它又把这些数据包丢回去给R3,数据包的目的地址在R3处匹配了默认路由,又被丢回R2,如此反复,直到报文的TTL递减为0。这就出现了环路。

OSPF为了解决这个问题,在执行路由汇总时,会在本地自动产生一条指向Null0的路由。例如在R3处执行了路由汇总,则它会自动产生一条指向Null0的路由:
172.16.0.0/16 is a summary, 00:00:02, Null0
这样一来当再有类似事件发生,数据包将在R3这就被丢弃(匹配Null0路由)。
实际上,当执行路由汇总时,自动在本地路由表产生一条指向Null0的路由是一种非常常规的防环手段,许多动态路由协议都具备这个特征。

整理资料来源:http://ccietea.com/

OSPF路由过滤原理与实验(华为)

过滤方式:

在这里插入图片描述
1.filter-policy import (在ospf进程中配置)
此命令只能抑制生成路由条目,所以不论要生成打什么的路由,都能过滤。但不能阻止LSA泛洪(对于3类、5类、7类可以阻止,1类和2类LSA无法阻止)。
例如:
[R3-ospf-1] filter-policy 2000 import //过滤的信息按照ACL2000进行匹配

2.filter-policy export (在ospf进程中配置)
该命令用来在ASBR上过滤ASE/NSSA,其实是抑制LSA的生成,LSA一旦生成,这条命令就没有用了,另外这条命令只能在ASBR上配置,在其它路由上配置没有用,因为LSA已经生成。
例如:
[R1-ospf-1] filter-policy 2000 export

3.asbr-summary not-advertise (在ospf进程中配置)
该命令用来在ASBR 上可以对自身产生的ASE/NSSA做过滤,其实也是抑制LSA生成,在本地LSDB中没有相关LSA.
例如:
[R1-ospf-1] asbr-summary 11.11.11.11 255.255.255.255

4.abr-summary not-advertise (区域中配置)
该命令用在ABR上对三类LSA做过滤,不过只能自己产生的三类LSA做过滤,不能对从其它设备收到的三类做过滤。(原因是:这条命令是聚合命令,目前VRP和IOS的聚合命令的实现是只对本区域的路由做聚合而不对区域间路由做聚合,所以说abr-summary not-advertise这条命令实际只是对本区域的区域内路由起过滤作用。)

5.filter import/export (区域中配置)
该命令用在ABR上对三类LSA做过滤,不论这个三类LSA是自己产生的还是从别的路由器收到的都可以过滤。对五类LSA无效。
例如:
[R3-ospf-1-area-0.0.0.0] filter 2000 export
[R3-ospf-1-area-0.0.0.2] filter 2000 import

6.ospf filter-lsa-out (接口上配置)
可以过滤任3、5、7类LSA,配置完需要清一下ospf进程。
例如:
[R4-GigabitEthernet0/0/1] ospf filter-lsa-out all(3、5、7类LSA)/ase(5类LSA)/nssa(7类LSA)/summary(3类LSA)//后面可以跟上过滤的类型,ACL等。
注意点:

  1. 此命令不能过滤1类和2类LSA,原因是如果同一区域设备的1类和2类LSA不同步,会产生环路。
  2. 在某接口配直 OSPF filter-LSA-out 命令后,该接口的 OSPF 邻居关系会自动重建。

实验一:通过filter-policy对OSPF接收的路由过滤(区域内,过滤1类和2类LSA)

在这里插入图片描述
需求描述
如图所示,三台交换机同属于OSPF Area 0区域,SwitchA发布测试网段10.1.1.0/24,要求在SwitchB上部署filter-policy import,使得SwitchB的路由表中不允许出现10.1.1.0/24这条路由。

配置方法
1.在SwitchB上定义一个地址前缀列表,“抓取”符合条件的路由。
[SwitchB] ip ip-prefix huawei index 10 deny 10.1.1.0 24 //拒绝这条
[SwitchB] ip ip-prefix huawei index 20 permit 0.0.0.0 0 less-equal 32//允许所有
2.在SwitchB的OSPF视图中,部署filter-policy import。
[SwitchB] ospf
[SwitchB-ospf-1] filter-policy ip-prefix huawei import

结果验证
做完上述配置以后,查看SwitchB和SwitchC的路由表如下:

[SwitchB] display ip routing-table 

Route Flags: R - relay, D - download to fib

Routing Tables: Public
     Destinations : 6        Routes : 6       

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
   192.168.12.0/24  Direct  0    0           D   192.168.12.2    Vlanif12
   192.168.12.2/32  Direct  0    0           D   127.0.0.1       Vlanif12
   192.168.23.0/24  Direct  0    0           D   192.168.23.1    Vlanif23
   192.168.23.1/32  Direct  0    0           D   127.0.0.1       Vlanif23

[SwitchC] display  ip routing-table 

Route Flags: R - relay, D - download to fib

Routing Tables: Public
         Destinations : 6        Routes : 6       

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

  10.1.1.0/24  OSPF    10   3           D   192.168.23.1    Vlanif23
  127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
  127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
  192.168.12.0/24  OSPF    10   2           D   192.168.23.1    Vlanif23
  192.168.23.0/24  Direct  0    0           D   192.168.23.2    Vlanif23
  192.168.23.2/32  Direct  0    0           D   127.0.0.1       Vlanif23

通过SwitchB和SwitchC的路由表可以看到,虽然在SwitchB上10.1.1.0/24这条路由已经被过滤掉,但是LSA信息会继续传递给SwitchC,所以SwitchC的路由表中继续存在10.1.1.0/24这条路由。这样的结果也验证了我们一开始在注意事项中给出的结论:在链路状态路由协议中,filter-policy只能过滤路由信息,不能过滤LSA信息。

同时SwitchB和SwitchC的LSDB中仍然存在描述10.1.1.0/24这条路由的LSA信息,为了验证这一点,我们看一下SwitchB和SwitchC的LSA信息。

  [SwitchB] display  ospf lsdb  router 
    OSPF Process 1 with Router ID 10.10.10.2
             Area: 0.0.0.0
     Link State Database
  ………

    Type      : Router
    Ls id     : 10.10.10.1
    Adv rtr   : 10.10.10.1 
    Ls age    : 139
    Len       : 48
    Options   :  E 
    seq#      : 80000005
    chksum    : 0x41c4
    Link count: 2
     * Link ID: 10.1.1.0    
       Data   : 255.255.255.0
       Link Type: StubNet     
       Metric : 1
       Priority : Low
     * Link ID: 192.168.12.2
       Data   : 192.168.12.1
       Link Type: TransNet    
       Metric : 1

  [SwitchC] display  ospf lsdb  router 

      OSPF Process 1 with Router ID 10.10.10.3
                   Area: 0.0.0.0
           Link State Database
  …………

    Type      : Router
    Ls id     : 10.10.10.1
    Adv rtr   : 10.10.10.1 
    Ls age    : 81
    Len       : 48
    Options   :  E 
    seq#      : 80000005
    chksum    : 0x41c4
    Link count: 2
     * Link ID: 10.1.1.0    
       Data   : 255.255.255.0
       Link Type: StubNet     
       Metric : 1
       Priority : Low
     * Link ID: 192.168.12.2
       Data   : 192.168.12.1
       Link Type: TransNet    
       Metric : 1

可以看到SwitchB和SwitchC的LSDB中仍然存在描述10.1.1.0/24这条路由的LSA信息。

实验二:通过filter-policy对OSPF接收的路由过滤(区域间,过滤3类LSA)

如图所示,相对于上一个场景,这个场景的区别之处是划分了两个不同的区域,SwitchB和SwitchC之间传递的是Type3 LSA,这个Type3 LSA是SwitchB上根据区域间路由生成的。配置方法跟上一个场景一样,不再赘述,我们直接看一下实验结果。
在这里插入图片描述

在部署过滤策略之前我们先看一下SwitchB和SwitchC的路由表:

 [SwitchB] display  ip routing-table         
 Route Flags: R - relay, D - download to fib

 Routing Tables: Public
     Destinations : 7        Routes : 7       

 Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

   10.1.1.0/24  OSPF    10   2           D   192.168.12.1    Vlanif12
   127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
   127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
   192.168.12.0/24  Direct  0    0           D   192.168.12.2    Vlanif12
   192.168.12.2/32  Direct  0    0           D   127.0.0.1       Vlanif12
   192.168.23.0/24  Direct  0    0           D   192.168.23.1    Vlanif23
   192.168.23.1/32  Direct  0    0           D   127.0.0.1       Vlanif23


  [SwitchC] display  ip routing-table 
  
  Route Flags: R - relay, D - download to fib

  Routing Tables: Public
     Destinations : 6        Routes : 6       

  Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

  10.1.1.0/24  OSPF    10   3           D   192.168.23.1    Vlanif23
  127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
  127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
  192.168.12.0/24  OSPF    10   2           D   192.168.23.1    Vlanif23
  192.168.23.0/24  Direct  0    0           D   192.168.23.2    Vlanif23
  192.168.23.2/32  Direct  0    0           D   127.0.0.1       Vlanif23

可以看到,在部署路由过滤策略之前,SwitchB和SwitchC的路由表中都有10.1.1.0/24这条路由。

结果验证
在SwitchB上部署filter-policy import以后,查看SwitchB和SwitchC的路由表,结果如下:

  [SwitchB] display  ip routing-table 

  Route Flags: R - relay, D - download to fib

  Routing Tables: Public
     Destinations : 6        Routes : 6       

  Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

  127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
  127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
  192.168.12.0/24  Direct  0    0           D   192.168.12.2    Vlanif12
  192.168.12.2/32  Direct  0    0           D   127.0.0.1       Vlanif12
  192.168.23.0/24  Direct  0    0           D   192.168.23.1    Vlanif23
  192.168.23.1/32  Direct  0    0           D   127.0.0.1       Vlanif23

  [SwitchC] display ip routing-table

  Route Flags: R - relay, D - download to fib
  
  Routing Tables: Public
     Destinations : 5        Routes : 5       

  Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

  127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
  127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
  192.168.12.0/24  OSPF    10   2           D   192.168.23.1    Vlanif23
  192.168.23.0/24  Direct  0    0           D   192.168.23.2    Vlanif23
  192.168.23.2/32  Direct  0    0           D   127.0.0.1       Vlanif23

由于现在划分不同的区域,SwitchC上的10.1.1.0/24这条路由是由SwitchB根据自身学习的路由产生的Type3-LSA描述的,而SwitchB上的这条路由被过滤掉了,因此不能够再产生描述区域间路由的这个Type3-LSA,因此SwitchC上不会再学习到10.1.1.0/24这条路由。

原因:不加入路由表的3类LSA不会发送出给其他邻居,5类和7类LSA同理,这也可以被称为路由的矢量性。

整理资料来源:https://forum.huawei.com/enterprise/zh/thread-373371-1-1.html

OSPF与默认路由

OSPF中默认路由的种类有三种: LSA3的默认路由、LSA5及LSA7的默认路由。

  1. 由区域边界路由器(ABR) 产生LSA3默认路由,用来指导区域内设备进行区域之间报文的转发。
    这是自动产生的默认路由,由特定的区域设置而触发产生。Stub/totally Stub及Totally NSSA类型区域内都会存在由ABR产生的LSA3的默认路由,默认Cost=1。

  2. ASBR能引入外部路由,ASBR同样也能产生默认路由,类型为LSA5或LSA7。
    普通或骨干区域产生LSAS外部默认路由,而NSSA区域产生LSA7外部默认NSSA路由,用来指导自治系统(AS)内设备进行自治系统外报文的转发。
    OSPF默认路由的发布原则如下:
    ●OSPF路由器只具有对区域外的出口时,才能够发布默认路由LSA。
    ●如果OSPF路由器已经发布了默认路由LSA,那么不再学习其他路由器发布的相同类型默认路由。即路由计算时不再计算其他路由器发布的相同类型的默认路由LSA,但数据库中存有对应的LSA。(目的,防止环路。当默认路由护指的情况下,在精确的内部路由基础上,边界路由器通告一条默认路由,使所有访问未知目的地的数据报文都送至边界路由器。但如果流量流至边界路由器后,又从边界路由器通过默认路由流回内部路由器,则环路出现。)
    ●外部默认路由的发布如果要依赖于其他路由,那么被依赖的路由不能是本OSPF路由域内的路由,即不是本进程OSPF学习到的路由。因为外部默认路由的作用是用于指导报文的域外转发,而本OSPF路由域的路由的下一跳都指向了域内,不能满足指导报文域外转发的要求。
    ●如果一台路由器同时收到多种类型默认路由,则根据选路规则,Type3 默认路由的优先级高于Type5或Type7路由。

  3. 骨干及普通区域中的默认路由。
    缺省情况下,在普通OSPF区域内的OSPF路由器是不会产生默认路由的,即使它有默认路由。当网络中默认路由通过其他路由进程产生时,必须能够将默认路由通告到整个OSPF域中。这个时候要想产生默认路由必须在ASBR上手动通过命令进行配置。使用了该命令后会产生一个Link State ID为0.0.0.0、网络掩码为0.0.0.0的LSA5,并且通告到整个OSPF域中。
    骨干区域和普通区域产生LSA5默认路由使用default-route-advertise 命令,如米加always参数,则无条件产生默认路由,如果没有加always参数,则是有条件的,仅当路由表里有条默认路由(其他协议或外部默认路由)才可以产生LSA5的默认路由。如果一台路由器产生默认路由,若再接收其他路由器产生的默认路由,容易出现路由互指的环路问题。

  4. NSSA 区域中的默认路由。
    NSSA命令用来配置OSPF区域为NSSA区域。NSSA default-route avertise用来在ASBR。上配置产生LSA7默认路由到NSSA区域。华为实现会在NSSA及Totally NSSA边界路由器ABR上自动产生LSA7默认路由。ABR既然能产生LSA7默认路由,所以NSSA区域的ABR同时也是ASBR。
    ●在ABR上无论路由表中是否存在默认路由0.0.0.0/0,都会产生LSA7默认路由。
    ●在ASBR上只有当路由表中存在默认路由0.0.0.0/0,才会产生Type7 LSA默认路由。
    如果希望到达自治系统外部网络是通过本区域的ASBR出去,而访问其他外部网络则是通过骨干区域出去。此时,可在ABR上产生一条LSA7的默认路由,通告到NSSA区域内。这样,访问明细路由所对应的外部网络通过NSSA ASBR,而其他路由都可通过NSSA的ABR产生LSA7类型默认路由到达其他区域的ASBR出去。
    如果希望访问所有的外部网络只通过本区域ASBR出去,则必须在ASBR上手动配置,使ASBR产生一条LSA7类型默认路由并通告到整NSSA区域。这样,所有的外部路由就只能通过本区域NSSA的ASBR到达。NSSA区域产生默认路由,因为LSA7默认路由只在NSSA区域内泛洪,并没有泛洪到整个OSPF域中,所以本NSSA区域内的路由器在找不到明细路由之后可以按默认路由离开本区域。LSA7 默认路由不会在ABR上转换成LSA5默认路由。

参考资料:HCIE学习指南

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
OSPF路由综合实验是一个实验,旨在综合运用OSPF协议和相关配置,实现路由的建立和通信。 在实验中,可以手动指定Router ID,也可以使用随机生成的Router ID。当指定Router ID时,可以优先选择具有Loopback口的Router ID,或选择网段较大的Router ID。 [1] 在OSPF中,有五种报文用于实现邻居发现和路由更新:hello报文(用于打招呼),dd报文(用于本地概要),lsr报文(用于请求更新),lsu报文(用于向对方发送对方需要的LSA),lsack报文(用于确认)。在与邻居建立初始连接时,邻居的状态为"int",之后会变为"two-way"或"full"。 [1] 在进行OSPF协议配置时,可以通过命令行配置路由器的Router ID,如[R1ospf 1 router-id 1.1.1.1。同时,可以将路由器划分到指定的区域(area),如[R1-ospf-1area 1。可以通过配置网络地址来告知OSPF协议管理的网络范围,如[R1-ospf-1-area-0.0.0.1network 172.16.0.0 0.0.255.255。 [2] 在OSPF路由建立后,可以进行通信测试。在测试中,可能会发现可以PING通某些目标地址(如4.4.4.4),但无法PING通其他目标地址(如192.168.0.0和34.0.0.3),这是因为缺少返回的路由。解决这个问题的方法有多种:可以配置静态路由,也可以在R4上注入直连路由,还可以通过动态发布缺省路由。其中,后两种方法的实现原理相同,都是通过OSPF协议来传递路由信息。具体的配置命令可以是ospf 1 import-route direct或ospf 1 default-route-advertise。 [3] 综合实验的目的是通过综合运用OSPF协议和相关配置,实现路由的建立和通信。通过不断实践和调试,可以提高对OSPF协议和网络路由的理解和应用能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

格洛米爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值