1.一种访问存储海量并发TCP流的流记录的方法,其特征在于,所述方法,包括下列步骤:步骤100.初始化模块构建用于存储TCP流记录的二维TCP流记录表存储于DRAM中,DRAM中的每一个存储阵列存储TCP流记录表的若干行TCP流记录,根据所述TCP流记录表建立流记录索引表存储于SRAM中,构建用于保存最近访问的发生数据传输的TCP流的TCP流记录缓存存储于SRAM中;步骤200.报文接收模块根据接收到的报文的四元组进行哈希运算,根据运算结果选择一个与所述DRAM中的存储阵列对应的报文先入先出队列存储所述报文,并相应更新所述流记录索引表;步骤300.报文提取模块轮询访问所有所述报文先入先出队列,从中读取待处理报文;步骤400.根据当前待处理报文的四元组哈希运算结果访问流记录索引表和TCP流记录缓存,判断TCP流记录缓存中是否存在当前待处理报文的相关TCP流记录,若是,则直接访问所述TCP流记录缓存;否则,按照从所述流记录索引表读出的访问索引指示的顺序访问所述TCP流记录表;并根据访问结果和报文信息更新与当前处理报文相关的TCP流的状态,并同时更新所述TCP流记录缓存、流记录索引表和TCP流记录表。
2.根据权利要求1所述的访问存储海量并发TCP流的流记录的方法,其特征在于,所述步骤100,包括下列步骤:步骤110.DRAM的每一个存储阵列对应一个报文先入先出队列,所述报文先入先出队列用于缓存报文接收模块传过来的报文;步骤120.根据所述TCP流记录表的每一行附带的一个访存索引信息,所有的访存索引信息依照线性表的方式存储在SRAM中,构成一个流记录索引表存储于SRAM中;步骤130.构建TCP流记录缓存,用于保存最近访问的发生了数据传输的TCP流的流记录。
3.根据权利要求2所述的访问存储海量并发TCP流的流记录的方法,其特征在于,所述访存索引信息,是由两个字段组成:有效位字段,记录了在这一行中存储的有效的TCP流记录个数;排序位字段,是一行中所有TCP流记录的最近最常被使用排序。
4.根据权利要求1所述的访问存储海量并发TCP流的流记录的方法,其特征在于,所述步骤200,包括下列步骤:步骤210.所述报文接收模块对接收到的报文的四元组进行哈希运算,根据哈希运算的结果作为访存索引信息,查找所述流记录索引表,确定与接收到的报文相关的TCP流记录存储在TCP流记录表中的行号;步骤220.根据所述访存索引信息和TCP流记录表中的行号,确定与接收到的报文相关的TCP流记录放在DRAM的哪个存储阵列上,并将所述接收到的报文分发至该存储阵列对应的报文先入先出队列中缓存。
5.根据权利要求1所述的访问存储海量并发TCP流的流记录的方法,其特征在于,所述步骤400,包括下列步骤:步骤410.判断当前处理报文的相关流记录是否存储在所述TCP流记录表的相应行中,若是,根据当前处理报文的包头信息更新流记录,并在当前处理报文需要关闭一条TCP流时,修改访问索引将TCP流记录表中这一位置的TCP流记录置为无效;否则,执行步骤420;步骤420.判断当前处理报文是否需要新建一条TCP流,若是,则执行步骤430;否则,丢弃当前处理报文;步骤430.判断TCP流记录表中对应所述索引位置上是否存在无效的TCP流记录,若是,则新建一条TCP流记录并替换无效的TCP流记录;否则,新建一条TCP流记录并替换TCP流记录表在这一行上最近一个报文最早到来的TCP流记录。
6.一种访问存储海量并发TCP流的流记录的系统,其特征在于,包括:初始化模块,构建用于存储TCP流记录的二维TCP流记录表存储于DRAM中,DRAM中的每一个存储阵列存储TCP流记录表的若干行TCP流记录,根据所述TCP流记录表建立流记录索引表存储于SRAM中,构建用于保存最近访问的发生数据传输的TCP流的TCP流记录缓存存储于SRAM中;报文接收模块,用于接收报文,并根据接收到的报文的四元组进行哈希运算,根据运算结果选择一个与所述DRAM中的存储阵列对应的报文先入先出队列存储所述报文,并相应更新所述流记录索引表;报文提取模块,轮询访问所有所述报文先入先出队列,从中读取待处理报文;流记录访问模块,根据当前待处理报文的四元组哈希运算结果访问流记录索引表和TCP流记录缓存,判断TCP流记录缓存中是否存在当前待处理报文的相关TCP流记录,若是,则直接访问所述TCP流记录缓存;否则,按照从所述流记录索引表读出的访问索引指示的顺序访问所述TCP流记录表;并根据访问结果和报文信息更新与当前处理报文相关的TCP流的状态,并同时更新所述TCP流记录缓存、流记录索引表和TCP流记录表。
7.根据权利要求6所述的访问存储海量并发TCP流的流记录的系统,其特征在于,所述初始化模块,包括:报文先入先出队列初始化子模块,用于为DRAM中每一个存储阵列对应建立一个报文先入先出队列,所述报文先入先出队列用于缓存所述报文接收模块传过来的报文;流记录索引表初始化子模块,用于根据所述TCP流记录表的每一行附带的一个访存索引信息,将所有的访存索引信息依照线性表的方式存储在SRAM中,构成一个流记录索引表存储于SRAM中;流记录缓存初始化子模块,用于构建TCP流记录缓存,保存最近访问的发生了数据传输的TCP流的流记录。
8.根据权利要求6所述的访问存储海量并发TCP流的流记录的系统,其特征在于,所述报文接收模块,包括:计算模块,用于对接收到的报文的四元组进行哈希运算,将哈希运算的结果作为访存索引信息,查找所述流记录索引表,确定与接收到的报文相关的TCP流记录存储在TCP流记录表中的行号;报文缓存分配模块,用于根据所述访存索引信息和TCP流记录表中的行号,确定与接收到的报文相关的TCP流记录放在DRAM的哪个存储阵列上,并将所述接收到的报文分发至该存储阵列对应的报文先入先出队列中缓存。
9.根据权利要求6所述的访问存储海量并发TCP流的流记录的系统,其特征在于,所述报文提取模块内设多个工作单元,可同时处理多个报文查找TCP流记录的请求;报文提取模块轮询访问报文先入先出队列获取待处理报文,按照待处理报文的输入顺序分发给本模块内部的空闲工作单元。
10.根据权利要求6所述的访问存储海量并发TCP流的流记录的系统,其特征在于,所述流记录访问模块,包括:匹配模块,用于判断当前处理报文的相关流记录是否存储在所述TCP流记录表的相应行中,若是,根据当前处理报文的包头信息更新流记录,并在当前处理报文需要关闭一条TCP流时,修改访问索引将TCP流记录表中这一位置的TCP流记录置为无效;否则,触发判断模块;判断模块,用于判断当前处理报文是否需要新建一条TCP流,若是,则触更新模块;否则,丢弃当前处理报文;更新模块,判断TCP流记录表中对应所述索引位置上是否存在无效的TCP流记录,若是,则新建一条TCP流记录并替换无效的TCP流记录;否则,新建一条TCP流记录并替换TCP流记录表在这一行上最近一个报文最早到来的TCP流记录。
展开