单播报文转发方法和装置与流程

文档序号:15049660发布日期:2018-07-27 23:56阅读:379来源:国知局

本申请涉及网络通信技术,特别涉及单播报文转发方法和装置。



背景技术:

以太网虚拟专用网络(evpn:ethernetvirtualprivatenetwork)是一种二层vpn技术,在控制平面上采用边界网关协议(bgp:bordergatewayprotocol)通告路由信息,在数据平面上采用可扩展虚拟局域网络(vxlan:virtualextensiblelan)封装方式转发用户报文。

evpn可以基于已有的服务提供商或企业因特网协议(ip:internetprotocol)网络,为物理站点(site)分散在不同位置的同一租户的相同子网提供二层互联,以及通过evpn网关为同一租户的不同子网提供三层互联,并为其提供与外部网络的三层互联。



技术实现要素:

本申请提供了单播报文转发方法和装置,以防止端口故障引起远端设备刷新转发表项。

本申请提供的技术方案包括:

一种单播报文转发方法,该方法应用于可扩展虚拟局域网络隧道端点vtep设备,所述vtep设备作为多归属设备的一个归属,与所述多归属设备的其他各个归属之间通过隧道连接,该方法包括:

接收对端设备发送的路由;

若所述路由携带的以太网段标识esi与本地至少一端口配置的esi相同,则将所述esi关联本设备与所述对端设备之间的隧道口;

检测配置了所述esi的本地端口故障,则维持故障端口配置的所述esi的状态为正常运行up状态,并确定故障端口关联的接入电路ac口,依据所述esi关联的所述隧道口将所述ac口从关联所述故障端口切换为关联所述隧道口;

当接收到单播报文时,若确定出用于转发所述单播报文的出端口为所述ac口,则依据所述ac口关联的所述隧道口转发所述单播报文。

一种单播报文转发装置,该装置应用于可扩展虚拟局域网络隧道端点vtep设备,所述vtep设备作为多归属设备的一个归属,与所述多归属设备的其他各个归属之间通过隧道连接,该装置包括:

路由单元,用于接收对端设备发送的路由;若所述路由携带的以太网段标识esi与本地至少一端口配置的esi相同,则将所述esi关联本设备与所述对端设备之间的隧道口;

故障处理单元,用于检测配置了所述esi的本地端口故障,则维持故障端口配置的所述esi的状态为正常运行up状态,并确定故障端口关联的接入电路ac口,依据所述esi关联的所述隧道口将所述ac口从关联所述故障端口切换为关联所述隧道口;

报文单元,用于当接收到单播报文时,若确定出用于转发所述单播报文的出端口为所述ac口,则依据所述ac口关联的所述隧道口转发所述单播报文。

由以上技术方案可以看出,本申请中,当vtep设备检测到配置了esi的本地端口故障,则依然维持该故障端口配置的esi的状态为up状态,并继续维持该故障端口关联的ac口,这使得vtep设备不会因为端口故障发送路由撤销指令,进而防止远端设备因为故障端口而刷新各转发表项的出端口信息,这避免远端设备由于刷新转发表项而导致的诸如丢包等问题。同时,为了防止丢包,在本申请中,维持故障端口关联的ac口不变,只不过将该ac口从原本关联的故障端口切换为关联隧道口,以将ac口对应的封装信息从ac实例的封装信息(比如vlan)修改为隧道封装信息,使得单播报文通过隧道转发给对端设备,以由对端设备最终转发单播报文至目的地。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1为本申请提供的组网示意图;

图2为本申请提供的方法流程图;

图3为本申请提供的实施例应用组网示意图;

图4为本申请提供的装置结构示意图。

具体实施方式

在evpn组网中存在多归属场景。比如图1所示的以太网段交换机(es:ethernetsegment)1有三个归属,分别为可扩展虚拟局域网络隧道端点(vtep:vxlantunnelendpoint)1、vtep2、vtep4三个不同的设备。为便于描述,具有两个以上归属的设备简称多归属设备,比如图1所示的es1。其中,多归属设备上连接各个归属的端口为同一聚合口的成员端口,比如图1中,es1上连接vtep1的端口port11_1、es1上连接vtep2的端口port11_2、es1上连接vtep4的端口port11_4为同一聚合口的两个成员端口。而多归属设备的各个归属所连接的同一设备称为多归属终结设备,比如图1所示的vtep3。

