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
for (i=0;i<Mdlharq;i++) {
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]);
if (dlsch->harq_processes[i]) {
bzero(dlsch->harq_processes[i],sizeof(LTE_DL_eNB_HARQ_t));
......
......@@ -45,7 +45,7 @@
#include "local.h"
#include "proto_extern.h"
#include "platform_constants.h"
//#include "platform_constants.h"
//#define NETLINK_DEBUG 1
......
......@@ -74,41 +74,41 @@ typedef enum {
*/
typedef enum {
NO_PREDEFINED_TRAFFIC =0,
M2M,
SCBR,
MCBR,
BCBR,
AUTO_PILOT,
BICYCLE_RACE,
OPENARENA,
TEAM_FORTRESS,
FULL_BUFFER,
M2M_TRAFFIC,
AUTO_PILOT_L, /*AUTO PILOT LOW SPEEDS*/
AUTO_PILOT_M, /*AUTO PILOT MEDIEUM SPEEDS*/
AUTO_PILOT_H, /*AUTO PILOT HIGH SPEEDS*/
AUTO_PILOT_E, /*AUTO PILOT EMERGENCY*/
VIRTUAL_GAME_L, /*VIRTUAL GAME LOW SPEEDS*/
VIRTUAL_GAME_M, /*VIRTUAL GAME MEDIEUM SPEEDS*/
VIRTUAL_GAME_H, /*VIRTUAL GAME HIGH SPEEDS*/
VIRTUAL_GAME_F, /*VIRTUAL GAME FINISH*/
ALARM_HUMIDITY, /* SENSOR BASED ALARM : HUMIDITY */
ALARM_SMOKE, /* SENSOR BASED ALARM : SMOKE */
ALARM_TEMPERATURE,/* SENSOR BASED ALARM : TEMPERATURE */
OPENARENA_DL,
OPENARENA_UL,
VOIP_G711,
VOIP_G729,
IQSIM_MANGO,
IQSIM_NEWSTEO,
OPENARENA_DL_TARMA,
VIDEO_VBR_10MBPS,
VIDEO_VBR_4MBPS,
VIDEO_VBR_2MBPS,
VIDEO_VBR_768KBPS,
VIDEO_VBR_384KBPS,
VIDEO_VBR_192KBPS,
BACKGROUND_USERS,
M2M, // 1
SCBR, //2
MCBR, //3
BCBR, //4
AUTO_PILOT, //5
BICYCLE_RACE, // 6
OPENARENA, // 7
TEAM_FORTRESS, // 8
FULL_BUFFER, // 9
M2M_TRAFFIC, // 10
AUTO_PILOT_L, //11 /*AUTO PILOT LOW SPEEDS*/
AUTO_PILOT_M, // 12 /*AUTO PILOT MEDIEUM SPEEDS*/
AUTO_PILOT_H, // 13 /*AUTO PILOT HIGH SPEEDS*/
AUTO_PILOT_E, // 14 /*AUTO PILOT EMERGENCY*/
VIRTUAL_GAME_L,// 15 /*VIRTUAL GAME LOW SPEEDS*/
VIRTUAL_GAME_M, // 16 /*VIRTUAL GAME MEDIEUM SPEEDS*/
VIRTUAL_GAME_H, // 17 /*VIRTUAL GAME HIGH SPEEDS*/
VIRTUAL_GAME_F, // 18 /*VIRTUAL GAME FINISH*/
ALARM_HUMIDITY, // 19 /* SENSOR BASED ALARM : HUMIDITY */
ALARM_SMOKE, // 20 /* SENSOR BASED ALARM : SMOKE */
ALARM_TEMPERATURE, // 21 /* SENSOR BASED ALARM : TEMPERATURE */
OPENARENA_DL, // 22
OPENARENA_UL, // 23
VOIP_G711, // 24
VOIP_G729, // 25
IQSIM_MANGO, // 26
IQSIM_NEWSTEO, // 27
OPENARENA_DL_TARMA, // 28
VIDEO_VBR_10MBPS, // 29
VIDEO_VBR_4MBPS, // 30
VIDEO_VBR_2MBPS, // 31
VIDEO_VBR_768KBPS, // 32
VIDEO_VBR_384KBPS, // 33
VIDEO_VBR_192KBPS, // 34
BACKGROUND_USERS, // 35
DUMMY
}Application;
......@@ -123,16 +123,16 @@ typedef enum {
typedef enum {
NO_TRAFFIC=0,
UNIFORM,
GAUSSIAN,
EXPONENTIAL,
POISSON,
FIXED,
WEIBULL,
PARETO,
GAMMA,
CAUCHY,
LOG_NORMAL,
UNIFORM, //1
GAUSSIAN, //2
EXPONENTIAL, //3
POISSON, // 4
FIXED, // 5
WEIBULL, // 6
PARETO, // 7
GAMMA, // 8
CAUCHY, // 9
LOG_NORMAL, // 10
TARMA,
VIDEO,
BACKGROUND_DIST,
......
......@@ -52,9 +52,9 @@ fl_initialize(&tArgc,tArgv,"OTG",0,0);
fl_show_form (form_dl->otg, FL_PLACE_HOTSPOT, FL_FULLBORDER, title);
fl_set_form_position(form_dl->otg, 200, 200);
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);
else
fl_set_xyplot_ybounds(form_dl->owd,0,400);
fl_set_xyplot_ybounds(form_dl->throughput,0,200);
......@@ -66,9 +66,9 @@ fl_initialize(&tArgc,tArgv,"OTG",0,0);
fl_show_form (form_ul->otg, FL_PLACE_HOTSPOT, FL_FULLBORDER, title);
fl_set_form_position(form_ul->otg, 850, 200);
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);
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
case OTG_GP_BG:
add_log_label(label, &start_log_GP_bg);
break;
case OTG_JITTER:
add_log_label(label, &start_log_GP_bg);
break;
default:
LOG_E(OTG, "File label unknown \n");
LOG_E(OTG, "File label unknown %d \n", label);
}
LOG_F(label,"%d ", ctime);
......
......@@ -53,6 +53,7 @@ unsigned int start_log_latency=0;
unsigned int start_log_latency_bg=0;
unsigned int start_log_GP=0;
unsigned int start_log_GP_bg=0;
unsigned int start_log_jitter=0;
/*! \fn void tx_throughput( int src, int dst, int application)
* \brief compute the transmitter throughput in bytes per seconds
......
......@@ -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);
return stream;
}
......@@ -496,7 +496,7 @@ backgroundStream_t *backgroundStreamInit(backgroundStream_t *stream, double lamb
void backgroundUpdateStream(backgroundStream_t *stream, int ctime){
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){
period=ctime-stream->lastUpdateTime;
numNewSessions=poisson_dist(stream->meanNumSessions/5710*period);
......@@ -532,7 +532,7 @@ double backgroundCalculateSize(backgroundStream_t *stream, int ctime, int idt){
double mrate=0;
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){
for(cnts=0; cnts<BACKGROUND_NUM_ACTIVE_MAX; cnts++){
if(stream->activeSessions[cnts].endTime>ctime){
......@@ -541,7 +541,7 @@ double backgroundCalculateSize(backgroundStream_t *stream, int ctime, int idt){
}
}
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;
}
......@@ -554,11 +554,11 @@ double backgroundCalculateSize(backgroundStream_t *stream, int ctime, int idt){
void backgroundPrintStream(backgroundStream_t *stream){
int cnts;
printf("OTG BACKGROUND DEBUG: backgroundPrintStream(%d)\n",(int)stream);
LOG_D(OTG,"BACKGROUND DEBUG: backgroundPrintStream(%d)\n",(int)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++){
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);
}
}
......
......@@ -42,8 +42,12 @@
#include "otg_vars.h"
#include "../UTIL/MATH/oml.h"
#include <math.h>
#include <mysql.h>
#include <m_ctype.h>
#include <sql_common.h>
#include "otg_form.h"
extern unsigned char NB_eNB_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)
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);
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){
seq_num_rx=otg_info->seq_num_rx[src][dst][otg_hdr_rx->traffic_type];
if (src<NB_eNB_INST)
......
......@@ -105,7 +105,8 @@ int time_dist(int src, int dst,int application, int state) {
break;
default :
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);
......@@ -170,7 +171,8 @@ int size_dist(int src, int dst, int application, int state) {
otg_info->ctime, otg_info->idt[src][dst][application]));
break;
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:
else
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]);
}
......@@ -327,7 +335,7 @@ unsigned char *packet_gen_multicast(int src, int dst, int ctime, int * pkt_size)
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));
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);
buffer_size = otg_hdr_size + strlen(header) + strlen(payload);
......@@ -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_background[src][dst]=0;
/* 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->background_stream[src][dst][0]=backgroundStreamInit(0,1);
}
} */
}
void check_ctime(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++){
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
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;
}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;
}
......@@ -681,6 +689,22 @@ int k;
for (k=0; k<g_otg->application_idx[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 :
g_otg->trans_proto[i][j][k] = UDP;
g_otg->ip_v[i][j][k] = IPV4;
......@@ -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_max[i][j][k][PE_STATE] = 10;
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;
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]);
......@@ -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_max[i][j][k][PE_STATE] = 10;
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;
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
......@@ -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_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_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;
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
......@@ -806,21 +830,7 @@ int k;
g_otg->duration[i][j] = 1000;
#endif
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 */
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;
......@@ -853,22 +863,24 @@ case AUTO_PILOT_L :
/* Measurements from:
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->ip_v[i][j][k] = IPV4;
g_otg->pu_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_max[i][j][k][PE_STATE] = 100;
g_otg->idt_max[i][j][k][PE_STATE] = 500;
if (i<nb_enb_local){ /*DL*/
g_otg->size_dist[i][j][k][PE_STATE] = FIXED;
g_otg->size_min[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*/
g_otg->size_dist[j][i][k][PE_STATE] = UNIFORM;
g_otg->size_min[j][i][k][PE_STATE] = 64;
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_ed[i][j][k]=0.3;
......@@ -890,7 +902,7 @@ case AUTO_PILOT_M :
/* Measurements from:
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->ip_v[i][j][k] = IPV4;
g_otg->pu_size_pkts[i][j][k]=1000;
......@@ -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_min[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*/
g_otg->size_dist[j][i][k][PE_STATE] = UNIFORM;
g_otg->size_min[j][i][k][PE_STATE] = 64;
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_ed[i][j][k]=0.3;
......@@ -927,7 +941,7 @@ case AUTO_PILOT_H :
/* Measurements from:
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->ip_v[i][j][k] = IPV4;
g_otg->pu_size_pkts[i][j][k]=1000;
......@@ -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_min[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*/
g_otg->size_dist[j][i][k][PE_STATE] = UNIFORM;
g_otg->size_min[j][i][k][PE_STATE] = 64;
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_ed[i][j][k]=0.3;
......@@ -964,7 +980,7 @@ case AUTO_PILOT_E :
/* Measurements from:
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*/
g_otg->trans_proto[i][j][k] = TCP;
g_otg->ip_v[i][j][k] = IPV4;
......@@ -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_min[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*/
g_otg->size_dist[j][i][k][PE_STATE] = UNIFORM;
g_otg->size_min[j][i][k][PE_STATE] = 64;
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_ed[i][j][k]=0.3;
......@@ -1135,7 +1153,8 @@ Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Marku
g_otg->duration[i][j] = 1000;
#endif
break;
case OPENARENA :
case OPENARENA_DL :
case OPENARENA_UL :
g_otg->trans_proto[i][j][k] = TCP;
g_otg->ip_v[i][j][k] = IPV4;
g_otg->idt_dist[i][j][k][PE_STATE] = FIXED;
......@@ -1159,6 +1178,7 @@ Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Marku
g_otg->duration[i][j] = 1000;
#endif
break;
case OPENARENA_DL_TARMA :
g_otg->trans_proto[i][j][k] = TCP;
g_otg->ip_v[i][j][k] = IPV4;
......@@ -1261,7 +1281,7 @@ break;
g_otg->idt_max[i][j][k][PE_STATE] = 80;
g_otg->size_dist[i][j][k][PE_STATE] = BACKGROUND_DIST;
/*the background initialization*/
otg_info->background_stream[i][j][k]=backgroundStreamInit(0,2);
// otg_info->background_stream[i][j][k]=backgroundStreamInit(0,2);
break;
case DUMMY :
......@@ -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){
otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1);
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*/;
}
//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) {
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];
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])){
......@@ -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])){
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);
}
......@@ -1538,7 +1558,7 @@ void state_management(int src, int dst, int application, int ctime) {
else{
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);
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;
......@@ -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->start_holding_time_off[src][dst][application]=ctime;
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);
}
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) {
//otg_info->state[src][dst]=ON_STATE;
otg_info->state[src][dst][application]=PE_STATE;
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);
}
break;
......@@ -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->start_holding_time_off[src][dst][application]=ctime;
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);
}
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][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);
}
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][application]=PE_STATE;
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);
}
break;
......@@ -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]){
//otg_info->state[src][dst]=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->state_transition_prob[src][dst][application]=uniform_dist(0,1);
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) {
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])
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;
default:
......
......@@ -65,6 +65,13 @@ ifdef XFORMS
CFLAGS += -DXFORMS
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
CFLAGS += -DPRINT_STATS
endif
......@@ -309,7 +316,7 @@ oaisim : $(ASN1_MSG_OBJS1) $(OBJ) oaisim.c $(LFDS_DIR)/bin/liblfds611.a
endif
@echo "Compiling oaisim.c ..."
@$(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)
mv oaisim oaisim_eNB
......@@ -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
test_nasmesh_fix:
(cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && make)
(cd $(OPENAIR2_DIR) && make nasmesh_netlink_address_fix.ko)
(cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && $(MAKE))
(cd $(OPENAIR2_DIR) && $(MAKE) nasmesh_netlink_address_fix.ko)
(cp $(OPENAIR2_DIR)/NAS/DRIVER/MESH/nasmesh.ko . )
nasmesh_fix:
(cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && make)
(cd $(OPENAIR2_DIR) && make nasmesh_netlink_address_fix.ko)
(cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && $(MAKE))
(cd $(OPENAIR2_DIR) && $(MAKE) nasmesh_netlink_address_fix.ko)
(sudo insmod $(OPENAIR2_DIR)/NAS/DRIVER/MESH/nasmesh.ko)
nasmesh_nl:
(cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && make)
(cd $(OPENAIR2_DIR) && make nasmesh_netlink.ko)
(cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && $(MAKE))
(cd $(OPENAIR2_DIR) && $(MAKE) nasmesh_netlink.ko)
(sudo insmod $(OPENAIR2_DIR)/NAS/DRIVER/MESH/nasmesh.ko)
rb_tool:
(cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && make)
(cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && $(MAKE))
nasmesh_install:
(sudo rmmod nasmesh)
......@@ -399,13 +406,15 @@ cleancell:
rm -f $(OPENAIR2_DIR)/NAS/SIMU_CELLULAR/*.d
print:
@echo $(cygwin)
@echo $(OCG_FLAG)
@echo $(CFLAGS)
@echo $(EXTRA_CFLAGS)
# @echo $(cygwin)
@echo $(OBJ)
@echo $(IS_REL10)
@echo $(IS_REL8)
@echo $(OCG_FLAG)
@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:
@echo $(CFLAGS)
......@@ -428,6 +437,9 @@ otg_gp:
otg_gp_bg:
export TITLE="Background Goodput(Kb/s)"
$(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 )
......
......@@ -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",
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_openair1();
......
......@@ -123,6 +123,9 @@ mapping otg_distribution_names[] =
{"gamma", 8},
{"cauchy",9},
{"log_normal",10},
{"tarma",11},
{"video",12},
{"background_dist",13},
{NULL, -1}
};
......@@ -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_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;
}
}
......@@ -986,6 +989,7 @@ int ocg_config_emu(){
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;
LOG_I (OCG,"The seed value is set to %d \n", oai_emulation.info.seed );
if (oai_emulation.info.cli_enabled == 1){
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