一种应用于l2tp中的数据处理方法及装置的制造方法_2

文档序号:9711408阅读:来源:国知局
的监听序列重新分配内存,以确保重新分配的内存长度大于或者等于满足预设的监听条件 的文件描述符的总长度;复制子模块,用来将所述select函数的监听序列占用的初始内存 中的文件描述符复制到重新分配的内存中。
[0033] 进一步地,所述装置还包括:内存释放单元,用来在所述复制子模块将所述select 函数的监听序列中的文件描述符复制到重新分配的内存中之后,释放所述select函数的监 听序列占用的初始内存。
[0034] 在现有技术中,在L2TP中,需要建立256个隧道,每个隧道需要5个fd,那么至少要 有256*5 = 1280个比特位,所以select函数的1024个比特位就不能处理该业务,从而导致了 不能直接用select函数来监听。与现有技术相比,本发明提供的一种应用于L2TP中的数据 处理方法及装置,提出了在select函数监听的1024的比特位的后面扩展任意多个比特位, 使得大于1024的fd需要select监听的实现成为了可能。通过对创建的隧道进行了监听条件 的判断,将满足预设的监听条件的文件描述符分配至select函数的监听序列中,同时将不 满足预设的监听条件的文件描述符分配至select函数的监听序列之后,可以充分利用 select函数的监听序列,从而能够对满足预设的监听条件的文件描述符进行监听,扩展了 select函数监听的使用范围。另外,通过对监听序列之后的文件描述符确定索引,从而可以 方便地确定所有隧道中的文件描述符的位置。
[0035]本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变 得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利 要求书以及附图中所特别指出的结构来实现和获得。
【附图说明】
[0036]附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本 发明的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
[0037]图1为本发明实施例提供的一种应用于L2TP中的数据处理方法流程图。
[0038]图2为本发明实施例提供的一种应用于L2TP中的数据处理装置功能模块图。
【具体实施方式】
[0039]为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明 的实施例进行详细说明。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中 的特征可以相互任意组合。
[0040] 在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中 执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺 序执行所示出或描述的步骤。
[0041] 图1为本发明实施例提供的一种应用于L2TP中的数据处理方法流程图。虽然下文 描述流程包括以特定顺序出现的多个操作,但是应该清楚了解,这些过程可以包括更多或 更少的操作,这些操作可以顺序执行或并行执行(例如使用并行处理器或多线程环境)。如 图1所示,所述方法可以包括:
[0042] Sl:响应于创建L2TP隧道的请求,建立预设数量的socket。
[0043] 在L2TP业务中,客户端可以发起创建L2TP隧道的请求。在实际应用场景中,客户端 例如可以请求建立256个隧道,在本发明实施例中,仅对第一个建立隧道的过程进行解释, 后续的255个隧道均采用相同的方法进行建立。
[0044] 服务器接收到客户端发起的创建隧道的请求后,可以响应于该请求,建立预设数 量的socket(即套接字)。在本发明实施例中,所述socket的数量可以为5个,分别对应着5个 不同的文件描述符,所述5个不同的文件描述符可以分别记为fdll,fdl2,fdl3,fdl4&& fdl5。其中,fd后的第一个数字即代表隧道的编号,这里以第一个隧道为例进行解释,因此 第一个数字为l;fd后的第二个数字即代表文件描述符的编号,这里共计有5个文件描述符, 因此第二个数字为1至5。
[0045] S2:判断所述socket对应的文件描述符的类型是否满足预设的监听条件,若满足, 进行S3;若不满足,进行S4。
[0046] 所述L2TP业务中的服务器建立了预设数量的socket之后,便可以判断所述socket 对应的文件描述符的类型是否满足预设的监听条件,并根据判断的结果对所述socket对应 的文件描述符进行归类。
[0047]文件描述符的总长度为文件描述符的总个数;监听序列的长度为select函数能够 监听到的文件描述符的总个数。
[0048]在L2TP中,select函数往往具备一个监听序列,该监听序列的长度是预先设定的。 在本发明实施例中,该监听序列的长度例如可以为1024位,也就是说select函数可以监听 1024个文件描述符。由于本发明实施例共计需要建立256个隧道,每个隧道中包含了 5个文 件描述符,那么共计有256*5 = 1280个文件描述符,已经超出了监听序列的长度。如果根据 现有技术中的方法,便需要对select函数的监听序列进行扩展。而采用本发明实施例中提 供的方法,则可以避免对select函数的监听序列进行扩展。在本发明实施例中,判断所述 socket对应的文件描述符的类型是否满足预设的监听条件具体可以包括判断所述socket 对应的文件描述符是否需要收发数据包,若需要,则确定所述socket对应的文件描述符的 类型满足预设的监听条件;若不需要,则确定所述socket对应的文件描述符的类型不满足 预设的监听条件。
[0049] S3:将满足预设的监听条件的socket对应的文件描述符分配至能够容纳文件描述 符的select函数的监听序列中。
[0050] S4:将不满足预设的监听条件的socket对应的文件描述符分配至select函数的监 听序列之后。
[0051 ] 在本发明的具体实施例中,例如,对于fdll隧道至fdl5隧道,由于fdll隧道与客户 端绑定用于收发数据包,因此fdll隧道对应的文件描述符的类型满足预设的监听条件,则 可以将fdll隧道对应的文件描述符分配至select函数的监听序列中;fdl2隧道用于在内核 建立数据结构,不需要收发数据包,则可以将fdl2隧道对应的文件描述符分配至select函 数的监听序列之后;fdl3隧道用于将L2TP会话的相关参数传给内核,不需要收发数据包,则 可以将fdl3隧道对应的文件描述符分配至select函数的监听序列之后;fdl4隧道以及fdl5 隧道则用于会话阶段PPP状态机的维护,需要收发数据包,则可以将fdl4隧道以及fdl5隧道 对应的文件描述符分配至select函数的监听序列中。由此可见,原先的5个文件描述符,仅 有3个文件描述符被分配至select函数的监听序列中,而另外2个文件描述符被分配至 select函数的监听序列之后,这样,当完成256个隧道的建立后,select函数的监听序列中 仅存在256*3 = 768个文件描述符,并没有超出监听序列的长度,避免了重新对监听序列进 行扩展。
[0052]在上述技术方案的基础上,作为一种优选的【具体实施方式】,本发明实施例提供的 应用于L2TP中的数据处理方法还包括:
[0053] 根据所述select函数的监听序列的长度,为分配至select函数的监听序列之后的 文件描述符确定索引。
[0054]具体地,在所述select函数的监听序列中的文件描述符可以按照正常的方式进行 管理,但是位于所述select函数的监听序列之后的文件描述符也需要制定相关的索引机 制,才能够正确地对其进行定位。因此,在本发明实施例中在完成对文件描述符的分配后, 可以根据所述select函数的监听序列的长度,为分配至select函数的监听序列之后的文件 描述符确定索引。
[0055]具体地,可以根据预设顺序,确定分配至select函数的监听序列之后的文件描述 符的偏移量。所述的预设顺序可以为文件描述符被分配的顺序,例如fdl2隧道和fdl3隧道 对应的文件描述符均被分配至select函数的监听序列之后,而fdl2隧道对应的文件描述符 是最先被分配的,因此fdl
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1