应用于多归属场景,多归属设备的各个归属上连接同一多归属设备的端口配置相同的以太网段标识(esi:ethernetsegmentidentifier)。仍以图1所示组网为例,则,在图1中,vtep1上连接多归属设备即es1的端口port1_11、vtep2上连接多归属设备即es1的端口port2_11、vtep4上连接多归属设备即es1的端口port4_11配置相同的esi(记为esi101)。

其中,多归属设备的任一归属在本地连接多归属设备的端口正常运行(up)时,将该up的本地端口配置的esi设置为up状态,并向远端设备发布路由,发布的路由携带了该设置为up状态的esi。比如,图1中的vtep1,其具体为多归属设备即es1的一个归属,在连接多归属设备即es1的端口port1_11up时,将端口port1_11配置的esi101设置为up状态,并向远端设备发布携带esi101的路由。作为一个实施例,这里,发布路由的方式类似现有路由发布,不再赘述。

之后,远端设备学习路由,依据学习的路由携带的esi更新本地转发表项。以图1所示的vtep1在连接多归属设备即es1的端口port1_11up时,向远端设备发布携带esi101的路由为例,则vtep2、vtep3、vtep4会学习到vtep1发布的路由,依据学习到的路由携带的esi101更新本地转发表项,比如,vtep3在本地转发表项中新增esi101对应的转发表项如至server2的转发表项(出端口为vtep3到vtep1的隧道)。vtep2、vtep4发布路由的方式类似vtep1,最终,vtep3本地至server2的转发表项中的出端口有3个,分别为vtep3到vtep1的隧道vtep3到vtep2的隧道、和vtep3到vtep4的隧道。

下面应用于多归属场景,以图1所示的服务器(server)5向server2发送单播报文为例:

server5发送单播报文。单播报文的目的mac地址为server2的mac地址。

介于server5与server2之间的vtep3,先接收到来自server5的单播报文,在本地转发表中查找单播报文匹配的转发表项;其中,若单播报文为二层报文,则在本地转发表中查找单播报文匹配的转发表项可为:依据单播报文的目的mac地址在本地mac表中查找与单播报文的目的mac地址匹配的mac表项;若单播报文为三层报文,则在本地转发表中查找单播报文匹配的转发表项可为:依据单播报文的目的ip地址在本地三层转发表中查找与单播报文的目的ip地址匹配的三层转发表项。

假若vtep3查找到的转发表项的出端口有三个,分别为vtep3到vtep1的隧道、vtep3到vtep2的隧道、vtep3到vtep4的隧道,vtep3依据哈希(hash)算法将单播报文哈希分担至其中一个出端口,以vtep3将单播报文哈希分担至vtep3到vtep2的隧道为例,则vtep2会收到单播报文。当vtep2收到单播报文,vtep2通过es1转发单播报文到server2,最终,server2会收到来自server5的单播报文。

应用于多归属场景中,当多归属设备的任一归属在本地连接多归属设备的端口故障(down)时,则将故障端口配置的esi的状态从up状态切换为down状态,并向远端设备发布路由撤销指令,路由撤销指令用于撤销状态为down状态的esi对应的路由并触发刷新状态为down状态的esi对应的转发表项。比如图1中的vtep1,其具体为多归属设备即es1的一个归属,在连接多归属设备即es1的端口port1_11down时,将端口port1_11配置的esi101的状态从up状态更新为down状态,并向远端设备发布用于路由撤销指令,以撤销状态为down状态的esi101对应的路由并触发刷新状态为down状态的esi101对应的转发表项。

之后,远端设备接收到路由撤销指令,依据接收的路由撤销指令刷新本地转发表项。以图1所示的vtep1在连接多归属设备即es1的端口port1_11down时,vtep1向远端设备发布路由撤销指令,以撤销状态为down状态的esi101对应的路由并触发刷新状态为down状态的esi101对应的转发表项。

但是,在应用中,若状态为down状态的esi对应的转发表项数量比较多,则远端设备依据接收的路由撤销指令触发刷新本地转发表项时,会导致刷新本地转发表项的时间比较长,从而导致丢包的时间会很长。

为了避免上述技术问题,本申请提供了如图2所示的流程。

参见图2,图2为本申请提供的方法流程图。该流程应用于vtep设备。这里的vtep设备作为多归属设备的一个归属,与多归属设备的其他各个归属之间通过隧道连接。

如图2所示,该流程可包括以下步骤:

步骤201,vtep设备接收对端设备发送的路由。

在一个例子中,这里的对端设备可为本vtep设备连接的多归属设备的其他归属,也可为除本vtep设备连接的多归属设备的各个归属之外的其他设备。

步骤202,若接收的路由携带的esi与本地至少一端口配置的esi相同,则vtep设备将esi关联本设备与对端设备之间的隧道口。

在一个例子中,本步骤202的端口可为物理端口。其中,若接收的路由携带的esi与本地至少一端口配置的esi相同,则有可能表示发送该路由的对端设备与本vtep设备连接同一个多归属设备。

作为一个实施例,本步骤202中,还可进一步包括:检测本地端口配置的所述esi的状态,若不为up状态,则将本地端口配置的所述esi的状态切换为up状态。

步骤203,vtep设备检测配置了所述esi的本地端口故障,则维持故障端口配置的所述esi的状态为up状态,并确定故障端口关联的接入电路(ac:accesscircuit)接口,依据所述esi关联的隧道口将所述ac口从关联所述故障端口切换为关联所述隧道口。

从本步骤203可以看出,当vtep设备检测到配置了esi的本地端口故障,则依然维持该故障端口配置的esi的状态为up状态,这使得vtep设备不会因为端口故障发送路由撤销指令,进而防止远端设备刷新转发表项。同时,为了防止丢包,在本申请中,维持故障端口关联的ac口不变,只不过将该ac口从原本关联的故障端口切换为关联隧道口,以将ac口对应的封装信息从ac实例的封装信息(比如vlan)修改为隧道封装信息,使得单播报文通过隧道转发给对端设备,具体见下述步骤204,以由对端设备最终转发单播报文至目的地。

步骤204,当vtep设备接收到单播报文时,若确定出用于转发单播报文的出端口为上述ac口,则依据ac口关联的隧道口转发单播报文。

如步骤204描述,vtep设备接收到单播报文时,若确定出用于转发单播报文的出端口为上述ac口,则依据ac口关联的隧道口对单播报文进行隧道封装并通过隧道转发。如此,对端设备就会收到隧道封装的单播报文,当对端设备收到隧道封装的单播报文时进行隧道解封装,恢复出原来的单播报文,之后,在本地转发表中查找单播报文匹配的转发表项;其中,若单播报文为二层报文,则在本地转发表中查找单播报文匹配的转发表项可为:依据单播报文的目的mac地址在本地mac表中查找与单播报文的目的mac地址匹配的mac表项;若单播报文为三层报文,则在本地转发表中查找单播报文匹配的转发表项可为:依据单播报文的目的ip地址在本地三层转发表中查找与单播报文的目的ip地址匹配的三层转发表项。

之后,对端设备依据查找到的转发表项中的出端口转发单播报文。最终,单播报文会通过对端设备转发至目的地。

至此,完成图2所示流程。

下面通过一个具体实施例对图2所示流程进行详细描述:

参见图3,图3为本申请实施例提供的组网图。双归属是多归属的一个特例,本实施例以双归属场景为例描述,多归属场景类似。

在图3中,es301为双归属设备,具有的双归属分别为:vtep401、vtep402。es301上的端口port503(连接vtep401)与端口port504(连接vtep402)为同一聚合口的成员端口。

在图3中,vtep401上连接es301的端口port501与vtep402上连接es301的端口port502配置了相同的esi(记为esi600)。vtep401与vtep402之间通过隧道连接。其中,为便于描述,vtep401与vtep402之间的隧道记为tunnel3,vtep401上有连接tunnel3的隧道口port1_3,vtep402上有连接tunnel3的隧道口port2_3。

在图3中,vtep403为多归属终结设备。vtep401、vtep402分别通过隧道连接vtep403。其中,为便于描述,vtep401与vtep403之间的隧道记为tunnel1,vtep401上有连接tunnel1的隧道口port1_1,vtep403上有连接tunnel1的隧道口port3_1。vtep402与vtep403之间的隧道记为tunnel2,vtep402上有连接tunnel2的隧道口port2_2,vtep403上有连接tunnel2的隧道口port3_2。

