CN100428670C - 流媒体服务器用户层通信方法 - Google Patents
流媒体服务器用户层通信方法 Download PDFInfo
- Publication number
- CN100428670C CN100428670C CNB2006101442866A CN200610144286A CN100428670C CN 100428670 C CN100428670 C CN 100428670C CN B2006101442866 A CNB2006101442866 A CN B2006101442866A CN 200610144286 A CN200610144286 A CN 200610144286A CN 100428670 C CN100428670 C CN 100428670C
- Authority
- CN
- China
- Prior art keywords
- streaming media
- application program
- data
- core
- hardware
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000006854 communication Effects 0.000 title claims abstract description 25
- 238000004891 communication Methods 0.000 title claims abstract description 24
- 238000000034 method Methods 0.000 title claims abstract description 15
- 230000005540 biological transmission Effects 0.000 claims description 25
- 239000010410 layer Substances 0.000 claims description 16
- 230000015572 biosynthetic process Effects 0.000 claims description 11
- 230000003139 buffering effect Effects 0.000 claims description 10
- 239000012792 core layer Substances 0.000 claims description 7
- 239000003795 chemical substances by application Substances 0.000 claims description 6
- 238000013519 translation Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种流媒体服务器对外服务端口的用户层通信方法,属于流媒体通信技术领域,其特征在于,流媒体应用程序在用户层根据流媒体协议和网络通信协议处理流媒体数据包,最终把流媒体数据包处理成网络硬件设备可以直接识别的数据包格式,然后,流媒体应用程序把这些流媒体数据包填写到一定发送队列中,并在用户层直接操作网络硬件设备,通知网络硬件设备把流媒体数据包发送到网络上。从而,减少了流媒体服务器处理器大量的处理时间,充分的利用了流媒体服务器的处理器能力。
Description
技术领域
本发明涉及一种流媒体服务器发送流媒体数据包的方法,特别是指一种流媒体服务器在用户层直接发送流媒体数据包的方法。
背景技术
随着3G手机、数字电视、IPV6等技术的发展,网络的速度愈来愈快。但在实际应用中,网络上共享的资源内容是关键因素。在这些资源内容中,流媒体是一种非常重要的内容。网络速度的提高和用户的增多,就对流媒体服务器的性能提出了非常高的要求。
但目前的流媒体服务器的性能还不是很高,其性能瓶颈之一就是网络通信性能。目前的流媒体通信用户层协议通常使用实时传输协议,底层的通信协议通常使用UDP/IP协议。但目前的UDP/IP协议通常实现在操作系统的核心层中(如图1所示)。这就大大限制的网络性能的发挥。第一,流媒体应用在发送流媒体数据的时候必须陷入核心发送,时间开销很大。第二,在核心层发送数据,就必然有多次的数据复制,时间开销很大。第三,在核心层发送数据,有着复杂的缓冲区管理,时间开销很大。这些时间开销很大的操作,占用了流媒体服务器处理器的大部分处理时间,再加上流媒体请求的调度时间和数据读写时间,就使得流媒体服务器不能够充分的利用网络带宽。
发明内容
本发明的目的是提供一种高效率的流媒体服务器发送流媒体数据包的方法,解决流媒体服务器的流媒体数据发送端口网络带宽利用率低的问题。
本发明的目的是通过如下的技术方案实现的。
本发明使用用户层通信的方法来发送流媒体数据包。流媒体服务器在用户层处理流媒体数据包,然后,在用户层直接通过操作网络硬件设备发送流媒体数据包,而不经过操作系统的核心层。这种方法就可以克服背景技术中所述的在核心层发送数据包的缺点。第一,流媒体应用在用户层发送流媒体数据的时候,无需陷入核心发送(如图2所示,以UDP/IP用户层实现为例),时间开销小。第二,在用户层发送数据,数据复制次数少,甚至做到0-复制,时间开销小。第三,在用户层发送数据,缓冲区管理简单,时间开销小。
本发明的特征在于所述的流媒体服务器在用户层发送流媒体数据包的具体步骤如下:
1、初始化:系统在软件方面由网络接口控制器(NIC)驱动程序、核心代理程序和用户代理程序组成(如图3所示)。NIC驱动程序负责NIC硬件设备资源的管理。NIC硬件设备资源包括硬件门铃、发送队列地址寄存器组、接收队列地址寄存器组、发送队列状态寄存器组、接收队列状态寄存器组,等等。硬件门铃是应用程序通知NIC发送和接收数据的途径。发送(接收)队列保存发送(接收)描述子。发送(接收)描述子用来描述发送(接收)任务。描述子中保存发送(接收)任务的各种信息,包括发送(接收)目的地址,数据缓冲区地址,等等。发送(接收)队列地址寄存器用来存储发送(接收)队列地址。发送(接收)队列状态寄存器组用来保存发送(接收)队列的状态,包括完成任务和未完成任务情况,等等。核心代理负责管理数据通信过程中的核心资源。核心资源包括发送队列组状态、接收队列组状态、地址转换表,等等。用户代理用来包装用户层发送和接收等程序接口。应用程序就可以通过这些程序接口来发送(接收)数据,而不需要自行处理数据包。当系统启动时,核心代理首先启动,并注册设备文件。应用程序将使用这些设备文件来映射核心资源和NIC硬件设备资源。NIC驱动程序扫描NIC硬件设备。如果发送硬件设备,则逐一登记,初始化这些设备,并分配发送(接收)队列。然后,NIC驱动程序将向核心代理注册。完成初始化工作后,将等待应用程序发送(接收)数据。流媒体应用程序运行在用户空间中。
2、流媒体应用程序把核心资源和NIC硬件设备资源从核心地址空间映射到用户地址空间;
3、流媒体应用程序在用户地址空间任意为流媒体数据包分配发送缓冲区;
4、流媒体应用程序把发送缓冲区地址注册到核心空间中,在注册过程中,将把缓冲区的虚拟地址转换成物理(线性)地址;
5、流媒体应用程序在用户层根据指定的网络通信协议要求来处理流媒体数据包,把流媒体数据包打包成通信数据包;
6、流媒体应用程序根据指定的网络硬件设备要求,分解通信数据包,打包成硬件数据包;
7、流媒体应用程序通过映射到用户空间的NIC硬件设备资源之一——发送队列状态寄存器组——来查询发送队列中是否有空闲的发送描述子,如果没有,则等待,如果有,则继续。
8、流媒体应用程序为每一个硬件数据包分配和填写发送队列中的描述子;
9、流媒体应用程序按动门铃,通知网络硬件设备传输发送队列中的数据包;
10、流媒体应用程序查询是否把通信数据包全部分解成了硬件数据包,如果是,则继续,如果否,则转到6;
11、查询是否把流媒体数据全部打包成了通信数据包,如果是,则结束,如果否,则转到5;
12、网络硬件设备处理描述子,并发送其指定的数据包。
前10个步骤由流媒体服务器的处理器来完成,步骤11则是由网络硬件设备完成。步骤11是和前10个步骤并行进行的。
下面实施例的实际测试结果如图8所示,图中所示为延迟时间测试。“uudp”代表实施例实现的用户层通信系统,“kudp”代表操作系统中实现的核心udp实现。可以看出uudp的延迟时间要远远的小于kudp的延迟时间。例如,在16字节的小数据包发送时,uudp的延迟时间为1.4微秒,而kudp的延迟时间为9.3微秒。在9216字节的大数据包发送时,uudp的延迟时间为8.0微秒,而kudp的延迟时间为50.3微秒。
可以看出,本发明的提升效果相当显著。
附图说明:
图1:传统流媒体服务器通信结构说明图。
图2:本发明流媒体服务器通信结构说明图。
图3:本发明流媒体服务器通信结构实施图。
图4:实施例中地址映射关系图:SDQ:发送描述子队列,ATPT:地址转换表;DB:门铃;D:描述子;P:端口;NIC:网络接口控制器。
图5:实施例中地址注册关系图:VAddr:虚拟地址;PAddr:物理地址;Ptag:保护标签;Flag:标志。
图6:实施例详细流程图。
图7:描述子说明图。
图8:实施例的实际测试结果图。
具体实施方式:
以下结合附图及实施例对本发明作进一步的详细说明:
附图说明:
图6为本发明一实施例的详细流程图。在该实施例中,数据通信协议使用的是UDP/IP协议,网络硬件设备使用的是以太网网络设备。
1、流媒体应用程序映射核心资源和网络硬件设备资源(如图4所示);
核心资源包括发送队列、地址转换表,网络硬件设备资源包括门铃、队列状态寄存器组等等。发送队列由发送描述子组成。发送描述子描述发信息。在本实施例中,由于要发送的是以太网数据包,所以,发送描述子中只需要有数据包地址信息和数据包长度信息就可以了,如图7所示。发送队列由操作系统核心分配,并把队列物理地址告知网络硬件设备。发送队列用于流媒体应用程序和网络硬件设备的信息交换。流媒体应用程序填写发送队列中的描述子。网络硬件设备就可以读取这些描述子。地址转换表用于流媒体应用程序把流媒体数据缓冲区的虚拟地址转换成物理地址,并填写到发送描述子中。门铃用于流媒体应用程序通知网络硬件设备有流媒体数据要发送。队列状态描述结构用于流媒体应用程序查询流媒体数据包的发送状态。
2、流媒体应用程序分配流媒体数据包发送缓冲区;
3、流媒体应用程序注册流媒体数据包发送缓冲区(如图5所示);
注册流媒体数据包发送缓冲区是为了把缓冲区的虚拟地址转换成物理地址,并填写到地址转换表中。地址转换表被映射到用户空间,可以由流媒体应用程序使用。
4、流媒体应用程序在用户层把流媒体数据打包成UDP数据包,再打包成IP数据包;
5、流媒体应用程序把IP包再分解打包成以太网数据包;
6、流媒体应用程序查询发送队列中是否有空闲的发送描述子,如果没有,则等待,如果有,则继续。
7、流媒体应用程序为每一个以太网数据包分配和填写发送队列中的描述子;
8、流媒体应用程序按动门铃,通知网络硬件设备传输发送队列中的数据包;
9、查询是否把IP数据包全部分解成了以太网数据包,如果是,则继续,如果否,则转到5;
10、查询是否把流媒体数据全部打包成了UDP/IP数据包,如果是,则结束,如果否,则转到4;
11、网络硬件设备处理描述子,并发送其指定的数据包。
前10个步骤由流媒体服务器的处理器来完成,步骤11则是由网络硬件设备完成。步骤11是和前10个步骤并行进行的。
Claims (1)
1、流媒体服务器用户层通信方法,其特征在于,所述方法在流媒体服务器的用户层按以下步骤实现:
步骤(1),初始化:
在流媒体服务器设置网络接口控制器驱动程序、核心代理程序和用户代理程序,具体:
网络接口控制器驱动程序,位于流媒体服务器的核心层,负责包括硬件门铃、发送队列地址寄存器组、接收队列地址寄存器组、发送队列状态寄存器组、接收队列状态寄存器组在内的硬件设备资源的管理,在所述发送或接收队列所保存的发送或接收描述子中含有数据包地址信息和数据包长度信息,所述描述子描述发送或接收任务的信息,所述信息包含发送或接收目的地址,数据缓冲区地址;
核心代理程序,位于流媒体服务器的核心层,负责管理包括发送队列组状态、接收队列组状态和地址转换表在内的数据通信用到的核心资源;
用户代理程序,位于流媒体服务器的用户层,用于包装用户层在发送和接收信息时所用的程序,还有一个程序接口,以供流媒体服务器应用程序发送或接收数据;
步骤(2),系统启动:
启动核心代理程序,并注册用于映射所述核心资源和网络接口控制器硬件设备资源的设备文件;
网络接口控制器驱动程序初始化包括发送硬件设备在内的网络接口控制器硬件设备,并任意分配发送和接收队列,然后该驱动程序向所述核心代理程序注册;
步骤(3),流媒体应用程序把核心资源和网络接口控制器中的硬件设备资源从核心地址空间映射到用户地址空间;流媒体应用程序通过所述地址转换表把流媒体数据缓冲区的虚拟地址转换成物理地址,并填写到发送描述子中,通过网络接口控制器发往网络硬件设备;网络硬件设备读取这些带有物理地址的发送描述子;
步骤(4),运行在用户空间的流媒体应用程序在用户地址空间任意为流媒体数据包分配发送缓冲区;
步骤(5),流媒体应用程序把发送缓冲区地址注册到核心空间,把缓冲区的虚拟地址转换为物理地址,并填写到地址转换表中;
步骤(6),流媒体应用程序在用户层先根据指定的网络通信协议要求处理流媒体数据包,再把流媒体数据包打包成通信数据包;
步骤(7),流媒体应用程序根据指定的网络硬件设备要求,分解所述通信数据包,打包成硬件数据包;
步骤(8),流媒体应用程序通过已映射的用户空间的发送队列状态寄存器组来查询发送队列中是否有空闲的发送描述子,若没有,则等待,若有,则执行下一步骤;
步骤(9),流媒体应用程序为每一个硬件数据包分配和填写所述发送队列中的描述子;
步骤(10),流媒体应用程序按动硬件门铃,通知网络硬件设备传输所述发送队列中的硬件数据包;
步骤(11),流媒体应用程序查询是否把通信数据包全部分解成了硬件数据包,如果否,则转步骤(7),如果是,则转下一步骤;
步骤(12),流媒体应用程序查询是否把流媒体数据包全部打包成了通信数据包,如果否,则转步骤(6),如果是,则停止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101442866A CN100428670C (zh) | 2006-12-01 | 2006-12-01 | 流媒体服务器用户层通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101442866A CN100428670C (zh) | 2006-12-01 | 2006-12-01 | 流媒体服务器用户层通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1972192A CN1972192A (zh) | 2007-05-30 |
CN100428670C true CN100428670C (zh) | 2008-10-22 |
Family
ID=38112808
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101442866A Expired - Fee Related CN100428670C (zh) | 2006-12-01 | 2006-12-01 | 流媒体服务器用户层通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100428670C (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102123144B (zh) * | 2011-02-22 | 2016-09-14 | 中兴通讯股份有限公司 | 传输流媒体数据的方法及流化传输装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002058395A2 (en) * | 2001-01-19 | 2002-07-25 | Streamworks Technologies, Inc. | System and method for streaming media |
CN1474568A (zh) * | 2002-08-06 | 2004-02-11 | 华为技术有限公司 | 多通道数据直接内存访问系统和方法 |
CN1658613A (zh) * | 2004-02-20 | 2005-08-24 | 国际商业机器公司 | 促进dsp间数据通信的方法和系统 |
CN1816053A (zh) * | 2006-03-10 | 2006-08-09 | 清华大学 | 基于会话初始化协议的流媒体直播p2p网络方法 |
-
2006
- 2006-12-01 CN CNB2006101442866A patent/CN100428670C/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002058395A2 (en) * | 2001-01-19 | 2002-07-25 | Streamworks Technologies, Inc. | System and method for streaming media |
CN1474568A (zh) * | 2002-08-06 | 2004-02-11 | 华为技术有限公司 | 多通道数据直接内存访问系统和方法 |
CN1658613A (zh) * | 2004-02-20 | 2005-08-24 | 国际商业机器公司 | 促进dsp间数据通信的方法和系统 |
CN1816053A (zh) * | 2006-03-10 | 2006-08-09 | 清华大学 | 基于会话初始化协议的流媒体直播p2p网络方法 |
Non-Patent Citations (2)
Title |
---|
克服机群系统通信瓶颈的软件方法. 都志辉,麦联叨,朱子玉,刘昊飞,李三立.小型微型计算机系统,第23卷第1期. 2002 |
克服机群系统通信瓶颈的软件方法. 都志辉,麦联叨,朱子玉,刘昊飞,李三立.小型微型计算机系统,第23卷第1期. 2002 * |
Also Published As
Publication number | Publication date |
---|---|
CN1972192A (zh) | 2007-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8392565B2 (en) | Network memory pools for packet destinations and virtual machines | |
EP2312807B1 (en) | Method and system for enabling zero-copy transmission of streaming media data | |
US8005022B2 (en) | Host operating system bypass for packets destined for a virtual machine | |
US7499457B1 (en) | Method and apparatus for enforcing packet destination specific priority using threads | |
US7499463B1 (en) | Method and apparatus for enforcing bandwidth utilization of a virtual serialization queue | |
CN101340574B (zh) | 一种实现零拷贝发送流媒体数据的方法及系统 | |
US6757746B2 (en) | Obtaining a destination address so that a network interface device can write network data without headers directly into host memory | |
US8458280B2 (en) | Apparatus and method for packet transmission over a high speed network supporting remote direct memory access operations | |
US7739736B1 (en) | Method and apparatus for dynamically isolating affected services under denial of service attack | |
US5983274A (en) | Creation and use of control information associated with packetized network data by protocol drivers and device drivers | |
KR101502808B1 (ko) | 단일 모뎀 보드 상의 개선된 멀티-셀 지원을 위한 방법 및 시스템 | |
US7792140B2 (en) | Reflecting the bandwidth assigned to a virtual network interface card through its link speed | |
US7733890B1 (en) | Network interface card resource mapping to virtual network interface cards | |
US7136355B2 (en) | Transmission components for processing VLAN tag and priority packets supported by using single chip's buffer structure | |
RU2589398C2 (ru) | Способ и устройство для быстрого распределения данных | |
WO2024037296A1 (zh) | 基于协议族的quic数据传输方法及装置 | |
US8539112B2 (en) | TCP/IP offload device | |
CN104717189A (zh) | 网络数据包的发送方法及装置 | |
CN113127139B (zh) | 一种基于数据面开发套件dpdk的内存分配方法和装置 | |
US7591011B1 (en) | Assigning higher priority to transactions based on subscription level | |
US20080118065A1 (en) | Hardware acceleration for large volumes of channels | |
CN100428670C (zh) | 流媒体服务器用户层通信方法 | |
CN111698274B (zh) | 数据处理方法及装置 | |
US7672299B2 (en) | Network interface card virtualization based on hardware resources and software rings | |
US7675920B1 (en) | Method and apparatus for processing network traffic associated with specific protocols |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081022 Termination date: 20100104 |