多分支跳转协处理方法及装置与流程

文档序号:11623635阅读:201来源:国知局
多分支跳转协处理方法及装置与流程

本申请涉及多分支跳转协处理技术,尤其涉及一种多分支跳转协处理方法及装置。



背景技术:

随着互联网技术的不断发展,交换机或者路由器的应用也越来越频繁,通常交换机或者路由器中包括有网络处理器,在网络处理器上运行的软件中,会遇到多分支跳转结构。

目前网络处理器基于三态内容寻址存储器(ternarycontentaddressmemory,简称tcam)来实现这种分支跳转。其中tcam中存储有多条tcam条目。网络处理器对编译后的分支跳转条件与tcam中的tcam条目进行匹配,当匹配成功后,则该网络处理器将匹配成功的tcam条目对应的静态随机存储器(staticrandomaccessmemory,简称sram)地址发送给下一个网络处理器,该下一个网络处理器通过确定sram地址中所存储的待执行动作对应的存储地址,来执行该存储地址对应的待执行动作。

然而,目前网络处理器基于tcam进行分支跳转条件匹配时,存在匹配数量庞大的问题。尤其当分支跳转条件较为复杂时,则tcam条目也会存在爆炸式增长的趋势,从而造成多分支跳转条件匹配效率低的问题,同时这将对tcam的存储空间带来进一步的挑战。



技术实现要素:

本申请提供一种多分支跳转协处理方法及装置,从而提高多分支跳转条件匹配效率,并且可以节省tcam的存储空间,进而降低tcam的功耗。

第一方面,本申请实施例提供一种多分支跳转协处理方法,该方法应用于交换机或者路由器,该交换机或者路由器包括:第一网络处理器、第二网络处理器、协处理器和三态内容寻址存储器tcam,协处理器的两端分别与第一网络处理器和第二网络处理器连接,tcam与协处理器连接,其中tcam按照待处理业务被逻辑划分为n个子tcam,n为大于或者等于2的正整数,前n-1个子tcam中的每个子tcam中包括至少一条tcam条目,每个子tcam中的至少一条tcam条目存在一个收敛节点,且收敛节点为每个子tcam的下一个子tcam中的至少一条tcam条目的起始节点;该方法包括:

第一网络处理器获取分支跳转条件,并将分支跳转条件发送给协处理器,其中分支跳转条件包括n条分支跳转子条件,分支跳转子条件与子tcam一一对应。

协处理器对每个子tcam对应的分支跳转子条件和每个子tcam中的tcam条目进行匹配,确定匹配成功的至少一条tcam条目。

协处理器根据匹配成功的至少一条tcam条目确定静态随机存储器sram地址,sram地址对应的sram单元用于存储待执行动作对应的存储地址。

协处理器将sram地址发送给第二网络处理器。

第二网络处理器根据sram地址确定待执行动作对应的存储地址,并执行存储地址对应的待执行动作。

本申请实施例的有益效果是:由于tcam被逻辑划分为n个子tcam,使得tcam条目数量降低,从而提高了分支跳转条件的匹配效率,并且可以节省tcam的存储空间,进而降低tcam的功耗。

可选地,若分支跳转条件最多包括m个条件节点,每个条件节点可以取值为第一数值或者第二数值,m为大于或者等于2的正整数,则每条tcam条目也包括m项数值,每项数值可以为第一数值、第二数值和第三数值中的任一项。

当任一分支跳转子条件中的条件节点取所述第一数值,且任一分支跳转子条件对应的子tcam中存在至少一条tcam条目对应位置的数值为第一数值或者第三数值时,则表示任一分支跳转子条件中的条件节点匹配成功。

当任一分支跳转子条件中的条件节点取第二数值,且任一分支跳转子条件对应的子tcam中存在至少一条tcam条目对应位置的数值为第二数值或者第三数值时,则表示任一分支跳转子条件中的条件节点匹配成功。

当任一分支跳转子条件中的每个条件节点和任一条tcam条目对应位置的数值匹配成功,则表示任一分支跳转子条件和任一条tcam条目匹配成功。

通过该方法可以有效确定分支跳转子条件和任一条tcam条目是否匹配成功。

可选地,协处理器根据匹配成功的至少一条tcam条目确定静态随机存储器sram地址,包括:

协处理器在至少一条tcam条目中,确定与每个子tcam对应的分支跳转子条件中的每个条件节点取值相同的tcam条目。

协处理器确定取值相同的tcam条目对应的sram地址为sram地址。

通过该方法可以有效sram地址,从而可以根据sram地址确定待执行动作对应的存储地址,并执行存储地址对应的待执行动作。

可选地,还包括:协处理器获取子tcam的划分信息,划分信息包括:收敛节点的个数和收敛节点的位置信息。

协处理器根据子tcam的划分信息确定分支跳转条件的分割节点,并根据分割节点对分支跳转条件进行划分,获得n条分支跳转子条件。

通过该方法协处理器可以准确的对分支跳转条件进行划分,使得tcam条目数量降低,从而提高了分支跳转条件的匹配效率,并且可以节省tcam的存储空间,进而降低tcam的功耗。

下面将提供一种多分支跳转协处理装置,该装置可以用于执行上述的多分支跳转协处理方法,其实现原理和技术效果类似,在此不再赘述。

第二方面,本申请实施例提供一种多分支跳转协处理装置,该装置包括:第一网络处理器、第二网络处理器、协处理器和三态内容寻址存储器tcam,协处理器的两端分别与第一网络处理器和第二网络处理器连接,tcam与协处理器连接,其中tcam按照待处理业务被逻辑划分为n个子tcam,所述n为大于或者等于2的正整数,前n-1个子tcam中的每个子tcam中包括至少一条tcam条目,所述每个子tcam中的至少一条tcam条目存在一个收敛节点,且收敛节点为每个子tcam的下一个子tcam中的至少一条tcam条目的起始节点。

第一网络处理器用于获取分支跳转条件,并将分支跳转条件发送给协处理器,其中分支跳转条件包括n条分支跳转子条件,分支跳转子条件与子tcam一一对应。

协处理器用于对每个子tcam对应的分支跳转子条件和每个子tcam中的tcam条目进行匹配,确定匹配成功的至少一条tcam条目;根据匹配成功的至少一条tcam条目确定静态随机存储器sram地址,sram地址对应的sram单元用于存储待执行动作对应的存储地址;并将sram地址发送给第二网络处理器。

第二网络处理器用于根据sram地址确定待执行动作对应的存储地址,并执行存储地址对应的待执行动作。

可选地,若分支跳转条件最多包括m个条件节点,每个条件节点可以取值为第一数值或者第二数值,m为大于或者等于2的正整数,则每条tcam条目也包括m项数值,每项数值可以为第一数值、第二数值和第三数值中的任一项。

当任一分支跳转子条件中的条件节点取第一数值,且任一分支跳转子条件对应的子tcam中存在至少一条tcam条目对应位置的数值为第一数值或者第三数值时,则表示任一分支跳转子条件中的条件节点匹配成功。

当任一分支跳转子条件中的条件节点取第二数值,且任一分支跳转子条件对应的子tcam中存在至少一条tcam条目对应位置的数值为第二数值或者第三数值时,则表示任一分支跳转子条件中的条件节点匹配成功。

当任一分支跳转子条件中的每个条件节点和任一条tcam条目对应位置的数值匹配成功,则表示任一分支跳转子条件和任一条tcam条目匹配成功。

可选地,协处理器具体用于:在至少一条tcam条目中,确定与每个子tcam对应的分支跳转子条件中的每个条件节点取值相同的tcam条目。确定取值相同的tcam条目对应的sram地址为所述sram地址。

可选地,协处理器还用于:获取子tcam的划分信息,划分信息包括:收敛节点的个数和收敛节点的位置信息。根据子tcam的划分信息确定分支跳转条件的分割节点,并根据分割节点对分支跳转条件进行划分,获得n条分支跳转子条件。

本申请提供一种多分支跳转协处理方法及装置,该方法包括:第一网络处理器获取分支跳转条件,并将分支跳转条件发送给协处理器,其中分支跳转条件包括n条分支跳转子条件,分支跳转子条件与子tcam一一对应;协处理器对每个子tcam对应的分支跳转子条件和每个子tcam中的tcam条目进行匹配,确定匹配成功的至少一条tcam条目;协处理器根据匹配成功的至少一条tcam条目确定静态随机存储器sram地址,sram地址对应的sram单元用于存储待执行动作对应的存储地址;协处理器将sram地址发送给所述第二网络处理器;第二网络处理器根据sram地址确定待执行动作对应的存储地址,并执行存储地址对应的待执行动作。由于tcam被逻辑划分为n个子tcam,使得tcam条目数量降低,从而提高了分支跳转条件的匹配效率,并且可以节省tcam的存储空间,进而降低tcam的功耗。

附图说明

图1为本发明一实施例提供的一种多分支跳转协处理方法的流程图;

图2为本发明一实施例提供的基于交换机或者路由器所提供的多分支跳转协处理的示意图;

图3a为本发明一实施例提供的子tcam与sram单元对应关系的示意图;

图3b为本发明另一实施例提供的子tcam与sram单元对应关系的示意图;

图4a为现有技术提供的分支跳转结构的示意图;

图4b为本发明一实施例提供的分支跳转结构和基于该分支跳转结构的tcam划分的示意图;

图4c为本发明一实施例提供的分支跳转结构和基于该分支跳转结构的tcam划分的示意图;

图5为本申请一实施例提供的一种多分支跳转协处理装置的结构示意图。

具体实施方式

目前,在网络处理器上运行的软件中,经常会遇到多分支跳转结构,例如网络处理器运行的多分支跳转结构如下:

其中左侧的conditon_1,conditon_2、conditon_3以及conditon_x等为多分支跳转条件,key为任一多分支跳转条件,右侧的tcamentry1、tcamentry2和tcamentry3等为tcam中存储的tcam条目。

现有技术中网络处理器对编译后的分支跳转条件与tcam中的tcam条目进行匹配,当匹配成功后,则该网络处理器将匹配成功的tcam条目对应的sram地址发送给下一个网络处理器,该下一个网络处理器通过确定sram地址中所存储的待执行动作对应的存储地址,来执行该存储地址对应的待执行动作。

然而目前网络处理器基于tcam进行分支跳转条件匹配时,存在匹配数量庞大的问题。尤其当分支跳转条件较为复杂时,则tcam条目也会存在爆炸式增长的趋势,从而造成多分支跳转条件匹配效率低的问题,同时这将对tcam的存储空间带来进一步的挑战。

为了解决上述问题,本申请提供一种多分支跳转协处理方法及装置。具体地,图1为本发明一实施例提供的一种多分支跳转协处理方法的流程图,该方法应用于交换机或者路由器,图2为本发明一实施例提供的基于交换机或者路由器所提供的多分支跳转协处理的示意图,如图2所示,该交换机或者路由器包括:第一网络处理器21、第二网络处理器22、协处理器23和tcam24,该第一网络处理器21和第二网络处理器22可以是交换机或者路由器中不同的核。协处理器23的两端分别与第一网络处理器21和第二网络处理器22连接,tcam24与协处理器23连接,如图2所示,其中tcam(物理tcam)按照待处理业务被逻辑划分为n个子tcam,所述n为大于或者等于2的正整数,每个子tcam包括至少一条tcam条目,前n-1个子tcam中的每个子tcam中的至少一条tcam条目存在一个收敛节点,且收敛节点为每个子tcam的下一个子tcam中的至少一条tcam条目的起始节点。

所谓收敛节点必须满足两个条件:第一,它是子tcam所包括的至少一条tcam条目中的每条tcam条目的最后一个条件节点的下一个条件节点(公共条件节点)。第二,它是该子tcam的下一个子tcam所包括的至少一条tcam条目中的每条tcam条目的起始节点。其中子tcam所包括的至少一条tcam条目可以是子tcam中的全部tcam条目,也可以是子tcam中的部分tcam条目。同样的,子tcam的下一个子tcam所包括的至少一条tcam条目可以是子tcam的下一个子tcam中的全部tcam条目,也可以是子tcam的下一个子tcam中的部分tcam条目。

或者,

所谓收敛节点必须满足两个条件:第一,它是子tcam所包括的至少一条tcam条目中的每条tcam条目的最后一个条件节点(公共条件节点)。第二,它是该子tcam的下一个子tcam所包括的至少一条tcam条目中的每条tcam条目的起始节点的前一个条件节点(公共条件节点)。

值得一提的是本申请中tcam被逻辑划分为多个子tcam,相应的,子tcam中的tcam条目相对于现有技术的tcam条目也发生了变化。假设tcam被逻辑划分为两个子tcam,分别为tcam1和tcam2,现有技术中的一条tcam条目为tcamentry={10,01,10,01,10},而本申请中tcam1对应的一条tcam条目为tcamentry1={10,01,00,00,00},tcam2对应的一条tcam条目为tcamentry2={00,00,10,01,10},符号“00”可以表示任何数值,本申请中的“00”等同于下面将要提到的第三数值。

具体地,如图1所示,该方法包括如下步骤:

步骤s101:第一网络处理器获取分支跳转条件,并将分支跳转条件发送给协处理器,其中分支跳转条件包括n条分支跳转子条件,分支跳转子条件与子tcam一一对应;

具体地,第一网络处理器可以获取一个分支跳转条件或者多个分支跳转条件,这里第一网络处理器获取的分支跳转条件即为上述分支跳转结构中的key。由于tcam被逻辑划分为n个子tcam,因此分支跳转条件也自然被划分为n条分支跳转子条件,需要说明的是,一种可选方式:该分支跳转子条件可以是根据待处理业务已经被划分好的,并且该分支跳转子条件与子tcam的对应关系也已经是配置好的。另一种可选方式,该多分支跳转协处理方法还包括:协处理器获取子tcam的划分信息,该划分信息包括:收敛节点的个数和收敛节点的位置信息;协处理器根据子tcam的划分信息确定分支跳转条件的分割节点,并根据分割节点对分支跳转条件进行划分,获得n条分支跳转子条件。

步骤s102:协处理器对每个子tcam对应的分支跳转子条件和每个子tcam中的tcam条目进行匹配,确定匹配成功的至少一条tcam条目;

可选地,若分支跳转条件最多包括m个条件节点,每个条件节点可以取值为第一数值或者第二数值,该m为大于或者等于2的正整数,则每条tcam条目也包括m项数值,每项数值可以为第一数值、第二数值和第三数值中的任一项;当任一分支跳转子条件中的条件节点取第一数值,且任一分支跳转子条件对应的子tcam中存在至少一条tcam条目对应位置的数值为第一数值或者第三数值时,则表示任一分支跳转子条件中的条件节点匹配成功;当任一分支跳转子条件中的条件节点取第二数值,且任一分支跳转子条件对应的子tcam中存在至少一条tcam条目对应位置的数值为第二数值或者第三数值时,则表示任一分支跳转子条件中的条件节点匹配成功;当任一分支跳转子条件中的每个条件节点和任一条tcam条目对应位置的数值匹配成功,则表示所述任一分支跳转子条件和所述任一条tcam条目匹配成功。

例如:第一数值为01,第二数值为10,第三数值为00,获取到的分支跳转子条件为key={01,10},则key={01,10}在tcam1中匹配成功的tcam条目包括:tcamentry1={01,10,00,00,00},tcamentry2={01,00,00,00,00},tcamentry3={00,00,00,00,00},其中tcam条目与sram地址一一对应。

步骤s103:协处理器根据匹配成功的至少一条tcam条目确定sram地址,该sram地址对应的sram单元用于存储待执行动作对应的存储地址;

一种可选方式:协处理器在子tcam所包括的至少一条tcam条目中,确定与该子tcam对应的分支跳转子条件中的每个条件节点取值相同的tcam条目;协处理器确定取值相同的tcam条目对应的sram地址为所述sram地址,该sram地址对应的sram单元用于存储待执行动作对应的存储地址。