如图3所示,vtep401,作为es301的一个归属,当其本地连接es301的端口port501up时,vtep401检查port501配置的esi600的状态,若发现esi600的状态不为up状态,则将esi600的状态置为up状态,并发布携带esi600的路由。在一个实施例中,若vtep401本地还配置了与该up的端口port501关联的ac口601,则发布携带esi600的路由具体为:发布携带esi600且携带ac口601信息的以太网自动发现路由(ethernetauto-discoveryroute,简称第一类路由);这里的ac口601信息主要包括:ac口601对应的vlan、vni等信息。在另一个实施例中,若vtep401本地还未配置与该up的端口port501关联的ac口601,则发布携带esi600的路由具体为:发布携带esi600的以太网段路由(ethernetsegmentroute,简称第四类路由)。同时,若vtep401本地还未配置与该up的端口port501关联的ac口601,则vtep401还需进一步配置与该up的端口port501关联的记为ac口601。

vtep402为es301的另一个归属,也作为vtep401的远端设备,其会收到vtep401发布的路由。在本实施例中,vtep402接收到vtep401发布的上述第一类路由、第四类路由的处理方式有所改进,具体为:当vtep402接收到vtep401发布的上述第一类路由,从第一类路由中提取第一类路由携带的esi600,发现本地有一端口port502配置的esi正好为esi600,则将第一类路由携带的esi600、ac口601的信息关联本设备与vtep401之间的隧道口port2_3。此时,也就意味着esi600与隧道口port2_3关联起来。当vtep402接收到vtep401发布的上述第四类路由,处理方式类似第一类路由,简单描述为:从第四类路由中提取第四类路由携带的esi600,发现本地有一端口port502配置的esi正好为esi600,则将第四类路由携带的esi600的信息关联本设备与vtep401之间的隧道口port2_3。最终,不管vtep402接收的路由为第一类路由还是第四类路由,都会实现esi600与隧道口port2_3关联起来。vtep402还会进一步检查上述端口port502所配置的esi600的状态是否为up状态,若不为up状态,则将esi600的状态切换为up状态。

类似地,vtep402在本地端口port501up时也会按照上述vtep401发布路由的方式发布携带esi600的路由,具体为:vtep402检查port502配置的esi600的状态,若发现esi600的状态不为up状态,则将esi600的状态置为up状态,并发布携带esi600的路由。在一个实施例中,若vtep402本地还配置了与该up的端口port502关联的ac口602,则发布携带esi600的路由具体为:发布携带esi600且携带ac口602信息的第一类路由;这里的ac口602信息主要包括:ac口602对应的vlan、vni等信息。在另一个实施例中,若vtep402本地还未配置与该up的端口port502关联的记为ac口602,则发布携带esi600的路由具体为:发布携带esi600的第四类路由。同时,若vtep402本地还未配置与该up的端口port502关联的ac口602,则vtep402还需进一步配置与该up的端口port502关联的ac口602。

vtep401为es301的另一个归属,也作为vtep402的远端设备,其会收到vtep402发布的路由。在本实施例中,vtep401接收到vtep402发布的上述第一类路由、第四类路由的处理方式有所改进,具体为:当vtep401接收到vtep402发布的上述第一类路由,从第一类路由中提取第一类路由携带的esi600,发现本地有一端口port501配置的esi正好为esi600,则将第一类路由携带的esi600、ac口602的信息关联本设备与vtep402之间的隧道口port1_3。此时,也就意味着esi600与隧道口port1_3关联起来。当vtep401接收到vtep402发布的上述第四类路由,处理方式类似第一类路由,简单描述为:从第四类路由中提取第四类路由携带的esi600,发现本地有一端口port501配置的esi正好为esi600,则将第四类路由携带的esi600的信息关联本设备与vtep401之间的隧道口port1_3。最终,不管vtep401接收的路由为第一类路由还是第四类路由,都会实现esi600与隧道口port1_3关联起来。

vtep403作为vtep401、vtep401的远端设备,其会收到vtep401、vtep402发布的路由。本实施例中,vtep403学习路由的方式类似现有方式,不再赘述。

