一种在交换机上实现虚拟设备的方法和装置制造方法
【专利摘要】本发明公开了一种在交换机上实现虚拟设备的方法和装置,方案为:为交换机中各VD的每个转发芯片配置二层隔离表;当在转发芯片的外部端口接收到的报文并从转发芯片的内部端口转发报文时,在报文中携带源端口;当在转发芯片的内部端口接收到报文时,根据报文的源端口以及为该转发芯片配置的二层隔离表判断报文是否属于该转发芯片所在VD,根据判断结果确定对报文的出端口进行过滤或不过滤,使报文只能从同VD进出。本发明能够满足交换机对VD间的流量隔离的需求,扩展了交换机的应用场景。
【专利说明】一种在交换机上实现虚拟设备的方法和装置
【技术领域】
[0001]本申请涉及通信【技术领域】,特别涉及一种在交换机上实现虚拟设备(VirtualDevice, VD)的方法和装置。
【背景技术】
[0002]网络设备虚拟化可以把一台大的物理设备虚拟成多台小设备,也即虚拟设备。各VD对于用户来说就像一台独立的小设备,有自己独立运行的路由进程、二三层协议、转发表项、接口、可以添加自己的用户、可以独自重启并读取自己的配置文件。各VD间的资源可以通过命令来进行分配管理,互不影响,当VD占用的资源超过分配的资源限制时,将不能抢占其他的VD资源。
[0003]设备支持VD功能后,整台物理设备就是一个VD,称为缺省VD,当用户登录物理设备时,实际登录的就是缺省VD。用户在物理设备上的配置实质就是对缺省VD的配置。缺省VD的编号为1,不需要创建,不能被删除。与缺省VD相对应的是非缺省VD,即在该物理设备上新创建的VD。
[0004]产品要支持VD特性,需要在同一块单板上同时下发多个VD的配置,并同时生效;具体的,从不同端口进入的报文,根据端口所在VD,去匹配该VD的配置和转发表项进行处理。对于路由器产品,一般通过CPU、NP等实现报文转发,可以通过软件方式灵活设置,各VD的不同配置可以在同一块单板上共存,不会有冲突。而绝大多数的交换机由于受芯片制约,不同VD的配置可能是冲突的,例如L2_entry, Fib等,不能做到冲突的表项同时下发、分别匹配。
[0005]为了解决不同VD的配置冲突问题,交换机通常按照芯片来划分VD端口,规定同一芯片的所有外部端口只属于一个VD,这个VD成为有效VD时,在此芯片上只下发和这个VD相关的配置和转发表项,可以解决不同VD之间可能的配置冲突问题。此外,要实现按芯片划分VD端口,还需要解决VD间流量隔离、板间通信、Mac地址学习等诸多问题。
【发明内容】
[0006]为了达到上述目的,本发明的目的在于提供一种在交换机上实现虚拟设备的方法,该方法能够解决交换机对VD特性的需求,扩展了交换机的应用场景。
[0007]为了达到上述目的,本发明提供了一种在交换机上实现虚拟设备的方法,所述交换机以转发芯片为加入和退出VD的最小单元,并建立有转发芯片和VD的对应关系;该方法包括:
[0008]根据转发芯片和VD的对应关系为当前VD中每个转发芯片配置用于隔离非当前VD的报文的二层隔离表;
[0009]当前VD在自身的任一转发芯片的外部端口接收到报文时,确定报文的出端口,对属于该转发芯片的外部端口的每个出端口,从该出端口转发报文;对不属于该转发芯片的外部端口的每个出端口,将接收报文的端口作为报文的源端口携带在报文中并通过该转发芯片的内部端口转发报文;
[0010]当前VD在自身的任一转发芯片的内部端口接收到携带源端口的报文时,确定报文的出端口,根据报文的源端口和为该转发芯片配置的二层隔离表判断报文是否属于当前VD,如果是,则从确定的出端口转发报文,否则,滤除报文的出端口中属于该转发芯片的外部端口,从滤除后剩下的出端口转发报文。
[0011]本发明还提供了一种虚拟设备VD,应用于交换机,所述交换机以转发芯片为加入和退出VD的最小单元,并建立有转发芯片和VD的对应关系;该VD包括:配置单元、接收单元、处理单元、发送单元;
[0012]所述配置单元,用于根据所述交换机建立的转发芯片和VD的对应关系为本VD中每个转发芯片配置用于隔离非本VD的报文的二层隔离表;
[0013]所述接收单元,用于在本VD的任一转发芯片的外部端口接收报文;用于在本VD的任一转发芯片的内部端口接收携带源端口的报文;
[0014]所述处理单元,用于接收单元在本VD的任一转发芯片的外部端口接收到报文时,确定报文的出端口,对属于该转发芯片的外部端口的每个出端口,通知发送单元从该出端口转发报文;对不属于该转发芯片的外部端口的每个出端口,通知发送单元将接收报文的端口作为报文的源端口携带在报文中并通过该转发芯片的内部端口转发报文;用于接收单元本VD的任一转发芯片的内部端口接收到携带源端口的报文时,确定报文的出端口,根据报文的源端口和配置单元为该转发芯片配置的二层隔离表判断报文是否属于本VD,如果是,则通知发送单元从确定的出端口转发报文,否则,滤除报文的出端口中属于该转发芯片的外部端口,并通知发送单元从滤除后剩下的出端口转发报文。
[0015]由上面的技术方案可知,本发明通过为交换机中各VD的每个转发芯片配置二层隔离表并根据接收报文的端口是转发芯片的内部端口或外部端口而对报文执行不同处理流程:当在转发芯片的外部端口接收到的报文并从转发芯片的内部端口转发报文时,在报文中携带源端口 ;当在转发芯片的内部端口接收到报文时,根据报文的源端口以及为该转发芯片配置的二层隔离表判断报文是否属于该转发芯片所在VD,根据判断结果确定对报文的出端口进行过滤或不过滤,并据此执行报文转发,使报文只能从同VD进出。本发明能够满足交换机对VD间的流量隔离的需求,扩展了交换机的应用场景。
【专利附图】
【附图说明】
[0016]图1是本发明实施例在交换机中实现VD的广播报文处理流程示意图;
[0017]图2是本发明实施例在交换机中实现VD的已知单播报文处理流程示意图;
[0018]图3是本发明实施例在交换机中实现VD的已知组播报文处理流程示意图;
[0019]图4是本发明实施例提供的虚拟设备的结构示意图。
【具体实施方式】
[0020]为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并举实施例,对本发明的技术方案进行详细说明。
[0021]本发明中,为了便于描述,将转发芯片上的用于连接该转发芯片所在交换机以外的网络设备的端口称为转发芯片的外部端口 ;将转发芯片上用于连接该转发芯片所在的交换机中的其它转发芯片的端口称为转发芯片的内部端口 ;将转发芯片上的用于连接该转发芯片所在单板上的CPU的端口称为CPU端口。
[0022]为了在交换机中实现VD,本发明按照转发芯片来划分VD,在交换机中以转发芯片为加入和退出VD的最小单元,并建立转发芯片和VD的对应关系;根据转发芯片和VD的对应关系为各VD的每个转发芯片配置用于隔离非该VD的报文的二层隔离表;VD在自身的任一转发芯片的外部端口接收到报文时,如果需要转发报文到其它转发芯片,则将接收报文的端口作为报文的源端口携带在报文中并通过该转发芯片的内部端口转发,通过报文的源端口标识报文所属VD ;VD在自身的任一转发芯片的内部端口接收到携带源端口的报文时,根据报文的源端口和为该转发芯片配置的二层隔离表判断报文是否属于该VD,当报文不属于该VD时,不允许报文从该转发芯片的外部端口转发,使得非该VD的报文不会从该VD的任一转发芯片的外部端口转发出去,能够实现VD间的二层流量隔离。
[0023]上述根据转发芯片和VD的对应关系为各VD的每个转发芯片配置用于隔离非该VD的报文的二层隔离表的方法有以下两种:
[0024]第一种:将不属于该VD的所有转发芯片的外部端口添加到为该转发芯片的外部端口配置的二层隔离表。这种情况下,根据报文的源端口和为该转发芯片配置的二层隔离表判断报文是否属于该VD的方法为:如果报文的源端口是为该转发芯片配置的二层隔离表中的外部端口,则可以确定报文不属于该VD,否则,确定报文属于该VD。
[0025]第二种:将属于该VD的所有转发芯片的外部端口添加到为该转发芯片的外部端口配置的二层隔离表。这种情况下,根据报文的源端口和为该转发芯片配置的二层隔离表判断报文是否属于该VD的方法为:如果报文的源端口是为该转发芯片配置的二层隔离表中的外部端口,则确定报文属于该VD,否则,确定报文不属于该VD。
[0026]上述报文包括广播报文、单播报文(包括已知单播报文和未知单播报文),组播报文(包括已知组播报文和未知单播报文),报文不同,VD的处理流程也不相同,下面结合图1、图2和图3分别进行说明。
[0027]首先对广播报文的处理流程进行说明:
[0028]为了在交换机中实现VD,需要对VD间的广播报文进行二层隔离。为此,需要为各VD的每个转发芯片配置用于隔离非该转发芯片所在VD的报文的二层隔离表,为各VD的每个转发芯片配置二层隔离表的方法可以是上述两种配置方法的任意一种。另外,由于同一VD可以包括多个转发芯片,从其中一个转发芯片的外部端口进入VD的广播报文,需要从该VD的所有转发芯片的外部端口(接收端口除外)转发出去,这就需要跨转发芯片转发广播报文,为了能够跨转发芯片转发广播报文,需要将交换机中各转发芯片的内部端口加入交换机中所有VD的VLAN中,使得各转发芯片的内部端口能够允许所有广播报文通过。上述设置可以实现广播报文在VD之间的二层隔离。
[0029]参见图1,图1是本发明实施例在交换机中实现VD的广播报文处理流程示意图,包括以下步骤:
[0030]步骤101、VD在自身的任一转发芯片接收广播报文。
[0031]步骤102、判断接收广播报文的端口,如果接收广播报文的端口是该转发芯片的外部端口,则执行步骤103 ;如果接收广播报文的端口是该转发芯片的内部端口,则执行步骤104。[0032]步骤103、接收广播报文的端口是该转发芯片的外部端口,查找VLAN广播表确定报文的出端口,针对每个出端口,如果该出端口是该转发芯片的外部端口,则从该出端口转发广播报文,如果该出端口是该转发芯片的内部端口,则将接收广播报文的外部端口作为广播报文的源端口携带在广播报文中并从该出端口转发广播报文。
[0033]在转发芯片的外部端口接收到的广播报文的出端口包括该转发芯片中加入广播报文所属VLAN的所有端口(接收端口除外),可以是该转发芯片的外部端口和/或内部端口。由于该转发芯片的内部端口加入了交换机中所有VD的VLAN中,转发芯片的所有内部端口均是广播报文的出端口 ;另外,该转发芯片上加入到广播报文所属VLAN的所有外部端口也是广播报文的出端口。
[0034]对于广播报文的属于该转发芯片的外部端口的每个出端口,只需从该出端口转发广播报文。对于广播报文的属于该转发芯片的内部端口的每个出端口,则需要将接收广播报文的外部端口作为广播报文的源端口以标识广播报文所属VD,并从该内部端口转发广播报文,使得连接到该内部端口上的邻居转发芯片可以接收和转发该广播报文。
[0035]步骤104、接收广播报文的端口是该转发芯片的内部端口,查找VLAN广播表确定广播报文的出端口,根据广播报文的源端口和为该转发芯片配置的二层隔离表判断广播报文是否属于该转发芯片所属VD,如果是,则从每个出端口转发广播报文,否则,将所有出端口中属于该转发芯片的外部端口滤除,从滤除后剩下的每个出端口转发广播报文。
[0036]在转发芯片的内部端口接收到的广播报文的出端口包括该转发芯片中加入广播报文所述VLAN的所有端口(接收端口除外),可以是该转发芯片的外部端口和/或内部端口。由于该转发芯片的内部端口加入了交换机中所有VD的VLAN中,转发芯片的所有内部端口均是广播报文的出端口 ;另外,该转发芯片上加入到广播报文所属VLAN的所有外部端口也是广播报文的出端口。
[0037]在转发芯片的内部端口接收到的广播报文携带有源端口。当根据广播报文的源端口和为该转发芯片配置的二层隔离表判断广播报文属于该转发芯片所属VD时,允许从该转发芯片的外部端口转发广播报文,因此不需要对广播报文的出端口进行过滤,从所有出端口转发广播报文即可。当根据广播报文的源端口和为该转发芯片配置的二层隔离表判断广播报文不属于该转发芯片所属VD时,不允许从该转发芯片的外部端口转发广播报文,因此需要将广播报文的所有出端口属于该转发芯片的外部端口滤除,从滤除后剩下的所有出端口转发广播报文。
[0038]从图1所示本发明实施例中可以看出,VD在自身的转发芯片的外部端口接收到广播报文时,将接收广播报文的外部端口作为广播报文的源端口来标识广播报文所属VD,使得其他转发芯片接收到该广播报文时,能够根据广播报文的源端口和为所述其他转发芯片配置的二层隔离表判断广播报文是否属于所述其他转发芯片所属VD,进而根据判断结果选择过滤所述其他转发芯片的外部端口或不过滤所述其他转发芯片的外部端口,以使报文从同VD进出,实现VD间广播报文的二层隔离。需要说明的是,VD对未知单播报文、未知组播报文的处理流程与对广播报文的处理流程相同,可以实现VD间未知单播报文和未知组播报文的二层隔离,不再赘述。
[0039]在实际应用中,当VD在自身的任一转发芯片的内部端口接收到报文(包括广播报文、未知单播报文和未知组播报文)时,还需要对报文进行MAC地址学习。VD在自身的任一转发芯片的内部端口接收到的报文,根据报文所属VD分为两种情况:
[0040]一,报文属于该转发芯片所在VD。这种情况下,需要对报文进行MAC地址学习,学习报文的源MAC地址到报文的源端口,生成源MAC地址对应的MAC表项,以指导后续接收到的目的MAC地址该源MAC地址的单播报文的转发。
[0041]二,报文不属于该转发芯片所述VD。这种情况下,需要禁止对报文进行MAC地址学习,以避免不同VD的MAC表项冲突和减少各VD生成的MAC表项个数。
[0042]其次,对已知单播报文的处理流程进行说明:
[0043]为了在交换机中实现VD,需要对VD间的已知单播报文进行二层隔离。为此,需要为各VD的每个转发芯片配置用于隔离非该转发芯片所在VD的报文的二层隔离表,为各VD的每个转发芯片配置二层隔离表的方法可以是上述两种配置方法的任意一种。另外,由于同一 VD可以包括多个转发芯片,从其中一个转发芯片的外部端口进入VD的已知单播报文,可能需要从该VD的另一转发芯片的外部端口转发出去,这就需要跨转发芯片转发已知单播报文,为了能够跨转发芯片转发已知单播报文,需要将交换机中各转发芯片的内部端口加入交换机中所有VD的VLAN中,使得各转发芯片的内部端口能够允许所有已知单播报文通过。上述设置可以实现已知单播报文在VD之间的二层隔离。
[0044]参见图2,图2是本发明实施例在交换机中实现VD的已知单播报文处理流程示意图,包括以下步骤:
[0045]步骤201、VD在自身的任一转发芯片接收已知单播报文。
[0046]步骤202、判断接收已知单播报文的端口,如果接收已知单播报文的端口是该转发芯片的外部端口,则执行步骤203 ;如果接收报文的端口是该转发芯片的内部端口,则执行步骤204。
[0047]步骤203、接收已知单播报文的端口是该转发芯片的外部端口,查找MAC转发表确定报文的出端口,如果该出端口是该转发芯片的外部端口,则从该出端口转发已知单播报文,如果该出端口是其它转发芯片的外部端口,则将接收已知单播报文的外部端口、查找得到的出端口以及该出端口所在的转发芯片分别作为已知单播报文的源端口、目的出端口、目的转发芯片携带在已知单播报文中并通过该转发芯片的内部端口转发已知单播报文。
[0048]在转发芯片的外部端口接收到的已知单播报文的出端口可以是该转发芯片的其他外部端口或同VD的其它转发芯片的外部端口,可以通过查找MAC转发表确定。当已知单播报文的出端口是该转发芯片的外部端口时,可以从该出端口转发已知单播报文。当已知单播报文的出端口是其他转发芯片的外部端口时,需要将已知单播报文的外部端口作为已知单播报文的源端口携带在已知单播报文中,另外,还需要将已知单播报文的出端口、已知单播报文的出端口所在转发芯片分别作为已知单播报文的目的出端口、目的转发芯片携带在已知单播报文中,然后通过该转发芯片的内部端口转发已知单播报文。
[0049]在实际应用中,转发芯片中存储有芯片转发映射表,其中包括多个芯片转发映射表项,芯片转发映射表项中包括目的转发芯片信息和内部端口信息,表示转发芯片需要将报文转发到目的转发芯片时,需要从转发芯片的哪个内部端口转发出去。
[0050]本步骤中,当确定已知单播报文的出端口是其它转发芯片的外部端口时,需要将报文转发所述其它转发芯片,这就需要通过查找转发芯片映射表来确定所述其它转发芯片对应的内部端口,从而将已知单播报文从该内部端口转发出去,连接到该内部端口邻居转发芯片接收到该已知单播报文后,可以根据已知单播报文中携带的源端口、目的出端口和目的转发芯片,执行确定已知单播报文的出端口、判断已知单播报文所属VD以及转发已知单播报文等操作。
[0051]步骤204、接收已知单播报文的端口是该转发芯片的内部端口,确定已知单播报文的出端口为已知单播报文的目的出端口,根据已知单播报文的源端口和为该转发芯片配置的二层隔离表判断已知单播报文是否属于该转发芯片所属VD,如果是,则从该出端口转发已知单播报文,否则,滤除已知单播报文的出端口中属于该转发芯片的外部端口,若已知单播报文的出端口未被滤除,则通过该转发芯片的内部端口转发已知单播报文。
[0052]这里,通过该转发芯片的内部端口转发已知单播报文的方法与步骤203中的转发方法相同,均是查找转发芯片映射表来确定已知单播报文的目的转发芯片对应的内部端口,然后从该内部端口转发已知单播报文。
[0053]在转发芯片的内部端口接收到的已知单播报文携带有源端口、目的出端口、目的转发芯片,其中,已知单播报文携带的目的出端口即为已知单播报文的出端口。当在转发芯片接收到的已知单播报文属于该转发芯片所属VD时,允许从该转发芯片的外部端口转发已知单播报文,因此不需要对已知单播报文的出端口进行过滤,从已知单播报文的出端口转发已知单播报文即可。当在转发芯片接收到的已知单播报文不属于该转发芯片所属VD时,不允许从该转发芯片的外部端口转发已知单播报文,需要将已知单播报文的出端口进行过滤,如果已知单播报文的出端口是该转发芯片的外部端口,则会被过滤掉,否则,不会被过滤掉。
[0054]从图2所示本发明实施例中可以看出,VD在自身的转发芯片的外部端口接收到已知单播报文且已知单播报文的出端口是其它转发芯片的外部端口时,将接收已知单播报文的外部端口、已知单播报文的出端口、已知单播报文的出端口所在转发芯片分别作为已知单播报文的源端口、目的出端口、目的转发芯片携带在报文中转发,使得接收到该已知单播报文的转发芯片能够根据已知单播报文中携带的源端口、目的出端口和目的转发芯片,执行确定已知单播报文的出端口、判断已知单播报文所属VD以及转发已知单播报文等操作,实现VD间的已知单播报文的二层隔离。
[0055]另夕卜,VD在自身的任一转发芯片的内部端口接收到已知单播报文时,如果已知单播报文属于该转发芯片所在VD,则还需要对已知单播报文进行MAC地址学习,刷新相应的MAC表项,如果已知单播报文不属于该转发芯片所在VD,则还需要禁止对已知单播报文进行MAC地址学习。
[0056]最后,对已知组播报文的处理流程进行说明:
[0057]为了在交换机中实现VD,需要对VD间的已知组播报文进行二层隔离。为此,需要为各VD的每个转发芯片配置用于隔离非该转发芯片所在VD的报文的二层隔离表,为各VD的每个转发芯片配置二层隔离表的方法可以是上述两种配置方法的任意一种。另外,由于同一 VD可以包括多个转发芯片,从其中一个转发芯片的外部端口进入VD的已知组播报文,需要从该VD的所有转发芯片的外部端口中已加入到该已知组播报文所属组播组的所有端口(接收端口除外)转发出去,这就需要跨转发芯片转发已知组播报文,为了能够跨转发芯片转发已知组播报文,需要将交换机中各转发芯片的内部端口加入到所有组播组对应的组播表项的出端口列表中,使得各转发芯片的内部端口能够允许所有已知组播报文通过。上述设置可以实现已知组播报文在VD之间的二层隔离。
[0058]参见图3,图3是本发明实施例在交换机中实现VD的已知组播报文处理流程示意图,包括以下步骤:
[0059]步骤301、VD在自身的任一转发芯片接收已知组播报文。
[0060]步骤302、判断接收已知组播报文的端口,如果接收已知组播报文的端口是该转发芯片的外部端口,则执行步骤303 ;如果接收已知组播报文的端口是该转发芯片的内部端口,则执行步骤304。
[0061]步骤303、接收已知组播报文的端口是该转发芯片的外部端口,查找已知组播报文所述组播组对应的组播表项的出接口列表确定报文的出端口,针对每个出端口,如果该出端口是该转发芯片的外部端口,则从该出端口转发已知组播报文,如果该出端口是该转发芯片的内部端口,则将接收已知组播报文的外部端口作为已知组播报文的源端口携带在已知组播报文中并从该出端口转发已知组播报文。
[0062]在转发芯片的外部端口接收到的已知组播报文的出端口包括该转发芯片中加入已知组播报文所属组播组的所有端口(接收端口除外),可以是该转发芯片的外部端口和/或内部端口。由于该转发芯片的内部端口已加入到所有组播组对应的组播表项的出接口列表中,因此,转发芯片的所有内部端口均是已知组播报文的出端口 ;另外,该转发芯片上加入到已知组播报文所属组播组对应的组播表项的出接口列表的所有外部端口也是已知组播报文的出端口。
[0063]对于已知组播报文的属于该转发芯片的外部端口的每个出端口,只需从该出端口转发已知组播报文。对于已知组播报文的属于该转发芯片的内部端口的每个出端口,则需要将接收已知组播报文的外部端口作为已知组播报文的源端口以标识已知组播报文所属VD,并从该内部端口转发已知组播报文,使得连接到该内部端口上的邻居转发芯片可以接收和转发该已知组播报文。
[0064]步骤304、接收已知组播报文的端口是该转发芯片的内部端口,查找已知组播报文所述组播组对应的组播表项的出接口列表确定报文的所有出端口,根据已知组播报文的源端口和为该转发芯片配置的二层隔离表判断已知组播报文是否属于该转发芯片所属VD,如果是,则从每个出端口转发已知组播报文,否则,将所有出端口中属于该转发芯片的外部端口滤除,从滤除后剩下的每个出端口转发已知组播报文。
[0065]在转发芯片的内部端口接收到的已知组播报文的出端口包括该转发芯片中加入已知组播报文所属组播组的所有端口(接收端口除外),可以是该转发芯片的外部端口和/或内部端口。由于该转发芯片的内部端口已加入到所有组播组对应的组播表项的出接口列表中,因此,转发芯片的所有内部端口均是已知组播报文的出端口 ;另外,该转发芯片上加入到已知组播报文所属组播组对应的组播表项的出接口列表的所有外部端口也是已知组播报文的出端口。
[0066]在转发芯片的内部端口接收到的已知组播报文携带有源端口。当根据已知组播报文的源端口和为该转发芯片配置的二层隔离表判断已知组播报文属于该转发芯片所属VD时,允许从该转发芯片的外部端口转发已知组播报文,因此不需要对已知组播报文的出端口进行过滤,从所有出端口转发已知组播报文即可。当根据已知组播报文的源端口和为该转发芯片配置的二层隔离表判断已知组播报文不属于该转发芯片所属VD时,不允许从该转发芯片的外部端口转发已知组播报文,因此需要将已知组播报文的所有出端口属于该转发芯片的外部端口滤除,从滤除后剩下的所有出端口转发已知组播报文。
[0067]从图1所示本发明实施例中可以看出,VD在自身的转发芯片的外部端口接收到已知组播报文并从内部端口转发已知组播报文时,将接收已知组播报文的外部端口作为已知组播报文的源端口来标识已知组播报文所属VD,使得其他转发芯片接收到该已知组播报文时,能够根据已知组播报文的源端口和为所述其他转发芯片配置的二层隔离表判断已知组播报文是否属于所述其他转发芯片所属VD,进而根据判断结果选择过滤所述其他转发芯片的外部端口或不过滤所述其他转发芯片的外部端口,以使已知组播报文从同VD进出,实现VD间已知组播报文的二层隔离。
[0068]另外,VD在自身的任一转发芯片的内部端口接收到已知组播报文时,如果已知组播报文属于该转发芯片所在VD,则还需要对已知组播报文进行MAC地址学习,刷新相应的MAC表项,如果已知组播报文不属于该转发芯片所在VD,则还需要禁止对已知组播报文进行MAC地址学习。
[0069]上述图1、图2、图3所示本发明实施例对VD在自身的任一转发芯片接收到的广播报文、已知单播报文、已知组播报文的处理流程进行了详细说明。实际上,VD作为一个逻辑设备,也可以主动向外发送广播协议报文,广播协议报文由CPU主动生成并发送的VD的任一转发芯片的CPU端口,并最终经由VD的各转发芯片的外部端口发送出去,而不允许从其它VD的转发芯片的外部端口发送出去,这就需要对交换机中各VD的每个转发芯片的CPU端口进行二层隔离设置。
[0070]为了区分各VD主动发送的广播协议报文,可以预先为每个VD分配一个CPU源端口。如果采用第一种为转发芯片配置二层隔离表的方法,则在将不属于该VD的所有转发芯片的外部端口添加到为该转发芯片的外部端口配置的二层隔离表时,还同时将为除该VD外其它每个VD预先分配的CPU源端口添加到为该转发芯片配置的二层隔离表。如果采用第二种为转发芯片配置二层隔离表的方法,则在将属于该VD的所有转发芯片的外部端口添加到为该转发芯片的外部端口配置的二层隔离表时,还同时将为该VD预先分配的CPU源端口添加到为该转发芯片配置的二层隔离表。
[0071]这样,当VD在自身的任一转发芯片的CPU端口接收到广播协议报文时,可以查找VLAN广播表确定报文的所有出端口,针对每个出端口,如果该出端口是该转发芯片的外部端口,则将广播协议报文从该出端口转发,如果该出端口是该转发芯片的内部端口,则将预先为该VD分配的CPU源端口作为广播协议报文的源端口携带在广播协议报文以标识广播协议报文所属VD,并从该出端口转发广播协议报文。
[0072]当VD在自身的任一转发芯片的内部端口接收到携带源端口的广播协议报文时,可以查找VLAN广播表确定广播协议报文的所有出端口,并根据广播协议报文的源端口和为该转发芯片配置的二层隔离表判断广播协议报文是否属于该VD,如果是,则从所有出端口转发广播协议报文,否则,将所有出端口中属于该转发芯片的外部端口过滤,从过滤后的所有出端口转发广播协议报文。
[0073]其中,当采用第一种为转发芯片配置二层隔离表的方法时,根据广播协议报文的源端口和为该转发芯片配置的二层隔离表判断广播协议报文是否属于该VD的方法为:如果广播协议报文的源端口是为该转发芯片配置的二层隔离表中的CPU源端口,则确定广播协议报文不属于该VD,否则,确定广播协议报文属于该VD ;
[0074]当采用第二种为转发芯片配置二层隔离表的方法时,根据广播协议报文的源端口和为该转发芯片配置的二层隔离表判断广播协议报文是否属于该VD的方法为:如果广播协议报文的源端口是为该转发芯片配置的二层隔离表中的CPU源端口,则确定广播协议报文属于该VD,否则,确定广播协议报文不属于该VD。
[0075]通过上述VD对在自身的任一转发芯片的CPU端口或内部端口接收到的广播协议报文的处理过程,可以使VD主动发送的广播协议报文只能够从该VD的各转发芯片的外部端口转发出去,而不能从其它VD的转发芯片的外部端口转发出去,可以实现各VD主动发送的广播协议报文的在VD之间的二层隔离。
[0076]此外,从上述为VD的每个转发芯片配置用于隔离非该VD的报文的二层隔离表的方法可以看出,本发明并未对各转发芯片的CPU端口之间进行二层隔离设置,因此,各转发芯片的CPU端口之间可以互通板间通信报文,实现板间通信。
[0077]以上对本发明实施例的方法进行了详细说明,本发明还给出了一种虚拟设备,应用于交换机。
[0078]参见图4,图4是本发明实施例提供的虚拟设备的结构示意图,应用于交换机,所述交换机以转发芯片为加入和退出VD的最小单元,并建立有转发芯片和VD的对应关系;该VD包括:配置单元401、接收单元402、处理单元403、发送单元404 ;其中,
[0079]配置单元401,用于根据所述交换机建立的转发芯片和VD的对应关系为本VD中每个转发芯片配置用于隔离非本VD的报文的二层隔离表;
[0080]接收单元402,用于在本VD的任一转发芯片的外部端口接收报文;用于在本VD的任一转发芯片的内部端口接收携带源端口的报文;
[0081]处理单元403,用于接收单元402在本VD的任一转发芯片的外部端口接收到报文时,确定报文的出端口,对属于该转发芯片的外部端口的每个出端口,通知发送单元404从该出端口转发报文;对不属于该转发芯片的外部端口的每个出端口,通知发送单元404将接收报文的端口作为报文的源端口携带在报文中并通过该转发芯片的内部端口转发报文;用于接收单元402本VD的任一转发芯片的内部端口接收到携带源端口的报文时,确定报文的出端口,根据报文的源端口和配置单元401为该转发芯片配置的二层隔离表判断报文是否属于本VD,如果是,则通知发送单元404从确定的出端口转发报文,否则,滤除报文的出端口中属于该转发芯片的外部端口,并通知发送单元404从滤除后剩下的出端口转发报文。
[0082]上述VD中,所述发送单元404在将接收报文的端口作为报文的源端口携带在报文中并通过该转发芯片的内部端口转发报文时,用于:如果该出端口为该转发芯片的内部端口,则将接收报文的端口作为报文的源端口携带在报文中并从该出端口转发报文;如果该出端口是其它转发芯片的外部端口,则将接收报文的端口、该出端口、该出端口所在转发芯片分别作为报文的源端口、目的出端口、目的转发芯片携带在报文中,并查找转发芯片映射表确定报文的目的转发芯片对应的内部端口,从确定的内部端口转发报文;
[0083]所述发送单元404在从滤除后剩下的出端口转发报文时,用于:针对滤除后剩下的每个出端口,如果该出端口是该转发芯片的内部端口,则从该出端口转发报文,如果该出端口是其它转发芯片的外部端口,则查找转发芯片映射表确定报文的目的转发芯片对应的内部端口,从确定的内部端口转发报文。
[0084]所述配置单元401在根据转发芯片和VD的对应关系为本VD中每个转发芯片配置用于隔离非本VD的报文的二层隔离表时,进一步将该转发芯片的每个内部端口加入到所述交换机中所有VD的VLAN中,并将该内部端口加入到所有组播组对应的组播表项的出端口列表中;
[0085]所述处理单元403在确定接收单元402在本VD的任一转发芯片的外部端口接收到的报文的出端口时,用于:如果报文是单播报文,则查找MAC转发表确定报文的出端口,如果报文是组播报文,则查找报文所属组播组对应的组播表项的出接口列表确定报文的出端口,对于根据MAC转发表未能确定出端口的单播报文、根据组播表项的出接口列表未能确定出端口的组播报文以及广播报文,则查找VLAN广播表确定报文的出端口 ;在确定接收单元402在本VD的任一转发芯片的内部端口接收到的报文的出端口时,用于:如果报文是单播报文且携带目的出端口,则确定报文的出端口为该目的出端口,如果报文是组播报文,则查找报文所属组播组对应的组播表项的出接口列表确定报文的出端口,对于未携带目的出端口的未知单播报文、根据组播表项的出接口列表未能确定出端口的组播报文以及广播报文,则查找VLAN广播表确定报文的出端口。
[0086]上述VD中,所述处理单元403在确定接收单元402在本VD的任一转发芯片的内部端口接收到的报文属于本VD之后,进一步用于:学习该报文的源MAC地址到报文的源端口 ;在确定接收单元402在本VD的任一转发芯片的内部端口接收到的报文不属于本VD之后,进一步用于:禁止对该报文进行MAC地址学习。
[0087]上述VD中,所述接收单元402,进一步用于在本VD的任一转发芯片的CPU端口接收广播协议报文;进一步用于在本VD的任一转发芯片的内部端口接收携带源端口的广播协议报文;
[0088]所述处理单元403,进一步用于接收单元402在本VD的任一转发芯片的CPU端口接收到广播协议报文时,查找VLAN广播表确定报文的出端口,针对每个出端口,如果该出端口是该转发芯片的外部端口,则通知发送单元404从该出端口转发广播协议报文,如果该出端口是该转发芯片的内部端口,则通知发送单元404将预先为本VD分配的CPU源端口作为广播协议报文的源端口携带在广播协议报文,并从该出端口转发广播协议报文;进一步用于接收单元402在本VD的任一转发芯片的内部端口接收到携带源端口的广播协议报文时,查找VLAN广播表确定广播协议报文的出端口,根据广播协议报文的源端口和为该转发芯片配置的二层隔离表判断广播协议报文是否属于本VD,如果是,则通知发送单元404从报文的出端口转发广播协议报文,否则,将报文的出端口中属于该转发芯片的外部端口过滤,并通知发送单元404从过滤后的出端口转发广播协议报文。
[0089]所述配置单元401在根据转发芯片和VD的对应关系为本VD中每个转发芯片配置用于隔离非本VD的报文的二层隔离表时,用于:将不属于本VD的所有转发芯片的外部端口添加到为该转发芯片配置的二层隔离表,将为除本VD外其它每个VD预先分配的CPU源端口添加到为该转发芯片配置的二层隔离表;
[0090]所述处理单元403在根据报文的源端口和为该转发芯片配置的二层隔离表判断报文是否属于本VD时,用于:如果报文的源端口是为该转发芯片配置的二层隔离表中的外部端口,则确定报文不属于本VD,否则,确定报文属于本VD ;在根据广播协议报文的源端口和为该转发芯片配置的二层隔离表判断广播协议报文是否属于本VD时,用于:如果广播协议报文的源端口是为该转发芯片配置的二层隔离表中的CPU源端口,则确定广播协议报文不属于本VD,否则,确定广播协议报文属于本VD ;
[0091]或者,
[0092]所述配置单元401在根据转发芯片和VD的对应关系为本VD中每个转发芯片配置用于隔离非本VD的报文的二层隔离表时,用于:将属于本VD的所有转发芯片的外部端口添加到为该转发芯片配置的二层隔离表,将为本VD预先分配的CPU源端口添加到为该转发芯片配置的,二层隔离表;
[0093]所述处理单元403在根据报文的源端口和为该转发芯片配置的二层隔离表判断报文是否属于本VD时,用于:如果报文的源端口是为该转发芯片配置的二层隔离表中的外部端口,则确定报文属于本VD,否则,确定报文不属于本VD ;在根据广播协议报文的源端口和为该转发芯片配置的二层隔离表判断广播协议报文是否属于本VD时,用于:如果广播协议报文的源端口是为该转发芯片配置的二层隔离表中的CPU源端口,则确定广播协议报文属于本VD,否则,确定广播协议报文不属于本VD。
[0094]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【权利要求】
1.一种在交换机上实现虚拟设备VD的方法,所述交换机以转发芯片为加入和退出VD的最小单元,并建立有转发芯片和VD的对应关系;其特征在于,该方法包括: 根据转发芯片和VD的对应关系为当前VD中每个转发芯片配置用于隔离非当前VD的报文的二层隔离表; 当前VD在自身的任一转发芯片的外部端口接收到报文时,确定报文的出端口,对属于该转发芯片的外部端口的每个出端口,从该出端口转发报文;对不属于该转发芯片的外部端口的每个出端口,将接收报文的端口作为报文的源端口携带在报文中并通过该转发芯片的内部端口转发报文; 当前VD在自身的任一转发芯片的内部端口接收到携带源端口的报文时,确定报文的出端口,根据报文的源端口和为该转发芯片配置的二层隔离表判断报文是否属于当前VD,如果是,则从确定的出端口转发报文,否则,滤除报文的出端口中属于该转发芯片的外部端口,从滤除后剩下的出端口转发报文。
2.根据权利要求1所述的在交换机上实现VD的方法,其特征在于, 所述对不属于该转发芯片的外部端口的每个出端口,将接收报文的端口作为报文的源端口携带在报文中并通过该转发芯片的内部端口转发报文的方法为:如果该出端口为该转发芯片的内部端口,则将接收报文的端口作为报文的源端口携带在报文中并从该出端口转发报文;如果该出端口是其它转发芯片的外部端口,则将接收报文的端口、该出端口、该出端口所在转发芯片分别作为报文的源端口、目的出端口、目的转发芯片携带在报文中,并查找转发芯片映射表确定报文的目的转发芯片对应的内部端口,从确定的内部端口转发报文; 所述从滤除后剩下的出端口转发报文的方法为:针对滤除后剩下的每个出端口,如果该出端口是该转发芯片的内部端口,则从该出端口转发报文,如果该出端口是其它转发芯片的外部端口,则查找转发芯片映射表确定报文的目的转发芯片对应的内部端口,从确定的内部端口转发报文。
3.根据权利要求2所述的在交换机上实现VD的方法,其特征在于, 所述根据转发芯片和VD的对应关系为当前VD中每个转发芯片配置用于隔离非当前VD的报文的二层隔离表时,进一步将该转发芯片的每个内部端口加入到所述交换机中所有VD的VLAN中,并将该内部端口加入到所有组播组对应的组播表项的出端口列表中; 当前VD在自身的任一转发芯片的外部端口接收到报文时,确定报文的出端口的方法为:如果报文是单播报文,则查找MAC转发表确定报文的出端口,如果报文是组播报文,则查找报文所属组播组对应的组播表项的出接口列表确定报文的所有出端口,对于根据MAC转发表未能确定出端口的单播报文、根据组播表项的出接口列表未能确定出端口的组播报文以及广播报文,则查找VLAN广播表确定报文的所有出端口 ; 当前VD在自身的任一转发芯片的内部端口接收到报文时,确定报文的出端口的方法为:如果报文是单播报文且携带目的出端口,则确定报文的出端口为该目的出端口,如果报文是组播报文,则查找报文所属组播组对应的组播表项的出接口列表确定报文的所有出端口,对于未携带目的出端口的单播报文、根据组播表项的出接口列表未能确定出端口的组播报文以及广播报文,则查找VLAN广播表确定报文的所有出端口。
4.根据权利要求1所述的在交换机上实现VD的方法,其特征在于,当前VD在任一转发芯片的内部端口接收到报文并确定报文属于当前VD之后,进一步包括:学习该报文的源MAC地址到报文的源端口 ; 当前VD在任一转发芯片的内部端口接收到报文并确定报文不属于当前VD之后,进一步包括:禁止对该报文进行MAC地址学习。
5.根据权利要求2-4任一权项所述的在交换机上实现VD的方法,其特征在于,该方法进一步包括: 当前VD在自身的任一转发芯片的CPU端口接收到广播协议报文时,查找VLAN广播表确定报文的所有出端口,针对每个出端口,如果该出端口是该转发芯片的外部端口,则从该出端口转发广播协议报文,如果该出端口是该转发芯片的内部端口,则将预先为当前VD分配的CPU源端口作为广播协议报文的源端口携带在广播协议报文,并从该出端口转发广播协议报文; 当前VD在自身的任一转发芯片的内部端口接收到携带源端口的广播协议报文时,查找VLAN广播表确定广播协议报文的所有出端口,根据广播协议报文的源端口和为该转发芯片配置的二层隔离表判断广播协议报文是否属于当前VD,如果是,则从所有出端口转发广播协议报文,否则,将所有出端口中属于该转发芯片的外部端口过滤,从过滤后的所有出端口转发广播协议报文。
6.根据权利要求5所述的在交换机上实现VD的方法,其特征在于, 所述根据转发芯片和VD的对应关系为当前VD中每个转发芯片配置用于隔离非当前VD的报文的二层隔离表的方法为:将不属于当前VD的所有转发芯片的外部端口添加到为该转发芯片配置的二层隔离表,将为除当前VD外其它每个VD预先分配的CPU源端口添加到为该转发芯片配置的二层隔离表; 所述根据报文的源端口和为 该转发芯片配置的二层隔离表判断报文是否属于当前VD的方法为:如果报文的源端口是为该转发芯片配置的二层隔离表中的外部端口,则确定报文不属于当前VD,否则,确定报文属于当前VD ; 所述根据广播协议报文的源端口和为该转发芯片配置的二层隔离表判断广播协议报文是否属于当前VD的方法为:如果广播协议报文的源端口是为该转发芯片配置的二层隔离表中的CPU源端口,则确定广播协议报文不属于当前VD,否则,确定广播协议报文属于当前VD ; 或者, 所述根据转发芯片和VD的对应关系为当前VD中每个转发芯片配置用于隔离非当前VD的报文的二层隔离表的方法为:将属于当前VD的所有转发芯片的外部端口添加到为该转发芯片配置的二层隔离表,将为当前VD预先分配的CPU源端口添加到为该转发芯片配置的二层隔尚表; 所述根据报文的源端口和为该转发芯片配置的二层隔离表判断报文是否属于当前VD的方法为:如果报文的源端口是为该转发芯片配置的二层隔离表中的外部端口,则确定报文属于当前VD,否则,确定报文不属于当前VD ; 所述根据广播协议报文的源端口和为该转发芯片配置的二层隔离表判断广播协议报文是否属于当前VD的方法为:如果广播协议报文的源端口是为该转发芯片配置的二层隔离表中的CPU源端口,则确定广播协议报文属于当前VD,否则,确定广播协议报文不属于当前VD。
7.一种虚拟设备VD,应用于交换机,所述交换机以转发芯片为加入和退出VD的最小单元,并建立有转发芯片和VD的对应关系;其特征在于,该VD包括:配置单元、接收单元、处理单元、发送单元; 所述配置单元,用于根据所述交换机建立的转发芯片和VD的对应关系为本VD中每个转发芯片配置用于隔离非本VD的报文的二层隔离表; 所述接收单元,用于在本VD的任一转发芯片的外部端口接收报文;用于在本VD的任一转发芯片的内部端口接收携带源端口的报文; 所述处理单元,用于接收单元在本VD的任一转发芯片的外部端口接收到报文时,确定报文的出端口,对属于该转发芯片的外部端口的每个出端口,通知发送单元从该出端口转发报文;对不属于该转发芯片的外部端口的每个出端口,通知发送单元将接收报文的端口作为报文的源端口携带在报文中并通过该转发芯片的内部端口转发报文;用于接收单元本VD的任一转发芯片的内部端口接收到携带源端口的报文时,确定报文的出端口,根据报文的源端口和配置单元为该转发芯片配置的二层隔离表判断报文是否属于本VD,如果是,则通知发送单元从确定的出端口转发报文,否则,滤除报文的出端口中属于该转发芯片的外部端口,并通知发送单元从滤除后剩下的出端口转发报文。
8.根据权利要求7所述的VD,其特征在于, 所述发送单元在将接 收报文的端口作为报文的源端口携带在报文中并通过该转发芯片的内部端口转发报文时,用于:如果该出端口为该转发芯片的内部端口,则将接收报文的端口作为报文的源端口携带在报文中并从该出端口转发报文;如果该出端口是其它转发芯片的外部端口,则将接收报文的端口、该出端口、该出端口所在转发芯片分别作为报文的源端口、目的出端口、目的转发芯片携带在报文中,并查找转发芯片映射表确定报文的目的转发芯片对应的内部端口,从确定的内部端口转发报文; 所述发送单元在从滤除后剩下的出端口转发报文时,用于:针对滤除后剩下的每个出端口,如果该出端口是该转发芯片的内部端口,则从该出端口转发报文,如果该出端口是其它转发芯片的外部端口,则查找转发芯片映射表确定报文的目的转发芯片对应的内部端口,从确定的内部端口转发报文。
9.根据权利要求8所述的VD,其特征在于, 所述配置单元在根据转发芯片和VD的对应关系为本VD中每个转发芯片配置用于隔离非本VD的报文的二层隔离表时,进一步将该转发芯片的每个内部端口加入到所述交换机中所有VD的VLAN中,并将该内部端口加入到所有组播组对应的组播表项的出端口列表中; 所述处理单元在确定接收单元在本VD的任一转发芯片的外部端口接收到的报文的出端口时,用于:如果报文是已知单播报文,则查找MAC转发表确定报文的出端口,如果报文是已知组播报文,则查找报文所属组播组对应的组播表项的出接口列表确定报文的出端口,对于根据MAC转发表未能确定出端口的单播报文、根据组播表项的出接口列表未能确定出端口的组播报文以及或广播报文,则查找VLAN广播表确定报文的出端口 ;在确定接收单元在本VD的任一转发芯片的内部端口接收到的报文的出端口时,用于:如果报文是单播报文且携带目的出端口,则确定报文的出端口为该目的出端口,如果报文是组播报文,则查找报文所属组播组对应的组播表项的出接口列表确定报文的出端口,对于未携带目的出端口的单播报文、根据组播表项的出接口列表未能确定出端口的组播报文以及广播报文,则查找VLAN广播表确定报文的出端口。
10.根据权利要求7所述的VD,其特征在于, 所述处理单元在确定接收单元在本VD的任一转发芯片的内部端口接收到的报文属于本VD之后,进一步用于:学习该报文的源MAC地址到报文的源端口 ;在确定接收单元在本VD的任一转发芯片的内部端口接收到的报文不属于本VD之后,进一步用于:禁止对该报文进行MAC地址学习。
11.根据权利要求7-10任一权项所述的VD,其特征在于, 所述接收单元,进一步用于在本VD的任一转发芯片的CPU端口接收广播协议报文;进一步用于在本VD的任一转发芯片的内部端口接收携带源端口的广播协议报文; 所述处理单元,进一步用于接收单元在本VD的任一转发芯片的CPU端口接收到广播协议报文时,查找VLAN广播表确定报文的出端口,针对每个出端口,如果该出端口是该转发芯片的外部端口,则通知发送单元从该出端口转发广播协议报文,如果该出端口是该转发芯片的内部端口,则通知发送单元将预先为本VD分配的CPU源端口作为广播协议报文的源端口携带在广播协议报文,并从该出端口转发广播协议报文;进一步用于接收单元在本VD的任一转发芯片的内部端口接收到携带源端口的广播协议报文时,查找VLAN广播表确定广播协议报文的出端口,根据广播协议报文的源端口和为该转发芯片配置的二层隔离表判断广播协议报文是否属于本VD,如果是,则通知发送单元从报文的出端口转发广播协议报文,否则,将报文的出端口中属于该转发芯片的外部端口过滤,并通知发送单元从过滤后的出端口转发广播协议报文。
12.根据权利要求11所述的VD,其特征在于, 所述配置单元在根据转发芯片和`VD的对应关系为本VD中每个转发芯片配置用于隔离非本VD的报文的二层隔离表时,用于:将不属于本VD的所有转发芯片的外部端口添加到为该转发芯片配置的二层隔离表,将为除本VD外其它每个VD预先分配的CPU源端口添加到为该转发芯片配置的二层隔离表; 所述处理单元在根据报文的源端口和为该转发芯片配置的二层隔离表判断报文是否属于本VD时,用于:如果报文的源端口是为该转发芯片配置的二层隔离表中的外部端口,则确定报文不属于本VD,否则,确定报文属于本VD ;在根据广播协议报文的源端口和为该转发芯片配置的二层隔离表判断广播协议报文是否属于本VD时,用于:如果广播协议报文的源端口是为该转发芯片配置的二层隔离表中的CPU源端口,则确定广播协议报文不属于本VD,否则,确定广播协议报文属于本VD ; 或者, 所述配置单元在根据转发芯片和VD的对应关系为本VD中每个转发芯片配置用于隔离非本VD的报文的二层隔离表时,用于:将属于本VD的所有转发芯片的外部端口添加到为该转发芯片配置的二层隔离表,将为本VD预先分配的CPU源端口添加到为该转发芯片配置的二层隔尚表; 所述处理单元在根据报文的源端口和为该转发芯片配置的二层隔离表判断报文是否属于本VD时,用于:如果报文的源端口是为该转发芯片配置的二层隔离表中的外部端口,则 确定报文属于本VD,否则,确定报文不属于本VD ;在根据广播协议报文的源端口和为该转发芯片配置的二层隔离表判断广播协议报文是否属于本VD时,用于:如果广播协议报文的源端口是为该转发芯片配置的二层隔离表中的CPU源端口,则确定广播协议报文属于本VD,否则,确定广播协议报文不属于本VD。
【文档编号】H04L12/947GK103685082SQ201210356094
【公开日】2014年3月26日 申请日期:2012年9月21日 优先权日:2012年9月21日
【发明者】王明辉 申请人:杭州华三通信技术有限公司