/* -*- Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- */
/*
* Copyright (c) 1997 Regents of the University of California.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the Computer Systems
* Engineering Group at Lawrence Berkeley Laboratory.
* 4. Neither the name of the University nor of the Laboratory may be used
* to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#) $Header: /cvsroot/nsnam/ns-2/common/packet.h,v 1.100 2006/02/22 13:32:23 mahrenho Exp $ (LBL)
*/
#ifndef ns_packet_h
#define ns_packet_h
#include <string.h>
#include <assert.h>
#include "config.h"
#include "scheduler.h"
#include "object.h"
#include "lib/bsd-list.h"
#include "packet-stamp.h"
#include "ns-process.h"
// Used by wireless routing code to attach routing agent
#define RT_PORT 255 /* port that all route msgs are sent to */
#define HDR_CMN(p) (hdr_cmn::access(p))
#define HDR_ARP(p) (hdr_arp::access(p))
#define HDR_MAC(p) (hdr_mac::access(p))
#define HDR_MAC802_11(p) ((hdr_mac802_11 *)hdr_mac::access(p))
#define HDR_MAC_TDMA(p) ((hdr_mac_tdma *)hdr_mac::access(p))
#define HDR_SMAC(p) ((hdr_smac *)hdr_mac::access(p))
#define HDR_LL(p) (hdr_ll::access(p))
#define HDR_HDLC(p) ((hdr_hdlc *)hdr_ll::access(p))
#define HDR_IP(p) (hdr_ip::access(p))
#define HDR_RTP(p) (hdr_rtp::access(p))
#define HDR_TCP(p) (hdr_tcp::access(p))
#define HDR_SCTP(p) (hdr_sctp::access(p))
#define HDR_SR(p) (hdr_sr::access(p))
#define HDR_TFRC(p) (hdr_tfrc::access(p))
#define HDR_TORA(p) (hdr_tora::access(p))
#define HDR_IMEP(p) (hdr_imep::access(p))
#define HDR_CDIFF(p) (hdr_cdiff::access(p)) /* chalermak's diffusion*/
//#define HDR_DIFF(p) (hdr_diff::access(p)) /* SCADD's diffusion ported into ns */
#define HDR_LMS(p) (hdr_lms::access(p))
/* --------------------------------------------------------------------*/
enum packet_t {
PT_TCP,
PT_UDP,
PT_CBR,
PT_AUDIO,
PT_VIDEO,
PT_ACK,
PT_START,
PT_STOP,
PT_PRUNE,
PT_GRAFT,
PT_GRAFTACK,
PT_JOIN,
PT_ASSERT,
PT_MESSAGE,
PT_RTCP,
PT_RTP,
PT_RTPROTO_DV,
PT_CtrMcast_Encap,
PT_CtrMcast_Decap,
PT_SRM,
/* simple signalling messages */
PT_REQUEST,
PT_ACCEPT,
PT_CONFIRM,
PT_TEARDOWN,
PT_LIVE, // packet from live network
PT_REJECT,
PT_TELNET, // not needed: telnet use TCP
PT_FTP,
PT_PARETO,
PT_EXP,
PT_INVAL,
PT_HTTP,
/* new encapsulator */
PT_ENCAPSULATED,
PT_MFTP,
/* CMU/Monarch's extnsions */
PT_ARP,
PT_MAC,
PT_TORA,
PT_DSR,
PT_AODV,
PT_IMEP,
// RAP packets
PT_RAP_DATA,
PT_RAP_ACK,
PT_TFRC,
PT_TFRC_ACK,
PT_PING,
// Diffusion packets - Chalermek
PT_DIFF,
// LinkState routing update packets
PT_RTPROTO_LS,
// MPLS LDP header
PT_LDP,
// GAF packet
PT_GAF,
// ReadAudio traffic
PT_REALAUDIO,
// Pushback Messages
PT_PUSHBACK,
#ifdef HAVE_STL
// Pragmatic General Multicast
PT_PGM,
#endif //STL
// LMS packets
PT_LMS,
PT_LMS_SETUP,
PT_SCTP,
PT_SCTP_APP1,
// SMAC packet
PT_SMAC,
// XCP packet
PT_XCP,
// HDLC packet
PT_HDLC,
// RCP packet
PT_RCP,
// Bell Labs Traffic Trace Type (PackMime OL)
PT_BLTRACE,
// insert new packet types here
PT_NTYPE // This MUST be the LAST one
};
class p_info {
public:
p_info() {
name_[PT_TCP]= "tcp";
name_[PT_UDP]= "udp";
name_[PT_CBR]= "cbr";
name_[PT_AUDIO]= "audio";
name_[PT_VIDEO]= "video";
name_[PT_ACK]= "ack";
name_[PT_START]= "start";
name_[PT_STOP]= "stop";
name_[PT_PRUNE]= "prune";
name_[PT_GRAFT]= "graft";
name_[PT_GRAFTACK]= "graftAck";
name_[PT_JOIN]= "join";
name_[PT_ASSERT]= "assert";
name_[PT_MESSAGE]= "message";
name_[PT_RTCP]= "rtcp";
name_[PT_RTP]= "rtp";
name_[PT_RTPROTO_DV]= "rtProtoDV";
name_[PT_CtrMcast_Encap]= "CtrMcast_Encap";
name_[PT_CtrMcast_Decap]= "CtrMcast_Decap";
name_[PT_SRM]= "SRM";
name_[PT_REQUEST]= "sa_req";
name_[PT_ACCEPT]= "sa_accept";
name_[PT_CONFIRM]= "sa_conf";
name_[PT_TEARDOWN]= "sa_teardown";
name_[PT_LIVE]= "live";
name_[PT_REJECT]= "sa_reject";
name_[PT_TELNET]= "telnet";
name_[PT_FTP]= "ftp";
name_[PT_PARETO]= "pareto";
name_[PT_EXP]= "exp";
name_[PT_INVAL]= "httpInval";
name_[PT_HTTP]= "http";
name_[PT_ENCAPSULATED]= "encap";
name_[PT_MFTP]= "mftp";
name_[PT_ARP]= "ARP";
name_[PT_MAC]= "MAC";
name_[PT_TORA]= "TORA";
name_[PT_DSR]= "DSR";
name_[PT_AODV]= "AODV";
name_[PT_IMEP]= "IMEP";
name_[PT_RAP_DATA] = "rap_data";
name_[PT_RAP_ACK] = "rap_ack";
name_[PT_TFRC]= "tcpFriend";
name_[PT_TFRC_ACK]= "tcpFriendCtl";
name_[PT_PING]="ping";
/* For diffusion : Chalermek */
name_[PT_DIFF] = "diffusion";
// Link state routing updates
name_[PT_RTPROTO_LS] = "rtProtoLS";
// MPLS LDP packets
name_[PT_LDP] = "LDP";
// for GAF
name_[PT_GAF] = "gaf";
// RealAudio packets
name_[PT_REALAUDIO] = "ra";
//pushback
name_[PT_PUSHBACK] = "pushback";
#ifdef HAVE_STL
// for PGM
name_[PT_PGM] = "PGM";
#endif //STL
// LMS entries
name_[PT_LMS]="LMS";
name_[PT_LMS_SETUP]="LMS_SETUP";
name_[PT_SCTP]= "sctp";
name_[PT_SCTP_APP1] = "sctp_app1";
// smac
name_[PT_SMAC]="smac";
// HDLC
name_[PT_HDLC]="HDLC";
// XCP
name_[PT_XCP]="xcp";
// RCP
name_[PT_RCP]="rcp";
// Bell Labs (PackMime OL)
name_[PT_BLTRACE]="BellLabsTrace";
name_[PT_NTYPE]= "undefined";
}
const char* name(packet_t p) const {
if ( p <= PT_NTYPE ) return name_[p];
return 0;
}
static bool data_packet(packet_t type) {
return ( (type) == PT_TCP || \
(type) == PT_TELNET || \
(type) == PT_CBR || \
(type) == PT_AUDIO || \
(type) == PT_VIDEO || \
(type) == PT_ACK || \
(type) == PT_SCTP || \
(type) == PT_SCTP_APP1 || \
(type) == PT_HDLC \
);
}
private:
static char* name_[PT_NTYPE+1];
};
extern p_info packet_info; /* map PT_* to string name */
//extern char* p_info::name_[];
#define DATA_PACKET(type) ( (type) == PT_TCP || \
(type) == PT_TELNET || \
(type) == PT_CBR || \
(type) == PT_AUDIO || \
(type) == PT_VIDEO || \
(type) == PT_ACK || \
(type) == PT_SCTP || \
(type) == PT_SCTP_APP1 \
)
//#define OFFSET(type, field) ((long) &((type *)0)->field)
#define OFFSET(type, field) ( (char *)&( ((type *)256)->
没有合适的资源?快使用搜索试试~ 我知道了~
rcp.tar.gz_NS2拥塞_congestion xcp_ns2_rcp.t_拥塞控制
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 11 浏览量
2022-09-22
20:27:51
上传
评论
收藏 51KB GZ 举报
温馨提示
共38个文件
pl:19个
tcl:10个
cc:3个
RCP拥塞控制协议。可以很方便地移植到NS2中去。可以和TCP,XCP等比较。做拥塞控制的实验。适用于NS-2.30版本
资源推荐
资源详情
资源评论
收起资源包目录
rcp.tar.gz (38个子文件)
ns-2.30
tcl
lib
ns-default.tcl 48KB
ns-packet.tcl 9KB
rcp
rcp-host.h 3KB
rcp.cc 16KB
rcp-host.cc 23KB
trace
trace.cc 16KB
example-tcl-files
rcp
pareto-flowSizes
sim-rcp-pareto.tcl 20KB
run.pl 622B
average.pl 1KB
queueProcess.pl 719B
long-flows
rcp-pair.tcl 7KB
._.DS_Store 82B
run.pl 2KB
.DS_Store 6KB
longlived.rcp.tcl 3KB
uniform-flowSizes
run.pl 526B
sim-rcp-uniform.tcl 20KB
average.pl 1KB
queueProcess.pl 718B
xcp
pareto-flowSizes
run.pl 551B
sim-xcp-pareto.tcl 19KB
average.pl 1KB
queueProcess.pl 719B
uniform-flowSizes
sim-xcp-uniform.tcl 20KB
run.pl 764B
average.pl 1KB
queueProcess.pl 724B
tcp
pareto-flowSizes
run.pl 554B
average.pl 1KB
queueProcess.pl 719B
sim-tcp-pareto.tcl 19KB
uniform-flowSizes
run.pl 765B
sim-tcp-uniform.tcl 19KB
average.pl 1KB
queueProcess.pl 724B
README 604B
common
packet.h 18KB
Makefile 27B
共 38 条
- 1
资源评论
- 2301_768927552023-03-20资源很赞,希望多一些这类资源。
JonSco
- 粉丝: 66
- 资源: 1万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功