CN100428670C - 流媒体服务器用户层通信方法 - Google Patents

流媒体服务器用户层通信方法 Download PDF

Info

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
Application number
CNB2006101442866A
Other languages
English (en)
Other versions
CN1972192A (zh
Inventor
朱子玉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CNB2006101442866A priority Critical patent/CN100428670C/zh
Publication of CN1972192A publication Critical patent/CN1972192A/zh
Application granted granted Critical
Publication of CN100428670C publication Critical patent/CN100428670C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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),如果是,则停止。
CNB2006101442866A 2006-12-01 2006-12-01 流媒体服务器用户层通信方法 Expired - Fee Related CN100428670C (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102123144B (zh) * 2011-02-22 2016-09-14 中兴通讯股份有限公司 传输流媒体数据的方法及流化传输装置

Citations (4)

* Cited by examiner, † Cited by third party
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网络方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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