基于TCAM多级流表的规则索引管理实现方法和装置与流程

文档序号:18237895发布日期:2019-07-24 08:49阅读:281来源:国知局
本发明涉及计算机网络通信
技术领域
:及工业网络安全领域,具体涉及网络安全设备装置中多级流表查表机制实现的方法和装置。
背景技术
::随着信息化的不断深入和普及,网络信息安全技术已经受到世界各国的普遍重视,网络安全交换设备,防火墙,网关等设备在网络信息安全领域有着举足轻重的地位。在这样的大环境下,传统的基于三态内容寻址存储器(TCAM)的一级查表机制已经越来越不能满足提高信息安全性能的需求了。TCAM(Ternarycontentaddressablememory)是一种三态内容寻址存储器,主要用于快速查找访问控制列表(ACL),路由表等表项。现有的TCAM查表机制中,数据包从Ethernet网络接口中进如FPGA,FPGA会解析数据包,把数据包中相关的数据用于TCAM中查表,命中TCAM中表项后,根据查寻结果值做出相应执行动作,转发,丢弃或者进入CPU。FPGA通过一级查表TCAM,可以快速的命中各种类型的表。但是受TCAM查找规则所限,绝大多数TCAM最多仅支持576位查表。实验证明随着查表位数的增加,查表所需时钟周期也会线性增长,从而导致路由性能下降。对于普通设备来讲,基于TCAM的一级查表,比如十二元组的查表,已经可以满足用户的普通的性能需求了。但是对于高端设备而言,比如运行在网络核心和骨干位置,必然要处理巨大的流量,并且要处理多种复杂的业务,比如ACL流分类,策略路由,数据包过滤,数据包内容更改,用户自定义规则等等,简单的一级查表已经满足不了这样的需求了。因此本发明中使用的多级流表查表机制,一方面满足了网络安全设备高性能的需求,该多级流表查表机制,具有十二元组规则匹配,用户自定义查找规则,4字节用户自定义数据匹配,十二元组数据更改等多项功能。在传统的基于TCAM的查表设备中,规则索引都是需要用户指定的一个数,然后判断该数是不是已经在链表中已经存在,如果存在则添加规则失败,如果不存在则向TCAM中添加新的规则。这种索引管理机制已经不能满足本多级流表查表机制了,因为在发明涉及的多级流表查表机制中会使用到三个不同规则的索引,如果每个都需要用户指定,则会给用户添加很多繁琐的操作,更何况删除流表项操作时,用户就更不容易操作了。因此本发明的另一方面,给多级流表查表机制中使用的多种规则索引,提供了一种方便,简洁的索引管理方法,使得用户无需关心这些规则索引,具有自动生成和删除的功能。技术实现要素:鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种基于TCAM多级流表的规则索引管理实现方法和装置。本发明提供了一种基于TCAM多级流表的规则索引管理实现方法,该方法包括:基于所述规则索引建立相应的排序链表,所述排序链表包括一级规则索引和/或二级规则索引;将所述二级规则索引添加到相应的一级规则索引上,所述二级规则索引包括动作表索引(at_index),二级查表索引(table_id)和用户自定义规则索引(ud_index);查询所述CAM多级流表,由所述一级规则索引的返回值判断是否需要二级查表,根据判断结果进行一级查表和/或二级查表执行相应处理动作。进一步地,所述查询所述CAM多级流表,由所述一级规则索引的返回值判断是否需要二级查表,根据判断结果进行二级查表执行相应处理动作的步骤还包括:S1、查询TCAM中多元组规则数据,该规则数据最后一项是多元组规则表索引,进行一级查表,所述一级查表的返回值中定位了用户自定义规则地址索引(ud_index);S2、根据所述用户自定义规则地址索引(ud_index)读取用户自定义规则,所述用户自定义规则用于定位和读取网络数据包中的数据,所述用户自定义规则的最后一项是所述二级查表规则流表索引(table_id),根据所述二级查表规则流表索引,进行二级查表。S3、根据所述二级查表规则流表索引(table_id)把网络数据包中的数据与用户自定义流表数据匹配,获得返回值,所述返回值保存了用于最后执行的动作表地址索引(at_index)。S4、根据所述动作表地址索引(at_index)从SRAM相应位置读取动作表,执行所述动作表中相应处理动作。进一步地,所述一级规则索引由一个排序链表管理,所述一级规则索引添加时与索引链表中每个索引进行比较,当所述添加的一级规则索引已经存在,则添加索引失败;当所述添加的一级规则索引没有存在,就把要添加的一级规则索引添加进相应的排序链表中。进一步地,所述二级规则索引由自增型的排序链表管理,所述二级规则索引枚举索引号时就与所述自增型的排序链表中的索引号比较,当所述枚举索引号已经存在,则枚举下一个索引号,直到所述自增型的排序链表中不存在该索引号,然后锁定该索引号并把添加进所述自增型的排序链表中。进一步地,当删除所述规则索引时,指定一个一级规则索引,与其关联的二级规则索引会跟着删除,进而达到方便规则索引管理的目的。当删除十二元组对应的TCAM规则时,根据该一级规则索引,会自动删除与之关联的动作表索引(at_indeX)和用户自定义规则索引(ud_indeX)。当删除用户自定义对应的TCAM规则时,根据该一级规则索引,会自动删除二级查表索引(table_id)。本发明提供了一种基于TCAM多级流表的规则索引管理实现装置,所述装置包括:建立排序链表模块,用于基于所述规则索引建立相应的排序链表,所述排序链表包括一级规则索引和/或二级规则索引;规则索引关联模块,用于将所述二级规则索引添加到相应的一级规则索引上,所述二级规则索引包括动作表索引(at_indeX),二级查表索引(table_id)和用户自定义规则索引(ud_index);流表查询动作模块,用于查询所述CAM多级流表,由所述一级规则索引的返回值判断是否需要二级查表,根据判断结果进行一级查表和/或二级查表执行相应处理动作。进一步地,所述流表查询动作模块还包括,所述查询所述CAM多级流表,由所述一级规则索引的返回值判断是否需要二级查表,根据判断结果进行二级查表执行相应处理动作的步骤还包括:查询TCAM中多元组规则数据,该规则数据最后一项是多元组规则表索引,进行一级查表,所述一级查表的返回值中定位了用户自定义规则地址索引(ud_index);根据所述用户自定义规则地址索引(ud_index)读取用户自定义规则,所述用户自定义规则用于定位和读取网络数据包中的数据,所述用户自定义规则的最后一项是所述二级查表规则流表索引(table_id),根据所述二级查表规则流表索引,进行二级查表。根据所述二级查表规则流表索引(table_id)把网络数据包中的数据与用户自定义流表数据匹配,获得返回值,所述返回值保存了用于最后执行的动作表地址索引(at_index)。根据所述动作表地址索引(at_index)从SRAM相应位置读取动作表,执行所述动作表中相应处理动作。进一步地,所述装置还包括:所述一级规则索引由一个排序链表管理,所述一级规则索引添加时与索引链表中每个索引进行比较,当所述添加的一级规则索引已经存在,则添加索引失败;当所述添加的一级规则索引没有存在,就把要添加的一级规则索引添加进相应的排序链表中。进一步地,所述装置还包括:所述二级规则索引由自增型的排序链表管理,所述二级规则索引枚举索引号时就与所述自增型的排序链表中的索引号比较,当所述枚举索引号已经存在,则枚举下一个索引号,直到所述自增型的排序链表中不存在该索引号,然后锁定该索引号并把添加进所述自增型的排序链表中。进一步地,所述装置还包括:当删除所述规则索引时,指定一个一级规则索引,与其关联的二级规则索引会跟着删除,进而达到方便规则索引管理的目的。当删除十二元组对应的TCAM规则时,根据该一级规则索引,会自动删除与之关联的动作表索引(at_indeX)和用户自定义规则索引(ud_index)。当删除用户自定义对应的TCAM规则时,根据该一级规则索引,会自动删除二级查表索引(table_id)。本发明实施例提供了一种基于TCAM多级流表的规则索引管理实现方法,该方法包括:基于所述规则索引建立相应的排序链表,所述排序链表包括一级规则索引和/或二级规则索引;将所述二级规则索引添加到相应的一级规则索引上,所述二级规则索引包括动作表索引,二级查表索引和用户自定义规则索引;查询所述TCAM多级流表,由所述一级规则索引的返回值判断是否需要二级查表,根据判断结果进行一级查表和/或二级查表执行相应处理动作。对处理大流量和多种复杂业务的设备的多级查表的问题,同时也解决了现有技术中指定规则编号带来的索引添加和查找的困难。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1为本发明涉及的架构图;图2-1为本发明实施例提供的一种基于TCAM多级流表的规则索引管理实现方法的优化过程图;图2-2每个二级规则索引的分配流程图:图2-3为一级规则链表的结构体图;图3为本发明实施例提供的判断是否需要二级查表后执行相应处理动作的优化过程图;图4为本发明实施例提供的一种基于TCAM多级流表的规则索引管理实现装置结构图。具体实施方式为了降低TCAM空间资源的浪费,保证数据包被正常处理,本发明实施例提供了一种用于报文处理的规则表项的优化方法及装置。下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。参考图1所示,以下将通过附图所示的具体实施方式对本发明进行详细说明。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法或功能上的变换均包含在本发明的保护范围内。本发明的装置架构如图1所示,FPGA是执行查表动作的核心,一级查表和二级查表的内容及返回值均存放在TCAM中,用户自定义查表规则和最后执行的动作表放在SRAM中。下面结合说明附图,对本发明实施例进行说明。图2-1为本发明实施例提供的一种基于TCAM多级流表的规则索引管理实现方法的优化过程图,该过程包括以下步骤:S201:基于所述规则索引建立相应的排序链表,所述排序链表包括一级规则索引和/或二级规则索引;具体地,这里的排序链表包括了起码1个一级规则,每1个一级规则中又应当包括了二级规则索引(如果不需要二级查表就没有二级规则索引),其中一级规则索引需要由人为指定索引号,例如1,而二级规则索引需要采用自动枚举方式分配,但是整个二级规则索引表的索引号可以都是从2开始。进一步地,如图2-2,每个二级规则索引的分配。装置从规则索引最小值开始枚举,并将每次的枚举值与链表中的已存在的索引值比较,如果链表中已经存在,则枚举下一个值,逐渐递增,一直到链表中没有该值或者到达枚举最大值为止。如果链表中不存在该规则索引值,就锁定该规则索引值,并将其分配给规则索引,进而添加进其相应的排序链表中,以便下次遍历。从而实现自动分配二级规则索引的目的。S202:将所述二级规则索引关联到相应的一级规则索引上,所述二级规则索引包括动作表索引(at_indeX),二级查表索引(table_id)和用户自定义规则索引(ud_index);具体地,把所有的二级规则索引都添加到一个具有一级规则索引的一个结构体中,这样便于二级规则索引的删除。因此,上述方案中,每次对TCAM查表就需要添加一个一级规则索引。进一步地,如图2-3为一级规则链表的结构体图,所述的一级规则链表的结构体包括一级规则索引号、命令行字符串(用于执行现有规则的查表后的处理动作命令)、动作表索引(at_index),二级查表规则索引(table_id)和用户自定义规则索引(ud_index),其中动作表索引包含在动作表索引链表中,二级查表规则索引包含在TCAM二级查表索引链表中,用户自定义规则索引包含在用户自定义规则索引链表中。一级规则索引通过一条一级规则索引链表管理,一级规则索引是人工管理的,用户可以指定索引号进行添加TCAM规则或者按照指定索引号删除TCAM规则。本装置中有三个二级规则索引,分别是:保存于SRAM的用户自定义规则地址索引(ud_index),二级TCAM查表规则表索引(table_index),和查询完流表后用于执行的动作表地址索引(at_index)。二级规则索引与一级规则索引的关系如图2-3所示,每一个一级规则索引都会关联到他相应的二级规则索引,这在添加规则时会把二级索引添加到这个一级索引规则的结构体中来。删除时只需指定一个一级规则索引,装置就会自动把与之关联的二级规则索引自动删除,进而实现方便,简洁,快速的索引管理。S203:查询所述TCAM多级流表,由所述一级规则索引的返回值判断是否需要二级查表,根据判断结果进行一级查表和/或二级查表执行相应处理动作。具体地,当所述一级规则索引的返回值有用户自定义规则索引(ud_index)时,查询二级查表规则索引(table_id)中的返回值获得所述动作表索引(at_index),并根据读取所述动作表索引(at_index)的动作表中的内容执行相应处理动作;当所述一级规则索引返回值没有二级查表规则索引(table_id)数值时,查询所述动作表索引(at_index)并读取动作表中内容执行相应处理动作。当所述一级规则索引的返回值是所述动作表索引(at_index)时,所述动作表索引。进一步地,如图,图3为本发明实施例提供的判断是否需要二级查表后执行相应处理动作的优化过程,本实施例以十二元组为例,该过程包括以下步骤:S301、一级查表,FPGA查询TCAM中十二元组规则数据,该规则数据最后一项是十二元组规则表索引(固定为1);一级查表的返回值中定位了用户自定义规则地址索引(ud_index);S302、FPGA根据用户自定义规则地址索引(ud_index)读取用户自定义规则,该规则用于定位和读取网络数据包中用户想要的数据,该规则的最后一项是二级查表规则流表索引(table_id),根据二级查表规则流表索引,进行TCAM二级查表。S303、二级查表,FPGA根据二级查表规则流表索引(table_id)把网络数据包中数据与用户自定义流表数据匹配,获得返回值,该返回值中保存了用于最后执行的动作表地址索引(at_index)。S304、FPGA根据二级查表结果,也就是动作表地址索引(at_index),从SRAM相应位置读取动作表,执行动作表内容相应处理动作。进一步,对于一级规则索引的管理实现方法,一级规则索引需要人工指定,通过一个排序链表管理,每次添加一级规则索引时,会与索引链表中每个索引进行比较,如果已经存在,则添加索引失败,如果链表中没有,就把新的一级规则索引添加进相应的链表。进一步,对于二级规则索引的管理实现方法,所有二级规则索引都是通过枚举来自动分配,不需要人工指定,这是由每个索引的一个自增型排序链表管理。产生一个二级规则索引时,从索引最小值开始,枚举索引号,每次枚举出一个就与链表中的索引号比较,如果索引号已经存在,则枚举下一个索引号,直到索引链表中不存在该索引号,然后锁定该索引号,并把该索引号添加进该规则索引链表。进一步,本发明带来了在删除规则的便利,作为本发明的进一步改进,删除规则索引时,只需要指定一个一级规则索引,与其关联的二级规则索引会跟着删除,进而达到方便规则索引管理的目的。作为本发明的进一步改进,删除十二元组对应的TCAM规则时,根据该一级规则索引,会自动删除与之关联的动作表索引(at_index)和用户自定义规则索引(ud_index)。作为本发明的进一步改进,删除用户自定义对应的TCAM规则时,根据该一级规则索引,会自动删除二级查表索引(table_id)。图4为本发明实施例提供的一种基于TCAM多级流表的规则索引管理实现装置结构图,所述装置包括,建立排序链表模块41,用于基于所述规则索引建立相应的排序链表,所述排序链表包括一级规则索引和/或二级规则索引;具体地,这里的排序链表包括了起码1个一级规则,每1个一级规则中又应当包括了二级规则索引(如果不需要二级查表就没有二级规则索引),其中一级规则索引需要由人为指定索引号,例如1,而二级规则索引需要采用自动枚举方式分配,但是整个二级规则索引表的索引号可以都是从2开始。进一步地,如图2-1,每个二级规则索引的分配。装置从规则索引最小值开始枚举,并将每次的枚举直与链表中的已存在的索引值比较,如果链表中已经存在,则枚举下一个值,逐渐递增,一直到链表中没有该值或者到达枚举最大值为止。如果链表中不存在该规则索引值,就锁定该规则索引值,并将其分配给规则索引,进而添加进其相应的排序链表中,以便下次遍历。从而实现自动分配二级规则索引的目的。规则索引关联模块42,用于将所述二级规则索引添加到相应的一级规则索引上,所述二级规则索引包括动作表索引(at_index),二级查表索引(table_id)和用户自定义规则索引(ud_index);具体地,把所有的二级规则索引都添加到一个具有一级规则索引的一个结构体中,这样便于二级规则索引的删除。因此,上述方案中,每次对TCAM查表就需要添加一个一级规则索引。进一步地,如图2-2,所述的一级规则链表的结构体包括一级规则索引号、命令行字符串(用于执行现有规则的查表后的处理动作命令)、动作表索引(at_index),二级查表规则索引(table_id)和用户自定义规则索引(ud_index),其中动作表索引包含在动作表索引链表中,二级查表规则索引包含在TCAM二级查表索引链表中,用户自定义规则索引包含在用户自定义规则索引链表中。一级规则索引通过一条一级规则索引链表管理,一级规则索引是人工管理的,用户可以指定索引号进行添加TCAM规则或者按照指定索引号删除TCAM规则。本装置中有三个二级规则索引,分别是:保存于SRAM的用户自定义规则地址索引(ud_index),二级TCAM查表规则表索引(table_index),和查询完流表后用于执行的动作表地址索引(at_index)。二级规则索引与一级规则索引的关系如图3所示,每一个一级规则索引都会关联到他相应的二级规则索引,这在添加规则时会把二级索引添加到这个一级索引规则的结构体中来。删除时只需指定一个一级规则索引,装置就会自动把与之关联的二级规则索引自动删除,进而实现方便,简洁,快速的索引管理。流表查询动作模块43,用于查询所述CAM多级流表,由所述一级规则索引的返回值判断是否需要二级查表,根据判断结果进行一级查表和/或二级查表执行相应处理动作。具体地,当所述一级规则索引的返回值有用户自定义规则索引(ud_index)时,查询二级查表规则索引(table_id)中的返回值获得所述动作表索引(at_index),并根据读取所述动作表索引(at_index)的动作表中的内容执行相应处理动作;当所述一级规则索引返回值没有二级查表规则索引(table_id)数值时,查询所述动作表索引(at_index)并读取动作表中内容执行相应处理动作。进一步地,本发明实施例提供的判断是否需要二级查表后执行相应处理动作的优化过程,所述流表查询动作模块还包括,:S1、查询TCAM中多元组规则数据,该规则数据最后一项是多元组规则表索引,进行一级查表,所述一级查表的返回值中定位了用户自定义规则地址索引(ud_index);S2、根据所述用户自定义规则地址索引(ud_index)读取用户自定义规则,所述用户自定义规则用于定位和读取网络数据包中的数据,所述用户自定义规则的最后一项是所述二级查表规则流表索引(table_id),根据所述二级查表规则流表索引,进行二级查表。S3、根据所述二级查表规则流表索引(table_id)把网络数据包中的数据与用户自定义流表数据匹配,获得返回值,所述返回值保存了用于最后执行的动作表地址索引(at_index)。S4、根据所述动作表地址索引(at_index)从SRAM相应位置读取动作表,执行所述动作表中相应处理动作。进一步,所属装置还包括:所述一级规则索引由一个排序链表管理,所述一级规则索引添加时与索引链表中每个索引进行比较,当所述添加的一级规则索引已经存在,则添加索引失败;当所述添加的一级规则索引没有存在,就把要添加的一级规则索引添加进相应的排序链表中。进一步,所属装置还包括:所述二级规则索引由自增型的排序链表管理,所述二级规则索引枚举索引号时就与所述自增型的排序链表中的索引号比较,当所述枚举索引号已经存在,则枚举下一个索引号,直到所述自增型的排序链表中不存在该索引号,然后锁定该索引号并把添加进所述自增型的排序链表中。进一步,所述装置还包括:当删除所述规则索引时,指定一个一级规则索引,与其关联的二级规则索引会跟着删除,进而达到方便规则索引管理的目的。当删除十二元组对应的TCAM规则时,根据该一级规则索引,会自动删除与之关联的动作表索引(at_index)和用户自定义规则索引(ud_indeX)。当删除用户自定义对应的TCAM规则时,根据该一级规则索引,会自动删除二级查表索引(table_id)。在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的用于报文处理的规则表项的优化装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1