【NS2仿真】RTP协议安装
来自: http://personales.upv.es/fboronat/Research/NS2_RTP/NS2_RTP_RTCP_module.htm
文件:http://pan.baidu.com/s/1slRAwn7
NEW NS-2 RTP/RTCP MODULE
INSTALLATION GUIDE
0. DOWNLOAD
Download the files of the new module. Download new RTP/RTCP NS-2 module
If you find this module useful for your work, please let us know. If you use the module to obtain results for publications, please reference the as follows:
Montagud, M. and Boronat, F. 2010. A new network simulator 2 (NS-2) module based on RTP/RTCP protocols to achieve multimedia group synchronization. In Proceedings of the 3rd international ICST Conference on Simulation Tools and Techniques (Torremolinos, Malaga, Spain, March 15 - 19, 2010). International Conference on Simulation Tools and Techniques for Commuications, Networks and Systems & Workshops. ICST (Institute for Computer Sciences Social-Informatics and Telecommunications Engineering), ICST, Brussels, Belgium, 1-8. DOI= http://dx.doi.org/10.4108/ICST.SIMUTOOLS2010.8686   
  
   
1.
  INTRODUCTION
In this document
  the authors describe the necessary steps to include the new developed RTP/RTCP
  module with the other built-in NS-2 modules,
  without needing to replace the native implementation for these protocols.
  We assume the reader has successfully installed a current NS-2.XX[1] version. This
code has been developed and tested with NS-2.33 and NS-2.34.
In the legacy code,
  RTP
  and RTCP protocols are implemented as the RTP Agent and
the  RTCP Agent classes, respectively. These two classes
are  implemented in the rtp.cc
(located  in ~ns-2.XX/apps/rtp.cc) and rtcp.cc (located in ~ns-2.XX/tcp/rtcp.cc) files, as can
  be appreciated in Figure 1.  The RTP Agent holds
  all the functionalities for sending and receiving data packets, whereas
the  RTCP Agent is responsible for the
control  reports transmission and reception. The RTP Session
class  (implemented in ~ns-2.XX/common/session-rtp.cc) mainly deals
with feedback report building and participant’s information tables maintenance, through the received packets passed
  by its agents. This class also defines the procedures for session initialization,
  report interval calculation, associating new RTP sessions with nodes, managing
  join and leave processes to multicast groups, stopping RTP flow transmissions,
  liberating the session resources, etc. It is called by its binding Session/RTP OTcl class (implemented
  in ~ns-2.XX/tcl/rtp/session-rtp.tcl). All the above
  files use rtp.h(located  in ~ns-2.XX/apps/rtp.h) as header file, and they are shown in pink boxes in Figure 1.
Figure 1.   NS-2
  Directory Structure
The native implementation
  is quite generic. Many attributes specified in RFC 3550 are not included
 or they are not implemented accurately: i) it
 does not define all the RTCP packets, only RTCP Sender Reports (SR) packets
 are included, but its format is not complete (it does not include payload
 type, number of packets/octets sent fields, etc.); ii) since RTCP Receiver
 Reports (RR) messages are not defined, neither QoS
 metrics (jitter, network delay, Round Trip Time -RTT-, loss rate) monitoring
 nor reporting are provided; iii) the same packet header data structure is
 used for both RTP and RTCP packets construction; iv) the packet header fields
 are specified using incorrect variables’ types and sizes; v) there is a
bug  for multicast transmissions configuration; vi) the code does not support
multiple multicast streams on the same node; vii) the RTP Agent is only capable
of generating CBR (Constant Bit Rate) traffic, etc.
As simulations
rely on the accuracy of the proposed models,
  and as the NS-2 native implementation
  for RTP/RTCP standard protocols is incomplete and imprecise, authors decided
  to develop a new module with a more complete and accurate implementation
 for these protocols than the one in the NS-2 native code, following strictly
  all the attributes specified in RFC 3550. The code includes
  the following enhancements: i) definition of
  all the types of RTCP packets with their exact format (Sender Report
or SR, Receiver Reports or RR, Source Description or SDES, Application-defined
  or APP and BYE packets); ii) network-level metrics
  (such as end-to-end delay, jitter, RTT, throughput and packet loss) monitoring,
  processing and registering in simulation time; iii) capability of processing
  any kind of application traffic pattern supported by NS-2; iv) support
for   multiple multicast streams on the same node; and v) compatibility with
the   legacy code.
2. INSTALLATION STEPS
In order to install
  the new developed NS-2 module, users must follow the next instructions:
- Decompress (untar) the ‘rtp_gs_module.tar.gz’      file. After decompression,
 a new folder ‘rtp_gs_module’ will
 be created. It includes:
- ‘rtp_gs’ folder, containing the C++
 source code:
rtp_gs.h    rtp_gs.cc  
  rtcp_gs.h   rtcp_gs.cc                    session-rtp_gs.h  session-rtp_gs.cc
- session-rtp.tcl file, including the TCL code.
 In this file we have slightly modified the native TCL code in order
 to correct a small bug that does not allow configuring
 multicast scenarios. We have also included,
 in the same file, the TCL code for the new developed module in order
 to avoid adding another file (and/or directory).
- rtp_scenario.tclfile, with an       example
 of a TCL script. It includes the necessary steps in order to configure
 a new multicast simulation scenario with one RTP Source and three
 RTP Receivers distributed over the network topology, using our new RTP/RTCP
 module.
- Move the ‘rtp_gs’ folder into ns-allinone-2.XX/ns-2.XX directory.
- Replace      the
 session-rtp.tcl file,
 located in ns-allinone-2.XX/ns-2.XX/tcl/rtp/, with
 the one provided in the ‘rtp_gs_module’
 folder.
- Define the
 new specific packet types for the new developed protocols. The list of supported
 packets by NS-2 is located inside ~ns-2.XX/common/packet.h
 file. Thus, users must
 modify this file including the new RTP/RTCP packets (using numeric
 constants, which can vary depending on the NS-2 version) in packet_tenumeration
 (located in this header file):
typedef unsigned int
  packet_t;
static const packet_t
  PT_TCP = 0;
static const packet_t
  PT_UDP = 1;
...
static const packet_t
  PT_RTCP = 14;
static const packet_t
  PT_RTP = 15;
...
// insert new packet
  types here
static
  const packet_t PT_RTCP_GS = 61;
static
  const packet_t PT_RTP_GS = 62;
// The numbers can
vary depending on the NS-2 version!!!
// This MUST be the
  LAST one (61+2)
static packet_t PT_NTYPE
  = 63;
In the same file,
  users must provide a textual name for the new RTP/RTCP novel
packets identifying   in order to distinguish them from the native packets
in the output trace  files generated by the simulator. This is done by adding
the following lines  inside p_info
C++ class constructor:
class
p_info {
public:
p_info()
{
initname()
}
...
static
  void initName()
{
...
name_[PT_TCP]= "tcp";
name_[PT_UDP]= "udp";
...
name_[PT_RTCP]= "rtcp";
name_[PT_RTP]= "rtp";
...
name_[PT_RTCP_GS]= "rtcp_gs";
     
  name_[PT_RTP_GS]= "rtp_gs";
...
}
}
Doing so, the new
  RTP/RTCP packets will be able to be sent, received and processed by the
NS-2  simulation objects.
- Save changes.
- Add the      following
 lines to ‘ns-2.XX/tcl/lib/ns-default.tcl’ file just below the line ‘Agent/RTCP
 set seqno_ 0’, in order to
 set default values for the Otcl/C++ bound
 variables:
Agent/RTCP set seqno_ 0
     
        # New RTP/RTCP module:
  default variables setting
Agent/RTP_gs
  set seqno_ 0
           
  Agent/RTP_gs set packetSize_  1000
           
  Agent/RTCP_gs set interval_ 500ms.
           
  Agent/RTCP_gs set random_ 0
           
  Session/RTP_gs set debug_ 0
           
  Session/RTP_gs set cname_ 0
           
  Session/RTP_gs set jitter_ 0
           
  Session/RTP_gs set RTT_ 0
           
  Session/RTP_gs set rx_recv_ 0
…
- Save changes.
- After      that,
 it is necessary to open the ‘Makefile.in’
 file (located in ~ns-2.XX/directory)
 and modify it in order to add the source files of the new RTP/RTCP
 module.
- Add to the
 INCLUDES section this text: '-I./rtp_gs \'. It should look like:
INCLUDES = \
-I. @V_INCLUDE_X11@ \
-I. \
@V_INCLUDES@ \
-I./tcp -I./sctp -I./common -I./link -I./queue
-I./adc -I./apps -I./mac -I./mobile -I./trace \
-I./routing
  -I./tools -I./classifier -I./mcast \
-I./diffusion3/lib/main
  -I./diffusion3/lib \
-I./diffusion3/lib/nr
  -I./diffusion3/ns \
-I./diffusion3/filter_core
  -I./asim/ -I./qs \
-I./diffserv -I./satellite
  -I./rtp_gs \
-I./wpan
- Go to the “OBJ.CC” section and
 add the following line (before the line @V_STLOBJ@):
rtp_gs/rtp_gs.o
  rtp_gs/rtcp_gs.o rtp_gs/session-rtp_gs.o
  \
We can add it just
  below the line:
common/session-rtp.o
  apps/rtp.o tcp/rtcp.o
  \
Users need to do
  that because the source directories for the new RTP/RTCP code have been
collocated  in a new directory (‘rtp_gs’).
- Save changes.
- Here, all
 the necessary modifications have been finished. Open a terminal window, move
 to ns-allinone-2.XX/ns-2.XX and run:
./configure
, in order to create a new ‘Makefile’ file.
- The last      step
 is to compile the code. Execute the following commands (users must
 still be in ns-allinone-2.XX/ns-2.XX directory):
make
  clean;make depend;make;
Once it is finished,
  a new binary file named ‘ns’ in ns-allinone-2.XX/ns-2.XX/
  directory will be available with the new RTP/RTCP functionality.
Authors recommend
  the use of an IDE to work with NS-2. We personally use KDevelop.
For bugs reporting
  email to: mamontor@posgrado.upv.es or fboronat@dcom.upv.es.