本实施例中,当vtep401上连接es301的端口port501正常时,vtep401会按照现有报文转发方式转发报文。vtep402类似。以图3所示的server705向server702发送单播报文为例:

server705发送单播报文。单播报文的目的mac地址为server702的mac地址。为便于描述,这里的单播报文记为报文b1。

介于server705与server702之间的vtep403,先接收到来自server705的报文b1,在本地转发表中查找报文b1匹配的转发表项;其中,若报文b1为二层报文,则在本地转发表中查找报文b1匹配的转发表项可为:依据报文b1的目的mac地址在本地mac表中查找与报文b1的目的mac地址匹配的mac表项;若报文b1为三层报文,则在本地转发表中查找报文b1匹配的转发表项可为:依据报文b1的目的ip地址在本地三层转发表中查找与报文b1的目的ip地址匹配的三层转发表项,例如arp表项。

假若vtep403查找到的转发表项为表项a1,表项a1的学习方式类似现有表项学习,表项a1的出端口分别为vtep403到vtep401的隧道tunnel1、vtep403到vtep402的隧道tunnel2,则vtep403依据哈希(hash)算法选择一个将出端口,以vtep403选择vtep403到vtep401的隧道tunnel1为例,则vtep403依据tunnel1封装报文b1,封装后的报文b1记为报文b2。vtep403通过本地tunnel1的隧道口port3_1转发报文b2。

vtep401通过本地tunnel1的隧道口port1_1接收报文b2,对报文b2进行解封装,恢复出上述的报文b1。vtep401在本地转发表中查找报文b1的转发表项,假如vtep401查找到转发表项为表项a2,表项a2的学习方式类似现有表项学习,表项a2的出端口为ac口601。

vtep401确定ac口601关联本地端口port501,则依据ac口601对应的封装信息比如vlan对报文b1进行封装并通过ac口601关联的本地端口port501转发。es301接收vtep401转发的报文b1,最终,es301会将来自server705的报文b1转发给server702。实现server705单播访问server702。

而当vtep401上连接es301的端口port501down时,vtep402上连接es301的端口port502down的原理类似,则如上述图2所示流程的描述,vtep401的处理方式在本实施例有所改进:

在本实施例中,vtep401即使发现本地端口port501down,vtep401仍然维持port501配置的esi600的状态为up状态,并且,vtep401也不会删除port501关联的ac口601。

由于vtep401不会删除port501关联的ac口601,如此,在port501down的前提下,vtep401若收到报文,且发现用于转发报文的转发表项的出端口为ac口601,则就会通过ac口601关联的port501转发,而事实上,port501down,是不能将报文转发出去的。基于此,为防止报文正常转发,避免丢包,本实施例中,将ac口601从关联port501修改为关联esi600所关联的隧道口port1_3。仍以图3所示的server705向server702发送单播报文为例:

server705发送单播报文。单播报文的目的mac地址为server702的mac地址。为便于描述,这里的单播报文记为报文b1。

介于server705与server702之间的vtep403,先接收到来自server705的报文b1,在本地转发表中查找报文b1匹配的转发表项;其中,若报文b1为二层报文,则在本地转发表中查找报文b1匹配的转发表项可为:依据报文b1的目的mac地址在本地mac表中查找与报文b1的目的mac地址匹配的mac表项;若报文b1为三层报文,则在本地转发表中查找报文b1匹配的转发表项可为:依据报文b1的目的ip地址在本地三层转发表中查找与报文b1的目的ip地址匹配的三层转发表项。

假若vtep403查找到的转发表项为表项a1,表项a1的学习方式类似现有表项学习,表项a1的出端口分别为vtep403到vtep401的隧道tunnel1、vtep403到vtep402的隧道tunnel2,则vtep403依据哈希(hash)算法选择一个出端口,以vtep403选择vtep403到vtep401的隧道tunnel1为例,则vtep403依据tunnel1封装报文b1,封装后的报文b1记为报文b2。vtep403通过本地tunnel1的隧道口port3_1转发报文b2。

vtep401通过本地tunnel1的隧道口port1_1接收报文b2,对报文b2进行解封装,恢复出上述的报文b1。vtep401在本地转发表中查找报文b1的转发表项,假如vtep401查找到转发表项为表项a2,表项a2的学习方式类似现有表项学习,表项a2的出端口为ac口601。

