00001 00002 // PROYECTO FIN DE CARRERA // 00003 // TITULO: Disenyo de nuevas arquitecturas y algoritmos de gestión de recursos en // 00004 // redes de acceso FiWi // 00005 // AUTOR: Ana Emma Lopez Mato // 00006 // TUTOR: Noemi Merayo Alvarez // 00007 // INGENIERIA TECNICA DE TELECOMUNICACIONES, SISTEMAS DE TELECOMUNICACION // 00008 // UNIVERSIDAD DE VALLADOLID // 00010 00011 #ifndef __RED_WIRELESS_GENTRAFFIC_H_ 00012 #define __RED_WIRELESS_GENTRAFFIC_H_ 00013 00014 #include <omnetpp.h> 00015 #include <vector> 00016 #include <time.h> 00017 #include "GATE_m.h" 00018 #include "REPORT_m.h" 00019 #include "ETHERNET_m.h" 00020 #include "ONU_SISTqueue.h" 00021 #include "analysis.h" 00022 #include "ONU_Table.h" 00023 #include "OLT_Rx.h" 00024 /* 00025 * MODULO ONU_GENTraffic: 00026 */ 00027 // DEPENDIENDO DE LA VERSION DE LA FUENTE SELF SIMILAR CON LA QUE QUEREMOS TRABAJAR, DEBEMOS ELEGIR UNAS CABECERAS U OTRAS. 00028 // FUENTE SELF SIMILAR VERSION 2 ////////////////////////////////////////////////////////////////////////////////////////////////// 00029 00030 #include "_types.h" 00031 #include "_util.h" 00032 #include "_rand_MT.h" 00033 #include "_link.h" 00034 #include "trace.h" 00035 #include "aggreg.h" 00036 00037 // PARA DEFINIR PAQUETES DE TAMANYO VARIABLE EN LA FUENTE SELF SIMILAR VERSION 2 00038 //#define MIN_PACKET_SIZE 64 // MINIMO TAMANYO DEL PAQUETE 00039 //#define MAX_PACKET_SIZE 1518 // MAXIMO TAMANYO DEL PAQUETE 00040 00041 // FIN DE LA FUENTE VERSION 2////////////////////////////////////////////////////////////////////////////////////////////////////// 00043 00044 00045 00046 // FUENTE SELF SIMILAR VERSION 3 /////////////////////////////////////////////////////////////////////////////////////////////////// 00047 /* 00048 #include "trf_gen_v3.h" 00049 #include "avltree.h" 00050 #include "_types.h" 00051 00052 #define MIN_IFG 0 // DISTANCIA MINIMA ENTRE EL MARCO 00053 #define MIN_PACKET_SIZE 64 // MINIMO TAMANYO DEL PAQUETE 00054 #define MAX_PACKET_SIZE 1518 // MAXIMO TAMANYO DEL PAQUETE 00055 #define SHAPE_PARETO 1.4F // PARAMETRO ALFA PARA LA DISTRIBUCION DE PARETO 00056 #define MEAN_BURST_SIZE 4000 // TAMANYO MEDIO DE ESTALLIDO DE UNA RAFAGA INDIVIDUAL 00057 #define SUB_STREAMS 256 // NUMERO DE FLUJO DE SUB_STREAMS O FUENTES 00058 using namespace GEN; 00059 */ 00060 // FIN DE LA FUENTE SELF SIMILAR VERSION 3 ///////////////////////////////////////////////////////////////////////////////////////// 00062 00063 //DEFINIMOS LOS TIPOS DE std DE LOS VECTORES Y MATRICES 00064 typedef std::vector<int> int_vector_t; // VECTOR DE TIPO ENTERO 00065 typedef std::vector<double> double_vector_t; // VECTOR DE TIPO DOUBLE 00066 00067 class ONU_GENTraffic : public cSimpleModule 00068 { 00069 private: 00070 00071 Analysis load_carga; // VARIABLE PARA CALCULAR LA CARGA TOTAL DEL NODO CON LA CLASE ANALISIS 00072 FILE * carga_paquetes; // ARCHIVO EN EL QUE SE GUARDAN LOS RESULTADOS DE LA CARGA DE LOS PAQUETES DE LA CLASE ANALISIS 00073 FILE * paquetes; // ARCHIVO EN EL QUE SE GUARDAN LOS RESULTADOS DEL NUMERO DE PAQUETES QUE SE GENERAN POR CADA SERVICIO 00074 00075 public: 00076 00077 // INICIO DE CODIGO PARA LA FUENTE SELF SIMILAR VERSION 2 //////////////////////////////////////////////////////////////// 00078 00079 ONU_GENTraffic(); // CONSTRUCTOR 00080 virtual ~ONU_GENTraffic(); // DESTRUCTOR 00081 Generator *pAG; // PUNTERO AL GENERADOR DE PAQUETES PARA LA FUENTE SELF SIMILAR VERSION 2 00082 int packetSize; // VARIABLE DEL TAMANYO DEL PAQUETE QUE GENERAMOS EN LAS FUENTES 00083 double_vector_t load_dmb; // VECTOR QUE INDICA LA CARGA DEL NODO DE LA ONU 00084 OLT_Rx *olt_plr; 00085 int onu; 00086 int sla; 00087 int isGateway; 00088 00089 // FINAL DE CODIGO PARA LA FUENTE SELF SIMILAR VERSION 2 ///////////////////////////////////////////////////////////////// 00090 00091 // INICIO DE CODIGO PARA LA FUENTE SELF SIMILAR VERSION 3 //////////////////////////////////////////////////////////////////// 00092 /* 00093 PacketGenerator *pSRC; // PUNTERO AL GENERADOR DE PAQUETES 00094 // ATRIBUTO PARA ESTABLECER EL INTERVALO interarrivalTime ENTRE PAQUETES DE PARAMETROS (DIFERENCIA ENTRE EL PAQUETE ACTUAL Y EL SIGUIENTE). 00095 // ESTE PARAMETRO SE HA DE CONVERTIR EN BIT Y DESPUES A TIEMPO EN FUNCION DE LA VELOCIDAD DE TRANSMISION. 00096 simtime_t interarrivalTime; 00097 double load; // VARIABLE QUE INDICA LA CARGA DEL NODO DE LA ONU 00098 double packet_size; // TAMANYO DEL PAQUETE 00099 ONU_GENTraffic(); // CONSTRUCTOR 00100 virtual ~ONU_GENTraffic(); // DESTRUCTOR 00101 */ 00102 // FINAL DE CODIGO PARA LA FUENTE SELF SIMILAR VERSION 3 /////////////////////////////////////////////////////////////////////// 00103 00104 //ONU_Table *onutable_module; 00105 00106 double wavelength_bit_rate; // TASA DE BITS POR LONGITUD DE ONDA UTILIZADA PARA LAS DOS VERSIONES DE LAS FUENTES 00107 00108 ONU_SISTqueue *onu_queue; // DEFINIMOS VARIABLE PARA PODER ENTRAR EN EL MODULO OLT_TABLE 00109 long tamsumqueue; // TAMANYO DE LA SUMA DEL TAMANYO DE LOS PAQUETES QUE LLEGAN A LAS COLAS DE LA ONU 00110 int_vector_t tamsumpop; // VECTOR DEL TAMANYO DE LA SUMA DE LOS BYTES DE LOS PAQUETES EXTRAIDOS DE LAS COLAS 00111 double suma_tam_packets; // VARIABLE DE LA SUMA TOTAL DEL TAMANYO DE LOS PAQUETES GENERADOS POR LA ONU EN BYTES 00112 simtime_t time_creation; // TIEMPO DE CREACCION DEL PAQUETE 00113 double total_load; // CARGA TOTAL DEL NODO DE LA ONU 00114 int_vector_t suma_total; // VECTOR DE LA SUMA DE TODOS LOS BYTES QUE HAY EN LAS COLAS 00115 00116 // VARIABLES USADAS PARA LA VERSION TRIMODAL 00117 long packet_64; // VARIABLE DEL NUMERO DE PAQUETES CREADOS DE 64 BYTES POR LA FUENTE SELF SIMILAR VERSION 2 00118 long packet_594; // VARIABLE DEL NUMERO DE PAQUETES CREADOS DE 594 BYTES POR LA FUENTE SELF SIMILAR VERSION 2 00119 long packet_1500; // VARIABLE DEL NUMERO DE PAQUETES CREADOS DE 150 BYTES POR LA FUENTE SELF SIMILAR VERSION 2 00120 long totalpacket; // VARIABLE DEL NUMERO DE PAQUETES TOTAL CREADOS POR LA FUENTE SELF SIMILAR VERSION 2 00121 00122 protected: 00123 virtual void initialize(); 00124 virtual void handleMessage(cMessage *msg); 00125 00126 virtual void separatequeue(cMessage *msg); // FUNCION DEL METODO DE INSERCION DE PAQUETES DE COLAS SEPARADAS 00127 virtual void priorityqueue(cMessage *msg); // FUNCION DEL METODO DE INSERCION DE PAQUETES DE PRIORIDAD DE COLAS 00128 00129 virtual void volcadoFicheros(); 00130 int volcado; 00131 int contador; 00132 00133 virtual void finish(); // DEFINICION DE LA FUNCION FINALIZAR 00134 }; 00135 00136 #endif