CN100459587C - 一种实现灵活QinQ的方法及设备 - Google Patents

一种实现灵活QinQ的方法及设备 Download PDF

Info

Publication number
CN100459587C
CN100459587C CNB2006101380234A CN200610138023A CN100459587C CN 100459587 C CN100459587 C CN 100459587C CN B2006101380234 A CNB2006101380234 A CN B2006101380234A CN 200610138023 A CN200610138023 A CN 200610138023A CN 100459587 C CN100459587 C CN 100459587C
Authority
CN
China
Prior art keywords
qinq
vlan
priority
message
desired data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2006101380234A
Other languages
English (en)
Other versions
CN1960336A (zh
Inventor
朱倩影
曲克楠
梁冰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Gao Xin Touchplus information Corp
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CNB2006101380234A priority Critical patent/CN100459587C/zh
Publication of CN1960336A publication Critical patent/CN1960336A/zh
Application granted granted Critical
Publication of CN100459587C publication Critical patent/CN100459587C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种实现灵活QinQ的方法,预先在芯片中设置灵活QinQ配置策略所需数据,该方法还包括:A、接收报文,根据所接收报文的内、外层虚拟局域网标识(VLAN ID)以及优先级从灵活QinQ配置策略所需数据中进行查询;通过查询从灵活QinQ配置策略数据中获取所需数据;B、使用所获取的数据对报文进行QinQ操作。此外,本发明还公开了一种实现灵活QinQ的设备,包括:至少一个灵活QinQ接口板、二层交换芯片、普通低速接口板。本发明所提供的方法及设备,无需使用网络处理器(NP),因此可以大大降低成本,提高竞争力。

Description

一种实现灵活QinQ的方法及设备
技术领域
本发明涉及数据传输技术,尤其涉及一种实现灵活QinQ的方法及设备。
背景技术
QinQ技术是基于两层802.1Q封装的隧道协议的一种形象化称呼,其核心思想是将用户网络的虚拟局域网标签(VLAN Tag)封装到运营商网络或者服务提供商网络等骨干网络VLAN Tag上,报文带着两层VLAN Tag穿越骨干网。
当源用户网络通过骨干网与目的用户网络进行互联时,骨干网上用于用户接入的端口称为用户端口,用户端口在接收到用户报文,即普通形式的报文后,在报文原来的一层VLAN Tag,即用户网络的VLAN Tag的基础上,再封装一层新的VLAN Tag,即骨干网络的VLAN Tag,即添QinQ封装,之后将封装后的报文进行传输;骨干网的其它用户端口在将报文发送给目的用户网络之前,将添加的骨干网络的VLAN Tag封装去掉,还原成普通的报文,即去QinQ封装,此时目的用户网络接收的报文和源用户网络发送的报文一致。由于骨干网在传输过程中,有可能遇到链路切换的情况,为了在切换后的链路中继续传输报文,需要对VLAN Tag进行变换;此外,需要对报文进行不同处理时,也需要对VLAN Tag进行变换,即变换QinQ封装,以适应新的链路。
图1为QinQ的封装格式示意图,包括目的媒体接入控制(MAC)地址(DA),源MAC地址(SA)、外层VLAN Tag(Stag)、内层VLAN Tag(Ctag)、类型/长度(Type/Length)、净荷(Payload)以及校验位(CRC)。其中,Stag和Ctag均包括:标签协议标识(TPID)和标签控制信息(TCI)。TPID用于在网络互联中,不同网络设备之间对所接收报文进行识别的标号,在成熟的协议中,TPID可以是标准的协议号,如QinQ协议的内层VLAN Tag中的TPID具有标准协议号8100,QinQ协议的外层VLAN Tag中的TPID目前还没有固定的标准协议号。TCI一般包括三方面的内容:优先级(Priority),VLAN标识(VLAN ID)以及格式指示(CFI)。其中,优先级用于指明当前报文帧的优先级别,一般有8个级别;VLAN ID用于指明当前报文所属的VLAN。
在一般的QinQ中,只支持基于外层VLAN Tag或者外层VLAN Tag和用户端口的组合等简单的配置策略,即根据所接收报文的外层VLAN Tag或者外层VLAN Tag与用户端口的组合作为标识对该报文进行添封装、去封装或变换封装等操作。然而实际应用中,可能需要对QinQ实现更多的配置策略,如根据报文的外层VLAN Tag以及优先级,或者根据外层VLAN Tag与内层VLAN Tag,或者外层VLAN Tag、内层VLAN Tag以及优先级等,因此出现了灵活QinQ的概念,灵活QinQ支持丰富的配置策略。
目前灵活QinQ没有固定的外层TPID标准协议号,因此现有技术中在实现灵活QinQ时,不同厂家对于外层TPID设置的数值通常不同,这样在实际应用中,会出现彼此无法兼容的情况。并且为了实现灵活QinQ技术,现有技术中一般采用由网络处理器(NP)来实现QinQ的配置策略和存储所需的各种数据信息,NP采用特殊的存储器,将所需的数据信息放置在一张表中,并且支持根据内容查找地址,可做长度很长的信息的检索。但NP本身价格比较昂贵,因此这种实现方式成本较高,不利于市场竞争。
发明内容
有鉴于此,本发明一方面提供一种实现灵活QinQ的方法,该方法能够降低成本。
本发明另一方面提供一种实现灵活QinQ的设备,该设备的成本比较低。
本发明所提供的实现灵活QinQ的方法,包括:预先在芯片中设置灵活QinQ配置策略所需数据,该方法还包括:
A、接收报文,根据所接收报文的内、外层虚拟局域网标识VLAN ID以及优先级从灵活QinQ配置策略所需数据中进行查询;通过查询从灵活QinQ配置策略数据中获取所需数据;
B、使用所获取的数据对报文进行QinQ操作。
较佳地,预先在芯片中还设置普通QinQ配置策略所需数据;则步骤A中在接收到报文后,进一步包括:
根据所接收报文的外层VLAN ID从普通QinQ配置策略所需数据中获取配置策略类型;
根据获取的配置策略类型,确定使用普通QinQ配置策略所需数据或灵活QinQ配置策略所需数据;
若确定使用普通QinQ配置策略所需数据,则从普通QinQ配置策略数据中获取所需数据;
若确定使用灵活QinQ配置策略所需数据,则执行所述根据所接收报文的内、外层VLAN ID以及优先级从灵活QinQ配置策略数据中进行查询的操作。
较佳地,预先在芯片中设置标签协议标识TPID,并且该TPID可由用户根据需要进行配置,供进行QinQ操作时使用。
其中,所述确定使用的数据的方法为:若所述配置策略类型显示为选用普通QinQ配置策略所需数据,则确定使用普通QinQ配置策略所需数据;若配置策略类型显示为选用灵活QinQ配置策略所需数据,则确定使用灵活QinQ配置策略所需数据。
其中,所述普通QinQ配置策略所需数据和灵活QinQ配置策略所需数据分别存储在第一表和第二表中。
其中,若确定使用第二表中的数据,则所述根据所接收报文的内、外层VLAN ID以及优先级从灵活QinQ配置策略所需数据中进行查询,具体包括:
A1、根据所述第一表中的掩码取值对所接收报文的内、外层VLAN ID以及优先级进行掩码,并对掩码结果进行哈希计算,利用哈希计算结果查询第二表,得到第二表中与哈希计算结果对应的当前表项;
A2、判断当前表项中的VLAN ID和优先级是否分别与报文的VLAN ID和优先级一致,如果一致,则从当前表项中执行所述获取所需数据的操作,结束;否则,执行步骤A3;
A3、利用当前表项中的链表子节点地址查询第二表中的下一个表项,之后返回执行步骤A2。
其中,所述根据获取的配置策略类型,确定使用普通QinQ配置策略所需数据或灵活QinQ配置策略所需数据之前进一步包括:根据所述第一表中的操作类型的值,确定QinQ的操作类型。
其中,所述获取所需数据之前,进一步包括:从所确定的数据中获取操作类型的值,根据所获取的操作类型的值,确定QinQ的操作类型。
其中,所述确定QinQ的操作类型为添QinQ封装操作;
若确定从第一表中获取所需数据,则所述获取所需数据具体包括:
B 1、从所述第一表的表项中读取新VLAN ID的值作为新虚拟局域网标签VLAN Tag的VLAN ID;
B2、判断第一表的表项中的优先级类型,如果优先级类型为更换优先级,执行步骤B3;否则,执行步骤B4;
B3、从第一表的表项中读取新优先级的值作为新VLAN Tag的优先级,然后执行步骤B;
B4、取出原VLAN Tag的优先级作为新VLAN Tag的优先级;
则所述步骤B为:利用新VLAN ID、新优先级以及从芯片中获取的标签协议标识TPID完成添QinQ封装操作。
其中,所述确定QinQ的操作类型为添QinQ封装操作;
若确定从第二表中获取所需数据,则所述获取所需数据具体包括:
C1、从所述第二表的表项中读取新外层VLAN ID的值作为新VLAN Tag的VLAN ID,读取新优先级的值作为新VLAN Tag的优先级;
则步骤B具体为:利用新VLAN ID、新优先级以及从芯片中获取的标签协议标识完成添QinQ封装操作。
其中,所述确定QinQ的操作类型为去QinQ封装操作;
该方法还包括:将所述报文的外层VLAN Tag去掉,还原成普通报文。
其中,所述确定QinQ的操作类型为变换QinQ封装操作;
若确定从第一表中获取所需数据,则所述获取所需数据具体包括:
D1、从所述第一表的表项中读取新VLAN ID的值替换报文外层VLANTag的VLAN ID;
D2、判断表项中的优先级类型,如果优先级类型为更换优先级,执行步骤D3;否则,执行步骤B;
D3、从表项中读取新优先级的值替换外层VLAN Tag的优先级;
则所述步骤B为:利用新VLAN ID、新优先级完成变换QinQ封装操作。
其中,所述确定QinQ的操作类型为变换QinQ封装操作;
若确定从第二表中获取所需数据,则所述获取所需数据具体包括:
从所述第二表的表项中读取新外层VLAN ID的值替换外层VLAN Tag的VLAN ID,读取新内层VLAN ID的值替换内层VLAN Tag的VLAN ID,读取新优先级的值替换外层VLAN Tag的优先级;
则所述步骤B为:利用新外层VLAN ID、新内层VLAN ID以及新优先级完成变换QinQ封装操作。
其中,所述根据所接收报文的内、外层VLAN ID以及优先级从灵活QinQ配置策略所需数据中进行查询为:将内、外层VLAN ID以及优先级的线性组合作为索引从灵活QinQ配置策略所需数据中进行查询;或将内、外层VLAN ID以及优先级进行哈希计算的结果作为索引从灵活QinQ配置策略所需数据中进行查询。
其中,所述从灵活QinQ配置策略数据中获取所需数据之前进一步包括:从灵活QinQ配置策略数据获取QinQ操作类型,根据所确定的QinQ操作类型,获取所需数据。
其中,所述确定的QinQ操作类型为:添QinQ封装操作,则所述获取所需数据具体包括:
E1、从所述灵活QinQ配置策略数据读取新VLAN ID的值作为新VLANTag的VLAN ID;
E2、判断灵活QinQ配置策略数据中的优先级类型,如果优先级类型为更换优先级,执行步骤E3;否则,执行步骤E4;
E3、从灵活QinQ配置策略数据中读取新优先级的值作为新VLAN Tag的优先级,然后执行步骤B;
E4、取出原VLAN Tag的优先级作为新VLAN Tag的优先级;
则所述步骤B为:利用新VLAN ID、新优先级以及从芯片中获取的标签协议标识TPID完成添QinQ封装操作。
其中,所述确定的QinQ操作类型为:变换QinQ封装操作,则所述获取所需数据具体包括:
根据灵活QinQ配置策略数据中掩码的类型,获取变换QinQ封装所需的数据;
则步骤B具体为:根据所获取的数据完成变换QinQ封装操作。
本发明所提供的实现灵活QinQ的设备包括:中央处理器CPU、至少一个灵活QinQ接口板、二层交换芯片、普通低速接口板,其中,灵活QinQ接口板包括至少一个端口,
CPU,对灵活QinQ接口板的每个端口和二层交换芯片进行配置,并对存储在灵活QinQ接口板每个端口中的进行灵活QinQ操作所需数据进行配置;
普通低速接口板,接收来自用户网络的普通报文,将接收的报文传送给二层交换芯片;接收来自二层交换芯片转发的去掉外层VLAN Tag的VALN报文,发送给用户网络;
二层交换芯片,接收来自普通低速接口板的普通报文,将该普通报文转发给灵活QinQ接口板;接收来自灵活QinQ接口板的去QinQ封装后的报文,将报文转发给普通低速接口板;接收来自灵活QinQ接口板的变换QinQ封装后的报文,将报文转发给其它灵活QinQ接口板,或转发给该灵活QinQ接口板的其它端口;
灵活QinQ接口板的每个端口接收来自二层交换芯片的报文,使用进行灵活QinQ操作所需数据对报文进行添QinQ封装操作,并将添QinQ封装后的报文发送给骨干网络,或将接收到的报文直接发送给骨干网络;接收来自骨干网络的报文,使用进行灵活QinQ操作所需数据对报文进行去QinQ封装或变换QinQ封装操作,将操作后的报文发送给二层交换芯片;
所述进行灵活QinQ操作所需数据存储在灵活QinQ接口板的每个端口中。
较佳地,该设备进一步包括:普通高速接口板,接收来自所述二层交换芯片转发的变换QinQ封装后的报文,将所接收的报文发送给骨干网络;
所述二层交换芯片进一步用于:接收来自灵活QinQ接口板的变换QinQ封装后的报文,将报文转发给普通高速接口板。
较佳地,所述灵活QinQ接口板的每个端口都采用可编程逻辑门阵列FPGA实现,或都采用专用集成电路ASIC实现,或灵活QinQ接口板的部分端口采用FPGA实现,部分端口采用ASIC实现。
从上述方案可以看出,本发明预先在非NP的价格便宜的芯片中设置灵活QinQ配置策略所需数据以及标签协议标识TPID,然后对接收的报文使用该芯片中存储的数据进行灵活QinQ操作,无需使用昂贵的NP,从而降低了成本。
此外,由于目前也存在很多普通QinQ操作,而普通QinQ操作所需数据相对较少,为了提高QinQ操作的速度,可将进行普通QinQ操作所需数据进行单独设置,并可将普通QinQ配置策略所需数据和灵活QinQ配置策略所需数据分别存储在芯片中的第一表和第二表中,第一表用于实现一般的QinQ配置策略,第二表用于实现灵活QinQ的配置策略;然后根据所接收到的报文的外层VLAN ID查寻第一表,根据第一表中的配置策略类型,使用第一表或第二表中的数据对报文进行QinQ操作。可见,通过将普通QinQ操作和灵活QinQ操作进行单独管理,从而大大提高了实际运行中的速度。
此外,利用掩码将不需要作为配置策略中判断条件的项进行屏蔽,从而通过对掩码进行不同设置,便可实现各种组合的配置策略;并通过利用哈希(HASH)计算结果,并取HASH计算结果的低12位,作为索引,达到了缩减线性表尺寸的目的。
最后,本发明中的TPID可动态配置,从而实现了不同厂家之间网络设备的兼容。
附图说明
图1为QinQ的封装格式示意图;
图2为本发明方法实施例一中VLAN表中一个表项的结构示意图;
图3为本发明方法实施例一中VLAN_HASH表中一个表项的结构示意图;
图4为本发明方法实施例一中采用方式一实现灵活QinQ的方法流程图;
图5为图4所示流程中执行添QinQ封装操作的流程图;
图6为图4所示流程中执行变换QinQ封装操作的流程图;
图7为本发明方法实施例一中采用方式二实现灵活QinQ的方法流程图;
图8为图7所示流程中使用VLAN表项中的数据执行QinQ操作的流程图;
图9为图7所示流程中使用VLAN_HASH表项中的数据执行QinQ操作的流程图;
图10为本发明方法实施例二中灵活配置表中一个表项的结构示意图;
图11为本发明方法实施例二中采用实现方式一的实现灵活QinQ的方法流程图;
图12为本发明方法实施例二中灵活配置哈希表中一个表项的结构示意图;
图13为本发明方法实施例二中采用实现方式二的实现灵活QinQ的方法流程图;
图14为本发明实施例中实现灵活QinQ的设备的结构示意图。
具体实施方式
本发明的基本思想是:预先在芯片中设置灵活QinQ配置策略所需数据,接收报文,根据所接收报文的内、外层VLAN ID以及优先级从灵活QinQ配置策略数据中获取所需数据,使用所获取的数据对报文进行QinQ操作。其中,芯片可以为FPGA,也可以为ASIC等非NP的芯片。
进一步地,还可在芯片中预先设置普通QinQ配置策略所需数据,接收到报文后,根据所接收的报文的VLAN ID从普通QinQ配置策略所需数据中获取配置策略类型;根据获取的配置策略类型,确定使用普通QinQ配置策略所需数据或灵活QinQ配置策略所需数据,并从所确定的数据中获取所需数据对报文进行QinQ操作。
若确定使用普通QinQ配置策略所需数据,则直接从普通QinQ配置策略数据中获取所需数据,使用所获取的数据对报文进行QinQ操作;若确定使用灵活QinQ配置策略所需数据,则根据所接收报文的内、外层VLAN ID以及优先级从灵活QinQ配置策略数据中获取所需数据,使用所获取的数据对报文进行QinQ操作。
其中,根据报文的内、外层VLAN ID以及优先级从灵活QinQ配置策略数据中获取所需数据时,可以直接将内、外层VLAN ID以及优先级的各种组合作为索引从灵活QinQ配置策略数据中查询所需数据,也可以先对内、外层VLAN ID以及优先级进行哈希计算,将哈希计算结果作为索引从灵活QinQ配置策略数据中查询所需数据。
具体实现时,可将普通QinQ配置策略所需数据和灵活QinQ配置策略所需数据分别存储在芯片中的两个表中,即第一表和第二表中;也可以将二者存储在芯片的一个表中,当设置在一个表中时,因为灵活QinQ配置策略包括有普通QinQ配置策略,所以此时也可以理解为只在芯片中设置了灵活QinQ配置策略所需数据,接收到报文后,根据所接收报文的内、外层VLANID以及优先级从灵活QinQ配置策略数据中获取所需数据,使用所获取的数据对报文进行QinQ操作。
此外,为了实现标签协议标识TPID可配置,可在芯片中设置TPID,并且该TPID可由用户根据需要进行配置,用于在添加QinQ封装时使用。
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明进一步详细说明。
为了叙述方便,本发明中对外层VLAN Tag作如下规定:如果报文中只有一层VLAN Tag,该层VLAN Tag即称为外层VLAN Tag;如果报文有一层以上VLAN Tag,即二层VLAN Tag,则将最靠近MAC地址头的VLANTag,即后添加的VLAN Tag称为外层VLAN Tag。
本发明中对每个用户端口所支持的灵活QinQ的配置策略如表一所示,为了描述简洁,表中用Q代表VLAN Tag。
表一
表一中的配置策略指的是基于所接收报文的哪些信息来完成QinQ的操作,配置方案分别表示基于配置策略,所能完成的操作。对于表一中的第一行可以理解为基于普通QinQ配置策略及所能完成的操作。
下面结合具体实施例对本发明的提供的实现灵活QinQ的方法及设备进行详细描述。
方法实施例一
本实施例中,采用FPGA芯片来实现灵活QinQ,预先设置有普通QinQ配置策略所需数据和灵活QinQ配置策略所需数据,并将普通QinQ配置策略所需数据和灵活QinQ配置策略所需数据分别写入两个表中,即第一表和第二表。第一表为VLAN表,用于存储普通QinQ配置策略所需的数据,第二表为VLAN哈希(VLAN_HASH)表,用于存储灵活QinQ配置策略所需的数据。本实施例中将完成添加QinQ封装所需的TPID存储在FPGA芯片的寄存器中,并且该TPID可配置,用户根据实际需要配置TPID值,实现和不同网络互联时对报文识别时的兼容。关于如何应用两个表及TPID值进行具体灵活QinQ操作的过程参见后面图4至图9所示流程的介绍。
其中,VLAN表和VLAN_HASH表都是存储在FPGA芯片的存储器中,假设存储器的每个存储单元为32比特,并且存储单元之间是通过地址查询的,每张表都有一个基础地址,即起始地址。VLAN表和VLAN_HASH表中都包括很多表项,表项指的是完成特定功能的最小数据集合,表项中各参数的取值决定了对报文进行的具体QinQ操作,不同表项中各参数的取值不同。每个表项可能会包含不只一个存储单元,因此在寻找每个表项时,可根据基础地址以及该表项的索引值找到表项的位置,寻找表项中每个具体内容时,可根据所找到表项中所包含的存储单元偏移,找到相应的存储单元,再根据该存储单元中所存储内容占用的比特位置,获得具体内容。
其中,第一表VLAN表用于存储一般的QinQ配置策略所需的数据,即表一中配置策略为外层Q时,执行表一中的第一行配置方案所需的数据,同时该表中还存储有配置策略类型参数,根据该配置策略类型,决定使用VLAN表,还是VLAN_HASH表;并存储有对配置策略进行配置的掩码(MASK)参数,通过对MASK进行不同设置,可完成不同配置策略。具体内容参见图2和下面的表二。
参见图2,图2为本发明实施例中VLAN表中一个表项的结构示意图。如图2所示,该表项包含一个存储单元,即图中起始位置为0的一行。该VLAN表项中包括:起始位(Primary)、预留位(RSV)、掩码(MASK)、新优先级(N_PRI)以及新VLAN ID(NEW_VLAN),并且Primary中包括:报文标志(VALID)、操作类型(VLAN_ACTION)、上送CPU标志(TO_CPU)、配置策略类型(DBL_VLAN_EN)以及优先级类型(PRI_CHANGE)。各部分的具体含义及内容如表二所示:
Figure C20061013802300191
表二
基于表二的VLAN的索引值为报文的VLAN ID,根据报文的VLAN ID以及基础地址,可以找到VLAN ID对应的表项。表中通过设置MASK,并对MASK设置不同的值,可以实现灵活QinQ的各种配置策略。如:假设配置策略为表一第二行中的配置策略,即基于外层Q+优先级,则MASK取值为010;假设配置策略为表一最后一行中的配置策略,即基于外层Q+内层Q+优先级,则MASK取值为000;假设配置策略为表一倒数第二行中的配置策略,即基于外层Q+内层Q,则MASK取值为001,依次类推。
第二表VLAN_HASH表,用于存储灵活QinQ配置策略所需的数据,即存储执行表一中所有配置方案所需的数据,根据VLAN表中的MASK进行HASH计算,用HASH计算结果作为索引,找到对应于该配置策略的数据,同时该表中也可以存储配置策略类型等参数,具体内容参见下面的图3和表三。
参见图3,图3为本发明实施例中VLAN_HASH表中一个表项的结构示意图。如图3所示,该表项包含三个存储单元,即图中起始位置为0、1以及2的三行。该VLAN_HASH表项包括:Primary、原优先级(PRI)、原外层VLAN ID(SPVLAN)、原内层VLAN ID(CVLAN)、RSV、N_PRI、新外层VLAN ID(N_SPVLAN)、新内层VLAN ID(N_CVLAN)、链表头(H)、链表父节点地址(PNOD)、链表尾(T)以及链表子节点地址(CNOD),并且Primary包括:报文标志(VALID)、操作类型(VLAN_ACTION)、上送CPU标志(TO_CPU)、配置策略类型(DBL_VLAN_EN)。各部分的具体含义及内容如表三所示:
Figure C20061013802300201
Figure C20061013802300211
表三
基于表三的VLAN_HASH表的索引值为根据VLAN表中MASK的设置,计算出的报文各种配置策略下的HASH结果,之所以采用HASH结果作为索引,是因为802.1Q协议中定义的VLAN Tag有12比特,因此VLANID可有212=4096个,又因为优先级一般为8个,如果采用线性索引,则为了实现报文的各种配置策略,所需要的索引值在基于外层VLAN ID、内层VLAN ID以及优先级的情况下,会有4096×4096×8个表项,表的尺寸会非常的大,因此本实施例中采用对各种配置策略进行HASH计算,计算方法可以采用标准的循环冗余校验(CRC32)算法,并截取得到的低12位作为索引值,这样本实施例中的VLAN_HASH表的大小便可以设置为4K,即包含4096个表项。实际应用中,对于HASH计算还可以采用其它现有算法,此处不再赘述。对于计算结果的取值以及表的大小也可以有其它的设置,如截取低16位等,总之根据实际情况进行截取。
其中对于HASH计算,会存在不同的配置策略产生相同HASH结果的情况,例如:假设报文1的外层VLAN ID为123,内层VLAN ID为456,优先级为7,则若MASK值为010时,得到HASH算子为1230007;若报文2的外层VLAN ID为123,内层VLAN ID为896,优先级为7,MASK值为010时,同样得到HASH算子为1230007。为了解决这种情况,在VLAN_HASH表中设置了链表子节点地址CNOD和链表父节点地址PNOD,将具有相同HASH值的表项链接起来,其中第一个表项没有PNOD,最后一个表项没有CNOD。在通过索引找到VLAN_HASH链表后,根据报文的VLAN ID以及优先级与当前VLAN_HASH表项中的VLAN ID以及优先级进行对比,如果一样,则说明找到匹配表项,否则根据CNOD找到下一个表项,再进行匹配判断,直到找到对应表项,执行相应QinQ操作;或者达到最大查表次数时退出。
其中,PNOD用于维护整个链表的连续性。例如:A表项中的CNOD指向了B表项,B表项的CNOD指向了C表项,因此B表项中的PNOD就是A表项的地址,如果此时需要删除B表项,则需要先根据B表项中的PNOD找到A表项,将A表项中的CNOD由指向B表项改为指向C表项,再删除B表项。
基于上述第一表VLAN表和第二表VLAN_HASH表中的内容,具体执行灵活QinQ的实现过程时,可以有很多种实现方式,下面列举两种实现方式。其中假设VLAN表和VLAN_HASH表已经设置在FPGA芯片中,并且TPID也已经设置在FPGA芯片的寄存器中。
方式一:先从VLAN表中获取QinQ操作类型,然后再从VLAN表中获取配置策略类型,根据配置策略类型,确定需使用VLAN表还是VLAN_HASH表,然后根据QinQ操作类型,使用所确定的表中的数据对报文进行QinQ操作。
参见图4,图4为本发明实施例中采用方式一实现灵活QinQ的方法流程图,该流程包括如下步骤:
步骤401,用户端口接收到报文。
步骤402,根据报文的外层VLAN ID查询VLAN表。
本步骤中,将报文的外层VLAN ID作为索引,查询VLAN表,找到相应的表项。
步骤403,判断所找到的VLAN表项中VLAN_ACTION的类型,如果VLAN_ACTION为PUSH,则执行步骤404;如果VLAN_ACTION为POP,则执行步骤405;如果VLAN_ACTION为SWAP,则执行步骤406;否则,结束本流程。
步骤404,执行添QinQ封装操作,然后结束本流程。
本步骤中的具体实现过程参见后面图5所示的添QinQ封装的流程。
步骤405,执行去QinQ封装操作,然后结束本流程。
本步骤中,直接将所添加的外层VLAN Tag去掉,将报文还原成普通报文形式。
步骤406,执行变换QinQ封装操作,然后结束本流程。
本步骤中的具体实现过程参见后面图6所示的变换VLAN Tag的流程。
在图4所示流程中,步骤402与步骤403之间,还可以进一步包括:判断VLAN表中的VALID值,如果VALID值为有效,则对该报文执行步骤403;否则,将该报文丢弃。当VALID值为有效时,还可以再对VLAN表中的TO_CPU值进行判断,如果TO_CPU值为上报CPU,则将该报文上送至CPU进行监控;否则,正常处理,执行步骤403。
在上述图4所示步骤404中的添QinQ封装,即添加一层新的VLAN Tag,需要三个数据,包括TPID、VLAN ID以及优先级。添QinQ封装的流程如图5所示,图5为图4所示流程中执行添QinQ封装操作的流程图,该流程包括如下步骤:
步骤501,用户端口判断VLAN表项中DBL_VLAN_EN的值,如果该值为1,即表示根据两层VLAN标签+优先级变换/添加VLAN ID,执行步骤506;否则,即表示根据一层VLAN标签变换/添加VLAN ID,执行步骤502。
步骤502,从VLAN表项中读取NEW_VLAN的值作为新VLAN Tag的VLAN ID。
步骤503,判断VLAN表中PRI_CHANGE的值,如果该值为1,即表示新VLAN Tag中的优先级采用VLAN表中N_PRI配置的优先级,执行步骤504;否则,即表示新VLAN Tag中的优先级直接采用原外层VLAN Tag中的优先级,执行步骤505。
步骤504,从VLAN表中读取N_PRI的值作为新VLAN Tag的优先级,然后执行步骤512。
步骤505,取出原VLAN Tag的优先级作为新VLAN Tag的优先级,然后执行步骤512。
步骤506,根据VLAN表中的MASK进行HASH计算。
本步骤中,MASK不同的取值表示不同的配置策略,其中MASK的某一位取值为1时,则对应的外层VLAN ID、内层VLAN ID或优先级直接用全0代替。例如:假设外层VLAN ID为123,内层VLAN ID为456,优先级为7,则若MASK值为000时,得到HASH算子为1234567;若MASK值为010时,即不关心原报文的内层VLAN,得到HASH算子为1230007。然后对HASH算子进行HASH计算,计算方法可以采用标准CRC32算法,特征多项式为1+X+X2+X4+X5+X7+X8+X10+X11+X12+X16+X22+X23+X26+X32,具体计算过程现有技术中有详细介绍,此处不再赘述。
HASH计算完成后,取计算结果的低12位作为最终结果。
步骤507,根据HASH计算结果查询VLAN_HASH表。
本步骤中,将步骤506中HASH计算的结果作为索引查询VLAN_HASH表。
步骤508,判断报文的VLAN ID及优先级是否与表项匹配。如果是,则执行步骤511;否则,执行步骤509。
本步骤中,将报文的外层VLAN ID与所找到的VLAN_HASH表项中的SPVLAN进行对比,将报文的外层优先级与VLAN_HASH表项中的PRI进行对比,如果二者相同,则表示找到匹配的VLAN_HASH表项;如果二者不相同,则表示该VLAN_HASH表项不是匹配的VLAN_HASH表项。
步骤509,将查表次数加1,并判断查表次数是否达到预设的查表次数的最大值,如果达到,则丢弃该报文,并结束本流程;否则,执行步骤510。
本步骤中,为了防止错误报文出现等,对查表次数进行限定,预先设置一个查表次数最大值。其中,查表次数初值可设置为0,每查一次,查表次数加1。
步骤510,根据表中的子节点地址CNOD查询下一个VLAN_HASH表项,之后返回执行步骤508。
步骤511,从VLAN_HASH的表项中读取N_SPVLAN作为新VLAN Tag的VLAN ID,读取N_PRI作为新VLAN Tag的优先级。
步骤512,从FPGA寄存器中读取TPID值,将所读取的TPID值作为新VLAN Tag的TPID值。
步骤513,根据获取的新VLAN Tag的VLAN ID、优先级以及TPID完成新VLAN Tag的添加。
至此,添QinQ封装的流程结束。
在图5所示流程中,步骤511之前,还可以进一步包括:对匹配的VLAN_HASH表项中的VLAN_ACTION值以及DBL_VLAN_EN值进行校验,检验这两个值是否与VLAN表项中的值一致,如果一致,则执行步骤511;否则,提示配置错误,结束本流程。
此外,还可以对VLAN_HASH表项中的VALID值以及TO_CPU值进行校验,如果与VLAN表项中的值一致,则执行步骤511;否则,提示配置错误,结束本流程。
在上述图4所示步骤406中变换QinQ封装时,根据配置需要,完成外层VLAN ID,内层VLAN ID,或外层优先级的替换工作。变换VLAN Tag的流程如图6所示,图6为图4所示流程中执行变换QinQ封装操作的流程图,该流程包括如下步骤:
步骤601,用户端口判断VLAN表项中DBL_VLAN_EN的值,如果该值为1,执行步骤605;否则,执行步骤602。
步骤602,从VLAN表项中读取NEW_VLAN的值替换报文外层VLANTag的VLAN ID。
步骤603,判断VLAN表中PRI_CHANGE的值,如果该值为1,执行步骤604;否则,执行步骤611。
步骤604,从VLAN表中读取N_PRI的值替换外层VLAN Tag的优先级,然后执行步骤611。
步骤605,根据VLAN表中的MASK进行HASH计算。
本步骤中的具体计算过程可同图5所示步骤506中的介绍。
步骤606,根据HASH计算结果查询VLAN_HASH表。
步骤607,判断报文的VLAN ID及优先级是否与表项匹配。如果是,则执行步骤610;否则,执行步骤608。
本步骤中,将报文的外层VLAN ID与所找到的VLAN_HASH表项中的SPVLAN进行对比,将报文的内层VLAN_ID与VLAN_HASH表项中CVLAN进行对比,将报文的外层优先级与VLAN_HASH表项中的PRI进行对比,如果三者相同,则表示找到匹配的VLAN_HASH表项;如果三者不相同,则表示该VLAN_HASH表项不是匹配的VLAN_HASH表项。
步骤608,将查表次数加1,并判断查表次数是否达到预设的查表次数的最大值,如果达到,则丢弃该报文,并结束本流程;否则,执行步骤609。
本步骤中,也预先设置查表次数最大值,并可以设置查表次数初值为0。
步骤609,根据表中的子节点地址CNOD查询下一个VLAN_HASH表项,之后返回执行步骤607。
步骤610,从VLAN_HASH的表项中读取N_SPVLAN替换外层VLANTag的VLAN ID,读取N_CVLAN替换内层VLAN Tag的VLAN ID,读取N_PRI替换外层VLAN Tag的优先级。
步骤611,利用所读取的数据完成QinQ封装的变换。
至此,变换QinQ封装的流程结束。
在图6所示流程中,步骤610之前,还可以进一步包括:对匹配的VLAN_HASH表项中的VLAN_ACTION值以及DBL_VLAN_EN值进行校验,检验这两个值是否与VLAN表项中的值一致,如果一致,则执行步骤610;否则,提示配置错误,结束本流程。
此外,还可以对VLAN_HASH表项中的VALID值以及TO_CPU值进行校验,如果与VLAN表项中的值一致,则执行步骤610;否则,提示配置错误,结束本流程。
在方式一中,如果不需要对配置进行校验,可以将第二表即VLAN_HASH中的Primary项去掉,而直接根据第一表即VLAN表中的Primary进行相应判断。
方式二:先从VLAN表中获取配置策略类型,根据配置策略类型,确定需使用VLAN表还是VLAN_HASH表,然后从所确定的表中获取QinQ操作类型,根据QinQ操作类型,使用所确定的表中的数据对报文进行QinQ操作。
参见图7,图7为本发明实施例中采用方式二实现灵活QinQ的方法流程图,该流程包括如下步骤:
步骤701,用户端口接收到报文。
步骤702,根据报文的外层VLAN ID查询VLAN表。
本步骤中,将报文的外层VLAN ID作为索引,查询VLAN表,找到相应的表项。
步骤703,判断VLAN表项中DBL_VLAN_EN的值,如果该值为1,执行步骤705;否则,执行步骤704。
步骤704,使用VLAN表项中的数据执行QinQ操作,结束本流程。
本步骤中,具体实现方式可参照图8所示流程。
步骤705,根据VLAN表中的MASK进行HASH计算。
步骤706,根据HASH计算结果查询VLAN_HASH表。
步骤707,判断报文的VLAN ID及优先级是否与表项匹配。如果是,则执行步骤710;否则,执行步骤708。
步骤708,将查表次数加1,并判断查表次数是否达到预设的查表次数的最大值,如果达到,则丢弃该报文,并结束本流程;否则,执行步骤709。
本步骤中,也预先设置查表次数最大值,并可以设置查表次数初值为0。
步骤709,根据表中的子节点地址CNOD查询下一个VLAN_HASH表项,之后返回执行步骤707。
步骤710,使用VLAN_HASH表项中的数据执行QinQ操作。结束本流程。
本步骤中,具体实现方式可参照图9所示流程。
在图7所示流程中,步骤710之前,可以进一步包括:对VLAN_HASH表项中的DBL_VLAN_EN值进行校验,检验这个值是否与VLAN表项中的值一致,如果一致,则执行步骤710;否则,提示配置错误,结束本流程。
在上述图7所示步骤704中,使用VLAN表项中的数据执行QinQ操作的流程如图8所示,图8为图7所示流程中使用VLAN表项中的数据执行QinQ操作的流程图,该流程包括如下步骤:
步骤801,判断VLAN表项中VLAN_ACTION的类型,如果VLAN_ACTION为PUSH,则执行步骤802;如果VLAN_ACTION为POP,则执行步骤808;如果VLAN_ACTION为SWAP,则执行步骤809;否则,结束本流程。
步骤802,从VLAN表项中读取NEW_VLAN的值作为新VLAN Tag的VLAN ID。
步骤803,判断VLAN表中PRI_CHANGE的值,如果该值为1,执行步骤804;否则,执行步骤805。
步骤804,从VLAN表中读取N_PRI的值作为新VLAN Tag的优先级,然后执行步骤806。
步骤805,取出原VLAN Tag的优先级作为新VLAN Tag的优先级,然后执行步骤806。
步骤806,从FPGA寄存器中读取TPID值,将所读取的TPID值作为新VLAN Tag的TPID值。
步骤807,根据获取的新VLAN Tag的VLAN ID、优先级以及TPID完成新VLAN Tag的添加。结束本流程。
步骤808,去掉所封装的外层VLAN Tag,还原成普通报文。结束本流程。
步骤809,从VLAN表项中读取NEW_VLAN的值替换报文外层VLANTag的VLAN ID。
步骤810,判断VLAN表中PRI_CHANGE的值,如果该值为1,执行步骤811;否则,执行步骤812。
步骤811,从VLAN表中读取N_PRI的值替换外层VLAN Tag的优先级。
步骤812,根据所获取的NEW_VLAN以及优先级,完成QinQ封装的变换,然后结束本流程。
在上述图7所示步骤710中,使用VLAN_HASH表项中的数据执行QinQ操作的流程如图9所示,图9为图7所示流程中使用VLAN_HASH表项中的数据执行QinQ操作的流程图,该流程包括如下步骤:
步骤901,判断VLAN_HASH表项中VLAN_ACTION的类型,如果VLAN_ACTION为PUSH,则执行步骤902;如果VLAN_ACTION为POP,则执行步骤905;如果VLAN_ACTION为SWAP,则执行步骤906;否则,结束本流程。
步骤902,从VLAN_HASH的表项中读取N_SPVLAN作为新VLAN Tag的VLAN ID,读取N_PRI作为新VLAN Tag的优先级。
步骤903,从FPGA寄存器中读取TPID值,将所读取的TPID值作为新VLAN Tag的TPID值。
步骤904,根据获取的新VLAN Tag的VLAN ID、优先级以及TPID完成新VLAN Tag的添加。结束本流程。
步骤905,去掉所封装的外层VLAN Tag,还原成普通报文。结束本流程。
步骤906,从VLAN_HASH的表项中读取N_SPVLAN替换外层VLANTag的VLAN ID,读取N_CVLAN替换内层VLAN Tag的VLAN ID,读取N_PRI替换外层VLAN Tag的优先级。
步骤907,利用获取的N_SPVLAN、N_CVLAN以及N_PRI完成QinQ封装的变换,结束本流程。
在图8和图9所示流程中,步骤801以及步骤901之前,均可以进一步包括:判断VLAN表中的VALID值,如果VALID值为有效,则对该报文执行步骤801或步骤901;否则,将该报文丢弃。当VALID值为有效时,还可以再对VLAN表中的TO_CPU值进行判断,如果TO_CPU值为上报CPU,则将该报文上送至CPU进行监控;否则,正常处理,执行步骤801或901。
方法实施例二
本实施例中,也采用FPGA芯片来实现灵活QinQ,但只设置有灵活QinQ配置策略所需数据,并将灵活QinQ配置策略所需数据写入一个表中,因为灵活QinQ配置策略中包括普通QinQ配置策略,所以此时也可理解为将普通QinQ配置策略所需数据和灵活QinQ配置策略所需数据存储在芯片中的一个表中。
具体实现时,根据报文的内、外层VLAN ID以及优先级从灵活QinQ配置策略数据中荻取所需数据,使用所获取的数据对报文进行QinQ操作。
其中,根据报文的内、外层VLAN ID以及优先级从灵活QinQ配置策略数据中获取所需数据的方法至少有两种,一种为:直接将内、外层VLANID以及优先级的各种组合作为索引从灵活QinQ配置策略数据中查询所需数据。另一种为:先对内、外层VLAN ID以及优先级进行哈希计算,将哈希计算结果作为索引从灵活QinQ配置策略数据中查询所需数据。
下面分别对采用上述两种实现方法实现灵活QinQ的方法进行详细描述。
采用实现方式一:直接将内、外层VLAN ID以及优先级的各种组合作为索引。
本实现方式中,将存储灵活QinQ配置策略所需数据的表记为灵活配置表,并将灵活配置表存储在FPGA芯片的存储器中,并同方法实施例一中一样,仍然假设存储器的每个存储单元为32比特,并且存储单元之间是通过地址查询的,每张表都有一个基础地址,即起始地址。灵活配置表也包括很多表项,表项中各参数的取值决定了对报文进行的具体QinQ操作,不同表项中各参数的取值不同。
参见图10,图10为本发明方法实施例二中灵活配置表中一个表项的结构示意图。如图10所示,该表项包含两个存储单元,即图中起始位置为0和1的二行。该灵活配置表项包括:Primary、新优先级(N_PRI)、新外层VLAN ID(N_SPVLAN)、新内层VLAN ID(N_CVLAN)以及掩码(MASK)。其中Primary包括:报文标志(VALID)、操作类型(VLAN_ACTION)、上送CPU标志(TO_CPU)。各部分的具体含义及内容如表四所示:
Figure C20061013802300311
表四
基于表四的灵活配置表的索引值为内、外层VLAN ID以及优先级的线性组合,根据该线性组合值以及基础地址,找到灵活配置表的对应表项。因为采用线性索引,因此该表便会有4096×4096×8个表项,尺寸较大。但是这种实现时,表的结构简单,实现容易。因此具体实现时,也是可以采用的。
参见图11,图11为本发明方法实施例二中采用实现方式一的实现灵活QinQ的方法流程图。该流程包括如下步骤:
步骤1101,用户端口接收到报文。
步骤1102,根据报文的内、外层VLAN ID及优先级的线性组合查询灵活配置表。
本步骤中,将报文的内、外层VLAN ID及优先级的线性组合作为索引,查询灵活配置表,找到相应的表项。
步骤1103,判断所找到的灵活配置表项中VLAN_ACTION的类型,如果VLAN_ACTION为PUSH,则执行步骤1104;如果VLAN_ACTION为POP,则执行步骤1110;如果VLAN_ACTION为SWAP,则执行步骤1111;否则,结束本流程。
步骤1104,读取N_SPVLAN作为新VLAN Tag的VLAN ID。
步骤1105,判断MASK的BIT[31]的取值,如果为1,则执行步骤1106;否则,执行步骤1107。
本步骤中,目的是判断优先级是否需要变更,因为在表四中用标志位BIT[31]来表示这个情况,所以本实施例的步骤1105需要判断BIT[31]的取值,具体实现时,可根据实际情况设置表示优先级相关情况的标志。
步骤1106,读取N_PRI作为新VLAN Tag的优先级,然后执行步骤1108。
步骤1107,取出原VLAN Tag中的优先级作为新VLAN Tag的优先级。
步骤1108,从寄存器中读取TPID,作为新VLAN Tag的TPID。
步骤1109,根据获取的新VLAN Tag的VLAN ID、优先级以及TPID完成新VLAN Tag的添加。结束本流程。
步骤1110,去掉所封装的外层VLAN Tag,还原成普通报文。结束本流程。
步骤1111,根据MASK的取值获取变换QinQ封装所需数据。
本实施例的步骤1111中,具体包括:判断MASK中每一位的取值,包括:BIT[31]、BIT[30]以及BIT[29]的值。当BIT[31]为1时,则读取N_PRI替换外层VLAN Tag的优先级,否则保留原来的优先级;当BIT[30]为1时,则读取N_SPVLAN替换外层VLAN Tag的VLAN ID,否则保留原来的外层VLAN ID;当BIT[29]为1时,则读取N_CVLAN替换内层VLAN Tag的VLAN ID,否则保留内层的VLAN ID。
步骤1112,根据获取的变换QinQ封装所需的数据,完成QinQ封装的变换。结束本流程。
图11所示流程中,也可以在步骤1102和步骤1103之间进一步包括:判断VLAN ID位是否有效,如果有效,则可继续判断TO_CPU位是否有效,或者执行步骤1103;如果无效,则结束操作。
在判断TO_CPU位是否有效时,若判断TO_CPU位有效,则上报CPU;若判断TO_CPU位无效,则执行步骤1103。
至此,采用实现方式一的方法流程描述完毕。
采用实现方式二:先对内、外层VLAN ID以及优先级进行哈希计算,将哈希计算结果作为索引。
本实现方式中,将存储灵活QinQ配置策略所需数据的表记为灵活配置哈希表,并同样将灵活配置哈希表存储在FPGA芯片的存储器中。
参见图12,图12为本发明方法实施例二中灵活配置哈希表中一个表项的结构示意图。如图12所示,该表项包含三个存储单元,即图中起始位置为0、1和2的三行。该灵活配置哈希表项包括:Primary、新优先级(N_PRI)、新外层VLAN ID(N_SPVLAN)、新内层VLAN ID(N_CVLAN)、掩码(MASK)、链表头(H)、链表尾(T)、链表父节点地址(PNOD)、原内层VLAN ID(CVLAN)、链表子节点地址(CNOD)、原优先级(PRI)以及原外层VLAN ID(SPVLAN)。其中Primary包括:报文标志(VALID)、操作类型(VLAN_ACTION)、上送CPU标志(TO_CPU)。各部分的具体含义及内容如表五所示:
Figure C20061013802300341
表五
基于表五的灵活配置哈希表的索引值为根据内、外层VLAN ID以及优先级进行哈希计算的哈希结果值。其中对于所接收的报文没有的项,如外层VLAN ID等,则没有的项用全零代替,之后再进行哈希计算,并且计算方法也可以采用标准的循环冗余校验(CRC32)算法,且也可以截取得到的低12位作为索引值。实际应用中,哈希计算也可以采用其它现有算法。
对于哈希计算,同样会存在产生相同结果的情况,因为同样受配置策略等因素的影响,因此使用灵活配置哈希表实现灵活QinQ操作时,也需要有校验过程。
参见图13,图13为本发明方法实施例二中采用实现方式二的实现灵活QinQ的方法流程图。该流程包括如下步骤:
步骤1301,用户端口接收到报文。
步骤1302,根据报文的内、外层VLAN ID及优先级的哈希计算结果查询灵活配置哈希表。
本步骤中,将报文的内、外层VLAN ID及优先级的哈希计算结果作为索引,查询灵活配置哈希表,找到相应的表项。
步骤1303,判断所找到的灵活配置表项中VLAN_ACTION的类型,如果VLAN_ACTION为PUSH,则执行步骤1305;如果VLAN_ACTION为POP,则执行步骤1304;如果VLAN_ACTION为SWAP,则执行步骤1312;否则,结束本流程。
步骤1304,去掉所封装的外层VLAN Tag,还原成普通报文。结束本流程。
步骤1305,根据报文VLAN ID及优先级找到匹配的表项。
本步骤中的操作可以与图5所示流程中的步骤508~步骤510相同。即判断报文的VLAN ID及优先级是否与表项匹配。如果是,则执行步骤1316;否则,将查表次数加1,并判断查表次数是否达到预设的查表次数的最大值,如果达到,则丢弃该报文,并结束本流程;否则,根据表中的子节点地址CNOD查询下一个VLAN_HASH表项,然后反复执行,直到找到匹配的表项。详细过程参见图5所示流程中的步骤508~步骤510。
本步骤中在判断报文的VLAN ID及优先级是否与表项匹配时,是将报文的外层VLAN ID与所找到的VLAN_HASH表项中的SPVLAN进行对比,将报文的外层优先级与VLAN_HASH表项中的PRI进行对比。
步骤1306~步骤1311与图11所示流程中步骤1104~步骤1109相同。
步骤1312,根据报文VLAN ID及优先级找到匹配的表项。
本步骤中的操作可以与图6所示流程中的步骤607~步骤609相同。即判断报文的VLAN ID及优先级是否与表项匹配。如果是,则执行步骤1316;否则,将查表次数加1,并判断查表次数是否达到预设的查表次数的最大值,如果达到,则丢弃该报文,并结束本流程;否则,根据表中的子节点地址CNOD查询下一个VLAN_HASH表项,然后反复执行,直到找到匹配的表项。详细过程参见图6所示流程中的步骤607~步骤609。
本步骤中在判断报文的VLAN ID及优先级是否与表项匹配时,是将报文的外层VLAN ID与所找到的VLAN_HASH表项中的SPVLAN进行对比,将报文的内层VLAN ID与VLAN_HASH表项中CVLAN进行对比,将报文的外层优先级与VLAN_HASH表项中的PRI进行对比。
步骤1313~步骤1314与图11所示流程中步骤1111~步骤1112相同。
以上对本发明中实现灵活QinQ的方法进行了详细描述,下面再对本发明中基于上述方法的设备进行详细描述。
参见图14,图14为本发明实施例中实现灵活QinQ的设备的结构示意图。如图14所示,该设备包括:中央处理器(CPU)、至少一个灵活QinQ接口板、二层交换芯片、普通低速接口板以及普通高速接口板。其中,灵活QinQ接口板包括至少一个端口,每个端口都采用FPGA实现,或者每个端口都采用ASIC,或者部分端口采用FPGA、部分端口采用ASIC等。
其中,CPU用于对灵活QinQ接口板和二层交换芯片进行配置,并配置存储在灵活QinQ接口板中的第一表,即VLAN表、第二表,即VLAN_HASH表中相应参数以及寄存器中的TPID。
普通低速接口板用于接收来自用户网络的普通报文,将接收的报文传送给二层交换芯片;并接收来自二层交换芯片转发的去掉外层VLAN Tag的VALN报文,发送给用户网络。
二层交换芯片用于接收来自普通低速接口板的普通报文,根据该报文的外层VLAN Tag和MAC地址,将报文转发给灵活QinQ接口板;并接收来自灵活QinQ接口板的去QinQ封装后的报文,根据外层VLAN Tag和MAC地址,将报文转发给普通低速接口板,接收来自灵活QinQ接口板的变换QinQ封装后的报文,根据外层VLAN Tag和MAC地址,将报文转发给普通高速接口板或其它的灵活QinQ接口板,或回送给该灵活QinQ接口板的其它端口。
普通高速接口板用于接收来自二层交换芯片转发的变换QinQ封装后的报文,将所接收的报文发送给骨干网络。
灵活QinQ接口板用于存储进行灵活QinQ操作所需数据以及TPID,其中,进行灵活QinQ操作所需数据,可以为实施例一中的第一表,即VLAN表中的数据和第二表,即VLAN_HASH表中的数据,也可以为实施例二中灵活配置表中的数据,或灵活配置哈希表中的数据。灵活QinQ接口板接收来自二层交换芯片的报文,根据报文的外层VLAN Tag的VLAN ID查询VLAN表,根据VLAN表中的配置策略类型DBL_VLAN_EN的值,使用进行灵活QinQ操作所需数据对报文进行添QinQ封装操作,并将执行完添QinQ封装操作的报文发送给骨干网络,或将接收的报文直接发送给骨干网络;接收来自骨干网络的报文,根据报文的外层VLAN Tag的VLAN ID查询VLAN表,根据VLAN表中DBL_VLAN_EN的值,使用进行灵活QinQ操作所需数据对报文进行去QinQ封装或变换QinQ封装的操作,并将执行完去QinQ封装以及变换QinQ封装的报文发送给二层交换芯片。
其中,灵活QinQ接口板的每个端口都可以采用FPGA来实现,即每个端口上都使用FPGA存储进行灵活QinQ操作所需数据以及TPID。并且存储TPID的寄存器可以设置2个字节的长度,因此TPID可以有216个值,用户可根据实际情况进行配置;或者灵活QinQ接口板的每个端口都可以采用ASIC来实现,即每个端口上都使用ASIC存储进行QinQ操作所需数据以及TPID;或者灵活QinQ接口板的部分端口采用FPGA实现,部分端口采用ASIC实现。
其中,灵活QinQ接口板在使用进行灵活QinQ操作所需数据进行灵活QinQ操作时,其实现方法可以与方法实施例一中描述的情况相同,也可以与方法实施二中描述的情况相同。
实际应用中,可以没有普通高速接口板,根据具体情况决定是否使用高速接口板。而且CPU只是在初始配置时使用,对灵活QinQ接口板及二层交换芯片配置好后,可以无需CPU参与灵活QinQ的实现过程。
本设备中的第一表和第二表的设置及内容可以同上述方法中VLAN表和VLAN_HASH表,在灵活QinQ接口板中进行QinQ操作的过程也可以同上述方法中介绍的各种实现方式。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (20)

1、一种实现灵活QinQ的方法,其特征在于,预先在芯片中设置灵活QinQ配置策略所需数据,该方法还包括:
A、接收报文,根据所接收报文的内、外层虚拟局域网标识VLAN ID以及优先级从灵活QinQ配置策略所需数据中进行查询;通过查询从灵活QinQ配置策略数据中获取所需数据;
B、使用所获取的数据对报文进行QinQ操作。
2、如权利要求1所述的方法,其特征在于,预先在芯片中还设置普通QinQ配置策略所需数据;则步骤A中在接收到报文后,进一步包括:
根据所接收报文的外层VLAN ID从普通QinQ配置策略所需数据中获取配置策略类型;
根据获取的配置策略类型,确定使用普通QinQ配置策略所需数据或灵活QinQ配置策略所需数据;
若确定使用普通QinQ配置策略所需数据,则从普通QinQ配置策略数据中获取所需数据;
若确定使用灵活QinQ配置策略所需数据,则执行所述根据所接收报文的内、外层VLAN ID以及优先级从灵活QinQ配置策略数据中进行查询的操作。
3、如权利要求1或2所述的方法,其特征在于,预先在芯片中设置标签协议标识TPID,并且该TPID由用户根据需要进行配置,供进行QinQ操作时使用。
4、如权利要求2所述的方法,其特征在于,所述确定使用的数据的方法为:若所述配置策略类型显示为选用普通QinQ配置策略所需数据,则确定使用普通QinQ配置策略所需数据;若配置策略类型显示为选用灵活QinQ配置策略所需数据,则确定使用灵活QinQ配置策略所需数据。
5、如权利要求2所述的方法,其特征在于,所述普通QinQ配置策略所需数据和灵活QinQ配置策略所需数据分别存储在第一表和第二表中。
6、如权利要求5所述的方法,其特征在于,若确定使用第二表中的数据,则所述根据所接收报文的内、外层VLAN ID以及优先级从灵活QinQ配置策略所需数据中进行查询,具体包括:
A1、根据所述第一表中的掩码取值对所接收报文的内、外层VLAN ID以及优先级进行掩码,并对掩码结果进行哈希计算,利用哈希计算结果查询第二表,得到第二表中与哈希计算结果对应的当前表项;
A2、判断当前表项中的VLAN ID和优先级是否分别与报文的VLAN ID和优先级一致,如果一致,则从当前表项中执行所述获取所需数据的操作,结束;否则,执行步骤A3;
A3、利用当前表项中的链表子节点地址查询第二表中的下一个表项,之后返回执行步骤A2。
7、如权利要求5所述的方法,其特征在于,所述根据获取的配置策略类型,确定使用普通QinQ配置策略所需数据或灵活QinQ配置策略所需数据之前进一步包括:根据所述第一表中的操作类型的值,确定QinQ的操作类型。
8、如权利要求5所述的方法,其特征在于,所述获取所需数据之前,进一步包括:从所确定的数据中获取操作类型的值,根据所获取的操作类型的值,确定QinQ的操作类型。
9、如权利要求7或8所述的方法,其特征在于,所述确定QinQ的操作类型为添QinQ封装操作;
若确定从第一表中获取所需数据,则所述获取所需数据具体包括:
B1、从所述第一表的表项中读取新VLAN ID的值作为新虚拟局域网标签VLAN Tag的VLAN ID;
B2、判断第一表的表项中的优先级类型,如果优先级类型为更换优先级,执行步骤B3;否则,执行步骤B4;
B3、从第一表的表项中读取新优先级的值作为新VLAN Tag的优先级,然后执行步骤B;
B4、取出原VLAN Tag的优先级作为新VLAN Tag的优先级;
则所述步骤B为:利用新VLAN ID、新优先级以及从芯片中获取的标签协议标识TPID完成添QinQ封装操作。
10、如权利要求7或8所述的方法,其特征在于,所述确定QinQ的操作类型为添QinQ封装操作;
若确定从第二表中获取所需数据,则所述获取所需数据具体包括:
C1、从所述第二表的表项中读取新外层VLAN ID的值作为新VLAN Tag的VLAN ID,读取新优先级的值作为新VLAN Tag的优先级;
则步骤B具体为:利用新VLAN ID、新优先级以及从芯片中获取的标签协议标识完成添QinQ封装操作。
11、如权利要求7或8所述的方法,其特征在于,所述确定QinQ的操作类型为去QinQ封装操作;
该方法还包括:将所述报文的外层VLAN Tag去掉,还原成普通报文。
12、如权利要求7或8所述的方法,其特征在于,所述确定QinQ的操作类型为变换QinQ封装操作;
若确定从第一表中获取所需数据,则所述获取所需数据具体包括:
D1、从所述第一表的表项中读取新VLAN ID的值替换报文外层VLANTag的VLAN ID;
D2、判断表项中的优先级类型,如果优先级类型为更换优先级,执行步骤D3;否则,执行步骤B;
D3、从表项中读取新优先级的值替换外层VLAN Tag的优先级;
则所述步骤B为:利用新VLAN ID、新优先级完成变换QinQ封装操作。
13、如权利要求7或8所述的方法,其特征在于,所述确定QinQ的操作类型为变换QinQ封装操作;
若确定从第二表中获取所需数据,则所述获取所需数据具体包括:
从所述第二表的表项中读取新外层VLAN ID的值替换外层VLAN Tag的VLAN ID,读取新内层VLAN ID的值替换内层VLAN Tag的VLAN ID,读取新优先级的值替换外层VLAN Tag的优先级;
则所述步骤B为:利用新外层VLAN ID、新内层VLAN ID以及新优先级完成变换QinQ封装操作。
14、如权利要求1所述的方法,其特征在于,所述根据所接收报文的内、外层VLAN ID以及优先级从灵活QinQ配置策略所需数据中进行查询为:将内、外层VLAN ID以及优先级的线性组合作为索引从灵活QinQ配置策略所需数据中进行查询;或将内、外层VLAN ID以及优先级进行哈希计算的结果作为索引从灵活QinQ配置策略所需数据中进行查询。
15、如权利要求14所述的方法,其特征在于,所述从灵活QinQ配置策略数据中获取所需数据之前进一步包括:从灵活QinQ配置策略数据获取QinQ操作类型,根据所确定的QinQ操作类型,获取所需数据。
16、如权利要求15所述的方法,其特征在于,所述确定的QinQ操作类型为:添QinQ封装操作,则所述获取所需数据具体包括:
E1、从所述灵活QinQ配置策略数据读取新VLAN ID的值作为新VLANTag的VLAN ID;
E2、判断灵活QinQ配置策略数据中的优先级类型,如果优先级类型为更换优先级,执行步骤E3;否则,执行步骤E4;
E3、从灵活QinQ配置策略数据中读取新优先级的值作为新VLAN Tag的优先级,然后执行步骤B;
E4、取出原VLAN Tag的优先级作为新VLAN Tag的优先级;
则所述步骤B为:利用新VLAN ID、新优先级以及从芯片中获取的标签协议标识TPID完成添QinQ封装操作。
17、如权利要求15所述的方法,其特征在于,所述确定的QinQ操作类型为:变换QinQ封装操作,则所述获取所需数据具体包括:
根据灵活QinQ配置策略数据中掩码的类型,获取变换QinQ封装所需的数据;
则步骤B具体为:根据所获取的数据完成变换QinQ封装操作。
18、一种实现灵活QinQ的设备,其特征在于,该设备包括:中央处理器CPU、至少一个灵活QinQ接口板、二层交换芯片、普通低速接口板,其中,灵活QinQ接口板包括至少一个端口,
CPU,对灵活QinQ接口板的每个端口和二层交换芯片进行配置,并对存储在灵活QinQ接口板每个端口中的进行灵活QinQ操作所需数据进行配置;
普通低速接口板,接收来自用户网络的普通报文,将接收的报文传送给二层交换芯片;接收来自二层交换芯片转发的去掉外层VLAN Tag的VALN报文,发送给用户网络;
二层交换芯片,接收来自普通低速接口板的普通报文,将该普通报文转发给灵活QinQ接口板;接收来自灵活QinQ接口板的去QinQ封装后的报文,将报文转发给普通低速接口板;接收来自灵活QinQ接口板的变换QinQ封装后的报文,将报文转发给其它灵活QinQ接口板,或转发给该灵活QinQ接口板的其它端口;
灵活QinQ接口板的每个端口接收来自二层交换芯片的报文,使用进行灵活QinQ操作所需数据对报文进行添QinQ封装操作,并将添QinQ封装后的报文发送给骨干网络,或将接收到的报文直接发送给骨干网络;接收来自骨干网络的报文,使用进行灵活QinQ操作所需数据对报文进行去QinQ封装或变换QinQ封装操作,将操作后的报文发送给二层交换芯片;
所述进行灵活QinQ操作所需数据存储在灵活QinQ接口板的每个端口中。
19、如权利要求18所述的设备,其特征在于,该设备进一步包括:普通高速接口板,接收来自所述二层交换芯片转发的变换QinQ封装后的报文,将所接收的报文发送给骨干网络;
所述二层交换芯片进一步用于:接收来自灵活QinQ接口板的变换QinQ封装后的报文,将报文转发给普通高速接口板。
20、如权利要求18或19所述的设备,其特征在于,所述灵活QinQ接口板的每个端口都采用可编程逻辑门阵列FPGA实现,或都采用专用集成电路ASIC实现,或灵活QinQ接口板的部分端口采用FPGA实现,部分端口采用ASIC实现。
CNB2006101380234A 2006-11-02 2006-11-02 一种实现灵活QinQ的方法及设备 Expired - Fee Related CN100459587C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006101380234A CN100459587C (zh) 2006-11-02 2006-11-02 一种实现灵活QinQ的方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006101380234A CN100459587C (zh) 2006-11-02 2006-11-02 一种实现灵活QinQ的方法及设备

Publications (2)

Publication Number Publication Date
CN1960336A CN1960336A (zh) 2007-05-09
CN100459587C true CN100459587C (zh) 2009-02-04

Family

ID=38071833

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101380234A Expired - Fee Related CN100459587C (zh) 2006-11-02 2006-11-02 一种实现灵活QinQ的方法及设备

Country Status (1)

Country Link
CN (1) CN100459587C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120300785A1 (en) * 2010-02-10 2012-11-29 Zte Corporation Method and Device for Realizing Flexible QinQ

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100531101C (zh) * 2007-10-22 2009-08-19 华为技术有限公司 一种实现端到端的QinQ业务标签自动分配的方法和装置
CN101409639B (zh) * 2008-11-25 2011-01-05 杭州华三通信技术有限公司 QinQ配置方法和配置装置
CN101478415B (zh) * 2009-01-15 2012-07-04 腾讯科技(深圳)有限公司 互动信息传递方法及系统
CN101510855B (zh) * 2009-04-10 2011-06-15 华为技术有限公司 一种QinQ报文的处理方法和装置
CN101567854B (zh) * 2009-05-26 2011-06-29 武汉烽火网络有限责任公司 基于流分类的以太网数据帧vlan双层标签处理装置和方法
CN102143074B (zh) * 2011-03-25 2015-09-16 中兴通讯股份有限公司 网络负荷的分担方法、系统及网络处理器
CN112347166B (zh) * 2019-08-09 2023-01-31 烽火通信科技股份有限公司 一种提高接口表查找效率的方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003234750A (ja) * 2002-02-08 2003-08-22 Nippon Telegr & Teleph Corp <Ntt> タグ変換によるlan間の接続方法及びタグ変換装置
CN1499781A (zh) * 2002-11-05 2004-05-26 �ձ�������ʽ���� 第二层交换和对第二层帧扩展虚拟局域网标签的处理方法
CN1538682A (zh) * 2003-04-17 2004-10-20 刘军民 一种建立虚拟电路的方法
CN1838627A (zh) * 2005-03-22 2006-09-27 杭州华为三康技术有限公司 一种实现QinQ接入的方法
EP1713197A1 (en) * 2004-02-07 2006-10-18 Huawei Technologies Co., Ltd. A method for implementing the virtual leased line

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003234750A (ja) * 2002-02-08 2003-08-22 Nippon Telegr & Teleph Corp <Ntt> タグ変換によるlan間の接続方法及びタグ変換装置
CN1499781A (zh) * 2002-11-05 2004-05-26 �ձ�������ʽ���� 第二层交换和对第二层帧扩展虚拟局域网标签的处理方法
CN1538682A (zh) * 2003-04-17 2004-10-20 刘军民 一种建立虚拟电路的方法
EP1713197A1 (en) * 2004-02-07 2006-10-18 Huawei Technologies Co., Ltd. A method for implementing the virtual leased line
CN1838627A (zh) * 2005-03-22 2006-09-27 杭州华为三康技术有限公司 一种实现QinQ接入的方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120300785A1 (en) * 2010-02-10 2012-11-29 Zte Corporation Method and Device for Realizing Flexible QinQ
US9166819B2 (en) * 2010-02-10 2015-10-20 Zte Corporation Method and device for realizing flexible QinQ

Also Published As

Publication number Publication date
CN1960336A (zh) 2007-05-09

Similar Documents

Publication Publication Date Title
CN100459587C (zh) 一种实现灵活QinQ的方法及设备
US5490258A (en) Associative memory for very large key spaces
EP1468528B1 (en) Method and apparatus for priority-based load balancing for use in an extended local area network
US5860136A (en) Method and apparatus for use of associated memory with large key spaces
AU716133B2 (en) Hash-based translation method and apparatus with multiple level collision resolution
JP7144539B2 (ja) ネットワークトポロジ生成方法および装置
CN102123091B (zh) 多链接透明传输互连转发表生成方法、装置及网络设备
US20090141727A1 (en) Method and System for Infiniband Over Ethernet by Mapping an Ethernet Media Access Control (MAC) Address to an Infiniband Local Identifier (LID)
US11516322B2 (en) Data transmission method and apparatus
US20090141734A1 (en) Method and system for a converged infiniband over ethernet network
CN101510855B (zh) 一种QinQ报文的处理方法和装置
CN101005435A (zh) 扩充虚拟局域网的供应商网络及扩充该局域网空间的方法
CN111147372B (zh) 下行报文发送、转发方法和装置
JP7247351B2 (ja) データ送信方法及び機器
US6819671B1 (en) Relay control circuit using hashing function algorithm
CN101902401A (zh) 一种搜索处理装置及网络系统
US6697380B1 (en) Multiple key lookup arrangement for a shared switching logic address table in a network switch
EP1232612B1 (en) Table lookup mechanism for address resolution in a packet network switch
US9166819B2 (en) Method and device for realizing flexible QinQ
EP2640016B1 (en) Tunnel multiplexing method for linear protection group and tail-node of tunnel
CN100463415C (zh) 一种实现双节点环dcc路由保护的方法及双节点环装置
CN100446508C (zh) 一种实现报文转发的装置及方法
CN109347734A (zh) 一种报文发送方法、装置、网络设备和计算机可读介质
CN113259244B (zh) 一种用于时间敏感网络的流量映射方法
CN104967564A (zh) 从vlan至trill网络的报文转发方法和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20180712

Address after: 511400 room 204-1, building 1, Guangdong Pharmaceutical University, No. 280 outer ring road, Panyu District, Guangzhou, Guangdong.

Patentee after: Guangdong Gao Xin Touchplus information Corp

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: Huawei Technologies Co., Ltd.

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090204

Termination date: 20181102

CF01 Termination of patent right due to non-payment of annual fee