支持多用户的高速报文分流方法

文档序号:7764885阅读:385来源:国知局
专利名称:支持多用户的高速报文分流方法
技术领域
本发明涉及骨干网络高速大容量分流设备的分流方法,尤其涉及支持多用户的高 速报文分流方法,可以应用于40G骨干网络的分流设备中。
背景技术
目前,我国运营商数据骨干线路和城域网的技术标准已经朝着40G及更高的速度 在发展,在以40Gbps极高的速率流动的数据中,是否潜伏着某些对国家安全、公共安全、网 络安全的威胁,是运营商和安全部门关心的一个问题。然而基于CPU的服务器处理能力的 提升远远达不到带宽提升的速度,IP报文内容分析设备的处理能力远远达不到40Gbps的 要求。将骨干网络上高速的报文转化为较低速率的报文,让低速的设备完成后续的分析处 理工作,是高速网络分流设备需要解决的问题。如图1所示,典型的网络分流设备由输入卡、交换网络和输出卡组成,输入卡和输 出卡又称为线卡。输入卡根据用户定义的过滤规则对报文进行过滤,并根据均衡分流算法 计算输出端口号,然后将报文通过交换网络转发给输出卡,输出卡完成输出功能。这种网络 分流设备只能工作在单用户模式,即整个分流设备只能有一套报文过滤规则,如果有多个 用户或部门要对同一流量做不同的处理,则只能通过使用多套设备同时工作来完成任务。 单用户模式下的输入卡只支持单个用户规则的报文过滤,如图5所示,输入卡单规则过滤 模块内部的五元组存储器即五元组TCAM (Ternary Content Addressable Memory,称为三 态内容寻址存储器)的数据单元只包含五元组信息。单用户模式下的输出卡只完成报文缓 冲和输出功能。在多用户组播分流的情况下,输入卡接收到的一个报文要对多个用户的过滤规则 进行匹配,根据匹配的结果将报文转发到每个用户指定的输出卡。在这种组播分流模式下, 分流设备在均衡分流的同时,需要解决将同一报文转发给多个输出卡的问题。传统的分流 设备存在一系列问题
首先,现有的报文分流策略大多数基于五元组对报文进行过滤,根据五元组产生的 Hash值(哈希值)进行分流,这种分流策略不能支持一块输入卡到多块输出卡的多用户模 式,更不能支持多块输入卡的报文同时分流到多块输出卡的多用户模式,基于这种分流策 略的分流设备只能提供给一个用户使用,这使得一个用户必须独占这样的分流设备。只能 通过多台这样的分流设备组合来支持多用户过滤模式,这无疑带来了设备管理上的难度, 增加了用户的成本。其次,部分分流设备通过在输入卡进行报文复制的策略支持多用户模式,即输入 卡对匹配多个用户过滤规则的报文进行复制,并通过交换网络,将报文复制到多块输出卡。 在接口速率较低的情况下,这种根据用户的需求在输入卡中进行报文复制的方式可以满足 多用户分流的需求。但是面向高速网络,最坏的情况下一个报文可能需要达到所有的输出 卡,复制后报文的数量将变成原来的数倍,这将大大增加原本就拥挤的交换网络的负担,对 分流设备的内部数据交换能力和存储器的带宽和时延都提出了极高的要求。从而加大了设
7备的复杂性和成本,降低了设备的可靠性。