接着上述的例子,上述分支跳转子条件key={01,10},对于子tcam1来讲,匹配成功的tcam条目为:tcamentry1={01,10,00,00,00},tcamentry2={01,00,00,00,00},tcamentry3={00,00,00,00,00},则协处理器在子tcam1所包括的至少一条tcam条目中,确定与该子tcam1对应的分支跳转子条件中的每个条件节点取值相同的tcam条目为tcamentry1={01,10,00,00,00},并确定该tcamentry1={01,10,00,00,00}对应的sram地址为最终的sram地址。图3a为本发明一实施例提供的子tcam与sram单元对应关系的示意图,如图3a所示,对于子tcam1包括3条匹配成功的tcam条目,其中匹配成功用1表示,匹配失败用0表示,对于tcam1来讲,与key取值相同的tcam条目为第二条tcam条目,确定该tcam条目对应的sram地址所对应的sram存储单元存储待执行动作对应的存储地址为0,同样的,对于tcam2来讲,sram地址所对应的sram存储单元存储待执行动作对应的存储地址为2,对于tcam3来讲,sram地址所对应的sram存储单元存储待执行动作对应的存储地址为1,对于tcamn来讲,sram地址所对应的sram存储单元存储待执行动作对应的存储地址为3。

另一种可选方式:假设每个分支跳转条件都包括了5个条件节点,前两个条件节点被划分为一个分支跳转子条件,后三个被划分为另一个分支跳转子条件,并且tcamentryx={00,00,00,00,00}为每个子tcam中的最后一个tcam条目,则协处理器在匹配成功的至少一条tcam条目中确定第一条tcam条目对应的sram地址为最终的sram地址。

基于此,上述分支跳转子条件key={01,10},对于子tcam1来讲,匹配成功的tcam条目为:tcamentry1={01,10,00,00,00},tcamentry3={00,00,00,00,00}。图3b为本发明另一实施例提供的子tcam与sram单元对应关系的示意图,如图3b所示,对于子tcam1包括2条匹配成功的tcam条目,其中匹配成功用1表示,匹配失败用0表示,对于tcam1来讲,第一个匹配成功的tcam条目为tcamentry1,确定该tcamentry1对应的sram地址所对应的sram存储单元存储待执行动作对应的存储地址为0,同样的,对于tcam2来讲,sram地址所对应的sram存储单元存储待执行动作对应的存储地址为2,对于tcam3来讲,sram地址所对应的sram存储单元存储待执行动作对应的存储地址为1,对于tcamn来讲,sram地址所对应的sram存储单元存储待执行动作对应的存储地址为3。

步骤s104:协处理器将sram地址发送给第二网络处理器;

步骤s105:第二网络处理器根据sram地址确定待执行动作对应的存储地址,并执行存储地址对应的待执行动作。

结合步骤s104和步骤s105进行说明:第二网络处理器获取到每个子tcam对应的sram地址之后,第二网络处理器可以根据每个sram地址确定待执行动作对应的存储地址,并执行该存储地址对应的待执行动作。也就是说,针对不同的sram地址,第二网络处理器独立执行存储地址对应的待执行动作。当然,也可以是,按照sram地址对应的存储地址有低至高的顺序依次执行该存储地址对应的待执行动作。本申请对此不做限制。

下面对上述过程进行举例说明:

方案一:图4a为现有技术提供的分支跳转结构的示意图,如图4a所示,菱形表示分支跳转条件的条件节点。矩形表示待执行动作。从上至下每条路径中的菱形构成一条分支跳转条件。基于该分支跳转结构,tcam中至少需要存储8*4*2*2=128条tcam条目。

方案二:图4b为本发明一实施例提供的分支跳转结构和基于该分支跳转结构的tcam划分的示意图,如图4b所示,菱形表示分支跳转条件的条件节点。矩形表示待执行动作。从上至下每条路径中的菱形构成一条分支跳转条件。基于该分支跳转结构,tcam1包括至少8条tcam条目。tcam2包括至少4*2*2=16条tcam条目。因此整个tcam中至少需要存储8+4*2*2=24条tcam条目。

方案三:图4c为本发明一实施例提供的分支跳转结构和基于该分支跳转结构的tcam划分的示意图,如图4c所示,菱形表示分支跳转条件的条件节点。矩形表示待执行动作。从上至下每条路径中的菱形构成一条分支跳转条件。基于该分支跳转结构,tcam1包括至少8条tcam条目。tcam2包括至少4条tcam条目。tcam3包括至少2*2=4条tcam条目。因此整个tcam中至少需要存储8+4+2*2=16条tcam条目。

综上所述,图4a至图4c所示的三个方案对应的tcam条目如表1:

表1

