Commit 8c339ad6 authored by Navid Nikaein's avatar Navid Nikaein

add makefile support for DB stats, fix minor issues for jitter calculation

git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4030 818b1a75-f10b-46b9-bf7c-635c3b92a50f
parent 9184b5aa
...@@ -131,7 +131,7 @@ LTE_eNB_DLSCH_t *new_eNB_dlsch(unsigned char Kmimo,unsigned char Mdlharq,unsigne ...@@ -131,7 +131,7 @@ LTE_eNB_DLSCH_t *new_eNB_dlsch(unsigned char Kmimo,unsigned char Mdlharq,unsigne
for (i=0;i<Mdlharq;i++) { for (i=0;i<Mdlharq;i++) {
dlsch->harq_processes[i] = (LTE_DL_eNB_HARQ_t *)malloc16(sizeof(LTE_DL_eNB_HARQ_t)); dlsch->harq_processes[i] = (LTE_DL_eNB_HARQ_t *)malloc16(sizeof(LTE_DL_eNB_HARQ_t));
printf("Required mem size %d (bw scaling %d), dlsch->harq_processes[%d] %p\n", LOG_T(PHY, "Required mem size %d (bw scaling %d), dlsch->harq_processes[%d] %p\n",
MAX_DLSCH_PAYLOAD_BYTES/bw_scaling,bw_scaling, i,dlsch->harq_processes[i]); MAX_DLSCH_PAYLOAD_BYTES/bw_scaling,bw_scaling, i,dlsch->harq_processes[i]);
if (dlsch->harq_processes[i]) { if (dlsch->harq_processes[i]) {
bzero(dlsch->harq_processes[i],sizeof(LTE_DL_eNB_HARQ_t)); bzero(dlsch->harq_processes[i],sizeof(LTE_DL_eNB_HARQ_t));
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
#include "local.h" #include "local.h"
#include "proto_extern.h" #include "proto_extern.h"
#include "platform_constants.h" //#include "platform_constants.h"
//#define NETLINK_DEBUG 1 //#define NETLINK_DEBUG 1
......
...@@ -74,41 +74,41 @@ typedef enum { ...@@ -74,41 +74,41 @@ typedef enum {
*/ */
typedef enum { typedef enum {
NO_PREDEFINED_TRAFFIC =0, NO_PREDEFINED_TRAFFIC =0,
M2M, M2M, // 1
SCBR, SCBR, //2
MCBR, MCBR, //3
BCBR, BCBR, //4
AUTO_PILOT, AUTO_PILOT, //5
BICYCLE_RACE, BICYCLE_RACE, // 6
OPENARENA, OPENARENA, // 7
TEAM_FORTRESS, TEAM_FORTRESS, // 8
FULL_BUFFER, FULL_BUFFER, // 9
M2M_TRAFFIC, M2M_TRAFFIC, // 10
AUTO_PILOT_L, /*AUTO PILOT LOW SPEEDS*/ AUTO_PILOT_L, //11 /*AUTO PILOT LOW SPEEDS*/
AUTO_PILOT_M, /*AUTO PILOT MEDIEUM SPEEDS*/ AUTO_PILOT_M, // 12 /*AUTO PILOT MEDIEUM SPEEDS*/
AUTO_PILOT_H, /*AUTO PILOT HIGH SPEEDS*/ AUTO_PILOT_H, // 13 /*AUTO PILOT HIGH SPEEDS*/
AUTO_PILOT_E, /*AUTO PILOT EMERGENCY*/ AUTO_PILOT_E, // 14 /*AUTO PILOT EMERGENCY*/
VIRTUAL_GAME_L, /*VIRTUAL GAME LOW SPEEDS*/ VIRTUAL_GAME_L,// 15 /*VIRTUAL GAME LOW SPEEDS*/
VIRTUAL_GAME_M, /*VIRTUAL GAME MEDIEUM SPEEDS*/ VIRTUAL_GAME_M, // 16 /*VIRTUAL GAME MEDIEUM SPEEDS*/
VIRTUAL_GAME_H, /*VIRTUAL GAME HIGH SPEEDS*/ VIRTUAL_GAME_H, // 17 /*VIRTUAL GAME HIGH SPEEDS*/
VIRTUAL_GAME_F, /*VIRTUAL GAME FINISH*/ VIRTUAL_GAME_F, // 18 /*VIRTUAL GAME FINISH*/
ALARM_HUMIDITY, /* SENSOR BASED ALARM : HUMIDITY */ ALARM_HUMIDITY, // 19 /* SENSOR BASED ALARM : HUMIDITY */
ALARM_SMOKE, /* SENSOR BASED ALARM : SMOKE */ ALARM_SMOKE, // 20 /* SENSOR BASED ALARM : SMOKE */
ALARM_TEMPERATURE,/* SENSOR BASED ALARM : TEMPERATURE */ ALARM_TEMPERATURE, // 21 /* SENSOR BASED ALARM : TEMPERATURE */
OPENARENA_DL, OPENARENA_DL, // 22
OPENARENA_UL, OPENARENA_UL, // 23
VOIP_G711, VOIP_G711, // 24
VOIP_G729, VOIP_G729, // 25
IQSIM_MANGO, IQSIM_MANGO, // 26
IQSIM_NEWSTEO, IQSIM_NEWSTEO, // 27
OPENARENA_DL_TARMA, OPENARENA_DL_TARMA, // 28
VIDEO_VBR_10MBPS, VIDEO_VBR_10MBPS, // 29
VIDEO_VBR_4MBPS, VIDEO_VBR_4MBPS, // 30
VIDEO_VBR_2MBPS, VIDEO_VBR_2MBPS, // 31
VIDEO_VBR_768KBPS, VIDEO_VBR_768KBPS, // 32
VIDEO_VBR_384KBPS, VIDEO_VBR_384KBPS, // 33
VIDEO_VBR_192KBPS, VIDEO_VBR_192KBPS, // 34
BACKGROUND_USERS, BACKGROUND_USERS, // 35
DUMMY DUMMY
}Application; }Application;
...@@ -123,16 +123,16 @@ typedef enum { ...@@ -123,16 +123,16 @@ typedef enum {
typedef enum { typedef enum {
NO_TRAFFIC=0, NO_TRAFFIC=0,
UNIFORM, UNIFORM, //1
GAUSSIAN, GAUSSIAN, //2
EXPONENTIAL, EXPONENTIAL, //3
POISSON, POISSON, // 4
FIXED, FIXED, // 5
WEIBULL, WEIBULL, // 6
PARETO, PARETO, // 7
GAMMA, GAMMA, // 8
CAUCHY, CAUCHY, // 9
LOG_NORMAL, LOG_NORMAL, // 10
TARMA, TARMA,
VIDEO, VIDEO,
BACKGROUND_DIST, BACKGROUND_DIST,
......
...@@ -52,9 +52,9 @@ fl_initialize(&tArgc,tArgv,"OTG",0,0); ...@@ -52,9 +52,9 @@ fl_initialize(&tArgc,tArgv,"OTG",0,0);
fl_show_form (form_dl->otg, FL_PLACE_HOTSPOT, FL_FULLBORDER, title); fl_show_form (form_dl->otg, FL_PLACE_HOTSPOT, FL_FULLBORDER, title);
fl_set_form_position(form_dl->otg, 200, 200); fl_set_form_position(form_dl->otg, 200, 200);
if (g_otg->owd_radio_access==1) if (g_otg->owd_radio_access==1)
fl_set_xyplot_ybounds(form_dl->owd,0,100);
else
fl_set_xyplot_ybounds(form_dl->owd,0,200); fl_set_xyplot_ybounds(form_dl->owd,0,200);
else
fl_set_xyplot_ybounds(form_dl->owd,0,400);
fl_set_xyplot_ybounds(form_dl->throughput,0,200); fl_set_xyplot_ybounds(form_dl->throughput,0,200);
...@@ -66,9 +66,9 @@ fl_initialize(&tArgc,tArgv,"OTG",0,0); ...@@ -66,9 +66,9 @@ fl_initialize(&tArgc,tArgv,"OTG",0,0);
fl_show_form (form_ul->otg, FL_PLACE_HOTSPOT, FL_FULLBORDER, title); fl_show_form (form_ul->otg, FL_PLACE_HOTSPOT, FL_FULLBORDER, title);
fl_set_form_position(form_ul->otg, 850, 200); fl_set_form_position(form_ul->otg, 850, 200);
if (g_otg->owd_radio_access==1) if (g_otg->owd_radio_access==1)
fl_set_xyplot_ybounds(form_ul->owd,0,100);
else
fl_set_xyplot_ybounds(form_ul->owd,0,200); fl_set_xyplot_ybounds(form_ul->owd,0,200);
else
fl_set_xyplot_ybounds(form_ul->owd,0,400);
......
...@@ -686,8 +686,12 @@ void add_log_metric(int src, int dst, int ctime, double metric, unsigned int lab ...@@ -686,8 +686,12 @@ void add_log_metric(int src, int dst, int ctime, double metric, unsigned int lab
case OTG_GP_BG: case OTG_GP_BG:
add_log_label(label, &start_log_GP_bg); add_log_label(label, &start_log_GP_bg);
break; break;
case OTG_JITTER:
add_log_label(label, &start_log_GP_bg);
break;
default: default:
LOG_E(OTG, "File label unknown \n"); LOG_E(OTG, "File label unknown %d \n", label);
} }
LOG_F(label,"%d ", ctime); LOG_F(label,"%d ", ctime);
......
...@@ -53,6 +53,7 @@ unsigned int start_log_latency=0; ...@@ -53,6 +53,7 @@ unsigned int start_log_latency=0;
unsigned int start_log_latency_bg=0; unsigned int start_log_latency_bg=0;
unsigned int start_log_GP=0; unsigned int start_log_GP=0;
unsigned int start_log_GP_bg=0; unsigned int start_log_GP_bg=0;
unsigned int start_log_jitter=0;
/*! \fn void tx_throughput( int src, int dst, int application) /*! \fn void tx_throughput( int src, int dst, int application)
* \brief compute the transmitter throughput in bytes per seconds * \brief compute the transmitter throughput in bytes per seconds
......
...@@ -482,7 +482,7 @@ backgroundStream_t *backgroundStreamInit(backgroundStream_t *stream, double lamb ...@@ -482,7 +482,7 @@ backgroundStream_t *backgroundStreamInit(backgroundStream_t *stream, double lamb
} }
} }
printf("OTG BACKGROUND_USERS DEBUG: backgroundStreamInit(%d) called\n",(int)stream); LOG_D(OTG,"BACKGROUND_USERS DEBUG: backgroundStreamInit(%d) called\n",(int)stream);
backgroundPrintStream (stream); backgroundPrintStream (stream);
return stream; return stream;
} }
...@@ -496,7 +496,7 @@ backgroundStream_t *backgroundStreamInit(backgroundStream_t *stream, double lamb ...@@ -496,7 +496,7 @@ backgroundStream_t *backgroundStreamInit(backgroundStream_t *stream, double lamb
void backgroundUpdateStream(backgroundStream_t *stream, int ctime){ void backgroundUpdateStream(backgroundStream_t *stream, int ctime){
int numNewSessions, cnts, period; int numNewSessions, cnts, period;
printf("OTG BACKGROUND DEBUG: backgroundUpdateStream(stream*=%d,ctime=%d,period=%d) called\n",(int)stream, ctime); LOG_D(OTG,"BACKGROUND DEBUG: backgroundUpdateStream(stream*=%d,ctime=%d,period=%d) called\n",(int)stream, ctime);
if(stream){ if(stream){
period=ctime-stream->lastUpdateTime; period=ctime-stream->lastUpdateTime;
numNewSessions=poisson_dist(stream->meanNumSessions/5710*period); numNewSessions=poisson_dist(stream->meanNumSessions/5710*period);
...@@ -532,7 +532,7 @@ double backgroundCalculateSize(backgroundStream_t *stream, int ctime, int idt){ ...@@ -532,7 +532,7 @@ double backgroundCalculateSize(backgroundStream_t *stream, int ctime, int idt){
double mrate=0; double mrate=0;
backgroundUpdateStream(stream, ctime); backgroundUpdateStream(stream, ctime);
printf("OTG BACKGROUND DEBUG: backgroundCalculateSize(stream*=%d,idt=%d,ctime=%d) called\n",(int)stream, idt, ctime); LOG_D(OTG,"BACKGROUND DEBUG: backgroundCalculateSize(stream*=%d,idt=%d,ctime=%d) called\n",(int)stream, idt, ctime);
if(stream){ if(stream){
for(cnts=0; cnts<BACKGROUND_NUM_ACTIVE_MAX; cnts++){ for(cnts=0; cnts<BACKGROUND_NUM_ACTIVE_MAX; cnts++){
if(stream->activeSessions[cnts].endTime>ctime){ if(stream->activeSessions[cnts].endTime>ctime){
...@@ -541,7 +541,7 @@ double backgroundCalculateSize(backgroundStream_t *stream, int ctime, int idt){ ...@@ -541,7 +541,7 @@ double backgroundCalculateSize(backgroundStream_t *stream, int ctime, int idt){
} }
} }
size=mrate*idt/1000; size=mrate*idt/1000;
printf("OTG BACKGROUND DEBUG: cntact=%02d, idt=%05d, agg_mrate=%05.1f, size=%04.1f\n", cntact, idt, mrate,size); LOG_D(OTG,"BACKGROUND DEBUG: cntact=%02d, idt=%05d, agg_mrate=%05.1f, size=%04.1f\n", cntact, idt, mrate,size);
} }
return size; return size;
} }
...@@ -554,11 +554,11 @@ double backgroundCalculateSize(backgroundStream_t *stream, int ctime, int idt){ ...@@ -554,11 +554,11 @@ double backgroundCalculateSize(backgroundStream_t *stream, int ctime, int idt){
void backgroundPrintStream(backgroundStream_t *stream){ void backgroundPrintStream(backgroundStream_t *stream){
int cnts; int cnts;
printf("OTG BACKGROUND DEBUG: backgroundPrintStream(%d)\n",(int)stream); LOG_D(OTG,"BACKGROUND DEBUG: backgroundPrintStream(%d)\n",(int)stream);
if(stream){ if(stream){
printf("OTG BACKGROUND DEBUG: meanNumSessions(lambda_n)=%f\n",stream->meanNumSessions); LOG_D(OTG,"BACKGROUND DEBUG: meanNumSessions(lambda_n)=%f\n",stream->meanNumSessions);
for(cnts=0; cnts<BACKGROUND_NUM_ACTIVE_MAX; cnts++){ for(cnts=0; cnts<BACKGROUND_NUM_ACTIVE_MAX; cnts++){
printf("OTG BACKGROUND DEBUG: session[%d] -> mrate=%06.3f, etime=%05d\n", LOG_D(OTG,"BACKGROUND DEBUG: session[%d] -> mrate=%06.3f, etime=%05d\n",
cnts, stream->activeSessions[cnts].meanSessionRate, stream->activeSessions[cnts].endTime); cnts, stream->activeSessions[cnts].meanSessionRate, stream->activeSessions[cnts].endTime);
} }
} }
......
...@@ -42,8 +42,12 @@ ...@@ -42,8 +42,12 @@
#include "otg_vars.h" #include "otg_vars.h"
#include "../UTIL/MATH/oml.h" #include "../UTIL/MATH/oml.h"
#include <math.h> #include <math.h>
#include <mysql.h>
#include <m_ctype.h>
#include <sql_common.h>
#include "otg_form.h" #include "otg_form.h"
extern unsigned char NB_eNB_INST; extern unsigned char NB_eNB_INST;
extern unsigned char NB_UE_INST; extern unsigned char NB_UE_INST;
...@@ -84,6 +88,12 @@ int otg_rx_pkt( int src, int dst, int ctime, char *buffer_tx, unsigned int size) ...@@ -84,6 +88,12 @@ int otg_rx_pkt( int src, int dst, int ctime, char *buffer_tx, unsigned int size)
LOG_I(OTG,"[SRC %d][DST %d] [FLOW_idx %d][APP TYPE %d] RX INFO pkt at time %d: flag 0x %x, seq number %d, tx time %d, size (hdr %d, pdcp %d) \n", src, dst,otg_hdr_rx->flow_id, otg_hdr_rx->traffic_type, ctime, otg_hdr_info_rx->flag, otg_hdr_rx->seq_num, otg_hdr_rx->time, otg_hdr_info_rx->size, size); LOG_I(OTG,"[SRC %d][DST %d] [FLOW_idx %d][APP TYPE %d] RX INFO pkt at time %d: flag 0x %x, seq number %d, tx time %d, size (hdr %d, pdcp %d) \n", src, dst,otg_hdr_rx->flow_id, otg_hdr_rx->traffic_type, ctime, otg_hdr_info_rx->flag, otg_hdr_rx->seq_num, otg_hdr_rx->time, otg_hdr_info_rx->size, size);
bytes_read += sizeof (otg_hdr_t); bytes_read += sizeof (otg_hdr_t);
if(otg_hdr_rx->traffic_type > MAX_NUM_APPLICATION){
LOG_W(OTG,"RX packet: application type out of range %d for the pair of (src %d, dst %d) \n",
otg_hdr_rx->traffic_type, src, dst);
otg_hdr_rx->traffic_type=0;
}
if (otg_hdr_info_rx->flag == 0xffff){ if (otg_hdr_info_rx->flag == 0xffff){
seq_num_rx=otg_info->seq_num_rx[src][dst][otg_hdr_rx->traffic_type]; seq_num_rx=otg_info->seq_num_rx[src][dst][otg_hdr_rx->traffic_type];
if (src<NB_eNB_INST) if (src<NB_eNB_INST)
......
...@@ -105,7 +105,8 @@ int time_dist(int src, int dst,int application, int state) { ...@@ -105,7 +105,8 @@ int time_dist(int src, int dst,int application, int state) {
break; break;
default : default :
idt =0; idt =0;
LOG_W(OTG, "IDT distribution unknown, set to 0 \n"); LOG_W(OTG, "IDT distribution unknown, set to 0 for (src %d, dst %d, app %d, state %d)\n",
src, dst, application, state );
} }
LOG_D(OTG,"IDT :: Inter Departure Time Distribution= %d , val= %d\n", g_otg->idt_dist[src][dst][application][state],idt); LOG_D(OTG,"IDT :: Inter Departure Time Distribution= %d , val= %d\n", g_otg->idt_dist[src][dst][application][state],idt);
...@@ -170,7 +171,8 @@ int size_dist(int src, int dst, int application, int state) { ...@@ -170,7 +171,8 @@ int size_dist(int src, int dst, int application, int state) {
otg_info->ctime, otg_info->idt[src][dst][application])); otg_info->ctime, otg_info->idt[src][dst][application]));
break; break;
default: default:
LOG_E(OTG, "PKT Size Distribution unknown \n"); LOG_E(OTG, "PKT Size Distribution unknown (src %d, dst %d, app %d, state %d)\n",
src, dst, application, state );
} }
} }
...@@ -277,6 +279,12 @@ Send Packets when: ...@@ -277,6 +279,12 @@ Send Packets when:
else else
otg_info->tx_total_bytes_ul+=buffer_size; otg_info->tx_total_bytes_ul+=buffer_size;
if (otg_info->traffic_type[src][dst] > MAX_NUM_APPLICATION) {
LOG_W(OTG,"application type out of range %d for the pair of (src %d, dst %d) \n",
otg_info->traffic_type[src][dst], src, dst);
otg_info->traffic_type[src][dst]=0;
}
return serialize_buffer(header, payload, buffer_size, otg_info->traffic_type[src][dst], flag, flow, ctime, seq_num, otg_info->header_type_app[src][dst][flow], state, otg_info->m2m_aggregation[src][dst]); return serialize_buffer(header, payload, buffer_size, otg_info->traffic_type[src][dst], flag, flow, ctime, seq_num, otg_info->header_type_app[src][dst][flow], state, otg_info->m2m_aggregation[src][dst]);
} }
...@@ -327,7 +335,7 @@ unsigned char *packet_gen_multicast(int src, int dst, int ctime, int * pkt_size) ...@@ -327,7 +335,7 @@ unsigned char *packet_gen_multicast(int src, int dst, int ctime, int * pkt_size)
if (size!=strlen(payload)) if (size!=strlen(payload))
LOG_E(OTG,"[src %d][dst %d] The expected packet size does not match the payload size : size %d, strlen %d \n", src, dst, size, strlen(payload)); LOG_E(OTG,"[src %d][dst %d] The expected packet size does not match the payload size : size %d, strlen %d \n", src, dst, size, strlen(payload));
else else
LOG_D(OTG,"[src %d][dst %d]TX INFO pkt at time %d Size= [payload %d] [Total %d] with seq num %d: |%s|%s| \n", LOG_I(OTG,"[src %d][dst %d]TX INFO pkt at time %d Size= [payload %d] [Total %d] with seq num %d: |%s|%s| \n",
src, dst, ctime, size, strlen(header)+strlen(payload)+otg_hdr_size, seq_num, header, payload); src, dst, ctime, size, strlen(header)+strlen(payload)+otg_hdr_size, seq_num, header, payload);
buffer_size = otg_hdr_size + strlen(header) + strlen(payload); buffer_size = otg_hdr_size + strlen(header) + strlen(payload);
...@@ -359,10 +367,10 @@ void init_packet_gen(int src, int dst,int ctime){ ...@@ -359,10 +367,10 @@ void init_packet_gen(int src, int dst,int ctime){
otg_info->traffic_type[src][dst]=0; otg_info->traffic_type[src][dst]=0;
otg_info->traffic_type_background[src][dst]=0; otg_info->traffic_type_background[src][dst]=0;
/* init background traffic*/ /* init background traffic*/
if (otg_info->idt_background[src][dst]==0){ /* if (otg_info->idt_background[src][dst]==0){
otg_info->idt_background[src][dst]= exponential_dist(0.025); otg_info->idt_background[src][dst]= exponential_dist(0.025);
otg_info->background_stream[src][dst][0]=backgroundStreamInit(0,1); otg_info->background_stream[src][dst][0]=backgroundStreamInit(0,1);
} } */
} }
void check_ctime(int ctime){ void check_ctime(int ctime){
...@@ -379,15 +387,15 @@ int check_data_transmit(int src,int dst, int ctime){ ...@@ -379,15 +387,15 @@ int check_data_transmit(int src,int dst, int ctime){
for (application=0; application<g_otg->application_idx[src][dst]; application++){ for (application=0; application<g_otg->application_idx[src][dst]; application++){
otg_info->gen_pkts=0; otg_info->gen_pkts=0;
//LOG_D(OTG,"FLOW_INFO [src %d][dst %d] [IDX %d] [APPLICATION TYPE %d] MAX %d [M2M %d ]\n", src, dst, application , g_otg->application_type[src][dst][application],g_otg->application_idx[src][dst], g_otg->m2m[src][dst][application]); LOG_T(OTG,"FLOW_INFO [src %d][dst %d] [IDX %d] [APPLICATION TYPE %d] MAX %d [M2M %d ]\n", src, dst, application , g_otg->application_type[src][dst][application],g_otg->application_idx[src][dst], g_otg->m2m[src][dst][application]);
// do not generate packet for this pair of src, dst : no app type and/or no idt are defined // do not generate packet for this pair of src, dst : no app type and/or no idt are defined
if (g_otg->duration[src][dst][application] > ctime){ if (g_otg->duration[src][dst][application] > ctime){
//LOG_D(OTG,"Do not generate packet for this pair of src=%d, dst =%d, duration %d < ctime %d \n", src, dst,g_otg->duration[src][dst][application], ctime); LOG_T(OTG,"Do not generate packet for this pair of src=%d, dst =%d, duration %d < ctime %d \n", src, dst,g_otg->duration[src][dst][application], ctime);
size+=0; size+=0;
}else if ((g_otg->application_type[src][dst][application]==0)&&(g_otg->idt_dist[src][dst][application][PE_STATE]==0)){ }else if ((g_otg->application_type[src][dst][application]==0)&&(g_otg->idt_dist[src][dst][application][PE_STATE]==0)){
//LOG_D(OTG,"Do not generate packet for this pair of src=%d, dst =%d\n", src, dst); LOG_D(OTG,"Do not generate packet for this pair of src=%d, dst =%d, IDT zero and app not specificed\n", src, dst);
size+=0; size+=0;
} }
...@@ -681,6 +689,22 @@ int k; ...@@ -681,6 +689,22 @@ int k;
for (k=0; k<g_otg->application_idx[i][j]; k++){ for (k=0; k<g_otg->application_idx[i][j]; k++){
switch (g_otg->application_type[i][j][k]) { switch (g_otg->application_type[i][j][k]) {
case NO_PREDEFINED_TRAFFIC :
LOG_I(OTG, "[SRC %d][DST %d] No predefined Traffic \n", i, j);
g_otg->trans_proto[i][j][k] = 0;
g_otg->ip_v[i][j][k] = 0;
g_otg->idt_dist[i][j][k][PE_STATE] = 0;
g_otg->idt_min[i][j][k][PE_STATE] = 0;
g_otg->idt_max[i][j][k][PE_STATE] = 0;
g_otg->size_dist[i][j][k][PE_STATE] = FIXED;
g_otg->size_min[i][j][k][PE_STATE] = 0;
g_otg->size_max[i][j][k][PE_STATE] = 0;
#ifdef STANDALONE
g_otg->dst_port[i][j] = 302;
g_otg->duration[i][j] = 1000;
#endif
break;
case SCBR : case SCBR :
g_otg->trans_proto[i][j][k] = UDP; g_otg->trans_proto[i][j][k] = UDP;
g_otg->ip_v[i][j][k] = IPV4; g_otg->ip_v[i][j][k] = IPV4;
...@@ -688,7 +712,7 @@ int k; ...@@ -688,7 +712,7 @@ int k;
g_otg->idt_min[i][j][k][PE_STATE] = (int)round(uniform_dist((i+1)*30,(i+1)*100));// 500+(i+1)*10; //random idt among different UEs g_otg->idt_min[i][j][k][PE_STATE] = (int)round(uniform_dist((i+1)*30,(i+1)*100));// 500+(i+1)*10; //random idt among different UEs
g_otg->idt_max[i][j][k][PE_STATE] = 10; g_otg->idt_max[i][j][k][PE_STATE] = 10;
g_otg->size_dist[i][j][k][PE_STATE] = FIXED; g_otg->size_dist[i][j][k][PE_STATE] = FIXED;
g_otg->size_min[i][j][k][PE_STATE] = 128; g_otg->size_min[i][j][k][PE_STATE] = 16;
g_otg->size_max[i][j][k][PE_STATE] = 50; g_otg->size_max[i][j][k][PE_STATE] = 50;
LOG_I(OTG,"OTG_CONFIG SCBR, src = %d, dst = %d, traffic id %d, idt %d dist type for size = %d\n", i, j, k, LOG_I(OTG,"OTG_CONFIG SCBR, src = %d, dst = %d, traffic id %d, idt %d dist type for size = %d\n", i, j, k,
g_otg->idt_min[i][j][k][PE_STATE], g_otg->size_min[i][j][k][PE_STATE]); g_otg->idt_min[i][j][k][PE_STATE], g_otg->size_min[i][j][k][PE_STATE]);
...@@ -704,7 +728,7 @@ int k; ...@@ -704,7 +728,7 @@ int k;
g_otg->idt_min[i][j][k][PE_STATE] = (int)round(uniform_dist((i+1)*30, (i+1)*100));// 250+(i+1)*10; g_otg->idt_min[i][j][k][PE_STATE] = (int)round(uniform_dist((i+1)*30, (i+1)*100));// 250+(i+1)*10;
g_otg->idt_max[i][j][k][PE_STATE] = 10; g_otg->idt_max[i][j][k][PE_STATE] = 10;
g_otg->size_dist[i][j][k][PE_STATE] = FIXED; g_otg->size_dist[i][j][k][PE_STATE] = FIXED;
g_otg->size_min[i][j][k][PE_STATE] = 256; g_otg->size_min[i][j][k][PE_STATE] = 32;
g_otg->size_max[i][j][k][PE_STATE] = 512; g_otg->size_max[i][j][k][PE_STATE] = 512;
LOG_I(OTG,"OTG_CONFIG MCBR, src = %d, dst = %d, traffic id %d, dist type for size = %d\n", i, j,k , g_otg->size_dist[i][j][k][PE_STATE]); LOG_I(OTG,"OTG_CONFIG MCBR, src = %d, dst = %d, traffic id %d, dist type for size = %d\n", i, j,k , g_otg->size_dist[i][j][k][PE_STATE]);
#ifdef STANDALONE #ifdef STANDALONE
...@@ -719,7 +743,7 @@ int k; ...@@ -719,7 +743,7 @@ int k;
g_otg->idt_min[i][j][k][PE_STATE] = (int)round(uniform_dist((i+1)*30,(i+1)*100)); //125+(i+1)*10; g_otg->idt_min[i][j][k][PE_STATE] = (int)round(uniform_dist((i+1)*30,(i+1)*100)); //125+(i+1)*10;
g_otg->idt_max[i][j][k][PE_STATE] = 10; g_otg->idt_max[i][j][k][PE_STATE] = 10;
g_otg->size_dist[i][j][k][PE_STATE] = FIXED; // main param in this mode g_otg->size_dist[i][j][k][PE_STATE] = FIXED; // main param in this mode
g_otg->size_min[i][j][k][PE_STATE] = 512;// main param in this mode g_otg->size_min[i][j][k][PE_STATE] = 128;// main param in this mode
g_otg->size_max[i][j][k][PE_STATE] = 1024; g_otg->size_max[i][j][k][PE_STATE] = 1024;
LOG_I(OTG,"OTG_CONFIG BCBR, src = %d, dst = %d, dist type for size = %d\n", i, j, g_otg->size_dist[i][j][k][PE_STATE]); LOG_I(OTG,"OTG_CONFIG BCBR, src = %d, dst = %d, dist type for size = %d\n", i, j, g_otg->size_dist[i][j][k][PE_STATE]);
#ifdef STANDALONE #ifdef STANDALONE
...@@ -806,21 +830,7 @@ int k; ...@@ -806,21 +830,7 @@ int k;
g_otg->duration[i][j] = 1000; g_otg->duration[i][j] = 1000;
#endif #endif
break; break;
case NO_PREDEFINED_TRAFFIC :
LOG_I(OTG, "[SRC %d][DST %d] No predefined Traffic \n", i, j);
g_otg->trans_proto[i][j][k] = 0;
g_otg->ip_v[i][j][k] = 0;
g_otg->idt_dist[i][j][k][PE_STATE] = 0;
g_otg->idt_min[i][j][k][PE_STATE] = 0;
g_otg->idt_max[i][j][k][PE_STATE] = 0;
g_otg->size_dist[i][j][k][PE_STATE] = FIXED;
g_otg->size_min[i][j][k][PE_STATE] = 0;
g_otg->size_max[i][j][k][PE_STATE] = 0;
#ifdef STANDALONE
g_otg->dst_port[i][j] = 302;
g_otg->duration[i][j] = 1000;
#endif
break;
case M2M_TRAFFIC : /* example of M2M traffic */ case M2M_TRAFFIC : /* example of M2M traffic */
LOG_I(OTG," M2M_TRAFFIC, src = %d, dst = %d \n", i, j, g_otg->application_type[i][j][k]); LOG_I(OTG," M2M_TRAFFIC, src = %d, dst = %d \n", i, j, g_otg->application_type[i][j][k]);
g_otg->trans_proto[i][j][k] = TCP; g_otg->trans_proto[i][j][k] = TCP;
...@@ -853,22 +863,24 @@ case AUTO_PILOT_L : ...@@ -853,22 +863,24 @@ case AUTO_PILOT_L :
/* Measurements from: /* Measurements from:
Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Markus Laner, Kajie Zhou, Philippe Svoboda, Dejan Drajic, Serjan Krco and Milica Popovic) Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Markus Laner, Kajie Zhou, Philippe Svoboda, Dejan Drajic, Serjan Krco and Milica Popovic)
*/ */
LOG_I(OTG,"AUTO PILOT LOW SPEEDS, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]);
g_otg->trans_proto[i][j][k] = TCP; g_otg->trans_proto[i][j][k] = TCP;
g_otg->ip_v[i][j][k] = IPV4; g_otg->ip_v[i][j][k] = IPV4;
g_otg->pu_size_pkts[i][j][k]=1000; g_otg->pu_size_pkts[i][j][k]=1000;
g_otg->ed_size_pkts[i][j][k]=1000; g_otg->ed_size_pkts[i][j][k]=1000;
g_otg->idt_dist[i][j][k][PE_STATE] = FIXED; g_otg->idt_dist[i][j][k][PE_STATE] = UNIFORM;
g_otg->idt_min[i][j][k][PE_STATE] = 100; g_otg->idt_min[i][j][k][PE_STATE] = 100;
g_otg->idt_max[i][j][k][PE_STATE] = 100; g_otg->idt_max[i][j][k][PE_STATE] = 500;
if (i<nb_enb_local){ /*DL*/ if (i<nb_enb_local){ /*DL*/
g_otg->size_dist[i][j][k][PE_STATE] = FIXED; g_otg->size_dist[i][j][k][PE_STATE] = FIXED;
g_otg->size_min[i][j][k][PE_STATE] = 1000; g_otg->size_min[i][j][k][PE_STATE] = 1000;
g_otg->size_max[i][j][k][PE_STATE] = 1000; g_otg->size_max[i][j][k][PE_STATE] = 1000;
LOG_I(OTG,"AUTO PILOT LOW SPEEDS DL , src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]);
}else{ /*UL*/ }else{ /*UL*/
g_otg->size_dist[j][i][k][PE_STATE] = UNIFORM; g_otg->size_dist[j][i][k][PE_STATE] = UNIFORM;
g_otg->size_min[j][i][k][PE_STATE] = 64; g_otg->size_min[j][i][k][PE_STATE] = 64;
g_otg->size_max[j][i][k][PE_STATE] = 1000; g_otg->size_max[j][i][k][PE_STATE] = 1000;
LOG_I(OTG,"AUTO PILOT LOW SPEEDS UL, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]);
} }
g_otg->prob_off_pu[i][j][k]=0.2; g_otg->prob_off_pu[i][j][k]=0.2;
g_otg->prob_off_ed[i][j][k]=0.3; g_otg->prob_off_ed[i][j][k]=0.3;
...@@ -890,7 +902,7 @@ case AUTO_PILOT_M : ...@@ -890,7 +902,7 @@ case AUTO_PILOT_M :
/* Measurements from: /* Measurements from:
Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Markus Laner, Kajie Zhou, Philippe Svoboda, Dejan Drajic, Serjan Krco and Milica Popovic) Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Markus Laner, Kajie Zhou, Philippe Svoboda, Dejan Drajic, Serjan Krco and Milica Popovic)
*/ */
LOG_I(OTG,"AUTO PILOT MEDIUM SPEEDS, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]);
g_otg->trans_proto[i][j][k] = TCP; g_otg->trans_proto[i][j][k] = TCP;
g_otg->ip_v[i][j][k] = IPV4; g_otg->ip_v[i][j][k] = IPV4;
g_otg->pu_size_pkts[i][j][k]=1000; g_otg->pu_size_pkts[i][j][k]=1000;
...@@ -902,10 +914,12 @@ Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Marku ...@@ -902,10 +914,12 @@ Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Marku
g_otg->size_dist[i][j][k][PE_STATE] = FIXED; g_otg->size_dist[i][j][k][PE_STATE] = FIXED;
g_otg->size_min[i][j][k][PE_STATE] = 1000; g_otg->size_min[i][j][k][PE_STATE] = 1000;
g_otg->size_max[i][j][k][PE_STATE] = 1000; g_otg->size_max[i][j][k][PE_STATE] = 1000;
LOG_I(OTG,"AUTO PILOT MEDIUM SPEEDS DL, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]);
}else{ /*UL*/ }else{ /*UL*/
g_otg->size_dist[j][i][k][PE_STATE] = UNIFORM; g_otg->size_dist[j][i][k][PE_STATE] = UNIFORM;
g_otg->size_min[j][i][k][PE_STATE] = 64; g_otg->size_min[j][i][k][PE_STATE] = 64;
g_otg->size_max[j][i][k][PE_STATE] = 1000; g_otg->size_max[j][i][k][PE_STATE] = 1000;
LOG_I(OTG,"AUTO PILOT MEDIUM SPEEDS UL, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]);
} }
g_otg->prob_off_pu[i][j][k]=0.2; g_otg->prob_off_pu[i][j][k]=0.2;
g_otg->prob_off_ed[i][j][k]=0.3; g_otg->prob_off_ed[i][j][k]=0.3;
...@@ -927,7 +941,7 @@ case AUTO_PILOT_H : ...@@ -927,7 +941,7 @@ case AUTO_PILOT_H :
/* Measurements from: /* Measurements from:
Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Markus Laner, Kajie Zhou, Philippe Svoboda, Dejan Drajic, Serjan Krco and Milica Popovic) Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Markus Laner, Kajie Zhou, Philippe Svoboda, Dejan Drajic, Serjan Krco and Milica Popovic)
*/ */
LOG_I(OTG,"AUTO PILOT HIGH SPEEDS, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]);
g_otg->trans_proto[i][j][k] = TCP; g_otg->trans_proto[i][j][k] = TCP;
g_otg->ip_v[i][j][k] = IPV4; g_otg->ip_v[i][j][k] = IPV4;
g_otg->pu_size_pkts[i][j][k]=1000; g_otg->pu_size_pkts[i][j][k]=1000;
...@@ -939,10 +953,12 @@ Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Marku ...@@ -939,10 +953,12 @@ Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Marku
g_otg->size_dist[i][j][k][PE_STATE] = FIXED; g_otg->size_dist[i][j][k][PE_STATE] = FIXED;
g_otg->size_min[i][j][k][PE_STATE] = 1000; g_otg->size_min[i][j][k][PE_STATE] = 1000;
g_otg->size_max[i][j][k][PE_STATE] = 1000; g_otg->size_max[i][j][k][PE_STATE] = 1000;
LOG_I(OTG,"AUTO PILOT HIGH SPEEDS DL, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]);
}else{ /*UL*/ }else{ /*UL*/
g_otg->size_dist[j][i][k][PE_STATE] = UNIFORM; g_otg->size_dist[j][i][k][PE_STATE] = UNIFORM;
g_otg->size_min[j][i][k][PE_STATE] = 64; g_otg->size_min[j][i][k][PE_STATE] = 64;
g_otg->size_max[j][i][k][PE_STATE] = 1000; g_otg->size_max[j][i][k][PE_STATE] = 1000;
LOG_I(OTG,"AUTO PILOT HIGH SPEEDS UL, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]);
} }
g_otg->prob_off_pu[i][j][k]=0.2; g_otg->prob_off_pu[i][j][k]=0.2;
g_otg->prob_off_ed[i][j][k]=0.3; g_otg->prob_off_ed[i][j][k]=0.3;
...@@ -964,7 +980,7 @@ case AUTO_PILOT_E : ...@@ -964,7 +980,7 @@ case AUTO_PILOT_E :
/* Measurements from: /* Measurements from:
Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Markus Laner, Kajie Zhou, Philippe Svoboda, Dejan Drajic, Serjan Krco and Milica Popovic) Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Markus Laner, Kajie Zhou, Philippe Svoboda, Dejan Drajic, Serjan Krco and Milica Popovic)
*/ */
LOG_I(OTG,"AUTO PILOT EMERGENCY, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]);
/* DL SCENARIO*/ /* DL SCENARIO*/
g_otg->trans_proto[i][j][k] = TCP; g_otg->trans_proto[i][j][k] = TCP;
g_otg->ip_v[i][j][k] = IPV4; g_otg->ip_v[i][j][k] = IPV4;
...@@ -977,10 +993,12 @@ Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Marku ...@@ -977,10 +993,12 @@ Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Marku
g_otg->size_dist[i][j][k][PE_STATE] = FIXED; g_otg->size_dist[i][j][k][PE_STATE] = FIXED;
g_otg->size_min[i][j][k][PE_STATE] = 1000; g_otg->size_min[i][j][k][PE_STATE] = 1000;
g_otg->size_max[i][j][k][PE_STATE] = 1000; g_otg->size_max[i][j][k][PE_STATE] = 1000;
LOG_I(OTG,"AUTO PILOT EMERGENCY DL, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]);
}else{ /*UL*/ }else{ /*UL*/
g_otg->size_dist[j][i][k][PE_STATE] = UNIFORM; g_otg->size_dist[j][i][k][PE_STATE] = UNIFORM;
g_otg->size_min[j][i][k][PE_STATE] = 64; g_otg->size_min[j][i][k][PE_STATE] = 64;
g_otg->size_max[j][i][k][PE_STATE] = 1000; g_otg->size_max[j][i][k][PE_STATE] = 1000;
LOG_I(OTG,"AUTO PILOT EMERGENCY UL, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]);
} }
g_otg->prob_off_pu[i][j][k]=0.2; g_otg->prob_off_pu[i][j][k]=0.2;
g_otg->prob_off_ed[i][j][k]=0.3; g_otg->prob_off_ed[i][j][k]=0.3;
...@@ -1135,7 +1153,8 @@ Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Marku ...@@ -1135,7 +1153,8 @@ Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Marku
g_otg->duration[i][j] = 1000; g_otg->duration[i][j] = 1000;
#endif #endif
break; break;
case OPENARENA : case OPENARENA_DL :
case OPENARENA_UL :
g_otg->trans_proto[i][j][k] = TCP; g_otg->trans_proto[i][j][k] = TCP;
g_otg->ip_v[i][j][k] = IPV4; g_otg->ip_v[i][j][k] = IPV4;
g_otg->idt_dist[i][j][k][PE_STATE] = FIXED; g_otg->idt_dist[i][j][k][PE_STATE] = FIXED;
...@@ -1159,6 +1178,7 @@ Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Marku ...@@ -1159,6 +1178,7 @@ Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Marku
g_otg->duration[i][j] = 1000; g_otg->duration[i][j] = 1000;
#endif #endif
break; break;
case OPENARENA_DL_TARMA : case OPENARENA_DL_TARMA :
g_otg->trans_proto[i][j][k] = TCP; g_otg->trans_proto[i][j][k] = TCP;
g_otg->ip_v[i][j][k] = IPV4; g_otg->ip_v[i][j][k] = IPV4;
...@@ -1261,7 +1281,7 @@ break; ...@@ -1261,7 +1281,7 @@ break;
g_otg->idt_max[i][j][k][PE_STATE] = 80; g_otg->idt_max[i][j][k][PE_STATE] = 80;
g_otg->size_dist[i][j][k][PE_STATE] = BACKGROUND_DIST; g_otg->size_dist[i][j][k][PE_STATE] = BACKGROUND_DIST;
/*the background initialization*/ /*the background initialization*/
otg_info->background_stream[i][j][k]=backgroundStreamInit(0,2); // otg_info->background_stream[i][j][k]=backgroundStreamInit(0,2);
break; break;
case DUMMY : case DUMMY :
...@@ -1503,7 +1523,7 @@ void state_management(int src, int dst, int application, int ctime) { ...@@ -1503,7 +1523,7 @@ void state_management(int src, int dst, int application, int ctime) {
if (otg_info->state_transition_prob[src][dst][application]==0){ if (otg_info->state_transition_prob[src][dst][application]==0){
otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1); otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1);
otg_info->state[src][dst][application]=OFF_STATE; otg_info->state[src][dst][application]=OFF_STATE;
LOG_I(OTG,"[%d][%d][Appli id %d] STATE:: OFF INIT \n", src, dst, application); LOG_D(OTG,"[%d][%d][Appli id %d] STATE:: OFF INIT \n", src, dst, application);
otg_info->start_holding_time_off[src][dst][application]=0/*ctime*/; otg_info->start_holding_time_off[src][dst][application]=0/*ctime*/;
} }
//LOG_D(OTG,"[%d][[%d] HOLDING_TIMES OFF_PE: %d, OFF_PU: %d, OFF_ED %d, PE_OFF: %d \n", src, dst, g_otg->holding_time_off_pe[src][dst], g_otg->holding_time_off_pu[src][dst],g_otg->holding_time_off_ed[src][dst], g_otg->holding_time_pe_off[src][dst] ); //LOG_D(OTG,"[%d][[%d] HOLDING_TIMES OFF_PE: %d, OFF_PU: %d, OFF_ED %d, PE_OFF: %d \n", src, dst, g_otg->holding_time_off_pe[src][dst], g_otg->holding_time_off_pu[src][dst],g_otg->holding_time_off_ed[src][dst], g_otg->holding_time_pe_off[src][dst] );
...@@ -1514,7 +1534,7 @@ void state_management(int src, int dst, int application, int ctime) { ...@@ -1514,7 +1534,7 @@ void state_management(int src, int dst, int application, int ctime) {
if (ctime>otg_info->start_holding_time_off[src][dst][application]){ if (ctime>otg_info->start_holding_time_off[src][dst][application]){
otg_info->c_holding_time_off[src][dst][application]= ctime - otg_info->start_holding_time_off[src][dst][application]; otg_info->c_holding_time_off[src][dst][application]= ctime - otg_info->start_holding_time_off[src][dst][application];
LOG_I(OTG,"[%d][%d][Appli id %d][Agg Level=%d] STATE:: OFF Holding Time %d (%d, %d)\n", src, dst,application , g_otg->aggregation_level[src][dst][application], otg_info->c_holding_time_off[src][dst][application], ctime, otg_info->start_holding_time_off[src][dst][application]); LOG_D(OTG,"[%d][%d][Appli id %d][Agg Level=%d] STATE:: OFF Holding Time %d (%d, %d)\n", src, dst,application , g_otg->aggregation_level[src][dst][application], otg_info->c_holding_time_off[src][dst][application], ctime, otg_info->start_holding_time_off[src][dst][application]);
} }
if ( ((otg_info->state_transition_prob[src][dst][application]>= 1-(g_otg->prob_off_pu[src][dst][application]+g_otg->prob_off_ed[src][dst][application]+g_otg->prob_off_pe[src][dst][application])) && (otg_info->state_transition_prob[src][dst][application]<1-(g_otg->prob_off_ed[src][dst][application]+g_otg->prob_off_pe[src][dst][application]))) && (otg_info->c_holding_time_off[src][dst][application]>=g_otg->holding_time_off_pu[src][dst][application])){ if ( ((otg_info->state_transition_prob[src][dst][application]>= 1-(g_otg->prob_off_pu[src][dst][application]+g_otg->prob_off_ed[src][dst][application]+g_otg->prob_off_pe[src][dst][application])) && (otg_info->state_transition_prob[src][dst][application]<1-(g_otg->prob_off_ed[src][dst][application]+g_otg->prob_off_pe[src][dst][application]))) && (otg_info->c_holding_time_off[src][dst][application]>=g_otg->holding_time_off_pu[src][dst][application])){
...@@ -1525,7 +1545,7 @@ void state_management(int src, int dst, int application, int ctime) { ...@@ -1525,7 +1545,7 @@ void state_management(int src, int dst, int application, int ctime) {
} }
else if ( ((otg_info->state_transition_prob[src][dst][application]>= 1-(g_otg->prob_off_ed[src][dst][application]+g_otg->prob_off_pe[src][dst][application])) && (otg_info->state_transition_prob[src][dst][application]< 1-g_otg->prob_off_pe[src][dst][application])) && (otg_info->c_holding_time_off[src][dst][application]>=g_otg->holding_time_off_ed[src][dst][application])){ else if ( ((otg_info->state_transition_prob[src][dst][application]>= 1-(g_otg->prob_off_ed[src][dst][application]+g_otg->prob_off_pe[src][dst][application])) && (otg_info->state_transition_prob[src][dst][application]< 1-g_otg->prob_off_pe[src][dst][application])) && (otg_info->c_holding_time_off[src][dst][application]>=g_otg->holding_time_off_ed[src][dst][application])){
otg_info->state[src][dst][application]=ED_STATE; otg_info->state[src][dst][application]=ED_STATE;
LOG_I(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: OFF-->ED \n", src, dst,application, g_otg->aggregation_level[src][dst][application]); LOG_D(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: OFF-->ED \n", src, dst,application, g_otg->aggregation_level[src][dst][application]);
otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1); otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1);
} }
...@@ -1538,7 +1558,7 @@ void state_management(int src, int dst, int application, int ctime) { ...@@ -1538,7 +1558,7 @@ void state_management(int src, int dst, int application, int ctime) {
else{ else{
otg_info->c_holding_time_off[src][dst][application]= ctime - otg_info->start_holding_time_off[src][dst][application]; otg_info->c_holding_time_off[src][dst][application]= ctime - otg_info->start_holding_time_off[src][dst][application];
otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1); otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1);
LOG_I(OTG,"[%d][%d][Appli id %d][Agg Level=%d] STATE:: OFF\n", src, dst,application, g_otg->aggregation_level[src][dst][application]); LOG_D(OTG,"[%d][%d][Appli id %d][Agg Level=%d] STATE:: OFF\n", src, dst,application, g_otg->aggregation_level[src][dst][application]);
} }
break; break;
...@@ -1548,7 +1568,7 @@ void state_management(int src, int dst, int application, int ctime) { ...@@ -1548,7 +1568,7 @@ void state_management(int src, int dst, int application, int ctime) {
otg_info->state[src][dst][application]=OFF_STATE; otg_info->state[src][dst][application]=OFF_STATE;
otg_info->start_holding_time_off[src][dst][application]=ctime; otg_info->start_holding_time_off[src][dst][application]=ctime;
otg_info->c_holding_time_off[src][dst][application]=0; otg_info->c_holding_time_off[src][dst][application]=0;
LOG_I(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: PU-->OFF \n", src, dst,application, g_otg->aggregation_level[src][dst][application]); LOG_D(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: PU-->OFF \n", src, dst,application, g_otg->aggregation_level[src][dst][application]);
otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1); otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1);
} }
else if ((otg_info->state_transition_prob[src][dst][application]<=1-g_otg->prob_pu_pe[src][dst][application]) && (otg_info->state_transition_prob[src][dst][application]>1-(g_otg->prob_pu_ed[src][dst][application]+g_otg->prob_pu_pe[src][dst][application]))){ else if ((otg_info->state_transition_prob[src][dst][application]<=1-g_otg->prob_pu_pe[src][dst][application]) && (otg_info->state_transition_prob[src][dst][application]>1-(g_otg->prob_pu_ed[src][dst][application]+g_otg->prob_pu_pe[src][dst][application]))){
...@@ -1561,7 +1581,7 @@ void state_management(int src, int dst, int application, int ctime) { ...@@ -1561,7 +1581,7 @@ void state_management(int src, int dst, int application, int ctime) {
//otg_info->state[src][dst]=ON_STATE; //otg_info->state[src][dst]=ON_STATE;
otg_info->state[src][dst][application]=PE_STATE; otg_info->state[src][dst][application]=PE_STATE;
otg_info->start_holding_time_pe_off[src][dst][application]=ctime; otg_info->start_holding_time_pe_off[src][dst][application]=ctime;
LOG_I(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: PU-->PE \n", src, dst,application, g_otg->aggregation_level[src][dst][application]); LOG_D(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: PU-->PE \n", src, dst,application, g_otg->aggregation_level[src][dst][application]);
otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1); otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1);
} }
break; break;
...@@ -1571,20 +1591,20 @@ void state_management(int src, int dst, int application, int ctime) { ...@@ -1571,20 +1591,20 @@ void state_management(int src, int dst, int application, int ctime) {
otg_info->state[src][dst][application]=OFF_STATE; otg_info->state[src][dst][application]=OFF_STATE;
otg_info->start_holding_time_off[src][dst][application]=ctime; otg_info->start_holding_time_off[src][dst][application]=ctime;
otg_info->c_holding_time_off[src][dst][application]=0; otg_info->c_holding_time_off[src][dst][application]=0;
LOG_I(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: ED-->OFF \n", src, dst,application, g_otg->aggregation_level[src][dst][application]); LOG_D(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: ED-->OFF \n", src, dst,application, g_otg->aggregation_level[src][dst][application]);
otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1); otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1);
} }
else if ((otg_info->state_transition_prob[src][dst][application]>=1-(g_otg->prob_ed_pu[src][dst][application] + g_otg->prob_ed_pe[src][dst][application] )) && (otg_info->state_transition_prob[src][dst][application]<1-g_otg->prob_ed_pe[src][dst][application])) { else if ((otg_info->state_transition_prob[src][dst][application]>=1-(g_otg->prob_ed_pu[src][dst][application] + g_otg->prob_ed_pe[src][dst][application] )) && (otg_info->state_transition_prob[src][dst][application]<1-g_otg->prob_ed_pe[src][dst][application])) {
//otg_info->state[src][dst]=ON_STATE; //otg_info->state[src][dst]=ON_STATE;
otg_info->state[src][dst][application]=PE_STATE; otg_info->state[src][dst][application]=PE_STATE;
LOG_I(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: ED-->PU \n", src, dst,application, g_otg->aggregation_level[src][dst][application]); LOG_D(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: ED-->PU \n", src, dst,application, g_otg->aggregation_level[src][dst][application]);
otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1); otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1);
} }
else /*if ((otg_info->state_transition_prob[src][dst]>=1-g_otg->prob_ed_pe)&&(otg_info->state_transition_prob[src][dst]<=1)) */{ else /*if ((otg_info->state_transition_prob[src][dst]>=1-g_otg->prob_ed_pe)&&(otg_info->state_transition_prob[src][dst]<=1)) */{
//otg_info->state[src][dst]=ON_STATE; //otg_info->state[src][dst]=ON_STATE;
otg_info->state[src][dst][application]=PE_STATE; otg_info->state[src][dst][application]=PE_STATE;
otg_info->start_holding_time_pe_off[src][dst][application]=ctime; otg_info->start_holding_time_pe_off[src][dst][application]=ctime;
LOG_I(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: ED-->PE \n", src, dst,application, g_otg->aggregation_level[src][dst][application]); LOG_D(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: ED-->PE \n", src, dst,application, g_otg->aggregation_level[src][dst][application]);
otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1); otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1);
} }
break; break;
...@@ -1593,7 +1613,7 @@ void state_management(int src, int dst, int application, int ctime) { ...@@ -1593,7 +1613,7 @@ void state_management(int src, int dst, int application, int ctime) {
if (g_otg->holding_time_pe_off[src][dst][application]<=otg_info->c_holding_time_pe_off[src][dst][application]){ if (g_otg->holding_time_pe_off[src][dst][application]<=otg_info->c_holding_time_pe_off[src][dst][application]){
//otg_info->state[src][dst]=OFF_STATE; //otg_info->state[src][dst]=OFF_STATE;
otg_info->state[src][dst][application]=OFF_STATE; otg_info->state[src][dst][application]=OFF_STATE;
LOG_I(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: PE->OFF\n", src, dst,application, g_otg->aggregation_level[src][dst][application]); LOG_D(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: PE->OFF\n", src, dst,application, g_otg->aggregation_level[src][dst][application]);
otg_info->c_holding_time_pe_off[src][dst][application]=0; otg_info->c_holding_time_pe_off[src][dst][application]=0;
otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1); otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1);
otg_info->start_holding_time_off[src][dst][application]=ctime; otg_info->start_holding_time_off[src][dst][application]=ctime;
...@@ -1602,7 +1622,7 @@ void state_management(int src, int dst, int application, int ctime) { ...@@ -1602,7 +1622,7 @@ void state_management(int src, int dst, int application, int ctime) {
else /* if (g_otg->holding_time_pe_off>otg_info->c_holding_time_pe_off[src][dst])*/{ else /* if (g_otg->holding_time_pe_off>otg_info->c_holding_time_pe_off[src][dst])*/{
if (ctime>otg_info->start_holding_time_pe_off[src][dst][application]) if (ctime>otg_info->start_holding_time_pe_off[src][dst][application])
otg_info->c_holding_time_pe_off[src][dst][application]=ctime-otg_info->start_holding_time_pe_off[src][dst][application]; otg_info->c_holding_time_pe_off[src][dst][application]=ctime-otg_info->start_holding_time_pe_off[src][dst][application];
LOG_I(OTG,"[%d][%d][Appli id %d] STATE:: PE \n", src, dst,application); LOG_D(OTG,"[%d][%d][Appli id %d] STATE:: PE \n", src, dst,application);
} }
break; break;
default: default:
......
...@@ -65,6 +65,13 @@ ifdef XFORMS ...@@ -65,6 +65,13 @@ ifdef XFORMS
CFLAGS += -DXFORMS CFLAGS += -DXFORMS
endif endif
# Check if libmysqlclient is installed and use it if found to store simulation data for postprocessing
ENABLE_DB = $(shell if [ `dpkg -l | grep libmysqlclient -c` = "0" ]; then echo "0" ; else echo "1" ; fi )
ifeq ($(ENABLE_DB), 1)
CFLAGS +=-I/usr/include/mysql -L/usr/lib/mysql -DENABLE_DB_STATS
DB_LDFLAGS = -lmysqlclient
endif
ifdef PRINT_STATS ifdef PRINT_STATS
CFLAGS += -DPRINT_STATS CFLAGS += -DPRINT_STATS
endif endif
...@@ -309,7 +316,7 @@ oaisim : $(ASN1_MSG_OBJS1) $(OBJ) oaisim.c $(LFDS_DIR)/bin/liblfds611.a ...@@ -309,7 +316,7 @@ oaisim : $(ASN1_MSG_OBJS1) $(OBJ) oaisim.c $(LFDS_DIR)/bin/liblfds611.a
endif endif
@echo "Compiling oaisim.c ..." @echo "Compiling oaisim.c ..."
@$(CC) -I$(TOP_DIR) $(L2_incl) $(UTIL_incl) -I$(ASN1_MSG_INC) $(S1AP_Incl) -o oaisim $(CFLAGS) $(EXTRA_CFLAGS) $^ \ @$(CC) -I$(TOP_DIR) $(L2_incl) $(UTIL_incl) -I$(ASN1_MSG_INC) $(S1AP_Incl) -o oaisim $(CFLAGS) $(EXTRA_CFLAGS) $^ \
-lm -lblas -lpthread -llapack_atlas -lforms -lxml2 -lX11 -lXpm -lrt $(LFDS_DIR)/bin/liblfds611.a $(PGM_LDFLAGS) -lm -lblas -lpthread -llapack_atlas -lforms -lxml2 -lX11 -lXpm -lrt $(LFDS_DIR)/bin/liblfds611.a $(PGM_LDFLAGS) $(DB_LDFLAGS)
ifeq ($(rrc_cellular_eNB),1) ifeq ($(rrc_cellular_eNB),1)
mv oaisim oaisim_eNB mv oaisim oaisim_eNB
...@@ -323,19 +330,19 @@ oaisimCROWN : $(OBJ) $(ASN1_MSG_OBJS1) oaisimCROWN.c ...@@ -323,19 +330,19 @@ oaisimCROWN : $(OBJ) $(ASN1_MSG_OBJS1) oaisimCROWN.c
@$(CC) oaisimCROWN.c -I$(TOP_DIR) $(L2_incl) $(UTIL_incl) -I$(ASN1_MSG_INC) $(S1AP_Incl) -o oaisimCROWN $(CFLAGS) $(EXTRA_CFLAGS) $(OBJ) $(ASN1_MSG_OBJS1) -lm -lblas -lpthread -llapack_atlas -lforms -lxml2 -lX11 -lXpm -lrt @$(CC) oaisimCROWN.c -I$(TOP_DIR) $(L2_incl) $(UTIL_incl) -I$(ASN1_MSG_INC) $(S1AP_Incl) -o oaisimCROWN $(CFLAGS) $(EXTRA_CFLAGS) $(OBJ) $(ASN1_MSG_OBJS1) -lm -lblas -lpthread -llapack_atlas -lforms -lxml2 -lX11 -lXpm -lrt
test_nasmesh_fix: test_nasmesh_fix:
(cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && make) (cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && $(MAKE))
(cd $(OPENAIR2_DIR) && make nasmesh_netlink_address_fix.ko) (cd $(OPENAIR2_DIR) && $(MAKE) nasmesh_netlink_address_fix.ko)
(cp $(OPENAIR2_DIR)/NAS/DRIVER/MESH/nasmesh.ko . ) (cp $(OPENAIR2_DIR)/NAS/DRIVER/MESH/nasmesh.ko . )
nasmesh_fix: nasmesh_fix:
(cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && make) (cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && $(MAKE))
(cd $(OPENAIR2_DIR) && make nasmesh_netlink_address_fix.ko) (cd $(OPENAIR2_DIR) && $(MAKE) nasmesh_netlink_address_fix.ko)
(sudo insmod $(OPENAIR2_DIR)/NAS/DRIVER/MESH/nasmesh.ko) (sudo insmod $(OPENAIR2_DIR)/NAS/DRIVER/MESH/nasmesh.ko)
nasmesh_nl: nasmesh_nl:
(cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && make) (cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && $(MAKE))
(cd $(OPENAIR2_DIR) && make nasmesh_netlink.ko) (cd $(OPENAIR2_DIR) && $(MAKE) nasmesh_netlink.ko)
(sudo insmod $(OPENAIR2_DIR)/NAS/DRIVER/MESH/nasmesh.ko) (sudo insmod $(OPENAIR2_DIR)/NAS/DRIVER/MESH/nasmesh.ko)
rb_tool: rb_tool:
(cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && make) (cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && $(MAKE))
nasmesh_install: nasmesh_install:
(sudo rmmod nasmesh) (sudo rmmod nasmesh)
...@@ -399,13 +406,15 @@ cleancell: ...@@ -399,13 +406,15 @@ cleancell:
rm -f $(OPENAIR2_DIR)/NAS/SIMU_CELLULAR/*.d rm -f $(OPENAIR2_DIR)/NAS/SIMU_CELLULAR/*.d
print: print:
@echo $(cygwin) # @echo $(cygwin)
@echo $(OCG_FLAG)
@echo $(CFLAGS)
@echo $(EXTRA_CFLAGS)
@echo $(OBJ) @echo $(OBJ)
@echo $(IS_REL10) @echo $(OCG_FLAG)
@echo $(IS_REL8) @echo "CFLAGS are " $(CFLAGS)
@echo "EXTRA_CFLAGS are" $(EXTRA_CFLAGS)
@echo "IS_REL8 is " $(IS_REL10)
@echo "IS_REL8 is " $(IS_REL8)
@echo "ENABLE_DB is " $(ENABLE_DB)
showcflags: showcflags:
@echo $(CFLAGS) @echo $(CFLAGS)
...@@ -428,6 +437,9 @@ otg_gp: ...@@ -428,6 +437,9 @@ otg_gp:
otg_gp_bg: otg_gp_bg:
export TITLE="Background Goodput(Kb/s)" export TITLE="Background Goodput(Kb/s)"
$(OPENAIR2_DIR)/UTIL/OTG/OTGplot "/tmp/otg_GP_bg.dat" "[$(COL1):$(COL2)]" $(OPENAIR2_DIR)/UTIL/OTG/OTGplot "/tmp/otg_GP_bg.dat" "[$(COL1):$(COL2)]"
otg_jitter:
export TITLE="Aplication Jitter(ms)"
$(OPENAIR2_DIR)/UTIL/OTG/OTGplot "/tmp/otg_jitter.dat" "[$(COL1):$(COL2)]"
pexpect = $(shell if [ `dpkg -l | grep pexpect -c` = "0" ]; then echo "0" ; else echo "1" ; fi ) pexpect = $(shell if [ `dpkg -l | grep pexpect -c` = "0" ]; then echo "0" ; else echo "1" ; fi )
......
...@@ -489,6 +489,8 @@ int ...@@ -489,6 +489,8 @@ int
LOG_I(OCM,"Running with frame_type %d, Nid_cell %d, N_RB_DL %d, EP %d, mode %d, target dl_mcs %d, rate adaptation %d, nframes %d, abstraction %d, channel %s\n", LOG_I(OCM,"Running with frame_type %d, Nid_cell %d, N_RB_DL %d, EP %d, mode %d, target dl_mcs %d, rate adaptation %d, nframes %d, abstraction %d, channel %s\n",
oai_emulation.info.frame_type, Nid_cell, oai_emulation.info.N_RB_DL, oai_emulation.info.extended_prefix_flag, oai_emulation.info.transmission_mode,target_dl_mcs,rate_adaptation_flag,oai_emulation.info.n_frames,abstraction_flag,oai_emulation.environment_system_config.fading.small_scale.selected_option); oai_emulation.info.frame_type, Nid_cell, oai_emulation.info.N_RB_DL, oai_emulation.info.extended_prefix_flag, oai_emulation.info.transmission_mode,target_dl_mcs,rate_adaptation_flag,oai_emulation.info.n_frames,abstraction_flag,oai_emulation.environment_system_config.fading.small_scale.selected_option);
set_seed = oai_emulation.emulation_config.seed.value;
init_seed(set_seed); init_seed(set_seed);
init_openair1(); init_openair1();
......
...@@ -123,6 +123,9 @@ mapping otg_distribution_names[] = ...@@ -123,6 +123,9 @@ mapping otg_distribution_names[] =
{"gamma", 8}, {"gamma", 8},
{"cauchy",9}, {"cauchy",9},
{"log_normal",10}, {"log_normal",10},
{"tarma",11},
{"video",12},
{"background_dist",13},
{NULL, -1} {NULL, -1}
}; };
...@@ -816,7 +819,7 @@ int ocg_config_app(){ ...@@ -816,7 +819,7 @@ int ocg_config_app(){
g_otg->holding_time_off_pe[source_id_index][destination_id_index][g_otg->application_idx[source_id_index][destination_id_index]]=oai_emulation.application_config.customized_traffic.holding_time_off_pe[customized_traffic_config_index]; g_otg->holding_time_off_pe[source_id_index][destination_id_index][g_otg->application_idx[source_id_index][destination_id_index]]=oai_emulation.application_config.customized_traffic.holding_time_off_pe[customized_traffic_config_index];
g_otg->holding_time_pe_off[source_id_index][destination_id_index][g_otg->application_idx[source_id_index][destination_id_index]]=oai_emulation.application_config.customized_traffic.holding_time_pe_off[customized_traffic_config_index]; g_otg->holding_time_pe_off[source_id_index][destination_id_index][g_otg->application_idx[source_id_index][destination_id_index]]=oai_emulation.application_config.customized_traffic.holding_time_pe_off[customized_traffic_config_index];
LOG_I(OTG,"customized:: OCG_config_OTG: (1) FORMAT (%d:%d) source = %d, dest = %d, Application = %d, background %d\n", sid_start, sid_end, source_id_index, destination_id_index, g_otg->application_type[source_id_index][destination_id_index][g_otg->application_idx[source_id_index][destination_id_index]], g_otg->background[source_id_index][destination_id_index]); LOG_I(OTG,"customized:: OCG_config_OTG: (1) FORMAT (%d:%d) source = %d, dest = %d, Application = %d, state %d, background %d IDT DIST %d \n", sid_start, sid_end, source_id_index, destination_id_index, g_otg->application_type[source_id_index][destination_id_index][g_otg->application_idx[source_id_index][destination_id_index]], state, g_otg->background[source_id_index][destination_id_index], g_otg->idt_dist[source_id_index][destination_id_index][g_otg->application_idx[source_id_index][destination_id_index]][state]);
g_otg->application_idx[source_id_index][destination_id_index]+=1; g_otg->application_idx[source_id_index][destination_id_index]+=1;
} }
} }
...@@ -986,6 +989,7 @@ int ocg_config_emu(){ ...@@ -986,6 +989,7 @@ int ocg_config_emu(){
LOG_I(OCG, "number of frames in emulation is set to infinity\n"); LOG_I(OCG, "number of frames in emulation is set to infinity\n");
oai_emulation.info.seed = (oai_emulation.emulation_config.seed.value == 0) ? oai_emulation.info.seed : oai_emulation.emulation_config.seed.value; oai_emulation.info.seed = (oai_emulation.emulation_config.seed.value == 0) ? oai_emulation.info.seed : oai_emulation.emulation_config.seed.value;
LOG_I (OCG,"The seed value is set to %d \n", oai_emulation.info.seed );
if (oai_emulation.info.cli_enabled == 1){ if (oai_emulation.info.cli_enabled == 1){
if (cli_server_init(cli_server_recv) < 0) { if (cli_server_init(cli_server_recv) < 0) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment