交换机、生成硬件表项匹配域的方法及系统的制作方法

文档序号:7698874阅读:174来源:国知局

专利名称::交换机、生成硬件表项匹配域的方法及系统的制作方法
技术领域
:本发明涉及交换机技术,尤其涉及一种交换机、生成硬件表项匹配域的方法及系统。
背景技术
:交换机的硬件经常利用硬件表项中的掩码字段对输入数据进行匹配。如图1所示,输入数据A依次和硬件上的硬件表项1~硬件表项n进行匹配,若匹配成功,则执行该硬件表项对应的执行动作,后续即使有相同表项也不再匹配。硬件表项由匹配域和执行动作组成,而匹配域由掩码字段和数据字段组成。当输入数据A去和硬件表项1匹配时,输入数据A先和掩码字段ml作逻辑与的运算,得到A&ml=B,然后B与数据字段dl&掩码字段ml的结果相比较,如果相等,则表示匹配到,执行动作l;否则,表示未匹配到,继续与后续硬件表项进行匹配。对于匹配到的硬件表项,执行该硬件表项指定的动作,比如丢弃、添加服务商虛拟局域网(VirtualLocalAreaNetwork,VLAN)标识(ID)等等。交换机中利用硬件表项对输入数据的匹配可应用于VLAN堆叠(VLANStacking)即QinQ技术。QinQ技术中,网络服务提供商的商业用户对所支持的VirtualVLAN数及VLAN标识(VLANID,VID)经常会有特殊的需求。同一个服务商的用户所需要的VLAN范围可能重叠,并且不同用户通过服务商核心网络的交换通路可能混在一起。如果对每个用户限定一个VLAN范围将会限制用户的配置,并且VLAN使用数量很容易就会超出VLAN协议802.1Q定义的4096。QinQ技术通过双标签(Tag)来扩展VLAN的范围,即网络服务提供商可以指定VID范围,所有在该VID范围内的带TAG的报文都要再打上某个外层TAG,形成带两个TAG的报文。换句话说,服务商可以用一个服务商的VLAN来支持拥有多个VLAN的用户。用户自身的VLAN被保留起来,这样即使进入网络服务商的不同用户流的VLAN相同,也会在服务商的内部网络中被分开传输。由于VLAN的范围为0~4095,这样QinQ支持的VLAN总数量达到了4096x4096。QinQ技术中利用硬件表项对输入数据的匹配在带TAG的报文上打上外层TAG。例如,利用硬件表项匹配将带VID为1000-1999的报文都打上外层VIDl,即将VID为1000的报文通过与硬件表项匹配打上外层VIDl,将VID为1001的报文通过与硬件表项匹配打上外层VID1,……,将VID为1999的报文通过与硬件表项匹配打上外层VIDl。现有技术中,如果采用掩码为全1的匹配方式,硬件表项中的掩码字段和数据字段需要根据输入数据按从小到大(或从大到小)的顺序逐一生成。生成的硬件表项中的掩码字段与数据字段一~""对应。比如对于VID1000需要生成一条数据字段为OblllllOlOOO,和掩码字段Obllllllllll,依次类推,匹配vlanl000-1999需要生成1000条硬件表项。匹配时,输入数据与硬件表项一一对应匹配。如果将带VID为1000-1999的报文都打上外层VIDl,一共需要1000个硬件表项才能为每一个报文打上外层VIDl。因此,现有技术不利于节约交换机硬件资源以及提高硬件表项的利用率。如果釆用掩码字段部分为1的匹配方式,它只能匹配若干个孤立的或者一个特定范围的数据,比如数据字段为Obl000,掩码字段为OblOOl,那么它可以匹配的数据分别为8、10、12、14,也无法实现对任意范围数据的匹配。
发明内容本发明的目的在于提出一种交换机、生成硬件表项匹配域的方法及系统,以生成能够节约交换机硬件资源及提高硬件表项利用率的硬件表项的匹配域。本发明提供了一种生成硬件表项匹配域的方法,包括4妄收llr入it据的最大4直max和最小《直min;根据所述最大值max或最小值min获得所述输入数据的比特数,并利用所述最大值max和最小值min生成硬件表项中的掩码字段和数据字段第一步.根据所述最小值min得到n,其中,n为所述最小值min最多能整除2的n次方;第二步.计算temp=max-min+1;第三步.判断2"是否大于temp;若是,执行第四步;否则,执行第五步;第四步.计算n-n-l,执行所述第三步;第五步.将min和M[n]作为一组数据字段和掩码字段,其中,M[n]为与所述输入数据比特数相同,且从低至高的前n位为0的二进制数;第六步.计算min-min+2";第七步.判断min是否大于所述最大值max,若是,完成所述硬件表项中的掩码字段和数据字段生成;否则,执行所述第一步;将所述第五步中生成的数据字段和掩码字段依次设置到硬件表项。本发明还提供了一种生成硬件表项匹配域的系统,包括接收单元,用于接收输入数据的最大值max和最小值min;获取单元,用于根据所述最大值max或最小值min获得所述输入数据的比特数;生成单元,用于通过以下步骤生成硬件表项中的掩码字段和数据字段'第一步.根据所述最小值min得到n,其中,n为所述最小值min最多能整除2的n次方;第二步.计算temp=max-min+1;第三步.判断2"是否大于temp;若是,执行第四步;否则,执行第五步;第四步.计算n-n-l,执行所述第三步;第五步.将min和M[n]作为一组数据字段和掩码字段,其中,M[n]为与所述输入数据比特数相同,且从低至高的前n位为O的二进制数;第六步.计算min-min+2n;第七步.判断min是否大于所述最大值max,若是,完成所述硬件表项中的掩码字段和数据字段生成;否则,执行所述第一步;设置单元,用于所述生成单元生成的数据字段和掩码字段依次设置到硬件表项。本发明还提供了一种交换机,包括设置有利用上述生成硬件表项匹配域的方法生成的匹配域的硬件表项。上述技术方案中,通过获取输入数据的比特数以及输入数据的最大值和最小值,并利用输入数据的最大值和最小值得到多组掩码字段和数据字段,生成硬件表项的匹配域。设置有该匹配域的硬件表项中,掩码字段根据低位0的个数具有多种匹配范围的,且每种匹配范围根据生成的掩码字段与数据字段的组合能够随意设定,从而使得交换机能够以尽可能少的硬件表项匹配尽可能大的数据范围,大大节约了交换机的硬件资源,提高了硬件表项的利用率。下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。图1为现有技术中数据匹配的示意图2为本发明生成硬件表项匹配域的方法实施例一的流程图;图3为本发明生成硬件表项匹配域的方法实施例二的流程图;图4为本发明生成硬件表项匹配域的方法实施例中硬件匹配的示意图5为本发明生成硬件表项匹配域的系统实施例的结构示意图。具体实施例方式图2为本发明生成硬件表项匹配域的方法实施例一的流程图。生成过程包括步骤201.接收输入数据的最大值max及最小值min,得到输入数据的范围[min,max],以生成硬件表项;并获取输入数据的比特数;由于比特数为输入数据的显式特征,因此可根据输入数据的最大值max或最小值min获取输入数据的比特数;步骤202.判断min是否大于max;若是,执行步骤209;否则,执行步骤203;步骤203.利用min得到n,n为min最多能整除2的n次方;步骤204.计算temp=max-min+l;步骤205.判断2"是否大于temp;若是,执行步骤208;否则,执行步骤206;步骤206.将min作为一个硬件表项的数据字段,将从低至高的前n位为0其余位为1的二进制数作为该硬件表项的掩码字段;步骤207.计算min-min+211,生成新的min,执行步骤202;步骤208.计算n-n-l,生成新的n,执行步骤205;步骤209.将步骤206中得到的多组数据字段及掩码字段依次设置到硬件上,完成石更件表项匹配域的生成。之后,就可以对[min,max]范围内的输入数据进行匹配了。其中,步骤202也可在步骤207后执行,即在步骤201之后直接执行步骤203。本实施例通过循环执行步骤202~步骤208,每次执行步骤206生成一个硬件表项中的数据字段及掩码字段,直至min大于max,完成硬件表项的匹配域的生成。生成的硬件表项匹配域中的掩码字段及数据字段如表1所示。表1通过上述方法实施例得到的硬件表项中的掩码字段与数据字段序号掩码字段(n比特二进制数表示)数据字段(十进制数表示)可匹配的ilr入数据范围(十进制数表示)1M=0bll............IllX(X可为任何值)[X,X]2M[l]=0bll............110X(X>=2)[X,X+l]3M[2]=0bll............100X(X>=4)[X,X+3]……■■■咖*NM[n-l]-OblO.........000X(X>=(2的n-l次方))[X,X+(2的n-l次方)-l]掩码字段及后续的数据表^L中,前缀"Ob"表示二进制数。如表l所示,序号1中,如果二进制掩码字段使用全1时,只能匹配唯——个数据;序号2中,二进制掩码字段的最低一位为0,可匹配两个数据,例如二进制掩码字段为110时,既可以匹配二进制输入数据110,也可以匹配二进制输入数据111,因为这两个输入数据经过和二进制掩码字段110的与运算后,都可以得到与硬件表项中对应的数据字段相同的二进制数据110。从表l可以看出,如果二进制掩码字段尾数中0越多,可匹配的输入数据也就越多。利用该原理,本发明实施例通过掩码字段达到节约表项的目的。图3为本发明生成硬件表项匹配域的方法实施例二的流程图。本实施例以硬件中匹配12比特的数据VLANID(VID)为例来说明本发明实施例生成硬件表项匹配域的方法。生成过程包括步骤301.接收输入数据VID的最大值vid—max及最小值vid—min,得到输入数据的范围[vid—min,vid—max],以生成硬件表项;并根据输入数据的最大值vid—max或最小值vid一min获取输入数据的比特数12;9步骤302.判断vid—min是否大于vid—max;若是,执行步骤309;否则,执行步骤303;步骤303.利用vid—min得到n,n为vid_min最多能整除2的n次方;步骤304.计算vid_temp=vid—max-vid一min+l;步骤305.判断2的n次方是否大于vid—temp;若是,执行步骤308;否则,执行步骤306;步骤306.将vid一min作为一个硬件表项的数据字段,将从低至高的前n位为0其余位为1的二进制数作为该硬件表项的掩码字段;即得到一组VLAN—ID的和VLAN—ID—MASK的值vid—min和VM[n];步骤307.计算vid—min=vid_min+(2n),生成新的vid—min,执行步骤302;步骤308.计算11=11-1,生成新的n,执行步骤305;步骤309.将步骤306中得到的多组数据字段及掩码字段依次设置到硬件上,完成硬件表项匹配域的生成。之后,就能够对[vid—min,vid—max]范围内的输入数据进行匹配了。生成的硬件表项的掩码字段、数据字段及可匹配的数据范围如表2所示。表2方法实施例二生成的掩码字段及数据字段VLAN—ID一MASK可匹配VID范围(十进制)VLAN一IDVM[O]=Obllll11111111[VID,VID]VID(可以为任何值)VM[l]-Ob111111111110[VID,VID+1]VID(>=2)VM[2]-Ob111111111100[VID,VID+3]VID(>=4)VM[3]-Ob111111111000[VID,VID+7]VID(〉=8)VM[4]-Ob111111110000[VID,VID+15]VID(>=16)VM[5]-Ob111111100000[VID,VID+31]VID(>=32)VM[6]-Ob111111000000[VID,VID+63]VID(〉=64)VM[7]-Ob111110000000[VID,VID+127]VID(〉=128)VM[8]=0b111100000000[VID,VID+255]VID(>=256)VM[9]-0b111000000000[VID,VID+511]VID(〉=512)10VM[IO]=Ob110000000000[VID,VID+1023]VID(>=1024)VM[ll]=Ob100000000000[VID,VID+2047]VID(>=2048)由于VID是12比特的数据,因此硬件表项中包含12比特的数据字段即VLAN—ID字段以及12比特的掩码字段即VLANJD—MASK字段。由表2可以看出,通过本实施例中的方法生成的石更件表项的匹配域中,VLANJD一MASK被划分为12种,并且可根据需要匹配的VID的范围,设置多条硬件表项的VLAN—ID和VLAN—ID—MASK的值,从而达到匹配的目的。比如VM[10]中可以匹配的VID范围是1024个,可以匹配的最小的VID大于等于1024。当选择数据字段为1024时,可匹配的输入数据范围为1024~2047(1024+1023);当选择数据字段为2048,匹配的范围为2048-3071(2048+1023)。因此,对相同的掩码字段,如果对应的数据字段不一样,即采用的匹配值不一样,则最终匹配的范围也不一样,从而能够利用较少的硬件表项来匹配连续范围内VID的目的。匹配输入的VID时,假设某条硬件表项中VLAN—ID=A,VLAN—ID—MASK=B,那么当输入数据VID=C时,硬件会去判断C&B的值是否等于A,如果不相等表示不匹配,如图4所示。将表2中的多组掩码字段及数据字段值设置到多个硬件表项上去,硬件对于12比特VID范围内的任何VID都能够匹配到。例如,将输入数据VID范围是1~4093的才艮文全部打上服务商VID1,通过上述方法实施例二的操作得到如表3所示的多组掩码字段、对应的数据字段及可匹配的数据。表3序VLAN一ID一MASKVLAN-ID匹配到的执行动作号(十进制)数据1Obllll1111111111打上服务商VID120b11111111111022-3打上服务商VID13Ob11111111110044-7打上服务商VID14Ob11111111100088-15打上服务商VID1<table>tableseeoriginaldocumentpage12</column></row><table>从表3可以看出,通过上述方法实施例二得到的不同掩码字段和数据字段组合成21条硬件表项的匹配域,就能够匹配到1-4093的范围,大大地节省了硬件资源,而且利用该方法,能够实现任意VID范围的匹配。例如,匹配VID为3765~3770的输入数据,利用上述方法实施例生成硬件表项的匹配域。得到两组掩码字段和数据字段,分别为(M[2],3765)与(M[l],3769)。具体如表4所示。表4<table>tableseeoriginaldocumentpage12</column></row><table>将上述两组掩码字段和数据字段依次设置在硬件表项的匹配域,生成两个硬件表项,通过这两个硬件表项便能够实现对VID为3765~3770等6个输入数据的匹配,大大节约了交换机的硬件资源。图5为本发明生成硬件表项匹配域的系统实施例的结构示意图。系统包括接收单元51、获取单元52、生成单元53及i殳置单元54。接收单元51用于接收输入数据的最大值max和最小值min,详见上述步骤201或步骤301。获取单元52根据接收单元51接收的最大值max或最小值min获取输入数据的比特数。生成单元53用于生成硬件表项中的掩码字段和数据字段,详见上述方法实施例中的步骤202~步骤209或步骤302~步骤309。设置单元54用于所述生成单元53生成的数据字段和掩码字段依次设置到硬件表项。生成硬件表项匹配域的系统还可进一步包括判断单元,用于判断所述最小值min是否大于最大值max。当判断单元判定最小值min大于最大值max时,系统终止操作;否则,即在所述最小值min小于等于所述max的情况下,生成单元具体执行继续根据min计算n,生成掩码字段和数据字段。当交换机中设置有上述方法实施例或利用上述系统实施例生成的匹配域的硬件表项时,能够用户较少的硬件表项匹配尽可能多的输入数据,大大节省交换机的硬件资源。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。权利要求1、一种生成硬件表项匹配域的方法,其特征在于,包括接收输入数据的最大值max和最小值min;根据所述最大值max或最小值min获得所述输入数据的比特数,并利用所述最大值max和最小值min生成硬件表项中的掩码字段和数据字段第一步.根据所述最小值min得到n,其中,n为所述最小值min最多能整除2的n次方;第二步.计算temp=max-min+1;第三步.判断2n是否大于temp;若是,执行第四步;否则,执行第五步;第四步.计算n=n-1,执行所述第三步;第五步.将min和M[n]作为一组数据字段和掩码字段,其中,M[n]为与所述输入数据比特数相同,且从低至高的前n位为0的二进制数;第六步.计算min=min+2n;第七步.判断min是否大于所述最大值max,若是,完成所述硬件表项中的掩码字段和数据字段生成;否则,执行所述第一步;将所述第五步中生成的数据字段和掩码字段依次设置到硬件表项。2、根据权利要求1所述的生成硬件表项匹配域的方法,其特征在于,所述第一步之前还包括判断所述最小值min是否大于所述max,在所述最小值min小于等于所述max的情况下,执行所述第一步。3、一种生成硬件表项匹配域的系统,其特征在于,包括接收单元,用于接收输入数据的最大值max和最小值min;获取单元,用于根据所述最大值max或最小值min获得所述输入数据的比特数;生成单元,用于通过以下步骤生成硬件表项中的掩码字段和数据字第一步.根据所述最小值min得到n,其中,n为所述最小值min最多能整除2的n次方;第二步.计算temp=max-min+1;第三步.判断2"是否大于temp;若是,执行第四步;否则,执行第五步;第四步.计算n-n-l,执行所述第三步;第五步.将min和M[n]作为一组数据字段和掩码字段,其中,M[n]为与所述输入数据比特数相同,且从低至高的前n位为0的二进制数;第六步.计算min=min+2n;第七步.判断min是否大于所述最大值max,若是,完成所述硬件表项中的掩码字段和数据字段生成;否则,执行所述第一步;设置单元,用于所述生成单元生成的数据字段和掩码字段依次设置到硬件表项。4、根据权利要求3所述的生成硬件表项匹配域的系统,其特征在于,还包括判断单元,用于判断所述最小值min是否大于所述最大值max;所述生成单元具体用于在所述最小值min小于等于所述最大值max的情况下,执行所述第一步。5、一种交换机,其特征在于,包括设置有利用上述权利要求1或2所述的生成硬件表项匹配域的方法生成的匹配域的硬件表项。全文摘要本发明涉及一种交换机、生成硬件表项匹配域的方法及系统,方法包括接收输入数据的最大值max和最小值min;根据最大值max或最小值min获得输入数据的比特数,并利用最大值max和最小值min生成硬件表项中的掩码字段和数据字段;将生成的数据字段和掩码字段依次设置到硬件表项。系统包括接收单元、获取单元、生成单元及设置单元,交换机包括设置有上述方法生成的匹配域的硬件表项。通过获取输入数据的比特数以及输入数据的最大值和最小值,并利用输入数据的最大值和最小值得到多组掩码字段和数据字段,生成匹配域,使得交换机能以尽可能少的硬件表项匹配尽可能大的数据范围,大大节约了交换机的硬件资源,提高了硬件表项的利用率。文档编号H04L12/56GK101488920SQ20091007844公开日2009年7月22日申请日期2009年2月23日优先权日2009年2月23日发明者黄米青申请人:北京星网锐捷网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1