综上,本申请提供一种多分支跳转协处理方法,包括:第一网络处理器获取分支跳转条件,并将分支跳转条件发送给协处理器,其中分支跳转条件包括n条分支跳转子条件,分支跳转子条件与子tcam一一对应;协处理器对每个子tcam对应的分支跳转子条件和每个子tcam中的tcam条目进行匹配,确定匹配成功的至少一条tcam条目;协处理器根据匹配成功的至少一条tcam条目确定静态随机存储器sram地址,sram地址对应的sram单元用于存储待执行动作对应的存储地址;协处理器将sram地址发送给所述第二网络处理器;第二网络处理器根据sram地址确定待执行动作对应的存储地址,并执行存储地址对应的待执行动作。由于tcam被逻辑划分为n个子tcam,使得tcam条目数量降低,从而提高了分支跳转条件的匹配效率,并且可以节省tcam的存储空间,进而降低tcam的功耗。

图5为本申请一实施例提供的一种多分支跳转协处理装置的结构示意图,如图5所示,该装置50包括:第一网络处理器51、第二网络处理器52、协处理器53和三态内容寻址存储器tcam54,所述协处理器53的两端分别与所述第一网络处理器51和所述第二网络处理器52连接,所述tcam54与所述协处理器53连接,其中所述tcam54按照待处理业务被逻辑划分为n个子tcam,所述n为大于或者等于2的正整数,前n-1个子tcam中的每个子tcam中包括至少一条tcam条目,所述每个子tcam中的至少一条tcam条目存在一个收敛节点,且所述收敛节点为所述每个子tcam的下一个子tcam中的至少一条tcam条目的起始节点。

所述第一网络处理器51用于获取分支跳转条件,并将所述分支跳转条件发送给所述协处理器,其中所述分支跳转条件包括n条分支跳转子条件,所述分支跳转子条件与所述子tcam一一对应。

所述协处理器53用于对每个子tcam对应的分支跳转子条件和每个子tcam中的tcam条目进行匹配,确定匹配成功的至少一条tcam条目;根据所述匹配成功的至少一条tcam条目确定静态随机存储器sram地址,所述sram地址对应的sram单元用于存储待执行动作对应的存储地址;并将所述sram地址发送给所述第二网络处理器。

所述第二网络处理器52用于根据所述sram地址确定所述待执行动作对应的存储地址,并执行所述存储地址对应的所述待执行动作。

本申请实施例提供的多分支跳转协处理装置可以用于执行上述的多分支跳转协处理方法,其实现原理和技术效果类似,在此不再赘述。

可选地,若所述分支跳转条件最多包括m个条件节点,每个条件节点可以取值为第一数值或者第二数值,所述m为大于或者等于2的正整数,则每条tcam条目也包括m项数值,每项数值可以为所述第一数值、所述第二数值和第三数值中的任一项。

当任一分支跳转子条件中的条件节点取所述第一数值,且所述任一分支跳转子条件对应的子tcam中存在至少一条tcam条目对应位置的数值为所述第一数值或者所述第三数值时,则表示所述任一分支跳转子条件中的条件节点匹配成功。

当所述任一分支跳转子条件中的条件节点取所述第二数值,且所述任一分支跳转子条件对应的子tcam中存在至少一条tcam条目对应位置的数值为所述第二数值或者所述第三数值时,则表示所述任一分支跳转子条件中的条件节点匹配成功。

当所述任一分支跳转子条件中的每个条件节点和任一条tcam条目对应位置的数值匹配成功,则表示所述任一分支跳转子条件和所述任一条tcam条目匹配成功。

可选地,所述协处理器53具体用于:在所述至少一条tcam条目中,确定与每个子tcam对应的分支跳转子条件中的每个条件节点取值相同的tcam条目;确定所述取值相同的tcam条目对应的sram地址为所述sram地址。

可选地,所述协处理器53还用于:获取所述子tcam的划分信息,所述划分信息包括:所述收敛节点的个数和所述收敛节点的位置信息;根据所述子tcam的划分信息确定所述分支跳转条件的分割节点,并根据所述分割节点对所述分支跳转条件进行划分,获得所述n条分支跳转子条件。

本申请实施例提供的多分支跳转协处理装置可以用于执行上述的多分支跳转协处理方法,其实现原理和技术效果类似,在此不再赘述。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1