#include #include #include #include /*-------------Global Variables------------------*/ int Option; char *Input_FILE_NAME, *Input_FILE_NAME1, *Out_FILE_NAME, *Out_FILE_NAME1; double rate, period; int tcpflows; double s_1[1][10000]; //time first double s_2[1][10000]; //time last double s_3[1][10000]; //time difference int s_4[1][10000]; //seq_number of the object int s_5[1][10000]; //object size int k; int rnd; double sum; double delays[85][1000]; // 85 bins of file sizes, and maximally 10000 data for each bin int dim[1][85]; //dimension of the matrix delays double bin_border[1][86]; //borders for bins double bin_mean[1][85]; //mean of the bins double delay_mean[1][85]; //mean of delay for each bin double arr1[1][85]; double arr2[1][85]; double arr3[1][85]; double arr4[1][85]; double avg[100], var[100], count[100], mean_file_size[100]; main(int argc, char *argv[]) { if (argc != 10){ printf(" Error! You need to input Option and Data-File-Name and Output-Dada-File-Name\n"); exit(0); } Option = atoi(argv[1]); Input_FILE_NAME = argv[2]; Input_FILE_NAME1 = argv[3]; Out_FILE_NAME = argv[4]; rnd = atoi(argv[5]); rate = atof(argv[6]); Out_FILE_NAME1 = argv[7]; period = atof(argv[8]); tcpflows = atoi(argv[9]); if(1==Option){ if(Option_1()!=1){ printf("\n Error in Option 1"); exit(0); } } if(2==Option){ if(Option_2()!=1){ printf("\n Error in Option 2"); exit(0); } } if(3==Option){ if(Option_3()!=1){ printf("\n Error in Option 3"); exit(0); } } if(4==Option){ if(Option_4()!=1){ printf("\n Error in Option 4"); exit(0); } } if(5==Option){ if(Option_5()!=1){ printf("\n Error in Option 5"); exit(0); } } if(6==Option){ if(Option_6()!=1){ printf("\n Error in Option 6"); exit(0); } } if(7==Option){ if(Option_7()!=1){ printf("\n Error in Option 7"); exit(0); } } exit(0); } /***************************************************************/ //this option is used when you make out-... from drops-... and web-... //out-... then consists of rnd: ... int Option_1() { int i,j,source,destination,size,flow_id,sequence,packet_id, q_length; char c,type[4],flag[8], *control_string, *control_string1; FILE *fp, *fp1, *outfp, *outfp1; float val1, val2, val3; float v1; int v2, v3, v4, v5; if( (fp = fopen(Input_FILE_NAME,"r"))==NULL){ printf("\n Open Input file error\n"); exit(1); } if( (fp1 = fopen(Input_FILE_NAME1,"r"))==NULL){ printf("\n Open Input file1 error\n"); exit(1); } if( (outfp = fopen(Out_FILE_NAME,"a+"))==NULL){ printf("\n Open Out file error\n"); exit(1); } control_string ="%c %f %d %d %s %d %s %d %f %f %d %d %%"; control_string1 = "%f %d %d %d %d %%"; for (i=0;i<10000;i++){ s_1[0][i]=0; //time first s_2[0][i]=0; //time last s_3[0][i]=0; //time difference s_4[0][i]=i; //object sequence number s_5[0][i]=0; //object size } for (i=0;i<85;i++){ dim[0][i]=0; delay_mean[0][i]=0; for (j=0;j<1000;j++){ delays[i][j]=0; } } bin_border[0][0]=1; for (i=0;i<85;i++){ bin_border[0][i+1]=bin_border[0][i]*1.1; bin_mean[0][i]=(bin_border[0][i]+bin_border[0][i+1])/2; } while(fscanf(fp,control_string,&c,&val1,&source,&destination,type,&size,flag,&flow_id,&val2,&val3,&sequence,&packet_id)>0){ if ((flow_id>=0)&&(flow_id<10000)){ if (s_1[0][flow_id]==0){ s_1[0][flow_id]=val1; } s_2[0][flow_id]=val1; s_3[0][flow_id]=val1-s_1[0][flow_id]; }else{ } } k=0; while(fscanf(fp1,control_string1,&v1,&v2,&v3,&v4,&v5)>0){ for (i=k;i<10000;i++){ if (v1 == s_1[0][i]){ k=i; s_5[0][i]=v5; } } } for (i=1;i<10000;i++){ if (s_5[0][i]>0){ for (j=0;j<85;j++){ if((s_5[0][i]>=bin_border[0][j])&&(s_5[0][i]0){ delay_mean[0][i]=sum/dim[0][i]; } } for (i=0;i<85;i++){ fprintf(outfp,"rnd: %d %f %f %d\n", rnd, bin_mean[0][i], delay_mean[0][i], dim[0][i]); } fclose(fp); fclose(fp1); fclose (outfp); return(1); } /***************************************************************/ //this option is used for web traffic, to compute the ratios of //delay times with and without tcp and tcp-lp int Option_2() { int i,j; char c1,c2,c3, *control_string; FILE *fp, *fp1, *outfp1; float val1, val2, val3, val4, val5, val6; for (i=0;i<85;i++){ arr1[0][i]=0; //delay tcp-lp arr2[0][i]=0; //delay tcp arr3[0][i]=0; //output: tcp-lp/tcp arr4[0][i]=0; //mean bin_size } if( (fp = fopen(Input_FILE_NAME,"r"))==NULL){ printf("\n Open Input file error\n"); exit(1); } if( (fp1 = fopen(Input_FILE_NAME1,"r"))==NULL){ printf("\n Open Input file1 error\n"); exit(1); } if( (outfp1 = fopen(Out_FILE_NAME,"wb"))==NULL){ printf("\n Open Out file error\n"); printf("\noouutt"); exit(1); } control_string ="%f %f %f %f %f %f"; i=0; while(fscanf(fp,control_string,&val1,&val2,&val3,&val4,&val5,&val6)>0){ arr1[0][i]=val2; //mean delay arr4[0][i]=val1; //mean bin_size i++; } i=0; while(fscanf(fp1,control_string,&val1,&val2,&val3,&val4,&val5,&val6)>0){ arr2[0][i]=val2; //mean delay i++; } for (i=0;i<85;i++){ if ((arr1[0][i]!=0)&&(arr2[0][i]!=0)){ arr3[0][i]=arr1[0][i]/arr2[0][i]; //tcp-lp/tcp } fprintf(outfp1,"%f %d %f\n", arr4[0][i], 1, arr3[0][i]); } fclose(fp); fclose(fp1); fclose (outfp1); return(1); } /***************************************************************/ int Option_3() { int i,j, val0, val11, seq, before, cnt; char c, *control_string, *control_string1, *control_string2; char c1[3], c2[1], c3[7]; FILE *fp, *outfp; float val1, val2, val3; float v1; if( (fp = fopen(Input_FILE_NAME,"r"))==NULL){ printf("\n Open Input file error\n"); exit(1); } if( (outfp = fopen(Out_FILE_NAME,"a+"))==NULL){ printf("\n Open Out file error\n"); exit(1); } for (i=0; i<100; i++) { avg[i]=0; var[i]=0; } control_string ="%c %f %d %d %s %d %s %d %f %f %d %d %%"; control_string1 = "%f %d %d %d %d %%"; control_string2 = "%s %d %s %s %f %%"; seq=0; //first value has to be 1 before=-5; cnt=0; while(fscanf(fp,control_string2,c1,&val0,c2,c3,&val1)>0){ if (val0 == before) { seq=seq+1; } else { before = val0; seq=1; cnt=cnt+1; } avg[seq]+=val1; } for (i=1;i0){ if (val0 == before) { seq=seq+1; } else { before = val0; seq=1; cnt=cnt+1; } var[seq]+=(val1-avg[seq])*(val1-avg[seq]); } for (i=1;i 2.58*dev, 95% -> 1.96*dev, 90% -> 1.65 for (i=1;i0){ if (val0 == before) { seq=seq+1; } else { before = val0; seq=1; cnt=cnt+1; } mean_file_size[seq] = val1; if (val2>0.0){ avg[seq]+=val2; count[seq]+=1.0; } } for (i=1;i0.0){ avg[i]=avg[i]/count[i]; } else { avg[i]=0.0; } } fclose(fp); for (i=0;i<100;i++){ count[i] = 0.0; } if( (fp = fopen(Input_FILE_NAME,"r"))==NULL){ printf("\n Open Input file error\n"); exit(1); } seq=0; //first value has to be 1 before=-5; cnt=0; while(fscanf(fp,"%s %d %f %f %f %%",c1,&val0,&val1,&val2,&val3)>0){ if (val0 == before) { seq=seq+1; } else { before = val0; seq=1; cnt=cnt+1; } if (val2>0.0){ var[seq]+=(val2-avg[seq])*(val2-avg[seq]); count[seq]+=1.0; } } for (i=1;i0.0){ var[i]=var[i]/count[i]; var[i]=sqrt(var[i]); } else { var[i]=0.0; } } //99% -> 2.58*dev, 95% -> 1.96*dev, 90% -> 1.65 for (i=1;i0){ if (val0 == before) { seq=seq+1; } else { before = val0; seq=1; cnt=cnt+1; } avg[seq]+=val1; } for (i=1;i0){ if (val0 == before) { seq=seq+1; } else { before = val0; seq=1; cnt=cnt+1; } var[seq]+=(val1-avg[seq])*(val1-avg[seq]); } for (i=1;i 2.58*dev, 95% -> 1.96*dev, 90% -> 1.65 for (i=1;i0){ if (val0 == before) { seq=seq+1; } else { before = val0; seq=1; cnt=cnt+1; } avg[seq]+=val1; } for (i=1;i0){ if (val0 == before) { seq=seq+1; } else { before = val0; seq=1; cnt=cnt+1; } var[seq]+=(val1-avg[seq])*(val1-avg[seq]); } for (i=1;i 2.58*dev, 95% -> 1.96*dev, 90% -> 1.65 for (i=1;i0){ avg[0] = val2; avg[1] = val3; avg[2] = val4; avg[3] = val5; avg[4] = val6; avg[5] = val7; avg[6] = val8; avg[7] = val9; avg[8] = val10; avg[9] = val11; printf("ovde1\n"); } printf("ovde1.5\n"); sum=0; for (i=0;i0){ avg[0] = val2; avg[1] = val3; avg[2] = val4; avg[3] = val5; avg[4] = val6; avg[5] = val7; avg[6] = val8; avg[7] = val9; avg[8] = val10; avg[9] = val11; printf("time: %f\n", val1); sum=0; for (i=0;i 1.05) && (val1 < 1.15)) { fprintf(outfp,"%f \n", val1); final=0; for (i=0;i