发明内容
本发明要解决的技术问题是为支持多用户模式的高速大容量分流设备提供一种 高速、低延迟的数据报文从单块输入卡到多块输出卡的组播分流方法。为解决上述具体技术问题,技术方案包括以下步骤
第一步,构建由输入卡、交换卡和输出卡组成的两级交换结构。1. 1修改输入卡,使输入卡支持多用户模式。修改后的输入卡由多规则过滤模块、报文头部修改模块和报文分流模块组成。修 改步骤如下
1. 1. 1将输入卡中的单规则过滤模块(如Stratix EP2SGX130系列芯片)修改为多规则 过滤模块,方法是
1. 1. 1. 1修改输入卡中的五元组TCAM中的数据单元格式,每项数据单元的内容添加用户号。1.1.1.2在输入卡的多规则过滤模块中添加一个外部SRAM (Static Random Access Memory,静态随机访问存储器),该SRAM的每个存储单元包含三项内容对应五元组 数据单元的地址、输出卡号和输出端口号。1. 1. 1. 3修改五元组匹配过滤逻辑,使五元组匹配过滤逻辑与五元组TCAM和外部 STAM相连接,五元组匹配过滤逻辑根据报文的五元组数据和用户号来查找五元组TCAM,并 根据查找结果从SRAM中提取出输出卡号和输出端口号。1. 1. 1. 4在多规则过滤模块中添加S个匹配结果缓冲器(S表示分流设备支持的最 大用户数),S个匹配结果缓冲器与五元组匹配过滤逻辑和报文头部修改模块相连,用来缓 存每个用户过滤规则的匹配结果。1. 1. 2去掉输入卡中的报文复制模块,添加报文头部修改模块
报文头部修改模块与多规则过滤模块、报文分流模块相连。报文头部修改模块由输出 卡组信息缓冲器、输出卡号掩码缓冲器、报文缓冲器、新报文缓冲器、过滤结果提取逻辑和 报文头部修改逻辑组成。过滤结果提取逻辑与多规则过滤模块的S个匹配结果缓冲器相 连,过滤结果提取逻辑的输出连接输出卡组信息缓冲器、输出卡号掩码缓冲器;过滤结果提 取逻辑提取S个匹配结果缓冲器的匹配结果,形成输出卡组信息,并根据输出卡组信息计 算输出卡号掩码,分别传送给输出卡组信息缓冲器和输出卡号掩码缓冲器。报文头部修改 逻辑与输出卡组信息缓冲器、输出卡号掩码缓冲器、报文缓冲器和新报文缓冲器相连。报文 头部修改逻辑从报文缓冲器中提取原始报文,并在报文头部添加从输出卡组信息缓冲器和 输出卡号缓冲器读取的输出卡组信息和输出卡号掩码,并将新报文传送给新报文缓冲器。1.1.3
报文分流模块与报文头部修改模块的新报文缓冲器相连接,从新报文缓冲器中提取报 文,并进行均衡分流。报文分流模块有P (P为分流级数,表示输入带宽与输出带宽的比例, P为大于1的整数)个输出端口。1. 2采用交换卡代替交换网络。交换卡采用具备多端口报文复制功能的可编程交换芯片,要求带转发表(称为M0DP0RT_MAP表),如Broadcom公司的StrataXGS BCM56820系列交换芯片。要求交换卡内 部具备输入口到输出口的全连接关系,支持多输出堆叠技术(即具备识别报文头部携带的 输出卡号掩码的功能),并具备根据输出卡号掩码查找交换卡内部的M0DP0RT_MAP表将同一 报文在多个输出口上复制输出的功能。M0DP0RT_MAP表是交换卡内部一个A行*2B列(其中A表示交换卡的输入端口数 量,B为交换卡支持的最大输出卡数量,一般取8)的缓存区,M0DP0RT_MAP表中每一个元素 M0DP0RT_MAP[i] [j]称为bitmap值(i的取值为1到A的整数,j的取值为0到2B_1的整 数),其中每个bitmap是一个C位的二进制串(C为bitmap的位数,表示交换卡的输出端口 数量,交换卡的每个输出端口对应1位,C 一般取12)。元素M0DP0RT_MAP[i] [j]的值表示 从交换卡的第i个输入端口接收的报文,当报文头部携带的输出卡号掩码为j (输出卡号掩 码为该报文需要达到的多个输出卡的卡号掩码值)时,该交换卡需要输出该报文的输出端 口组合值,bitmap中每一位对应一个输出端口的输出标记。例如,bitmap的第k位为1,表 示需要将该报文转发到该交换卡的第k号输出端口。交换卡的块数根据输入卡和输出卡端口数量决定,具体表示如下
?J+ M
交换卡的块数=[ 输鄉鄉似其中□表示向上取整, 是指所有输入卡的输出端口的数量,
&有鵪 +豹翁入_ο 是指所有输出卡的输
入端口数量是指每块交换卡的总端口数量。1.3修改输出卡,使输出卡支持指定端口分流。修改后的输出卡由报文头部分析模块和报文指定端口输出模块组成。修改步骤如 下
1. 3. 1在输出卡中添加报文头部分析模块
报文头部分析模块由P个报文接收缓冲器、报文头部分析逻辑和输出端口缓冲器组 成,P个报文接收缓冲器接收来自交换卡的报文,报文头部分析逻辑连接P个报文接收缓冲 器和输出端口缓冲器。报文头部分析逻辑依次从每个报文接收缓冲器中提取报文,分析报 文头部的输出卡组信息,从其中提取出输出端口号,并将输出端口号送输出端口缓冲器,将 接收到的报文传送给报文指定端口输出模块。1. 3. 2修改报文单端口输出模块为报文指定端口输出模块
报文指定端口输出模块由报文指定端口输出逻辑和P个输出报文缓冲器组成,报文指 定端口输出逻辑连接P个接收报文缓冲器、输出端口缓冲器和P个输出报文缓冲器。报文 指定端口输出模块从接收报文缓冲器中提取报文,并从输出端口缓冲器中提取出输出端口 号,然后将报文按照该输出端口号送相应的输出报文缓冲器。1. 4将N块输入卡、交换卡、M块输出卡连接,形成两级交换结构(Ν、Μ均为正整数, N的数目由该交换结构支持的最大骨干链路数目决定,M的数目由该交换结构支持的最大 用户数目决定)
输入卡的输出端口与交换卡的输入端口相连,形成第一级分流网络,交换卡的输出端 口与输出卡的输入端口相连,形成第二级转发网络。输入卡逻辑编号为1到N,输出卡逻辑 编号为1到Μ。每块输入卡拥有P个输出端口,这P个输出端口与交换卡的P个输入端口相
9连接,因此,每块输入卡能通过P个输出端口将报文分流到交换卡。每块输出卡有P个输入 端口与交换卡的P个输出端口相连。输入卡共有N*P个输出端口连接交换卡,输出卡共有M*P个输入端口与交换卡相 连,因此,要求交换卡的输入端口数量大于N*P,交换卡的输出端口数量大于M*P,交换卡的 端口总数量L > N*P +M 。交换卡内部的N*P个输入端口到M*P个输出端口有全连接 关系。每块输出卡有P个输出端口,这P个端口连接到同一个用户处理机,M块输出卡分 配给S个用户处理机,S<M,每块输出卡分配给一个用户使用,输出卡支持将报文在其P 个输出端口上灵活地指定输出。第二步,初始化两级交换结构。2. 1初始化输入卡多规则过滤模块
本步骤需要根据S个用户的过滤规则初始化过规则过滤模块的五元组TCAM和外部 SRAM。初始化方法如下
2. 1. 1多规则过滤模块清空五元组TCAM和SRAM存储内容; 2. 1.2用户号u=l ;
2. 1. 3多规则过滤模块获取用户u的过滤规则,内容包括五元组、匹配该五元组的报 文转发到的输出卡卡号(从1到P,由每个用户从其分配到的输出卡中指定)和输出端口号 (从0到P-1,由每个用户从选定的输出卡的输出端口中指定);
2. 1. 4多规则过滤模块将用户u过滤规则的五元组部分和用户号u写入TCAM的一个 存储单元,并记录该存储单元的地址;
2. 1.5多规则过滤模块将2. 1.4步记录的地址和用户u过滤规则的输出卡号和输出端 口号部分写入外部SRAM; 2. 1. 6 u=u+1 ;
2. 1. 7判定u是否大于S,如果是,则转2. 1. 8,否则转2. 1. 3 ; 2. 1.8初始化完成。2. 2初始化交换卡的M0DP0RT_MAP表, 初始化过程如下
2. 2. 1输入端口号q=l ; 2. 2. 2输出卡号掩码m=l ; 2. 2. 3 bitmap=0 ; 2.2.4输出卡号r=l ;
2. 2. 5判定输出卡号掩码m的第r位是否位1,如果是,转2.2.6’否则转2. 2. 7 ; 2. 2. 6查询与输入端口 q相连接的输入卡的输出端口 P (从0到P-I ),再查询与输出卡 r的第ρ号端口相连接的交换卡的输出端口号d,修改bitmap,将bitmap的第d位置1 ; 2. 2. 7 r=r+l ;
2. 2. 8判定r是否大于M,如果是,转2. 2. 9,否则转2. 2. 5 ; 2. 2. 9 将 bitmap 写在 M0DP0RT_MAP 表第 2B *q+m 表项上;2. 2. 10 m=m+l ;
2. 2. 11判定m是否大于2B,如果是,转2. 2. 12,否则转2. 2. 3 ; 2. 2. 12 q=q+l ;
2. 2. 13判定q是否大于A,如果是,转2. 2. 14,否则转2. 2. 2 ;
2.2. 14初始化完成。
第三步,采用两级交换结构进行分流。3. 1输入卡的多规则过滤模块采用以下方法对接收到的报文进行过滤(S表示最 大用户数量)
3.1. 1五元组匹配过滤逻辑读取报文的五元组; 3. 1.2用户号u=l ;
3. 1. 3五元组匹配过滤逻辑将五元组和用户号u送五元组TCAM ; 3. 1.4五元组TCAM对五元组和用户号u进行查询,存在则输出存储该五元组和用户号 的地址,否则输出0 ;
3. 1. 5五元组匹配过滤逻辑判定五元组TCAM的输出地址,如果输出地址为0,执行 3. 1. 6步,否则五元组匹配过滤逻辑根据该输出地址从外部SRAM读取地址单元内容为该输 出地址的存储单元,并将该存储单元的内容即二元组(输出卡卡号、输出端口号)送用户u匹 配结果缓冲器;转3. 1. 7步;
3. 1. 6将(0,0)送用户u匹配结果缓冲器; 3. 1. 7 u=u+1 ;
3. 1. 8判定u是否大于S,如果是,执行3. 1. 9,否则转3. 1. 3步; 3. 1. 9完成该报文的多规则过滤。3. 2输入卡的报文头部修改模块根据多规则过滤模块的匹配结果,对报文进行修 改,方法为
3. 2. 1报文头部修改模块的过滤结果提取逻辑从S个用户匹配结果缓冲器中提取出S 个输出卡信息,将每个输出卡信息(输出卡卡号,输出端口号)串接起来形成输出卡组信息, 并将输出卡组信息送输出卡组信息缓冲器;
. 2. 2过滤结果提取逻辑将所有的输出卡信息中的输出卡卡号进行位或计算,形成的 二进制串为输出卡号掩码ModID值,如果ModID中第m位为1,则表示需要将该报文转发到 卡号为m的输出卡。过滤结果提取逻辑将ModID传送给输出卡卡号掩码缓冲器。3. 2. 3报文头部修改模块的报文头部修改逻辑从输出卡组信息缓冲器中提取输出 卡组信息,从输出卡卡号掩码缓冲器中提取ModID,从报文缓冲器中提取原始报文,将原始 报文中的目的MAC地址域的内容替换为输出卡组信息;在报文的头部添加一个新的单元, 其内容为ModID值;重新计算该报文的校验和。报文头部修改逻辑将修改后的新报文送新 报文缓冲器。3. 3输入卡的报文分流模块从新报文缓冲器获得新报文,对新报文采用常用的均 衡分流方法(如基于源、目IP地址的Hash值进行均衡分流),在输入卡的P个输出端口上进 行分流,将新报文转发给交换卡。3. 4交换卡根据接收该报文的端口 q和新报文头部携带 ModID,从M0DP0RT_MAP表中查询该新报文的输出端口掩码bitmap,根据bitmap值获取报文转发到每个输出卡的 输出端口,并在该输出端口上转发报文,采用的方法如下 3. 4. 1交换卡获取接收该报文的端口 q ; 3. 4. 2交换卡提取该报文头部携带的ModID值; 3. 4. 3交换卡从M0DP0RT_MAP中查询第q行、第ModID列的bitmap值; 3. 4. 4 c=l ;
3. 4. 5交换卡判定bitmap的第c位是否为1,如果是,转3. 4. 6,否则转3. 4. 7 ; 3. 4. 6交换卡将该报文传送输出端口 c ; 3. 4. 7 c=c+l;
3. 4. 8判定c是否大于C,如果是,转3. 4. 9,否则转3. 4. 5 ; 3.4.9转发结束,完成该报文的转发。
3. 5输出卡的报文头部分析逻辑按以下方法对从交换卡接收的新报文进行报文头部 分析
3. 5. 1输出卡报文头部分析逻辑获取该输出卡所属的用户号和本输出卡卡号;
3. 5. 2根据用户号从报文头部提取出对应本卡的输出卡信息(输出卡卡号,输出卡端口
号);
3. 5. 3判定输出卡信息中的输出卡卡号是否等于本输出卡卡号,是则执行3. 5. 4,否则 丢弃报文;
3.5.4将输出卡端口号送输出端口缓冲器;
3. 6输出卡的报文指定端口输出模块的报文指定端口输出逻辑从接收报文缓冲器中提 取出待转发的报文,从输出端口缓冲器中提取出输出卡端口号,将报文传送给该输出卡端口 号对应的输出报文缓冲器。用户处理机从输出报文缓冲器获得匹配其过滤规则的报文。采用本发明可以达到以下有益效果
1,由于采用交换卡代替原来的交换网络,交换卡的引入保证了整个交换结构的流量均 衡,保证了报文能同时复制到多块输出卡,同时利用交换卡的高速交换保证了整个分流结 构的交换容量;解决了交换容量带来的瓶颈问题,系统稳定性好;
2,在输入卡中去掉了报文复制模块,设计了报文头部修改模块,通过在报文头部添加 输出卡组信息和输出卡号掩码的形式,将报文的复制延迟到交换卡中,大大提高了输入卡 中报文的处理速度。3、本发明构建的两级交换结构中每块输出卡供一个用户独占使用,支持用户按需 指定报文从该输出卡的任意一个端口输出,各用户可以在自己管理的端口内灵活设置分流 策略;保证了用户过滤规则的配置隔离,一个用户过滤配置不会影响其它用户过滤效果和 整体性能;而传统的分流设备只能供给一个用户使用,即用户独占一整套分流设备。4、基于该分流结构的分流设备上,要添加一个用户对整个流量进行监管,只需要 简单的增加一块输出卡,用户的增加不会引起报文流量的成倍增加。


图1传统分流设备的结构12图2本发明两级交换结构的结构图3输入卡修改前后对比图4输入卡中多规则过滤模块结构图5五元组TCAM中的数据单元格式修改前后对比图6输入卡中报文头部修改模块结构图7输出卡修改前后对比图8输出卡详细结构图9采用本发明进行多用户模式分流的一种实例。
具体实施例方式下面结合附图,详细地描述本发明的具体实施方式
。本实施方式针对骨干网络 40Gbps的高速报文,分流到4个IOGbps的较低速率的出口,重点阐述本方法如何支持多用 户模式。图2为本发明两级交换结构的结构图,用交换卡代替交换网络,输入卡接收来自 骨干网络的高速报文,对报文进行多规则过滤,在报文头部添加报文的输出卡组信息后在 其P个输出端口上进行均衡分流,将报文分流给交换卡;交换卡具备从输入端口到输出端 口的全连接关系,还具备多端口复制输出功能;交换卡将报文头部携带的输出卡组信息转 化成输出端口组,将报文同时通过多个端口转发给多块输出卡;输出卡具备报文指定端口 输出功能,每块输出卡给一个用户使用,输出卡通过分析报文头部携带的输出卡信息,通过 指定的端口将报文转发给用户处理机。图2中的N块输入卡表示该交换结构可以支持同时 监控N条骨干网络链路,M块输出卡表示最多可以支持M个用户同时监控N条骨干网络链 路。用户数S不能大于输出卡数M。图3为输入卡修改前后对比图,修改后的输入卡由多规则过滤模块、报文头部修 改模块和报文分流模块组成,报文分流模块使用公知的分流策略(如基于源、目IP地址的 均衡分流方法),而多规则过滤模块将报文匹配每个用户的过滤规则,过滤后的匹配结果包 括两部分,一部分是所有用户过滤规则的匹配结果形成的输出卡组信息,另一部分是输出 卡组信息中每个输出卡号位或形成的掩码ModID。报文头部修改模块将匹配结果标签添加 到报文头部,并将新报文传送给报文分流模块。图4为多规则过滤模块结构图,多规则过滤模块由五元组匹配过滤逻辑、五元组 TCAM、外部SRAM和S个用户匹配结果缓冲器组成。五元组匹配过滤逻辑按照3. 1步描述的 匹配流程,把接收的报文五元组和每个用户号送五元组TCAM进行匹配,并根据匹配结果查 询每个用户指定的输出卡信息(输出卡卡号,输出端口号),并将输出卡信息送相应的匹配 结果缓冲器。图5为五元组TCAM中的数据单元格式修改前后对比图,图的上半部分为传统分流 设备的五元组TCAM中数据单元结构内容,包括五元组信息;而修改后的五元组TCAM单元结 构内容添加了用户号一项,多规则过滤模块在对报文和每个用户的过滤规则匹配时,将根 据报文的五元组和每个用户号查询五元组TCAM进行匹配。图6为报文头部修改模块结构图,报文头部修改模块由过滤结果提取逻辑、输出 卡组信息缓冲器、输出卡号掩码缓冲器、报文缓冲器、报文头部修改逻辑和新报文缓冲器组
13成。过滤结果提取逻辑提取S个用户匹配结果缓冲器中的输出卡信息,形成输出卡组信息, 并根据输出卡组信息计算输出卡号掩码ModID,将输出卡组信息送输出卡组信息缓冲器,将 输出卡卡号掩码ModID送输出卡卡号掩码缓冲器;报文头部修改逻辑提取输出卡组信息缓 冲器中的输出卡组信息,输出卡卡号掩码缓冲器中的ModID和报文数据缓冲器中的报文数 据,将原始报文中的目的MAC地址域的内容替换为输出卡组信息,在报文的头部添加ModID 值;重新计算该报文的校验和。报文头部修改逻辑将修改后的新报文送新报文缓冲器。图7给出了修改前后的输出卡对比图。修改前输出卡的报文单端口输出模块缓冲 报文并将报文在唯一的端口上进行输出。修改后输出卡的报文头部分析模块通过分析报文 头部的输出卡组信息,提取出属于本卡卡号的输出卡信息(输出卡卡号,输出端口号);报文 指定端口输出模块将报文从输出端口号上进行输出。图8为输出卡详细结构图,输出卡由报文头部分析模块和报文指定端口输出模块 组成,报文头部分析模块由P个接收报文缓冲器、报文头部分析逻辑和输出端口缓冲器组 成,报文头部分析逻辑从接收报文缓冲器中提取报文,从报文头部读取属于本输出卡的输 出卡组信息(输出卡卡号,输出端口号),按照3. 5步中的方法对报文进行分析,得到输出端 口号,将输出端口号送输出端口缓冲器;指定端口输出模块由指定端口输出逻辑和P个输 出报文缓冲器组成。指定端口输出逻辑从报文接收缓冲器中提取报文,从输出端口缓冲器 中读取出输出端口号,根据输出端口号将报文传送给相应的输出报文缓冲器。图9为采用本发明进行多用户模式分流的一种实例。采用4块40G POS输入卡,每 块POS输入卡有1个40Gbps的输入端口和4个IOGbps的输出端口 ;采用6块IOG POS输出 卡,每块POS输出卡有4个IOGbps的输入端口和4个IOGbps的输出端口,最大支持用户数 量S为6 ;采用2块可编程的BCM56820芯片作为交换卡,每块交换卡有20个IOGbps端口, 其中8个端口作为输入端口与输入卡相连接,12个端口作为输出端口与输出卡相连接;每 块40G输入卡的前两个端口(PO和Pl)与第一块交换卡相连,后两个端口(P2和P3)与第二 块交换卡相连;每块IOG输出卡的前两个端口(PO和Pl)与第一块交换卡相连,后两个端口 (P2和P3)与第二块交换卡相连(如果由于交换卡端口数量的限制而需要采用多块交换卡, 则交换卡与输入卡和输出卡相连接时,需要保证每块交换卡与每块输入卡输出卡都有连接 关系,同时应尽量使多块交换卡的连接数量均勻,从而保证各交换卡流量负载均衡,交换卡 的数量不影响M0DP0RT_P0RT表的初始化和交换卡的交换策略)。同时确定4块40G输入卡 的逻辑编号为1_4,6块IOG输出卡的逻辑编号为1-6,交换卡的编号为1-2,每块输出卡给 一个用户使用。具体实施过程如下
第一步,构建由输入卡、交换卡和输出卡组成的两级交换结构。1. 1修改40G输入卡,使40G输入卡支持多用户模式。修改后的40G输入卡由多规则过滤模块、报文头部修改模块和报文分流模块组 成。修改步骤如下
1. 1. 1将40G输入卡中的单规则过滤模块(如Stratix EP2SGX130系列芯片)修改为多 规则过滤模块,方法是
1. 1. 1. 1修改40G输入卡中的五元组TCAM中的数据单元格式,每项数据单元的内容添 加用户号。
1. 1. 1. 2在40G输入卡的多规则过滤模块中添加一个外部SRAM (Static Random Access Memory,静态随机访问存储器),该SRAM的每个存储单元包含三项内容五元组数据 单元地址、输出卡号和输出端口号。1. 1. 1. 3修改五元组匹配过滤逻辑,使五元组匹配过滤逻辑与五元组TCAM和外部 STAM相连接,五元组匹配过滤逻辑根据报文的五元组数据和用户号来查找五元组TCAM,并 根据查找结果从SRAM中提取出输出卡号和输出端口号。1. 1. 1. 4在多规则过滤模块中添加6个匹配结果缓冲器(S=6,表示分流设备最大 支持6个用户),6个匹配结果缓冲器与五元组匹配过滤逻辑和报文头部修改模块相连,用 来缓存每个用户过滤规则的匹配结果,同时将匹配结果传输到报文头部修改模块。1. 1. 2去掉40G输入卡中的报文复制模块,添加报文头部修改模块
在40G输入卡中添加报文头部修改模块,报文头部修改模块与多规则过滤模块、报文 分流模块相连。报文头部修改模块由输出卡组信息缓冲器、输出卡号掩码缓冲器、报文缓冲 器、新报文缓冲器、过滤结果提取逻辑和报文头部修改逻辑组成。过滤结果提取逻辑与多规 则过滤模块的6个匹配结果缓冲器相连,过滤结果提取逻辑的输出连接输出卡组信息缓冲 器、输出卡号掩码缓冲器;过滤结果提取逻辑提取6个匹配结果缓冲器的匹配结果,形成输 出卡组信息,并根据输出卡组信息计算输出卡号掩码,分别传送给输出卡组信息缓冲器和 输出卡号掩码缓冲器。报文头部修改逻辑与输出卡组信息缓冲器、输出卡号掩码缓冲器、报 文缓冲器和新报文缓冲器相连。报文头部修改逻辑从报文缓冲器中提取原始报文,并在报 文头部添加从输出卡组信息缓冲器和输出卡号缓冲器读取的输出卡组信息和输出卡号掩 码,并将新报文传送给新报文缓冲器。1. 1. 3
报文分流模块与报文头部修改模块的新报文缓冲器相连接,从新报文缓冲器中提取报 文,并采用源、目IP地址的Hash值进行均衡分流。报文分流模块有4个分流出口(P=4,表 示分流级数为4,即将40Gbps的报文分流成4个IOGbps的报文)。1. 2采用交换卡代替交换网络。交换卡采用2块Broadcom公司的StrataXGS BCM56820交换芯片,每块交换芯片 有20个端口。每块交换芯片的8个端口作为输入端口,12个端口作为输出端口。1. 3修改输出卡,使输出卡支持指定端口分流。修改后的输出卡由报文头部分析模块和报文指定端口输出模块组成。修改步骤如 下
1. 3. 1在输出卡中添加报文头部分析模块
报文头部分析模块由P个报文接收缓冲器、报文头部分析逻辑和输出端口缓冲器组 成,P个报文接收缓冲器接收来自交换卡的报文,报文头部分析逻辑连接P个报文接收缓冲 器和输出端口缓冲器。报文头部分析逻辑依次从每个报文接收缓冲器中提取报文,分析报 文头部的输出卡组信息,从其中提取出输出端口号,并将输出端口号送输出端口缓冲器,将 接收到的报文传送给报文指定端口输出模块。1. 3. 2修改报文单端口输出模块为报文指定端口输出模块
报文指定端口输出模块由报文指定端口输出逻辑和P个输出报文缓冲器组成,报文指 定端口输出逻辑连接P个接收报文缓冲器、输出端口缓冲器和P个输出报文缓冲器。报文指定端口输出模块从接收报文缓冲器中提取报文,并从输出端口缓冲器中提取出输出端口 1,然后将报文按照该输出端口号送相应的输出报文缓冲器。1.4将输入卡、交换卡、输出卡连接,形成两级交换结构。输入卡的输出端口与交换卡的输入端口相连接形成第一级分流网络,交换卡的输 出端口与输出卡的输入端口相连接形成第二级转发网络。输入卡数量为4,逻辑编号为1到 4,输出卡数量为6,逻辑编号为1到6。每块输入卡拥有4个输出端口,这4个输出端口的 前两个端口与交换卡1相连接,后两个端口与交换卡2相连接,因此,输入卡能通过4个输 出端口将报文分流到2块交换卡。每块输出卡有4个输入端口与交换卡的4个输出端口相 连接,每块交换卡的前2个端口与交换卡1相连接,后2个端口与交换卡2相连接。输入卡共有16个输出端口连接交换卡,输出卡共有24个输入端口与交换卡相连 接,交换卡的输入端口数量为16,交换卡的输出端口数量为24,2块交换卡的端口总数量 40。每块交换卡内部的8个输入端口到12个输出端口有全连接关系。在该两级交换结构中,共有6个用户使用6块输出卡,需要预先将6块输出卡分配 给6个用户,每块输出卡对应一个用户。每块输出卡有4个输出端口,这4个端口连接到用 户处理机。输出卡支持用户将报文在其4个输出端口上灵活地指定输出。
第二步,初始化两级交换结构。2. 1初始化输入卡多规则过滤模块
本步骤需要根据6个用户的过滤规则初始化过规则过滤模块的外部TCAM和外部SRAM。 本交换结构支持的用户配置过滤规则的命令为五元组、匹配该五元组的报文转发到的输 出卡卡号(从1到4,由每个用户从其分配到的输出卡中指定)和输出端口号(从0到3,由每 个用户从选定的输出卡的输出端口中指定)。交换结构需要根据每个用户配置的过滤规则 初始化外部TCAM和外部SRAM。初始化方法如下
2. 1. 1多规则过滤模块清空五元组TCAM和SRAM存储内容 2. 1.2用户号u=l ;
2. 1. 3多规则过滤模块获取用户u的过滤规则;
2. 1. 4多规则过滤模块将用户u过滤规则的五元组部分和用户号u写入TCAM的一个 存储单元,并记录该存储单元的地址;
2. 1.5多规则过滤模块将2. 1.4步记录的地址和用户u过滤规则的输出卡号和输出端 口号部分写入外部SRAM的一个存储单元; 2. 1. 6 u=u+1 ;
2. 1. 7判定u是否大于6,如果是,则转2. 1. 8,否则转2. 1. 3 2. 1.8初始化完成
2. 2初始化交换卡的M0DP0RT_MAP表
本步骤根据1. 4步中的交换结构,初始化交换卡的M0DP0RT_MAP表。初始化过程如下 2. 2. 1输入端口号q=l ; 2. 2. 2输出卡号掩码m=l ; 2. 2. 3 bitmap=0 ;
162.2.4输出卡号r=l ;
2. 2. 5判定输出卡号掩码m的第r位是否位1,如果是,转2.2.6’否则转2. 2. 7 ; 2. 2. 6查询与输入端口 q相连接的输入卡的输出端口 P (从0到3),再查询与输出卡r 的第P号端口相连接的交换卡的输出端口号d JfSbitmapdfbitmap的第d位置1 ; 2. 2. 7 r=r+l ;
2. 2. 8判定r是否大于6,如果是,转2. 2. 9,否则转2. 2. 5 ; 2. 2. 9 将 bitmap 写在 M0DP0RT_MAP 表第 64 *q +m 表项上; 2. 2. 10 m=m+l ;
2.2. 11判定m是否大于64,如果是,转2. 2. 12,否则转2. 2. 3 ; 2. 2. 12 q=q+l ;
2. 2. 13判定q是否大于8 (每块交换卡的输入端口数为8),如果是,转2. 2. 14,否则转
2.2. 14初始化完成。第三步,采用两级交换结构进行分流。3. 1输入卡的多规则过滤模块采用以下方法对接收到的报文进行过滤(最大用户 数量为6):
3.1. 1五元组匹配过滤逻辑读取报文的五元组; 3. 1. 2用户号u=l ;
3. 1. 3五元组匹配过滤逻辑将五元组和用户号u送五元组TCAM ; 3. 1.4五元组TCAM对五元组和用户号u进行查询,存在则输出存储该五元组和用户号 的地址,否则输出0 ;
3. 1. 5五元组匹配过滤逻辑判定五元组TCAM的输出地址,如果输出地址为0,执行 3. 1. 6步,否则五元组匹配过滤逻辑根据该输出地址从外部SRAM读取地址单元内容为该输 出地址的存储单元,并将该存储单元的内容(输出卡卡号、输出端口号)送用户u匹配结果缓 冲器;转3. 1. 7步;
3. 1. 6将(0,0)送用户u匹配结果缓冲器; 3. 1. 7 u=u+1 ;
3. 1. 8判定u是否大于6,如果是,执行3. 1. 9,否则转3. 1. 3步; 3. 1. 9完成该报文的多规则过滤。3. 2输入卡的报文头部修改模块根据多 则过滤模块的匹配结果,对报文进行修 改,方法为
3. 2. 1报文头部修改模块的过滤结果提取逻辑从6个用户匹配结果缓冲器中提取出6 个输出卡信息,将每个输出卡信息(输出卡卡号,输出端口号)串接起来形成输出卡组信息, 并将输出卡组信息送输出卡组信息缓冲器;
3. 2. 2过滤结果提取逻辑将所有的输出卡信息中的输出卡卡号进行位或计算,形成的 二进制串为输出卡号掩码ModID值,如果ModID中第m位为1,则表示需要将该报文转发到 卡号为m的输出卡。过滤结果提取逻辑将ModID传送给输出卡卡号掩码缓冲器。3. 2. 3报文头部修改模块的报文头部修改逻辑从输出卡组信息缓冲器中提取输出 卡组信息,从输出卡卡号掩码缓冲器中提取ModID,从报文缓冲器中提取原始报文,将原始报文中的目的MAC地址域的内容替换为输出卡组信息;在报文的头部添加一个新的单元, 其内容为ModID值;重新计算该报文的校验和。报文头部修改逻辑将修改后的新报文送新 报文缓冲器。3. 3输入卡的报文分流模块从新报文缓冲器获得新报文,对新报文采用常用基于 源、目IP地址的Hash值的均衡分流算法,在输入卡的4个分流出口上进行分流,将新报文 转发给交换卡。3. 4交换卡根据接收该报文的端口 q和新报文头部携带的ModID,从M0DP0RT_MAP 表中查询该新报文的输出端口掩码bitmap,根据bitmap值获取报文转发到每个输出卡的 输出端口,并在该输出端口上转发报文,采用的方法如下
3. 4. 1交换卡获取接收该报文的端口 q ;
3. 4. 2交换卡提取该报文头部携带的ModID值;
3. 4. 3交换卡从M0DP0RT_MAP中查询第q行、第ModID列的bitmap值;
3. 4. 4 c=l ;
3. 4. 5交换卡判定bitmap的第c位是否为1,如果是,转3. 4. 6,否则转3. 4. 7 ; 3. 4. 6交换卡将该报文传送输出端口 c ; 3. 4. 7 c=c+l;
3. 4. 8判定c是否大于12,如果是,转3. 4. 9,否则转3. 4. 5 ; 3.4.9转发结束,完成该报文的转发。3. 5输出卡的报文头部分析逻辑按以下方法对从交换卡获得的新报文进行报文 头部分析
3. 5. 1获取该输出卡对应的用户号和本输出卡编卡号;
3. 5. 2根据用户号从报文头部提取出对应本卡的输出卡信息 < 输出卡卡号,输出卡端
口号〉;
3. 5. 3判定输出卡信息中的输出卡卡号是否等于本输出卡卡号,是则执行3. 5. 4,否则 丢弃报文;
3.5.4将输出卡端口号送报文输出端口缓冲器;
3. 6输出卡的报文指定端口输出逻辑从接收报文缓冲器中提取出待转发的报文,从输 出端口缓冲器中提取出输出卡端口号,将报文传送给该输出卡端口号对应的输出报文缓冲 器。通过输出报文缓冲器将报文转发给用户处理机。
18
权利要求
一种支持多用户的高速报文分流方法,其特征在于包括以下步骤第一步,构建由输入卡、交换卡和输出卡组成的两级交换结构1.1修改输入卡,使输入卡支持多用户模式,修改后的输入卡由多规则过滤模块、报文头部修改模块和报文分流模块组成;修改输入卡的步骤如下1.1.1将输入卡中的单规则过滤模块修改为多规则过滤模块,方法是 1.1.1.1修改输入卡中的五元组TCAM中的数据单元格式,每项数据单元的内容添加用户号;1.1.1.2 在输入卡的多规则过滤模块中添加一个外部SRAM即静态随机访问存储器,该SRAM的每个存储单元包含三项内容五元组数据单元地址、输出卡号和输出端口号;1.1.1.3修改五元组匹配过滤逻辑,使五元组匹配过滤逻辑与五元组TCAM和外部STAM相连接,五元组匹配过滤逻辑根据报文的五元组数据和用户号来查找五元组TCAM,并根据查找结果从SRAM中提取出输出卡号和输出端口号; 1.1.1.4在多规则过滤模块中添加S个匹配结果缓冲器,S个匹配结果缓冲器与五元组匹配过滤逻辑和报文头部修改模块相连,用来缓存每个用户过滤规则的匹配结果,同时将匹配结果传输到报文头部修改模块,S表示分流设备支持的最大用户数;1.1.2去掉输入卡中的报文复制模块,添加报文头部修改模块报文头部修改模块与多规则过滤模块、报文分流模块相连,报文头部修改模块由输出卡组信息缓冲器、输出卡号掩码缓冲器、报文缓冲器、新报文缓冲器、过滤结果提取逻辑和报文头部修改逻辑组成;过滤结果提取逻辑与多规则过滤模块的S个匹配结果缓冲器相连,过滤结果提取逻辑的输出连接输出卡组信息缓冲器、输出卡号掩码缓冲器;过滤结果提取逻辑提取S个匹配结果缓冲器的匹配结果,形成输出卡组信息,并根据输出卡组信息计算输出卡号掩码,分别传送给输出卡组信息缓冲器和输出卡号掩码缓冲器;报文头部修改逻辑与输出卡组信息缓冲器、输出卡号掩码缓冲器、报文缓冲器和新报文缓冲器相连;报文头部修改逻辑从报文缓冲器中提取原始报文,并在报文头部添加从输出卡组信息缓冲器和输出卡号缓冲器读取的输出卡组信息和输出卡号掩码,并将新报文传送给新报文缓冲器;1.1.3 报文分流模块与报文头部修改模块的新报文缓冲器相连接,从新报文缓冲器中提取报文,并进行均衡分流,报文分流模块有P个输出口,P为分流级数,表示输入带宽与输出带宽的比例,P为大于1的整数。
2.如权利要求1所述的支持多用户的高速报文分流方法,其特征在于MODPORT_MAP 表是交换卡内部一个A行*2B列的缓存区,A表示交换卡的输入端口数量,B为交换卡支持 的最大输出卡数量,MODPORT_MAP表中每一个元素MODPORT_MAP [i] [j]称为bitmap值,i的 取值为1到A的整数,j的取值为O到2b-1的整数,其中每个bitmap是一个C位的二进制 串,C为bitmap的位数,表示交换卡的输出端口数量,交换卡的每个输出端口对应1位;元 素MODPORT_MAP[i][j]的值表示从交换卡的第i个输入端口接收的报文,当报文头部携带 的输出卡号掩码为j时,该交换卡需要输出该报文的输出端口组合值,bitmap中每一位对 应一个输出端口的输出标记。
3.如权利要求1所述的支持多用户的高速报文分流方法,其特征在于交换卡的输入 端口数量大于N*P,交换卡的输出端口数量大于M*P,交换卡的端口总数量L>N*P+M*P ;交换 卡内部的N*P个输入端口到M*P个输出端口有全连接关系。
4.如权利要求1所述的支持多用户的高速报文分流方法,其特征在于初始化输入卡 多规则过滤模块的方法是·2. 1. 1多规则过滤模块清空五元组TCAM和SRAM存储内容; 2. 1.2用户号u=l ;·2. 1. 3多规则过滤模块获取用户u的过滤规则,内容包括五元组、匹配该五元组的报 文转发到的输出卡卡号和输出端口号;所述输出卡卡号为1到P,由每个用户从其分配到的 输出卡中指定,输出端口号为O到P-1,由每个用户从选定的输出卡的输出端口中指定;·2. 1. 4多规则过滤模块将用户u过滤规则的五元组部分和用户号u写入TCAM的一个 存储单元,并记录该存储单元的地址;·2. 1.5多规则过滤模块将2. 1.4步记录的地址和用户u过滤规则的输出卡号和输出端 口号部分写入外部SRAM; 2. 1. 6 u=u+1 ;·2. 1. 7判定u是否大于S,如果是,则转2. 1. 8,否则转2. 1. 3 ; 2. 1.8初始化完成。
5.如权利要求1所述的支持多用户的高速报文分流方法,其特征在于初始化交换卡 的MODPORT_MAP表的过程如下·2. 2. 1输入端口号q=l ; 2. 2. 2输出卡号掩码m=l ; 2. 2. 3 bitmap=O ; 2.2.4输出卡号r=l ;·2. 2. 5判定输出卡号掩码m的第r位是否位1,如果是,转2.2.6’否则转2. 2. 7 ; 2. 2. 6查询与输入端口 q相连接的输入卡的输出端口 P (从0到P-I ),再查询与输出卡 r的第ρ号端口相连接的交换卡的输出端口号d,修改bitmap,将bitmap的第d位置1 ; 2. 2. 7 r=r+l ;·2. 2. 8判定r是否大于M,如果是,转2. 2. 9,否则转2. 2. 5 ; 2. 2. 9 将 bitmap 写在 MODPORT_MAP 表第 25*《+ 表项上; 2. 2. 10 m=m+l ;·2. 2. 11判定m是否大于2B,如果是,转2. 2. 12,否则转2. 2. 3 ;·2. 2. 12 q=q+l ;·2. 2. 13判定q是否大于A,如果是,转2. 2. 14,否则转2. 2. 2 ; 2. 2. 14初始化完成。
6.如权利要求2所述的支持多用户的高速报文分流方法,其特征在于交换卡支持的 最大输出卡数量B为8,bitmap的位数C为12。
全文摘要
本发明公开了一种支持多用户的高速报文分流方法,目的是为支持多用户模式的高速大容量分流设备提供一种高速、低延迟的数据报文从单块输入卡到多块输出卡的组播分流方法。技术方案是先修改输入卡、输出卡,使输入卡支持多用户模式,使输出卡支持指定端口分流,构建由输入卡、交换卡和输出卡组成的两级交换结构;然后初始化两级交换结构并采用两级交换结构进行分流。采用本发明可保证整个交换结构的流量均衡,提高了输入卡中报文的处理速度,且只是输出卡而不是整套分流设备供一个用户独占使用,解决了交换容量带来的瓶颈问题,系统稳定性好。
文档编号H04L12/56GK101964759SQ20101053881
公开日2011年2月2日 申请日期2010年11月10日 优先权日2010年11月10日
发明者卢泽新, 唐勇, 喻波, 宣蕾, 李韬, 苏金树, 赵国鸿, 陆华彪, 陈一骄, 陈曙晖 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1