vtep401确定ac口601关联本地隧道tunnel3的隧道口port1_3,则依据tunnel3的封装信息对报文b1进行隧道封装。封装后的报文b1记为报文b3。vtep401通过ac口601关联的本地隧道口port1_3转发报文b3。

vtep402通过本地隧道tunnel3的隧道口port2_3接收报文b3,对报文b3进行解封装,恢复出上述的报文b1。vtep402在本地转发表中查找报文b1的转发表项,假如vtep402查找到转发表项为表项a3,表项a3的学习方式类似现有表项学习,表项a3的出端口为ac口602。

vtep402确定ac口602关联本地端口port502,则依据ac口602对应的封装信息比如vlan对报文b1进行封装并通过ac口602关联的本地端口port502转发。es301接收vtep402转发的报文b1,最终,es301会将来自server705的报文b1转发给server702。实现server705单播访问server702。

至此,完成实施例的描述。

从上面实施例描述可以看出,本实施例1中,vtep401检测到本地端口port501故障时,仍然维持port501配置的esi600的状态为up状态,并且,vtep401也不会删除port501关联的ac口601,只不过将ac口601的关联逻辑进行了修改,即从关联port501修改为关联esi600所关联的隧道口port1_3(也可以认为ac口601的封装信息进行了修改),由于port501配置的esi600的状态仍然维持为up状态,vtep401也未删除port501关联的ac口601,则vtep401的所有远端设备也就没有必要因为port501down而刷新各转发表项的出端口信息,这防止远端设备由于刷新转发表项而导致的诸如丢包等问题。

需要说明的是,在一个实施例中,若故障端口从故障恢复,将所述ac口从关联所述隧道口切换为关联该从故障恢复的端口。仍以图3为例,vtep401检测到本地端口port501从故障恢复,则恢复port501关联的ac口601的关联逻辑,即从关联esi600所关联的隧道口port1_3修改为关联port501,以实现vtep401后续直接在本地ac口转发报文。

以上对本申请提供的方法进行了描述。下面对本申请提供的装置进行描述:

参见图4,图4为本申请提供的装置结构图。该装置应用于vtep设备,所述vtep设备作为多归属设备的一个归属,与所述多归属设备的其他各个归属之间通过隧道连接。如图4所示,该装置包括:

路由单元,用于接收对端设备发送的路由;若所述路由携带的以太网段标识esi与本地至少一端口配置的esi相同,则将所述esi关联本设备与所述对端设备之间的隧道口;

故障处理单元,用于检测配置了所述esi的本地端口故障,则维持故障端口配置的所述esi的状态为正常运行up状态,并确定故障端口关联的接入电路ac口,依据所述esi关联的所述隧道口将所述ac口从关联所述故障端口切换为关联所述隧道口;

报文单元,用于当接收到单播报文时,若确定出用于转发所述单播报文的出端口为所述ac口,则依据所述ac口关联的所述隧道口转发所述单播报文。

作为一个实施例,所述路由单元进一步检测本地端口配置的所述esi的状态,若不为up状态,则将本地端口配置的所述esi的状态切换为up状态。

作为一个实施例,所述路由单元进一步在本地配置了所述esi的端口up时,检查该up的端口配置的所述esi的状态,若不为up状态,则将所述esi的状态设置为up状态,并发布携带所述esi的路由。

作为一个实施例,所述路由单元发布携带所述esi的路由包括:检查本地是否配置了与该up的端口关联的ac口,若是,则发布携带所述esi且携带与该up的端口关联的ac口信息的以太网自动发现路由ethernetauto-discoveryroute;若否,则发布携带所述esi的以太网段路由ethernetsegmentroute;

所述路由单元将esi关联本设备与所述对端设备之间的隧道口包括:若接收的路由为以太网自动发现路由,则将以太网自动发现路由携带的esi、ac口信息关联本设备与所述对端设备之间的隧道口;若接收的路由为以太网段路由,则将以太网段路由携带的esi关联本设备与所述对端设备之间的隧道口。

作为一个实施例,所述故障处理单元在检测到所述故障端口从故障恢复,则通知给所述路由单元;

所述路由单元在获知所述故障端口从故障恢复,则将所述ac口从关联所述隧道口切换为关联该从故障恢复的端口。

至此,完成图4所示装置的结构描述。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

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