公开/公告号CN1984030A
专利类型发明专利
公开/公告日2007-06-20
原文格式PDF
申请/专利权人 中兴通讯股份有限公司;
申请/专利号CN200510130603.4
申请日2005-12-14
分类号H04L12/56(20060101);
代理机构11006 北京律诚同业知识产权代理有限公司;
代理人梁挥;徐金国
地址 518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法律部
入库时间 2023-12-17 18:46:19
法律状态公告日
法律状态信息
法律状态
2016-02-03
未缴年费专利权终止 IPC(主分类):H04L12/56 授权公告日:20090506 终止日期:20141214 申请日:20051214
专利权的终止
2009-05-06
授权
授权
2007-08-15
实质审查的生效
实质审查的生效
2007-06-20
公开
公开
技术领域
本发明涉及路由器中实现流量控制技术领域,特别是涉及在路由器上基于FPGA实现ATM网络流量控制的装置及其方法。
背景技术
随着计算技术的发展,出现了各种数据传输网络,目前主要存在两种网络,一种是以包为单位传输IP(Internet Protocol,互联网协议)分组网络,一种是以信元为单位传输ATM(Asynchronous Transfer Mode,异步传输模式)网络。作为以IP分组为交换基础的路由器,在连接ATM网络的时候,需要用于处理IP分组到ATM信元相互转换的线路接口卡。
目前的ATM线路接口卡主要由(如图1所示)光模块101、物理层芯片102、SAR(Segment And Reassemble,分段/重组或拆装)芯片103、FPGA(FieldProgrammable Gate Array,现场可编程逻辑阵列)芯片104和网络处理器105等芯片组成。其中,光模块101完成光电转换,物理层芯片102完成SDH(Synchronous Digital Hierarchy,同步数字系列)帧提取和信元封装等功能,SAR芯片103完成IP报文的分片、ATM信元重组和QoS(Quality of Service,服务质量)业务等功能,FPGA芯片104用于连接SAR芯片103和网络处理器105,完成二者之间的数据转换。由于目前网络处理器和多数芯片之间的数据接口并不一致,需要进行数据转换,FPGA芯片在系统中是必需的。随着半导体工艺发展,FPGA芯片的规模越来越大,同时价格也越来越便宜,使用低廉的FPGA芯片代替SAR芯片成为可能。目前的ATM线路接口卡的流量控制依靠SAR芯片完成,这种系统存在设计复杂、成本高等缺点。
发明内容
本发明所要解决的技术问题在于提供一种基于FPGA实现ATM网络流量控制的装置及其方法,用于克服现有技术中存在的路由器中的ATM网络流量控制由专用SAR芯片实现,造成系统复杂、成本过高的问题和缺陷。
为了实现上述目的,本发明提供了一种基于FPGA实现ATM网络流量控制的装置,包括网络处理器、物理层芯片,其特征在于,还包括:
一ATM信元存储器,用于接收所述网络处理器传来的ATM信元,并按PVC通道分块存储所述ATM信元;
一PVC管理模块,用于将所述ATM信元存储器按照PVC虚拟成多个FIFO队列,并对所述各个FIFO队列进行管理;
一PVC状态缓存模块,用于存储所述各个PVC通道的下一ATM信元发送时刻变量;
一PVC带宽配置模块,用于配置所述各个PVC通道的带宽参数;
一流量控制模块,用于产生PVC通道号,查询所述PVC管理模块、PVC状态缓存模块和PVC带宽配置模块,计算出该PVC通道号对应的通道是否有ATM信元和是否允许读取ATM信元,组装ATM信元成信元帧并存储;
一信元帧发送模块,用于从所述流量控制模块中读取信元帧,进行ATM信元间隔控制,并发送不含帧头的信元帧;
一物理接口模块,用于接收所述信元帧发送模块发来的信元帧,并将其发至所述物理层芯片。
所述的基于FPGA实现ATM网络流量控制的装置,其中,所述ATM信元存储器又包括:一外部存储设备和一存储器接口模块;所述外部存储设备用于存储ATM信元,所述存储器接口模块用作外部RAM和FPGA内部逻辑进行数据交换的接口模块。
所述的基于FPGA实现ATM网络流量控制的装置,其中,所述流量控制模块又包括:一ATM信元发送模块、一信元帧缓冲器、一带宽控制模块和一基准时刻生成模块;其中
所述ATM信元发送模块用于查询所述各PVC通道,产生查询所述PVC管理模块、PVC状态缓存模块、PVC带宽配置模块和带宽控制模块的操作,向所述ATM信元存储器发送读RAM地址,将读回的ATM信元和所述带宽控制模块返回的参数按照一定的格式组成信元帧,并存入至所述信元帧缓冲器;
所述信元帧缓冲器用于存储信元帧的FIFO队列;
所述带宽控制模块用于维护上一ATM信元发送时刻变量、系统配置的最大带宽的时间间隔数变量,查询所述PVC状态缓存模块返回的下一ATM信元发送时刻变量值分别与基准时刻生成模块的计数变量值和上一ATM信元发送时刻变量值进行比较的情况,根据比较结果决定是否允许所述ATM信元发送模块在该下一ATM信元发送时刻从所述ATM信元存储器读取ATM信元,并对PVC通道状态进行维护;
所述基准时刻生成模块为一个计数器,用于产生用作所述带宽控制模块判决基准的所述计数变量,并产生初始化所述PVC状态缓存模块的信号。
所述的基于FPGA实现ATM网络流量控制的装置,其中,所述物理接口模块为一标准Utopia接口。
为了实现上述目的,本发明还提供了一种适用于所述装置的基于FPGA实现ATM网络流量控制的方法,其特征在于,包括:
步骤51,ATM信元存储器接收所述网络处理器传来的ATM信元,并按PVC通道分块存储所述ATM信元;
步骤52,流量控制模块产生PVC通道号,不断查询所述PVC管理模块、PVC状态缓存模块和PVC带宽配置模块,计算出该PVC通道号对应的通道是否有ATM信元和是否允许读取ATM信元,组装ATM信元成信元帧并存储;
步骤53,信元帧发送模块从所述流量控制模块中读取信元帧,进行ATM信元间隔控制,并发送不含帧头的信元帧;
步骤54,物理接口模块接收所述信元帧发送模块发来的信元帧,并将其发至所述物理层芯片。
所述的基于FPGA实现ATM网络流量控制的方法,其中,所述步骤51、52之间还包括一通过流量控制模块发送的PVC状态初始化命令对所述PVC状态缓存模块进行初始化的步骤,用于将所述所有PVC通道的下一ATM信元指针都指向零。
所述的基于FPGA实现ATM网络流量控制的方法,其中,所述步骤52中还包括一通过查询所述PVC管理模块返回的该PVC通道号对应的通道的FIFO队列状态来判断该PVC通道号对应的通道是否有ATM信元的步骤。
所述的基于FPGA实现ATM网络流量控制的方法,其中,所述步骤52中还包括一通过所述带宽控制模块、信元帧缓冲器返回的值判断是否允许所述ATM信元发送模块从所述ATM信元存储器读取ATM信元的步骤。
所述的基于FPGA实现ATM网络流量控制的方法,其中,所述步骤52中,若该PVC通道号对应的通道允许读取ATM信元,则所述ATM信元发送模块从所述ATM信元存储器读取ATM信元,并在该ATM信元的头部加一间隔控制字,组成一信元帧并存至所述信元帧缓冲器,设置信元帧标志位,等待所述信元帧发送模块读取;同时将更新后的PVC状态写回所述PVC状态缓存模块,继续查询下一PVC通道。
所述的基于FPGA实现ATM网络流量控制的方法,其中,在所述步骤53之前还包括一所述信元帧发送模块通过查询所述流量控制模块的信元帧标志位为来判断所述信元帧缓冲器中是否含有信元帧的步骤。
所述的基于FPGA实现ATM网络流量控制的方法,其中,在所述步骤53之前还包括一判断是否允许所述信元帧发送模块从所述信元帧缓冲器读取信元帧的步骤。
所述的基于FPGA实现ATM网络流量控制的方法,其中,所述步骤53中,所述信元帧发送模块通过启动一间隔计数器获取计数器当前值,并通过查询信元帧缓冲器读取信元帧头获取一ATM信元间隔参数,再通过比较所述计数器当前值与所述ATM信元间隔参数的方式实现ATM信元间隔控制。
所述的基于FPGA实现ATM网络流量控制的方法,其中,若所述ATM信元间隔参数值小于所述计数器当前值且所述物理接口模块允许发送ATM信元,则将所述信元帧发送模块将ATM信元发至所述物理接口模块。
本发明提供了一种简单基于FPGA实现ATM网络流量控制的方法和装置,解决现有技术中存在的路由器中的ATM网络流量控制由专用SAR芯片实现,造成系统复杂、成本过高的问题和缺陷;与现有技术相比,本发明的有益效果在于:
采用本发明所述方法和装置取得了使用FPGA替换专用SAR芯片实现流量控制的技术进步,达到了精确控制ATM信元速率的效果,节省了系统成本,提高了系统可靠性和市场竞争力等等。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1为现有技术中ATM线路接口板系统模块图;
图2为本发明ATM网络流量控制模块图;
图3为本发明中使用的PVC带宽配置参数示意图;
图4为本发明中使用的信元帧封装示意图;
图5为本发明PVC通道带宽控制处理流程图;
图6为本发明ATM信元处理流程图。
具体实施方式
下面结合附图对基于FPGA实现ATM网络流量控制技术方案的实施作进一步的详细描述。
请参阅图2所示,为本发明ATM网络流量控制模块图;图3为本发明中使用的PVC带宽配置参数示意图;图4为本发明中使用的信元帧封装示意图。本发明基于FPGA实现ATM网络流量控制的装置包括:硬件模块部分、软件模块部分。
硬件模块部分包括:ATM信元存储器201,包括外部存储设备202和存储器接口模块203。其中,外部存储设备202是一个大容量RAM(RandomAccess Memory,随机存储器),用来存储ATM信元;存储器接口模块203是外部RAM和FPGA内部逻辑进行数据交换的接口模块;ATM信元存储器201受PVC管理模块204和流量控制模块211控制读写操作。
软件模块部分包括如下模块:
PVC管理模块204,为ATM信元存储器201提供写RAM地址,并将ATM信元存储器201按PVC(Permanent Virtual Circuits,永久虚链路)虚拟成多个FIFO(First-In First-Out,先进先出)队列,并对每个FIFO队列状态进行管理,以待流量控制模块211查询。
PVC状态缓存模块205,是一个FPGA内部RAM,存储各个PVC通道的下一ATM信元发送时刻Time0,以待流量控制模块211查询;同时接收流量控制模块211发送的状态初始化命令,对每个PVC的状态进行清零操作。
PVC带宽配置模块206,是一个FPGA内部RAM,用来配置各个PVC通道的带宽参数,带宽参数是以基准时钟19.44MHz为参考,通过计算同一PVC通道紧邻两个ATM信元时钟间隔(Step)得到的(如图3所示),并将得到的参数通过CPU(主处理器)接口配置到PVC带宽配置模块206。
流量控制模块211,是实现ATM信元流量控制的核心模块,由该模块211决定什么时候发送哪个PVC通道的ATM信元,同时还决定两个相邻之间ATM信元的间隔。流量控制模块211又包括ATM信元发送模块207、信元帧缓冲器208、带宽控制模块209和基准时刻生成模块210等四个模块。其中,
其中,ATM信元发送模块207是一个状态机,不断轮询各PVC通道,产生查询PVC管理模块204、PVC状态缓存模块205、PVC带宽配置模块206和带宽控制模块209等模块的操作,向ATM信元存储器201发送读RAM地址,将读回来的ATM信元和带宽控制模块209返回的参数Step0按照图4的格式组成信元帧,存入信元帧缓冲器208中,参数Step0为ATM信元间隔参数。
其中,信元帧缓冲器208是一个用来存储ATM信元帧的FIFO队列。
其中,带宽控制模块209是一个运算单元,同时维护两个变量,一个是上一ATM信元的发送时刻Time1,另一个是系统配置的最大带宽的时间间隔数Step1。带宽控制模块209将查询PVC状态缓存模块205所返回的Time0值分别与基准时刻生成模块210的Counter_1值和上一ATM信元的发送时刻Time1的值进行比较,决定是否允许ATM信元发送模块207在这一时刻从ATM信元存储器201读取一个ATM信元,并对PVC通道状态进行维护。
其中,基准时刻生成模块210是一个计数器Counter_1,为基准时钟参数,19.440MHz时钟为它的时钟源,一秒钟循环一次,作为带宽控制模块209判决的基准,同时产生初始化PVC状态缓存模块205信号。
信元帧发送模块212,是实现ATM信元流量控制的执行模块,它维护一个用来计算相邻ATM信元间隔的计数器Counter_2。信元帧发送模块212不断查询流量控制模块211,如果流量控制模块211允许读取一个信元帧,则首先读取信元帧头Step0,将帧头Step0和计数器Counter_2进行比较;如果Step0值小于Counter_2值且物理接口模块213允许发送ATM信元,将ATM信元发送到物理接口模块213,否则等待物理接口模块213允许发送ATM信元。
物理接口模块213,是一个标准Utopia接口,将信元帧发送模块212发送的ATM信元发送给物理层芯片102,实现流量控制。
请参阅图5所示,为本发明PVC通道带宽控制处理流程图。并结合图2,对于本发明的带宽控制模块209数据处理的步骤如下:
步骤a,读取PVC通道状态参数,ATM信元发送模块207发出查询命令后,带宽控制模块209从PVC状态缓存模块205读回该PVC通道的下一ATM信元发送时刻Time0,同时从PVC带宽配置模块206读回系统的PVC通道带宽配置参数Step。
步骤b,将Time0与Counter_1和Time1进行比较,带宽控制模块209将下一ATM信元发送时刻Time0分别与基准时钟参数Counter_1和系统上一ATM信元发送时刻Time1进行比较,判断是否允许ATM信元发送模块207发送ATM信元。
步骤c,判断Time0是否小于等于Counter_1,如果下一ATM信元发送时刻Time0小于等于基准时钟参数Counter_1,则转到步骤d执行,否则转到步骤i执行。
步骤d,判断Time0是否小于等于Time1,如果下一ATM信元发送时刻Time0小于等于系统上一ATM信元发送时刻Time1,则转到步骤e执行,否这转到步骤g执行。
步骤e,判断Time1是否小于等于Counter_1,如果系统上一ATM信元发送时刻Time1小于等于基准时钟参数Counter_1,则转到步骤f执行,否则转到步骤h执行。
步骤f,更新各参数,更新参数Time0和Time1,并返回ATM信元间隔参数Step0,以供ATM信元发送模块207使用。这时下一ATM信元发送时刻Time0的值为Counter_1与Step之和,上一ATM信元发送时刻Time1的值就为当前Counter_1的值。ATM信元间隔参数Step0为零。
步骤g,更新各参数,更新参数Time0和Time1,并返回ATM信元间隔参数Step0,以供ATM信元发送模块207使用。这时下一ATM信元发送时刻Time0的值为Counter_1与Step之和,上一ATM信元发送时刻Time1的值就为当前Counter_1的值。ATM信元间隔参数Step0为零。
步骤h,更新各参数,更新参数Time0和Time1,并返回ATM信元间隔参数Step0,以供ATM信元发送模块207使用。这时下一ATM信元发送时刻Time0的值为Time1与Step之和,上一ATM信元发送时刻Time1的值不变。ATM信元间隔参数Step0为零。
步骤i,判断Time0是否小于等于Time1,如果下一ATM信元发送时刻Time0小于等于系统上一ATM信元发送时刻Time1,则转到步骤n执行,否则转到步骤j执行。
步骤j,判断Time1是否小于等于Counter_1,如果系统上一ATM信元发送时刻Time1小于等于基准时钟参数Counter_1,则转到步骤k执行,否则转到步骤o执行。
步骤k,更新参数Step0,ATM信元间隔参数Step0的值为下一ATM信元发送时刻Time0与基准时钟参数Counter_1之差。
步骤l,判断Step0是否小于等于Step1,如果ATM信元间隔参数Step0小于等于系统配置的最大带宽的时间间隔数Step1,则转到步骤m执行,否则转到步骤q执行。
步骤m,更新各参数,更新参数Time0和Time1,并返回ATM信元间隔参数Step0,以供ATM信元发送模块207使用。这时下一ATM信元发送时刻Time0的值为Time0与Step之和,上一ATM信元发送时刻Time1的值为更新前的Time0值。ATM信元间隔参数Step0保持不变。
步骤n,更新各参数,更新参数Time0和Time1,并返回ATM信元间隔参数Step0,以供ATM信元发送模块207使用。这时下一ATM信元发送时刻Time0的值为Time1与Step之和,上一ATM信元发送时刻Time1的值保持不变。ATM信元间隔参数Step0为零。
步骤o,更新参数Step0,ATM信元间隔参数Step0的值为下一ATM信元发送时刻Time0与上一ATM信元发送时刻Time1之差。
步骤p,设置允许发送标志,带宽控制模块209设置一个标志位,表明允许ATM信元发送模块207从ATM信元存储器201中读取一个ATM信元。
步骤q,返回,判决完成,将下一ATM信元发送时刻Time0存回PVC状态缓存模块205中,并返回步骤a,等待下一次操作。
请参阅图6所示,为本发明ATM信元处理流程图。对于进入本发明的ATM信元的处理步骤如下:
步骤1,初始化PVC状态,初始化PVC状态缓存模块205,使所有PVC通道的下一ATM信元指针都指向零。该初始化操作每一秒钟执行一次,受基准时刻生成模块210控制。
步骤2,判断是否进行初始化操作,查询基准时刻生成模块210状态,如果一秒钟计时结束,则返回步骤1执行初始化操作,否则继续执行下一步操作。
步骤3,产生PVC通道号,ATM信元发送模块207生成需要查询的PVC通道号。
步骤4,查询PVC通道,根据步骤3产生的PVC通道号查询PVC管理模块204。
步骤5,判断被查询的PVC通道是否有ATM信元发送,当查询PVC管理模块204时,PVC管理模块204返回对应PVC通道的FIFO队列状态。如果有ATM信元发送,则下一步转入步骤6执行,否则返回步骤2。
步骤6,查询带宽控制器,根据步骤3产生的PVC通道号查询带宽控制模块209。
步骤7,判断是否允许读取,ATM信元发送模块207根据带宽控制模块209和信元帧缓冲器208返回的值,决定是否从ATM信元存储器201读取一个ATM信元。如果允许读取一个ATM信元,则下一步转入步骤8执行,否则返回步骤2。
步骤8,读取ATM信元并封装帧,ATM信元发送模块207从PVC管理模块204读回ATM信元的开始地址,从ATM信元存储器201中读取一个ATM信元,并根据查询带宽控制模块209返回的值Step0组装成一个信元帧。
步骤9,存储信元帧,ATM信元发送模块207将组装好的信元帧存入信元帧缓冲器208中,并设置信元帧标志位,向信元帧发送模块212表示信元帧缓冲器208中存在至少一个完整的信元帧。
步骤10,返回,信元帧封装完成,返回步骤2。
步骤11,查询信元帧缓冲器,信元帧发送模块212不断查询流量控制模块211的信元帧标志位。
步骤12,判断信元帧缓冲器208中是否有信元帧,如果有,则转到下一步执行,否则返回步骤11。
步骤13,读取信元帧头,首先信元帧发送模块212从信元帧缓冲器208中只读取一个字的信元帧头,获取ATM信元间隔参数Step0。
步骤14,查询计数器Counter_2,信元帧发送模块212读取计数器Counter_2的当前值。
步骤15,判断是否允许发送该ATM信元,信元帧发送模块212将Step0与Counter_2的值进行比较,如果Step0的值小于或者等于Counter_2值,则转到下一步执行,否则返回到步骤14。
步骤16,将计数器Counter_2值清零,计数器Counter_2清零后继续计数。
步骤17,发送ATM信元,信元帧发送模块212继续从信元帧缓冲器208中读取信元帧的后续部分,即不含帧头的信元帧,将ATM信元发送到物理接口模块213。
步骤18、返回,一个信元帧发送完后,返回步骤11。
采用本发明所述方法和装置取得了使用FPGA替换专用SAR芯片实现流量控制的技术进步,达到了精确控制ATM信元速率的效果,节省了系统成本,提高了系统可靠性和市场竞争力等等。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
机译: 基于块的FBLMS算法的基于浮动点的FPGA实现装置和方法
机译: 使用基于虚拟带宽的方法为ATM网络中的流量控制执行显式速率标记的系统和方法
机译: 一种管理由异步网络,特别是ATM网络承载的数字编码消息的速率的方法,以及一种用于实现该速率的设备。