[发明专利]一种基于Linux系统的LTE基站用户面高效UDP数据发送优化方法有效
申请号: | 201410197509.X | 申请日: | 2014-05-12 |
公开(公告)号: | CN103945456B | 公开(公告)日: | 2017-06-27 |
发明(设计)人: | 陈辉;蔡鑫 | 申请(专利权)人: | 武汉邮电科学研究院 |
主分类号: | H04W28/06 | 分类号: | H04W28/06 |
代理公司: | 武汉科皓知识产权代理事务所(特殊普通合伙)42222 | 代理人: | 赵丽影 |
地址: | 430074 湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 linux 系统 lte 基站 用户 高效 udp 数据 发送 优化 方法 | ||
技术领域
本发明涉及无线通信技术领域,尤其是涉及一种基于Linux系统的LTE基站用户面UDP数据发送优化方法。
背景技术
随着无线通信技术的进步,无线网络设备的不断升级改造,对于LTE(3GPP长期演进技术)基站用户面数据处理要求越来越高。 LTE基站用户面上行数据主要是承载于UDP(用户数据报协议)之上的GTPU(隧道协议)业务,对于GTPU下行报文,传统的处理方式是利用UDP socket发包;用户构造好GTPU报文后通过udp socket系统调用到Linux内核,Linux内核再经过网络协议栈的层层处理,最后转给硬件层将报文发出去。从UDP报文的转发流程来看,涉及到GTPU报文的组装,用户态到内核态的系统调用和内存拷贝,socket中间层、IP协议栈的处理,网卡硬件层的处理。
传统方法的弊端包括:
拷贝过多:每个UDP报文,从用户态socket到linux内核,需要从用户空间拷贝到内核空间。
系统调用过多:每发一个UDP包,都要经过一次socket send,都有一次系统调用,即内核态和用户态上下文切换的过程。
硬件资源申请过多:linux IP协议栈每处理完一个报文后都会申请一次硬件资源去发送UDP报文。
发明内容
本发明针对背景技术存在的问题,提出了一种基于Linux系统的LTE基站用户面UDP数据发送优化方法,其目的是在LTE基站用户面上行UDP数据处理过程中,减少系统调用、拷贝及频繁申请硬件资源的问题。
本发明的技术方案为一种基于Linux系统的LTE基站用户面UDP数据发送优化方法,利用批量申请硬件资源技术减少硬件资源的频繁申请,利用内核空间-用户空间内存映射技术避免内存拷贝,利用环形缓冲技术减少内核态和用户态的上下文切换,从而显著的提高LTE用户面UDP数据发送的性能;包括初始化过程和数据发送过程两部分内容,具体步骤如下:
初始化过程包括以下子步骤,
步骤1.1,linux内核初始化时,预留一块物理上连续的内存,将内存块切分为1024 大小相等,2112字节的格子(满足以太网标准MTU(最大传输单元)要求,并且64字节的奇数倍以保证高效的利用CPU的L2 cache),将每个格子的物理地址和大小通知给硬件的BMAN单元(缓冲区管理单元)。
步骤1.2,在用户态发包程序和linux内核之间建立一个环形缓冲中间层,环形缓冲层初始化时,预留另一块物理上连续的内存,将内存块切分为256大小相等的格子,用来存储UDP数据包的地址偏移和长度,预留内存的头结构中再保存控制环形缓冲层的读写指针,完成用户态发包程序(生产者)和内核(消费者)之间的同步,环形缓冲区的大小定义为256块,2的幂有利于提高读写指针操作的效率。
步骤1.3,向linux内核DPAA模块批量申请256个BMAN单元,将已经申请的BMAN资源用于存储数据包的偏移存储到环形缓冲区的256个节点上,能通过环形缓冲层节点找到存放数据包的BMAN单元所在的内存偏移地址。
步骤1.4,用户态发包程序初始化时,将步骤1.1和步骤1.2中分配的内核内存,映射到用户空间。
步骤1.5,创建内核态的UDP发送线程,并初始化为睡眠状态;
数据传输过程包括以下子步骤:
步骤2.1,用户态程序收到一个UDP待发数据时通过映射到用户空间的环形缓冲的写指针找到可写的环形缓冲节点,将UDP payload信息、IP头信息和MAC头信息按照IP数据包的格式填充到对应的BMAN节点空间,并将写指针指向下一个缓冲节点。
步骤2.2,用户态程序填充完IP数据包后,根据内核的UDP发送线程状态来决定是否调用ioctl去唤醒内核的UDP发送线程,如果发送线程已经处于running状态,就无需系统调用去唤醒发送线程。
步骤2.3,UDP发送线程被唤醒后,设置发送线程的当前状态为running,检查环形缓冲区内是否有数据包缓存,如果存在数据包被缓存,就调用硬件层接口将数据包发送出去。然后设置线程当前状态为sleep,并马上进入休眠状态。
步骤2.4,硬件层接口(即:与硬件芯片配套提供的如何使用硬件的接口)收到此数据包后,由于数据包已经存储到BMAN单元所对应的buffer中,无需拷贝,直接放到QMAN中发送出去,发送完成后,再次向内核DPAA模块批量申请8个BMAN buffer,填充到刚刚发送完成的环形缓冲节点中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉邮电科学研究院,未经武汉邮电科学研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410197509.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:密封式平开中梃结构
- 下一篇:一种注胶推拉窗竖外框铝型材