一种 GTP-U 数据转发方法 【技术领域】
本发明涉及数据通信领域, 尤其是涉及一种 GTP-U 数据转发方法。背景技术 LTE(Long Term Evolution, 长期演进 ) 也被通俗的称为 3.9G, 集很多先进技术和 优良的系统架构于一身。 该技术可提升无线宽带网络中的数据传输率并保障稳定的服务品 质与数据吞吐量, 被视作从 3G 向 4G 演进的主流技术。
GTP-U(User plane of GPRS Tunneling Protocol, GPRS 隧道协议用户平面 ) 是 LTE 接口用户面协议, 具有 Iu-PS 用户面数据的传输和管理功能。 在 LTE 基站侧的 GTP-U 中, 现有技术是基于 TCP/IP 协议栈对数据进行转发。以下行数据转发为例, 图 1 示出了 GTP-U 数据由主控处理单元发送到基带处理单元的具体过程 : 先经过主控单元的网络驱动层接收 GTP-U 数据, 然后将数据放到 TCP/IP 协议栈, 在 IP 层和 UDP 层对数据进行处理, 如组包等, 并将数据发送到 socket 出口发生一次拷贝后将数据发送至 GTP 层, 并再由 GTP 层对数据进 行处理后再进入 TCP/IP 协议栈, 经过 UDP 层、 IP 层并在 socket 接口发生一次拷贝后将数据 发送到主控单元的网络驱动, 之后通过网络驱动发送到相应的基带处理单元上。基带处理 单元通过网络驱动接收数据并将其放入 TCP/IP 协议栈, 先后经 IP 层和 UDP 层, 并在 socket 接口发生一次拷贝后将数据发送至 PDCP 层。
上行 GTP-U 数据转发方法与下行 GTP-U 数据转发方法原理一致, 只是方向相反。
在上述方法中, GTP-U 数据在从主控单元到基带处理单元过程中, 需要进出多次协 议栈做大量工作, 并需要在 socket 接口进行多次拷贝, 转发过程复杂。而且其中的很多工 作对于 GTP-U 这种基于 UDP 的协议往往是不需要的。 另外 GTP-U 是用户面协议, 其业务量比 较大, 需要占用大量的网络协议栈资源。现在使用的 TCP/IP 协议栈往往达不到这种要求。 因此利用上述方法对 GTP-U 数据转发的速率比较低, 不能满足当前对 GTP-U 数据转发速率 的需要。
发明内容
本发明的目的在于提供一种 GTP-U 数据转发方法, 能够使数据不必进入 TCP/IP 的 协议栈而进行转发, 提高了数据的转发速率。本发明提供了如下方案 :
一种 GTP-U 数据转发方法, 所述方法包括 :
在主控单元的网络驱动层调用第一回调函数将接收的 GTP-U 数据缓存并发送至 GTP 层 ;
在所述 GTP 层修改所述 GTP-U 数据的头内容, 生成符合 PDCP 层需要的 PDCP 数据 并发送至基带处理单元 ;
在所述基带处理单元的网络驱动层调用所述第一回调函数将所述 PDCP 数据缓 存。
优选的, 当所述的 PDCP 层在所述的基带处理单元时, 所述方法还包括 :将所述基带处理单元的网络驱动层缓存的所述 PDCP 数据发送至所述 PDCP 层。
优选的, 当所述的 PDCP 层在所述的主控单元时, 所述发送至基带处理单元包括 :
发送所述 PDCP 数据至所述 PDCP 层 ;
所述 PDCP 层发送所述 PDCP 数据至所述基带处理单元的网络驱动层。
优选的, 在所述发送所述第一数据至基带处理单元前, 所述方法还包括 :
对所述 PDCP 数据的头内容编解码, 生成 PDCP 压缩数据 ;
所述发送所述 PDCP 数据至基带处理单元包括 :
发送所述 PDCP 压缩数据至所述基带处理单元。
优选的, 当所述 GTP-U 数据为 IP 分片数据时, 在所述 GTP 层修改所述 GTP-U 数据 的头内容, 生成符合 PDCP 层需要的 PDCP 数据前, 所述方法还包括 :
将具有相同 ID 的 IP 分片数据缓存在第一链表中 ; 其中, 所述第一链表以红黑树的 形式缓存所述 IP 分片数据 ;
当所述具有相同 ID 的 IP 分片数据全部缓存时, 判断所述具有相同 ID 的 IP 分片 数据是否为 GTP-U 数据 ;
若是, 则所述 GTP 层修改所述 GTP-U 数据的头内容, 生成符合 PDCP 层需要的 PDCP 数据包括 :
在所述 GTP 层修改所述具有相同 ID 的 IP 分片数据的头内容, 生成符合所述 PDCP 层需要的 PDCP 数据 ;
将所述 PDCP 数据组成巨帧 ;
所述发送至基带处理单元包括 :
发送所述巨帧至所述基带处理单元。
优选的, 所述方法还包括 :
以所述 IP 分片数据的 ID 为依据, 建立所述 IP 分片数据的缓存索引。
优选的, 所述方法还包括 :
当所述红黑树溢出时, 查找所述缓存索引, 确定先溢出的 IP 分片数据的 ID ;
删除所述红黑树中具有所述 ID 的 IP 分片数据 ;
删除所述缓存索引中所述先溢出的 IP 分片数据的 ID。
本发明还提供了一种 GTP-U 数据转发方法, 所述方法包括 :
将基带处理单元接收的数据发送至主控单元 ;
在所述主控单元的网络驱动层调用第二回调函数将所述数据缓存并发送至 GTP 层;
在所述 GTP 层将接收的所述数据的头内容修改, 生成所述 GTP 层需要的 GTP-U 数 据并发送。
优选的, 当 PDCP 层在所述基带处理单元时, 所述将基带处理单元接收的数据发送 至主控单元包括 :
将所述基带处理单元接收的数据发送至所述 PDCP 层 ;
将所述 PDCP 层接收的数据的头内容进行修改, 生成符合所述 PDCP 层需要的 PDCP 数据。
优选的, 当所述 PDCP 层在所述的主控单元时, 所述发送至 GTP 层包括 :发送所述数据至所述 PDCP 层, 在所述 PDCP 层对所述数据的头内容进行修改, 生成 符合所述 PDCP 层需要的 PDCP 数据 ;
所述 PDCP 层发送所述 PDCP 数据至所述 GTP 层 ;
所述在所述 GTP 层将接收的所述数据的头内容修改, 生成所述 GTP 层需要的 GTP-U 数据并发送包括 :
在所述 GTP 层将接收的所述 PDCP 数据的头内容修改, 生成所述 GTP 层需要的 GTP-U 数据并发送。 附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施例中所 需要使用的附图作简单地介绍, 显而易见地, 下面描述中的附图仅仅是本发明的一些实施 例, 对于本领域普通技术人员来讲, 在不付出创造性劳动性的前提下, 还可以根据这些附图 获得其他的附图。
图 1 是 GTP-U 数据的传统转发流程示意图 ;
图 2 是本发明实施例 1 方法流程图 ;
图 3 是本发明实施例 3 方法流程图 ; 图 4 是本发明实施例中 IP 分片数据缓存结构图 ; 图 5 为本发明实施例 4 方法流程图。具体实施方式
下面将结合本发明实施例中的附图, 对本发明实施例中的技术方案进行清楚、 完 整地描述, 显然, 所描述的实施例仅仅是本发明一部分实施例, 而不是全部的实施例。基于 本发明中的实施例, 本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例, 都属于本发明保护的范围。
本发明实施例 1 提供了一种 GTP-U 数据转发方法, 这一方法涉及 GTP-U 数据的下 行转发方法, 如图 2 所示, 所述方法包括 :
S11、 在主控单元的网络驱动层调用第一回调函数将接收的 GTP-U 数据缓存并发 送至 GTP 层。
在下行 GTP-U 数据转发过程中, GTP-U 数据首先被发送至主控单元的网络驱动层 即网络接口处。为避免数据被发送至 TCP/IP 协议栈, 首先在网络驱动层调用第一回调函 数, 将接收的 GTP-U 数据缓存起来。之后越过 IP 层和 UDP 层将数据直接发送至 GTP 层。
S12、 在所述 GTP 层修改所述 GTP-U 数据的头内容, 生成符合 PDCP 层需要的 PDCP 数据并发送至基带处理单元。
S13、 在所述基带处理单元的网络驱动层调用所述第一回调函数将所述 PDCP 数据 缓存。
在本发明的具体实施例中, PDCP 层处于基带处理单元。 因此生成的 PDCP 数据首先 要从 GTP 层发往主控单元的网络驱动, 并由网络驱动发送至基带处理单元的网络驱动。为 避免将接收的数据放入 TCP/IP 协议栈, 基带处理单元的网络驱动层会调用第一回调函数, 将接收的 PDCP 层数据缓存, 并发送至 PDCP 层。当 PDCP 层与 GTP 层同处于主控单元时, 生成的 PDCP 数据会首先在主控单元内由 GTP 层发送至 PDCP 层。再有 PDCP 层经由主控单元的网络驱动层发送至基带处理单元的网 络驱动。基带处理单元的网络驱动调用第一回调函数将此数据缓存并在内部进行处理。
在本发明的实施例 2 中, 当生成的 PDCP 数据较大时, 在所述发送所述 PDCP 数据至 基带处理单元前, 所述方法还包括 :
对所述 PDCP 数据的头内容编解码, 生成 PDCP 压缩数据 ;
其中, 步骤 S13 具体为 :
发送所述 PDCP 压缩数据至所述基带处理单元。
值得注意的是, PDCP 层的压缩数据在到达 PDCP 层后会解压缩。当 PDCP 层在所述 的主控单元时, 发送至基带处理单元的实际上是解压缩后的 PDCP 数据。
链路层具有最大传输单元 (Maximum Transmission Unit, 以下简称 MTU) 这个特 性, 它限制了数据帧的最大长度, 因此如果数据包的长度超过了 MTU, 那么就要对数据包进 行分片 (fragmentation) 操作, 使每一片的长度都小于或等于 MTU。因此, 很多时候 GTP 层 接收到的数据是 IP 分片数据。具有统一标识 ID 的分片数据除第一个 IP 分片数据包外, 后 续的 IP 分片数据包都没有 UDP 头和 GTP-U 头。在本发明的实施例 3 中, 在所述 GTP 层修改 所述 GTP-U 数据的头内容, 生成符合 PDCP 层需要的 PDCP 数据前, 参见图 3, 对于 IP 分片数 据, 本发明方法还包括 :
S21、 将具有相同 ID 的 IP 分片数据缓存在第一链表中。 为之后查询方便, 所述第一链表可以以平衡二叉树或散列表的形式缓存 IP 分片数据。 平衡二叉树又被称为 AVL 树, 它是一颗空树或他的左右两个子树的高度差的绝对 值不超过 1, 并且左右两个子树都是一颗平衡二叉树。
更优选的, 在本发明中的平衡二叉树为红黑树。它的操作有着良好的最坏情况运 行时间, 并且在实践中是高效的 : 它可以在 0(logn) 时间内做查找, 插入和删除, 这里的 n 是 树中元素的数目。相对其他的存储方式, 红黑树的高校查询方式大大缩短了查询的时间。
S22、 当所述具有相同 ID 的 IP 分片数据全部缓存时, 判断所述具有相同 ID 的 IP 分片数据是否为 GTP-U 数据。
S23、 若是, 在所述 GTP 层修改所述具有相同 ID 的 IP 分片数据的头内容, 生成符合 所述 PDCP 层需要的 PDCP 数据。
S24、 将所述 PDCP 数据组成巨帧。
S25、 发送所述巨帧至所述基带处理单元。
在本发明的具体实施例中, 为进一步提高查询速度, 所述方法还包括 : 以所述 IP 分片数据的 ID 为依据, 建立所述 IP 分片数据的缓存索引。
其具体的数据存储结构图如图 4 所示。在数据的整体存储中, A1 部分为红黑树, 其中分布有存储分片数据的链表, A2 部分为以 IP 分片数据的 ID 为依据建立的缓存索引。 通过建立的缓存索引我们能够清楚的知道 IP 分片数据包到达的先后顺序。
在本发明的具体实施例中, 当所述红黑树溢出时, 可以通过查找所述缓存索引, 确 定最先溢出的 IP 分片数据的 ID。然后删除所述红黑树中具有所述 ID 的 IP 分片数据, 并删 除所述缓存索引中所述先溢出的 IP 分片数据的 ID。
综上所述, 本发明通过在主控单元和基带处理板的网络驱动层分别调用回调函数 将接收的 GTP-U 数据缓存, 避免了将数据投入 TCP/IP 协议栈进行大量处理, 同时, 在 GTP 层 将 GTP-U 数据的头内容修改为 PDCP 层需要的数据, 使其承载了 PDCP 层的信息, 避免了对其 进行拷贝操作。可见本发明的方法减少了 GTP-U 数据的转发过程, 从而提高了 GTP-U 数据 的转发速率。
另外, 本发明通过对 IP 分片数据采取红黑树的形式缓存, 并建立缓存索引的方 法, 很大程度上提高了对 IP 分片数据的查询速度。对 IP 分片数据组成巨帧进行发送的形 式, 使得在基带处理单元不需要对其进行分段操作。从而进一步提高了 GTP-U 数据的转发 速率。
本发明实施例 4 还提供了一种 GTP-U 数据转发方法, 参见图 5, 该方法为 GTP-U 数 据的上行转发方法, 所述方法包括 :
S31、 将基带处理单元接收的数据发送至主控单元。
基带处理单元首先会将接收的数据做处理。在本发明的具体实施例中, 当 PDCP 层 在所述基带处理单元时, PDCP 层会首先将所述 PDCP 层接收的数据的头内容进行修改, 生成 符合所述 PDCP 层需要的 PDCP 数据。再由 PDCP 层经由基带处理单元的网络驱动层发送至 主控单元。
S32、 在所述主控单元的网络驱动层调用第二回调函数将所述数据缓存并发送至GTP 层。 在本发明的具体实施例中, 当所述 PDCP 层在所述的主控单元时, 基带处理单元会 经由其网络驱动层发送所述数据至主控单元的网络驱动层。 主控单元的网络驱动层调用第 二回调函数将所述数据缓存并首先发送至 PDCP 层。在 PDCP 层对接收的数据的头内容进行 修改, 生成符合所述 PDCP 层需要的 PDCP 数据。之后将 PDCP 数据发送至 GTP 层。
S33、 在所述 GTP 层将接收的所述数据的头内容修改, 生成所述 GTP 层需要的 GTP-U 数据并发送。
在 GTP 层对 PDCP 数据的头内容进行修改, 生成所述 GTP 层需要的 GTP-U 数据并发 送出去。
综上所述, 本发明通过在主控板的网络驱动层调用回调函数将基带板接收的数据 缓存, 避免了将数据投入 TCP/IP 协议栈, 进行大量不必要的处理工作。同时, 在 PDCP 层和 GTP 层对接收的数据直接进行修改, 避免了多次拷贝。 可见本发明的方法减少了 GTP-U 数据 的转发过程, 从而提高了 GTP-U 数据的转发速率。
以上对本发明所提供的一种 GTP-U 数据转发方法进行了详细介绍, 本文中应用了 具体个例对本发明的原理及实施方式进行了阐述, 以上实施例的说明只是用于帮助理解本 发明的方法及其核心思想 ; 同时, 对于本领域的一般技术人员, 依据本发明的思想, 在具体 实施方式及应用范围上均会有改变之处。综上所述, 本说明书内容不应理解为对本发明的 限制。