[1] XX refers to the current NS-2 version installed by the user.
【NS2仿真】RTP协议安装的更多相关文章
- NS2仿真:两个移动节点网络连接及协议性能分析
		NS2仿真实验报告2 实验名称:两个移动节点网络连接及协议性能分析 实验日期:2015年3月9日~2015年3月14日 实验报告日期:2015年3月15日 一.实验环境(网络平台,操作系统,网络拓扑图 ... 
- 网络拥塞控制与NS2仿真
		准备工作: 1. 安装virtual box 虚拟机,并安装虚拟机增强功能,并配制共享文件夹. 共享文件夹自动挂载后的路径为/media/sf_xxx文件夹,xxx为所起的文件名. 解决virtual ... 
- NS2仿真:使用NS仿真软件模拟简单网络模型
		NS2仿真实验报告1 实验名称:使用NS仿真软件模拟简单网络模型 实验日期:2015年3月2日~2015年3月7日 实验报告日期:2015年3月8日 一.实验环境(网络平台,操作系统,网络拓扑图) 运 ... 
- RTP协议学习大总结从原理到代码
		from:http://wenku.baidu.com/view/aaad3d136edb6f1aff001fa5.html 一.流媒体概念 流媒体包含广义和狭义两种内涵:广义上的流媒体指的是使音频和 ... 
- NS2仿真:公交车移动周期模型及性能分析
		NS2仿真实验报告3 实验名称:公交车移动周期模型及性能分析 实验日期:2015年3月16日~2015年3月21日 实验报告日期:2015年3月22日 一.实验环境(网络平台,操作系统,网络拓扑图) ... 
- Linux下几种RTP协议实现的比较和JRTPLIB编程讲解
		流媒体指的是在网络中使用流技术传输的连续时基媒体,其特点是在播放前不需要下载整个文件,而是采用边下载边播放的方式,它是视频会议. IP电话等应用场合的技术基础.RTP是进行实时流媒体传输的标准协议和关 ... 
- 自己动手写RTP服务器——关于RTP协议
		转自:http://blog.csdn.net/baby313/article/details/7353605 本文会带领着你一步步动手实现一个简单的RTP传输服务器,旨在了解RTP流媒体传输协议以及 ... 
- Rtp 协议实现网络广播台网络收音机
		RTP协议介绍:http://www.360doc.com/content/11/1009/15/496343_154624612.shtml 本文中使用了 StreamCoders 的 RTP.ne ... 
- RTP协议分析(转自:http://blog.csdn.net/bripengandre/article/details/2238818)
		RTP协议分析 第1章. RTP概述 1.1. RTP是什么 RTP全名是Real-time Transport Protocol(实时传输协议).它是IETF提出的一个标准,对应的RFC文 ... 
随机推荐
- Sublime Text 设置文件详解
			Sublime Text 2是那种让人会一眼就爱上的编辑器,不仅GUI让人眼前一亮,功能更是没的说,拓展性目前来说也完全够用了,网上介绍软件的文章和推荐插件的文章也不少,而且很不错,大家可以去找找自 ... 
- text-size-adjust属性
			在慕课上无意中看到-webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%;这两段代码,居然发现自己完全不理解,然后就去问度娘了,以下是一些 ... 
- Couldn't create temporary file to work with
			Ubuntu中当你编译安装软件的时候可能会出现Couldn't create temporary file to work with,原因可能是: 1.权限问题 2.根目录下没有tmp文件夹 解决办 ... 
- web应用程序 ---- 日志系统的设计
			最近在做一个小的项目,是web的应用程序,最近也有点时间,把日志管理来简单的说说. 日志,就是需要记录一些自己感兴趣的信息,把它保存起来,具体保存在哪里?保存多长时间?这些要求都是根据不同的项目需求而 ... 
- Google Interview University - 坚持完成这套学习手册,你就可以去 Google 面试了
			作者:Glowin链接:https://zhuanlan.zhihu.com/p/22881223来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 原文地址:Google ... 
- android CheckBox的运用
			CheckBox定义一个同意协议的按钮,只要同意button才可以点击 XML代码 <CheckBox android:id="@+id/checkbox1" android ... 
- 【ASP.NET MVC 5】第27章 Web API与单页应用程序
			注:<精通ASP.NET MVC 3框架>受到了出版社和广大读者的充分肯定,这让本人深感欣慰.目前该书的第4版不日即将出版,现在又已开始第5版的翻译,这里先贴出该书的最后一章译稿,仅供大家 ... 
- Jquery+artTemplate+layPage 封装datagrid
			导言 在日常开发中经常会用到列表,相信用过easyui,Ext等很多,的确很强大,但想修改确实也不容易,我也用了几年的easyui,有时间时会想一下,自已随然没有前端的精湛技术,但可以在有这些技术的开 ... 
- Centos单网卡配置多个IP的方法
			网上好多介绍一个网卡多个IP的方法,都有些问题,下面是实践可行的方法 DEVICE="eth0" TYPE="Ethernet" BOOTPROTO=none ... 
- MVC的JsonResult用法
			在Asp.net Mvc 2中由于对数据的保护,默认情况下request为post,所以在前端请求的时候则需要以post方式request action方法: public JsonResult Ge ... 
