⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hdr-802_16.h

📁 OPNET 中的Wimax模块, 主要用于wimax 无线网络仿真,以及普通无线网络仿真.
💻 H
📖 第 1 页 / 共 3 页
字号:
/******************************************************************* * WiMAX module * * Copyright (C) 2008 Juliana Freitag Borin, Flavio Kubota and Nelson L. * S. da Fonseca - wimaxgroup@lrc.ic.unicamp.br * * This program is a free result: you can redistribute it and/or modify * it under the terms of the UOL Public License Version 1 or (at your * option) any later version. The license terms are available at * http://bolsapesquisa.uol.com.br/lpu.jhtm. * * This file contains: *   -the 802_16 frame formats (i.e., headers) *   -the map structure *   -the upstream flow table structure *   -All global enum and #defines needed by the code * * Revisions: *   $A1   :10/2004 : Ack filtering *   $A0:  2/17/2005:  Added upstream rate control (Viraj )   *   $A1:  3/10/05:  Fixed support of max_concat_thresh *   $A2:  Add stat to track avg number IP packets per concat packet *   $A3:  Fixed jitter calculation *   $A4:  9/13/05: (J. Freitag) sgrant_limit and lgrant_limit are not being used in any function of any class! *   $A5:  3/15/06: (J. Freitag) included non-real-time service *   $A6:  3/31/06: (J. Freitag) included downlink QoS services   *   $A7:  8/29/06: (J. Freitag) QoS parameters (latency and minimum bandwidth) for scheduling services  *   $A8:  8/30/06: (J. Freitag) included a new uplink scheduling algorithm *   $A9:  9/15/06: (J. Freitag) included incremental bandwidth request *   $A10: 11/13/06: (J. Freitag) included aggregate bandwidth request *   $A11: 11/22/06: (J. Freitag) replaced u_char mac_param; by u_int16_t mac_param; in 802_16_frame_hdr  *                                in order to permit bw requests greater than 255 slots	 *   $A12: 04/27/07: (J. Freitag) included extended-real-time service *   $A13: 08/13/07: (J. Freitag) included the T16 timeout defined in the 802.16 standard.  ******************************************************************//*! \file hdr-802_16.h  This file contains:     \li \c the 802_16 frame formats (i.e., headers)     \li \c the map structure     \li \c the upstream flow table structure     \li \c All global enum and #defines needed by the code */#ifndef ns_hdr_mac802_16_h#define ns_hdr_mac802_16_h    #define EPSILON 0.0000000000005/*===============INCLUDE HEADER FILES====================*/#include <arp.h>#include <connector.h>#include <delay.h>      #include <ll.h>#include <mac.h>#include "mac-802_16-timers.h"#include <marshall.h>   #include <packet.h>     #include <queue.h>#include <random.h>/*===============END INCLUDE HEADER FILES====================*//*================ENUM & CONSTANT DEFINITIONS================*/enum SchedType   {    UGS         = 0x0000,    RT_POLL	= 0x0001,    ERT_POLL    = 0x0002, //$A12    NRT_POLL	= 0x0003, //$A5    BEST_EFFORT = 0x0004  };enum PhsType   {    SUPRESS_ALL	  = 0x0000,    SUPRESS_TCPIP = 0x0001,    SUPRESS_UDPIP = 0x0002,    SUPRESS_MAC	  = 0x0003,    NO_SUPRESSION = 0x0004  };enum EventType   {    PKT_ARRIVAL      = 0x0000,    MAP_ARRIVAL      = 0x0001,    SEND_TIMER       = 0x0002,    REQ_TIMER        = 0x0003,    SEND_PKT         = 0x0004,    SEND_UREQ        = 0x0006,    CONTENTION_ON    = 0x0007,    CONTENTION_SLOTS = 0x0008,    CONTENTION_BKOFF = 0x0009,    UNLOCK_QUEUE     = 0x00010,//$A0    PIGGYBACK_REQ  =   0x00011  };#define UPSTREAM           0	#define DOWNSTREAM         1#define	OFF                0#define ON                 1#define BROADCAST_SID      1#define DATA_PKT           0 /* Packet passed from IFQ(Upper layers) */#define MGMT_PKT           1 /* Packet generated at 802_16 layer *//* Need to redefine it later */#define SUPRESS_ALL_SIZE          100#define SUPRESS_TCPIP_SIZE         40#define SUPRESS_UDPIP_SIZE         28#define SUPRESS_MAC_SIZE           28#define DATA_GRANT                  0#define UREQ_GRANT                  1#define CONTENTION_GRANT            2#define SM_GRANT                    3#define ETHER_HDR_LEN               ((ETHER_ADDR_LEN << 1) + ETHER_TYPE_LEN)#define MAC802_16_HDR_LEN           6#define MAX_NUM_IE                240 /* Max num of IEs in a MAP */#define MAX_GRANT                 255 /* Max num of mini-slots that 					 can be assigned per service-flow */#define MAX_RETRY                  10#define SIZE_MGMT_HDR              24#define SIZE_MAP_HDR                4#define MANAGEMENT_MSG_PAYLOAD_SIZE 5 /*Size of payload of mgmt msgs */#define NUM_EXTENDED_HDR_ELEMENTS   2 /* Max num of EH elements in EH */#define MAX_NUM_DOWNFLOWS_PERSS    10 /* Max num of downstream flows 					 a SS can create */#define MAX_NUM_UPFLOWS_PERSS            10 /* Max num of upstream flows 					       a SS can create */#define NUM_802_16_LANS 		  5#define MAX_NUM_SS_NODES		500 /* Max num of SSs in a mac-domain*/#define MAX_NUM_RETRIES			 15#define FRAG_ENABLE_BIT			  8#define CONCAT_ENABLE_BIT		  7#define FRAG_ON_BIT			  6#define CONCAT_ON_BIT			  5#define PIGGY_ENABLE_BIT		  4#define NO_PIGGY_BIT			  3#define PIGGY_NOT_SEND			  2#define CONCAT_THRESHHOLD		  1#define QUEUE_THRESHOLD			 25#define UGSSTATES       		  4#define RTPOLLSTATES    		  6//$A12#define ERTPOLLSTATES    		  5//$A5#define NRTPOLLSTATES                     7//$A0//#define BEFFORTSTATES   		  7#define BEFFORTSTATES   		  8//$A6#define DOWNSTATES                        4#define UGS_IDLE        		  0#define UGS_DECISION    		  1#define UGS_TOSEND      		  2#define UGS_WAITFORMAP  		  3#define RTPOLL_IDLE             	  0#define RTPOLL_DECISION         	  1#define RTPOLL_TOSEND           	  2#define RTPOLL_WAITFORMAP       	  3#define RTPOLL_TOSENDREQ        	  4#define RTPOLL_REQSENT          	  5//$A12#define ERTPOLL_IDLE             	  0#define ERTPOLL_DECISION         	  1#define ERTPOLL_TOSEND           	  2#define ERTPOLL_WAITFORMAP       	  3#define ERTPOLL_TOSENDREQ        	  4//$A5#define NRTPOLL_IDLE            	  0#define NRTPOLL_DECISION        	  1#define NRTPOLL_TOSEND          	  2#define NRTPOLL_WAITFORMAP      	  3#define NRTPOLL_TOSENDREQ       	  4#define NRTPOLL_REQSENT         	  5#define NRTPOLL_CONTENTION      	  6#define BEFFORT_IDLE            	  0#define BEFFORT_DECISION        	  1#define BEFFORT_TOSEND          	  2#define BEFFORT_WAITFORMAP      	  3#define BEFFORT_TOSENDREQ       	  4#define BEFFORT_REQSENT         	  5#define BEFFORT_CONTENTION      	  6//$A0#define BEFFORT_RATECHECK                 7//$A6#define DOWN_IDLE        		  0#define DOWN_DECISION    		  1#define DOWN_TOSEND      		  2#define DOWN_WAITFORMAP  		  3//$A13#define T16_TIMER                         1 //in seconds/*================END ENUM  & CONSTANT DEFINITIONS===================== */       /* ==================================================================             FRAME STRUCTURE DECLARATIONS.    ==================================================================*//*************************************************************************802_16 header format*************************************************************************//*! 802_16 header format */struct mac802_16_frame_hdr {  u_char    fc_type    : 2;  u_char    fc_parm    : 5;  u_char    ehdr_on    : 1;  //$A11  //u_char    mac_param;  u_int16_t mac_param;		  u_int16_t len;};  /*************************************************************************802_16 Extended header element*************************************************************************//*! 802_16 Extended header element */struct mac802_16_extended_header_element {  u_char     eh_type	 : 4;  u_char     eh_len	 : 4;  u_int16_t  eh_data[6];};/*=====================END FRAME STRUCTURE DECLARATIONS==================*//*===============NEW PACKET HEADERS FOR NS============*//************************************************************************* 802_16 packet header*************************************************************************//*!  802_16 packet header */struct hdr_mac802_16 {  struct mac802_16_frame_hdr dshdr_;  int dt_conv_overhead_; /* Overhead added to			    802_16 pkt to account 			    for data convergence layer*/    static int offset_;    inline static int& offset()   {    return offset_;  }    inline static hdr_mac802_16* access(const Packet * p)   {    return (hdr_mac802_16*) p->access(offset_);  }        /* per-field member functions */    struct mac802_16_frame_hdr& dshdr()   {     return dshdr_;  }    int& dt_conv_overhead()   {     return dt_conv_overhead_;  }};/*************************************************************************802_16 extended packet header*************************************************************************//*! 802_16 extended packet header */struct hdr_mac802_16extd {    struct mac802_16_extended_header_element exthdr_[NUM_EXTENDED_HDR_ELEMENTS];    int num_hdr;         /* Num of extended headers on */  static int offset_;    inline static int& offset()	  {     return offset_;   }    inline static hdr_mac802_16extd*	access(const Packet * p)   {    return (hdr_mac802_16extd*) p->access(offset_);  }     /* per-field member functions */  inline int& num_hdr_()   {     return num_hdr;  }    struct mac802_16_extended_header_element* exthdr()   {     return exthdr_;  } };/*************************************************************************802_16 management packet header*************************************************************************//*! 802_16 management packet header */struct hdr_mac802_16mgmt {  int dstaddr;  int srcaddr;  u_char msg_payload_[MANAGEMENT_MSG_PAYLOAD_SIZE];    /*      The last field will be used to carry	        either SYNC or RNG or REG msg   */  u_char type; /* To distinguish between MAP & non-MAP messages */  static int offset_;    inline static int& offset()	  {     return offset_;   }    inline static hdr_mac802_16mgmt*	access(const Packet * p)   {    return (hdr_mac802_16mgmt*) p->access(offset_);  }    /* per-field member functions */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -