GTP下行数据传输优化方法及装置
技术领域
本发明实施例涉及移动通信技术领域,尤其涉及一种GTP下行数据传输优化方法及装置。
背景技术
当前移动通信网络的数据传输是上下行非对称的,用户对下行数据的需求远远高于上行数据,并且在5G时代,下行数据流量会逐渐加大,对基站也提出了更高的要求,因此下行数据的传输性能优化势在必行。
图1为现有技术中5G基站的上下行数据传输流程示意图,如图1所示,基站中的数据传输经由物理(Physical,PHY)层向上传递到介质访问控制(Media Access Control,MAC)层、无线链路控制(Radio Link Control,RLC)层、分组数据汇聚(Packet DataConvergence Protocol,PDCP)层,通过L3协议配置的隧道信息,将用户数据封装,通过GPRS隧道协议(GPRS Tunnelling Protocol,GTP)层、用户数据报协议(User DatagramProtocol,UDP)层、互联网协议(Internet Protocol,IP)层,最后通过以太网Ethernet发送到核心网(Evolved Packet Core,EPC),其中,GTP层作为5G基站数据传输的承上启下部分,在以太网数据传输与基站空口数据传输之间,是很重要的数据处理模块。
现有技术中,5G基站GTP下行数据传输方法主要包括以下两种:一、基于Linux标准架构的数据传输方法,图2为现有技术中基于Linux标准架构的5G基站的下行数据传输流程示意图,如图2所示,5G下行数据由EPC发送到基站设备,通过基站的Linux系统的网卡收包驱动送到IP协议栈,经过Ethernet、IP、UDP等IP协议栈子模块处理后,传递到Linux的用户态空间,Linux的MCU上MAC、RLC、PDCP、GTP等模块归属于Linux系统的用户态程序,GTP下行数据包被收取到Linux用户态后,经过GTP模块处理,转发到PDCP层、RLC层、MAC层后,再发送到PHY层,其中PHY层由DSP或者FPGA实现。二、基于私有协议的GTP数据传输方法,标准协议的GTP数据传输方法是按照GTP的数据格式,单个以太网报文进行传输,私有协议的GTP数据传输优化方法是在GTP数据传输的两端,即基站和EPC侧进行修改,将单个GTP数据包整合成一个以太网包处理,在处理上行数据时,基站将同一个GTP隧道的数据包进行组装,一次性的调用Linux socket发送到EPC,EPC收到之后,解析到GTP数据包是一个组合包后,分拆为多个GTP数据包,然后再将分拆后的GTP数据包按照正常的GTP协议进行处理;在处理下行数据时,EPC中的GTP模块将同一个GTP隧道的数据包进行组装,一次性的发送到基站,基站的GTP模块收到之后,解析到GTP数据包是一个组合包后,分拆为多个GTP数据包,然后再将分拆后的GTP数据包按照正常的GTP协议进行处理。
但是,现有技术中的第一种方案,需要消耗大量的Linux内核IP协议栈资源,Linux用户态空间和内核空间的切换开销大,数据处理效率低下,数据传输速率有待提高。第二种方案要求基站和EPC需要配合修改,在现网中EPC已经部署的情况下,增加基站并不能实施此GTP私有协议的方案。
发明内容
本发明实施例的目的是提供一种克服上述问题或者至少部分地解决上述问题的GTP下行数据传输优化方法及装置。
为了解决上述技术问题,一方面,本发明实施例提供一种GTP下行数据传输优化方法,包括:
对获取到的第一以太网数据包进行解析;
若判断获知所述第一以太网数据包包含第一GTP数据包,则提取所述第一GTP数据包中的隧道ID和有效载荷;
查找与所述第一GTP数据包中的隧道ID对应的第一目的终端信息;
将所述第一目的终端信息和所述第一GTP数据包中的有效载荷存储到缓冲区。
另一方面,本发明实施例提供一种GTP下行数据传输优化装置,包括:
解析模块,用于对获取到的第一以太网数据包进行解析;
提取模块,用于若判断获知所述第一以太网数据包包含第一GTP数据包,则提取所述第一GTP数据包中的隧道ID和有效载荷;
查找模块,用于查找与所述第一GTP数据包中的隧道ID对应的第一目的终端信息;
存储模块,用于将所述第一目的终端信息和所述第一GTP数据包中的有效载荷存储到缓冲区。
再一方面,本发明实施例提供一种电子设备,包括:
存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行上述的方法。
本发明实施例提供的GTP下行数据传输优化方法及装置,从逻辑上规避了Linux系统内核的IP协议栈,减少了内核态和用户态的切换开销。在接收到以太网数据包之后直接在Linux系统内核态对GTP数据进行处理,从而极大地简化了GTP数据的处理流程,提高了数据处理效率,进一步提高了数据传输速率。
附图说明
图1为现有技术中5G基站的上下行数据传输流程示意图;
图2为现有技术中基于Linux标准架构的5G基站的下行数据传输流程示意图;
图3为本发明实施例提供的GTP下行数据传输优化方法示意图;
图4为本发明实施例提供的基于Linux系统的5G基站的协议架构示意图;
图5为本发明实施例提供的筛选GTP数据的逻辑流程示意图;
图6为本发明实施例提供的UDP数据包分片示意图;
图7为本发明实施例提供的环形队列批量处理GTP下行数据流程示意图;
图8为本发明实施例提供的GTP下行数据传输优化装置示意图;
图9为本发明实施例提供的电子设备的结构示意图。
具体实施方式
为了使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图3为本发明实施例提供的GTP下行数据传输优化方法示意图,如图3所示,本发明实施例提供一种GTP下行数据传输优化方法,其执行主体为GTP下行数据传输优化装置,该方法适用于基于Linux系统的5G基站,该方法包括:
步骤S101、对获取到的第一以太网数据包进行解析;
步骤S102、若判断获知所述第一以太网数据包包含第一GTP数据包,则提取所述第一GTP数据包中的隧道ID和有效载荷;
步骤S103、查找与所述第一GTP数据包中的隧道ID对应的第一目的终端信息;
步骤S104、将所述第一目的终端信息和所述第一GTP数据包中的有效载荷存储到缓冲区。
具体来说,本发明实施例提供的GTP下行数据传输优化方法,其执行主体为GTP下行数据传输优化装置,该方法适用于基于Linux系统的5G基站。GTP下行数据传输优化装置包括解析模块、提取模块、查找模块和存储模块。
图4为本发明实施例提供的基于Linux系统的5G基站的协议架构示意图,如图4所示,本发明实施例提供的GTP下行数据传输优化方法,使用标准的5G协议,只涉及5G基站内部GTP的优化处理,兼容现有的EPC,而无需EPC做任何改动。
从协议层面上,本发明实施例提供的GTP下行数据传输优化方法,将GTP配置和GTP转发分离。EPC通过层三L3模块下发GTP配置,将GTP配置流程部署到Linux用户态。而将GTP转发流程部署到Linux内核态,在内核态获取以太网数据包后,直接在内核态进行GTP数据处理,减少了内核态和用户态的切换开销。
在对GTP下行数据进行传输之前,首先需要进行初始化,初始化包括内核态初始化和用户态初始化。
内核态的GTP下行数据驱动初始化流程如下:
1、调用标准的内核驱动初始化函数module_init初始化GTP下行数据驱动。
2、申请内核态中的一片连续的内存,申请的内存按照内核页的整数倍申请,不足一页空间就按照一页申请。并且通过page_address获取到此段内存的虚拟地址。
3、通过register_chrdev函数注册一个字符驱动,在本实施例中字符驱动的字符设备名称可以命名为“gtpu_config”,字符设备的文件操作接口中,对内存映射mmap做修改,将步骤2中的page_address重新映射到用户态。
4、调用netfilter的接口注册一个gtpu的钩子函数,设置从网口接收到以太网数据包后,就开始筛选所有的以太网数据包。
5、使用内核函数DECLARE_WAIT_QUEUE_HEAD创建一个内核等待任务gtp_queue,当网卡收到GTP下行数据后,唤醒这个内核等待任务gtp_queue。
6、register_chrdev字符设备中对poll函数做修改,poll函数中等待步骤5中的内核等待任务,当没有唤醒这个等待任务是,poll函数一直阻塞在poll_wait函数上。完成初始化。
用户态的GTP下行数据初始化流程如下:
1、打开字符设备“gtpu_config”,获得文件描述符fd。
2、使用mmap函数将内核态的内存映射到用户态的GTP配置模块,并初始化唤醒缓冲区的首地址以及读写指针。
3、创建一个循环任务,循环poll这个字符设备“gtpu_config”的文件描述符fd。完成初始化。
在获取GTP数据包之前,EPC通过L3模块下发GTP配置,GTP配置信息下发到用户态的GTP配置模块,GTP配置模块建立隧道ID与基站分配给终端UE的目的终端信息之间的映射关系,生成映射表,并将该映射表存储到内核态中。
所有的以太网数据包到达基站后,都由接收模块传输到Linux系统内核态。
然后,通过解析模块对获取到的以太网数据包进行解析。例如,当前获取到的以太网数据包为第一以太网数据包,则通过解析模块对获取到的第一以太网数据包进行解析。对以太网数据包进行解析的目的是,判断以太网数据包中是否包含GTP数据包。
例如,在底层实现时,获取和解析过程可以使用gtpu的钩子函数。
如果以太网数据包中包含GTP数据包,则通过提取模块提取GTP数据包中的隧道ID和有效载荷。例如,当前获取到的以太网数据包为第一以太网数据包,如果第一以太网数据包包含第一GTP数据包,则通过提取模块提取第一GTP数据包中的隧道ID和有效载荷。
然后,通过查找模块查找内核态的内存中存储的,包含GTP配置模块建立的隧道ID与基站分配的目的终端信息之间的映射关系的映射表,获取与第一GTP数据包中的隧道ID对应的第一目的终端信息。
最后,通过存储模块将第一目的终端信息和第一GTP数据包中的有效载荷存储到缓冲区。以供用户态中的GTP配置模块从该缓冲区中读取第一目的终端信息和第一GTP数据包中的有效载荷,并更新写指针。
如果解析模块对以太网数据包进行解析后,获知以太网数据包中并不包含GTP数据包,则解析模块直接将该以太网数据包发送到内核态中的IP协议栈处理。
本发明实施例提供的GTP下行数据传输优化方法,从逻辑上规避了Linux系统内核的IP协议栈,减少了内核态和用户态的切换开销。在接收到以太网数据包之后直接在Linux系统内核态对GTP数据进行处理,从而极大地简化了GTP数据的处理流程,提高了数据处理效率,进一步提高了数据传输速率。
在上述实施例的基础上,进一步地,所述将所述第一目的终端信息和所述第一GTP数据包中的有效载荷存储到缓冲区之后,还包括:
提取所述第一目的终端信息和所述第一GTP数据包中的有效载荷;
将所述第一GTP数据包中的有效载荷下发到与所述第一目的终端信息对应的目的终端。
具体来说,存储模块将第一目的终端信息和第一GTP数据包中的有效载荷存储到缓冲区,以供用户态中的GTP配置模块从该缓冲区中读取第一目的终端信息和第一GTP数据包中的有效载荷,并更新写指针。
存储模块将第一目的终端信息和第一GTP数据包中的有效载荷存储到缓冲区之后,还需要向用户态中的GTP配置模块发送读取指令信息,以供GTP配置模块从该缓冲区中读取第一目的终端信息和第一GTP数据包中的有效载荷。
例如,在底层实现时,可以调用wake_up_interruptible函数唤醒GTP下行数据驱动初始化流程中的gtp_queue任务。
GTP配置模块收到存储模块发送的读取指令信息后,从该缓冲区中读取第一目的终端信息和第一GTP数据包中的有效载荷。
例如,在底层实现时,在用户态的GTP下行数据初始化流程中,循环poll这个“gtpu_config”的文件描述符fd,内核执行poll后阻塞在等待gtp_queue任务上,此时gtp_queue任务被唤醒,poll可以继续执行。GTP配置模块读取缓冲区中的数据,并更新读指针。
然后,GTP配置模块将第一GTP数据包中的有效载荷,通过PDCP模块下发到与第一目的终端信息对应的目的终端。从而完成将EPC下发的GTP数据,发送到对应的目的终端。
本发明实施例提供的GTP下行数据传输优化方法,从逻辑上规避了Linux系统内核的IP协议栈,减少了内核态和用户态的切换开销。在接收到以太网数据包之后直接在Linux系统内核态对GTP数据进行处理,从而极大地简化了GTP数据的处理流程,提高了数据处理效率,进一步提高了数据传输速率。
在以上各实施例的基础上,进一步地,所述对获取到的第一以太网数据包进行解析,具体包括:
提取所述第一以太网数据包中的有效载荷;
若判断获知所述第一以太网数据包中的有效载荷为IP数据包,则判断所述IP数据包的长度是否大于预设长度阈值;
若判断获知所述IP数据包的长度小于等于所述预设长度阈值,则提取所述IP数据包中的有效载荷;
若判断获知所述IP数据包中的有效载荷为UDP数据包,则提取所述UDP数据包的目的端口号;
若判断获知所述UDP数据包的目的端口号为0x0868,则所述第一以太网数据包中包含所述第一GTP数据包。
具体来说,图5为本发明实施例提供的筛选GTP数据的逻辑流程示意图,如图5所示,获取以太网数据包之后,调用通过netfilter的接口注册的gtpu钩子函数。获取二层以太网头信息,头信息中包含了目的mac地址和源mac地址。以太网头信息中的type字段表述的是紧接着的下一段数据的协议型号。根据type字段确定以太网数据包中是否包含IP数据包,其中,如果以太网数据包中包含Ipv4数据包,则type字段为0x0800,如果以太网数据包中包含Ipv6数据包,则type字段为0x86DD。
如果以太网数据包中并不包含IP数据包,则解析模块直接将该以太网数据包发送到内核态中的IP协议栈处理。
如果以太网数据包中包含IP数据包,提取以太网数据包中的IP数据包有效载荷,解析出该IP数据包的首部,根据IP数据包首部中的长度字段tot_len,判断该IP数据包的长度是否大于预设长度阈值,该预设长度阈值为网卡的最大传输单元MTU。
如果IP数据包的长度小于等于该预设长度阈值,则根据IP数据包首部中的表述下一层协议的字段nextheader,判断该IP数据包的有效载荷是否为UDP数据包。
如果IP数据包的有效载荷不是UDP数据包,则解析模块直接将该以太网数据包发送到内核态中的IP协议栈处理。
但是,如果IP数据包的长度大于该预设长度阈值,IP数据包中包含的UDP数据包会被分片,图6为本发明实施例提供的UDP数据包分片示意图,如图6所示,分片后第一分片中包含UDP数据包的首部,而第二分片中不包含UDP数据包的首部。按照上述判断流程,第一分片将会被继续解析,而第二分片将被发送到内核态中的IP协议栈处理。为了避免这种情况,本发明实施例中,如果IP数据包的长度大于该预设长度阈值,不再考虑IP数据包的有效载荷,解析模块直接将该以太网数据包发送到内核态中的IP协议栈处理。
如果IP数据包的有效载荷是UDP数据包,解析出该UDP数据包的首部,UDP数据包的首部包含目的端口号、源端口号和checksum等字段,根据UDP数据包首部中的目的端口号判断UDP数据包的有效载荷是否为GTP数据包。
如果UDP数据包首部中的目的端口号为0x0868,则UDP数据包的有效载荷为GTP数据包,该以太网数据包中包含GTP数据包。
如果UDP数据包首部中的目的端口号不为0x0868,则UDP数据包的有效载荷不为GTP数据包,则解析模块直接将该以太网数据包发送到内核态中的IP协议栈处理。
本发明实施例提供的GTP下行数据传输优化方法,从逻辑上规避了Linux系统内核的IP协议栈,减少了内核态和用户态的切换开销。在接收到以太网数据包之后直接在Linux系统内核态对GTP数据进行处理,从而极大地简化了GTP数据的处理流程,提高了数据处理效率,进一步提高了数据传输速率。
在以上各实施例的基础上,进一步地,所述将所述第一目的终端信息和所述第一GTP数据包中的有效载荷存储到缓冲区之后,还包括:
对获取到的第二以太网数据包进行解析;
若判断获知所述第二以太网数据包包含第二GTP数据包,则提取所述第二GTP数据包中的隧道ID和有效载荷;
查找与所述第二GTP数据包中的隧道ID对应的第二目的终端信息;
将所述第二目的终端信息和所述第二GTP数据包中的有效载荷存储到所述缓冲区。
具体来说,当GTP下行数据速率很快时,Linux系统内核态连续不断的对以太网数据包进行处理。
将第一目的终端信息和第一GTP数据包中的有效载荷存储到缓冲区之后,继续获取第二以太网数据包。
然后,通过解析模块对获取到的第二网数据包进行解析,判断第二以太网数据包中是否包含GTP数据包。
如果第二以太网数据包中包含第二GTP数据包,则通过提取模块提取第二GTP数据包中的隧道ID和有效载荷。
然后,通过查找模块查找内核态的内存中存储的,包含GTP配置模块建立的隧道ID与基站分配的目的终端信息之间的映射关系的映射表,获取与第二GTP数据包中的隧道ID对应的第二目的终端信息。
最后,通过存储模块将第二目的终端信息和第二GTP数据包中的有效载荷存储到缓冲区。以供用户态中的GTP配置模块从该缓冲区中读取第二目的终端信息和第二GTP数据包中的有效载荷,并更新写指针。
如果解析模块对以太网数据包进行解析后,获知以太网数据包中并不包含GTP数据包,则解析模块直接将该以太网数据包发送到内核态中的IP协议栈处理。
本发明实施例提供的GTP下行数据传输优化方法,从逻辑上规避了Linux系统内核的IP协议栈,减少了内核态和用户态的切换开销。在接收到以太网数据包之后直接在Linux系统内核态对GTP数据进行处理,从而极大地简化了GTP数据的处理流程,提高了数据处理效率,进一步提高了数据传输速率。
以上各实施例的基础上,进一步地,所述将所述第二目的终端信息和所述第二GTP数据包中的有效载荷存储到所述缓冲区之后,还包括:
同时提取所述第一目的终端信息和所述第一GTP数据包中的有效载荷,以及所述第二目的终端信息和所述第二GTP数据包中的有效载荷;
将所述第一GTP数据包中的有效载荷下发到与所述第一目的终端信息对应的目的终端,并将所述第二GTP数据包中的有效载荷下发到与所述第二目的终端信息对应的目的终端。
具体来说,存储模块将第二目的终端信息和第二GTP数据包中的有效载荷存储到缓冲区,以供用户态中的GTP配置模块从该缓冲区中读取第二目的终端信息和第二GTP数据包中的有效载荷,并更新写指针。
存储模块将第二目的终端信息和第二GTP数据包中的有效载荷存储到缓冲区之后,还需要向用户态中的GTP配置模块发送读取指令信息,以供GTP配置模块从该缓冲区中读取第二目的终端信息和第二GTP数据包中的有效载荷。
例如,在底层实现时,可以调用wake_up_interruptible函数唤醒GTP下行数据驱动初始化流程中的gtp_queue任务。
GTP配置模块收到存储模块发送的读取指令信息后,从该缓冲区中读取第二目的终端信息和第二GTP数据包中的有效载荷。
例如,在底层实现时,在用户态的GTP下行数据初始化流程中,循环poll这个“gtpu_config”的文件描述符fd,内核执行poll后阻塞在等待gtp_queue任务上,此时gtp_queue任务被唤醒,poll可以继续执行。GTP配置模块读取缓冲区中的数据,并更新读指针。
然后,GTP配置模块将第二GTP数据包中的有效载荷,通过PDCP模块下发到与第二目的终端信息对应的目的终端。从而完成将EPC下发的GTP数据,发送到对应的目的终端。
需要说明的是,当GTP下行数据速率很快时,当GTP下行数据速率很快时,内核态向缓冲区写多次GTP下行数据后,用户态的GTP配置模块才会被唤醒一次,所以,每当用户态的GTP配置模块被唤醒后,需要一次性将所有存储在缓冲区的GTP下行数据读取完。
用户态的GTP配置模块将一次性读取出来的一个或多个GTP下行数据通过进程间消息,传递给PDCP模块进行下一步处理。由于多个GTP下行数据也通过一个消息发送到PDCP模块,减少了消息发送的次数,也节省了后面模块的处理时间。
本发明实施例提供的GTP下行数据传输优化方法,从逻辑上规避了Linux系统内核的IP协议栈,减少了内核态和用户态的切换开销。在接收到以太网数据包之后直接在Linux系统内核态对GTP数据进行处理,从而极大地简化了GTP数据的处理流程,提高了数据处理效率,进一步提高了数据传输速率。
在以上各实施例的基础上,进一步地,所述查找与所述第一GTP数据包中的隧道ID对应的第一目的终端信息,具体包括:
获取映射表,所述映射表存储在Linux系统的内核态,所述映射表中包含目标隧道ID和目标目的终端信息之间的相互映射关系;
查找所述映射表,获取与所述第一GTP数据包中的隧道ID对应的第一目的终端信息。
具体来说,在获取GTP数据包之前,EPC通过L3模块下发GTP配置,GTP配置信息下发到用户态的GTP配置模块,GTP配置模块建立隧道ID与基站分配给终端UE的目的终端信息之间的映射关系,生成映射表,并将该映射表存储到内核态中。
所有的以太网数据包到达基站后,都由接收模块传输到Linux系统内核态。
当需要查找与GTP数据包中的隧道ID对应的目的终端信息时,首先,获取存储在Linux系统的内核态的映射表,该映射表中包含GTP配置模块建立的隧道ID与基站分配给终端UE的目的终端信息之间的相互映射关系。
然后,通过查找该映射表,即可获取GTP数据包中的隧道ID对应的目的终端信息。
本发明实施例提供的GTP下行数据传输优化方法,从逻辑上规避了Linux系统内核的IP协议栈,减少了内核态和用户态的切换开销。在接收到以太网数据包之后直接在Linux系统内核态对GTP数据进行处理,从而极大地简化了GTP数据的处理流程,提高了数据处理效率,进一步提高了数据传输速率。
在以上各实施例的基础上,进一步地,所述第一目的终端信息包括:终端ID、小区ID和隧道类型。
具体来说,在获取GTP数据包之前,EPC通过L3模块下发GTP配置,GTP配置信息下发到用户态的GTP配置模块,GTP配置模块建立隧道ID与基站分配给终端UE的目的终端信息之间的映射关系,生成映射表,并将该映射表存储到内核态中。
该目的终端信息中包含终端ID、小区ID和隧道类型等信息。根据该目的终端信息将EPC下发的GTP数据,发送到对应的目的终端。
本发明实施例提供的GTP下行数据传输优化方法,从逻辑上规避了Linux系统内核的IP协议栈,减少了内核态和用户态的切换开销。在接收到以太网数据包之后直接在Linux系统内核态对GTP数据进行处理,从而极大地简化了GTP数据的处理流程,提高了数据处理效率,进一步提高了数据传输速率。
在以上各实施例的基础上,进一步地,所述缓冲区为环形缓冲区。
具体来说,图7为本发明实施例提供的环形队列批量处理GTP下行数据流程示意图,如图7所示,在获取GTP数据包之后,存储模块将GTP数据包中的有效载荷存储到缓冲区。以供用户态中的GTP配置模块从该缓冲区中读取目的终端信息和GTP数据包中的有效载荷,并更新写指针。
为了提高用户态中的GTP配置模块的读取效率,该缓冲区设置为环形缓冲区。
本发明实施例提供的GTP下行数据传输优化方法,从逻辑上规避了Linux系统内核的IP协议栈,减少了内核态和用户态的切换开销。在接收到以太网数据包之后直接在Linux系统内核态对GTP数据进行处理,从而极大地简化了GTP数据的处理流程,提高了数据处理效率,进一步提高了数据传输速率。
图8为本发明实施例提供的GTP下行数据传输优化装置示意图,如图8所示,本发明实施例提供一种GTP下行数据传输优化装置,用于执行上述任一实施例中所述的方法,具体包括解析模块801、提取模块802、查找模块803和存储模块804。
其中,解析模块801用于对获取到的第一以太网数据包进行解析;提取模块802用于若判断获知所述第一以太网数据包包含第一GTP数据包,则提取所述第一GTP数据包中的隧道ID和有效载荷;查找模块803用于查找与所述第一GTP数据包中的隧道ID对应的第一目的终端信息;存储模块804用于将所述第一目的终端信息和所述第一GTP数据包中的有效载荷存储到缓冲区。
具体来说,本发明实施例提供的GTP下行数据传输优化装置,适用于基于Linux系统的5G基站。GTP下行数据传输优化装置包括解析模块801、提取模块802、查找模块803和存储模块804。
在获取GTP数据包之前,EPC通过L3模块下发GTP配置,GTP配置信息下发到用户态的GTP配置模块,GTP配置模块建立隧道ID与基站分配给终端UE的目的终端信息之间的映射关系,生成映射表,并将该映射表存储到内核态中。
所有的以太网数据包到达基站后,都由接收模块传输到Linux系统内核态。
然后,通过解析模块801对获取到的以太网数据包进行解析。例如,当前获取到的以太网数据包为第一以太网数据包,则通过解析模块对获取到的第一以太网数据包进行解析。对以太网数据包进行解析的目的是,判断以太网数据包中是否包含GTP数据包。
例如,在底层实现时,获取和解析过程可以使用gtpu的钩子函数。
如果以太网数据包中包含GTP数据包,则通过提取模块802提取GTP数据包中的隧道ID和有效载荷。例如,当前获取到的以太网数据包为第一以太网数据包,如果第一以太网数据包包含第一GTP数据包,则通过提取模块提取第一GTP数据包中的隧道ID和有效载荷。
然后,通过查找模块803查找内核态的内存中存储的,包含GTP配置模块建立的隧道ID与基站分配的目的终端信息之间的映射关系的映射表,获取与第一GTP数据包中的隧道ID对应的第一目的终端信息。
最后,通过存储模块804将第一目的终端信息和第一GTP数据包中的有效载荷存储到缓冲区。以供用户态中的GTP配置模块从该缓冲区中读取第一目的终端信息和第一GTP数据包中的有效载荷,并更新写指针。
如果解析模块对以太网数据包进行解析后,获知以太网数据包中并不包含GTP数据包,则解析模块直接将该以太网数据包发送到内核态中的IP协议栈处理。
本发明实施例提供的GTP下行数据传输优化装置,从逻辑上规避了Linux系统内核的IP协议栈,减少了内核态和用户态的切换开销。在接收到以太网数据包之后直接在Linux系统内核态对GTP数据进行处理,从而极大地简化了GTP数据的处理流程,提高了数据处理效率,进一步提高了数据传输速率。
图9为本发明实施例提供的电子设备的结构示意图,如图9所示,所述设备包括:处理器(processor)901、存储器(memory)902和总线903;
其中,处理器901和存储器902通过所述总线903完成相互间的通信;
处理器901用于调用存储器902中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:
对获取到的第一以太网数据包进行解析;
若判断获知所述第一以太网数据包包含第一GTP数据包,则提取所述第一GTP数据包中的隧道ID和有效载荷;
查找与所述第一GTP数据包中的隧道ID对应的第一目的终端信息;
将所述第一目的终端信息和所述第一GTP数据包中的有效载荷存储到缓冲区。
此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:
对获取到的第一以太网数据包进行解析;
若判断获知所述第一以太网数据包包含第一GTP数据包,则提取所述第一GTP数据包中的隧道ID和有效载荷;
查找与所述第一GTP数据包中的隧道ID对应的第一目的终端信息;
将所述第一目的终端信息和所述第一GTP数据包中的有效载荷存储到缓冲区。
本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:
对获取到的第一以太网数据包进行解析;
若判断获知所述第一以太网数据包包含第一GTP数据包,则提取所述第一GTP数据包中的隧道ID和有效载荷;
查找与所述第一GTP数据包中的隧道ID对应的第一目的终端信息;
将所述第一目的终端信息和所述第一GTP数据包中的有效载荷存储到缓冲区。
以上所描述的装置及设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。