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_RX_H_ 00012 #define __RED_WIRELESS_RX_H_ 00013 00014 #include <omnetpp.h> 00015 #include <vector> 00016 #include "GATE_m.h" 00017 #include "REPORT_m.h" 00018 #include "ETHERNET_m.h" 00019 #include "analysis.h" 00020 #include "MAC_OLT.h" 00021 /* 00022 * MODULO OLT_rx: 00023 */ 00024 typedef std::vector<int> int_vector_t; // VECTOR TIPO ENTERO 00025 typedef std::vector<int_vector_t> int_matrix_t; // MATRIZ TIPO ENTERO 00026 typedef std::vector<long int> long_int_vector_t; // VECTOR TIPO ENTERO LARGO 00027 typedef std::vector<double> double_vector_t; // VECTOR TIPO DOUBLE 00028 typedef std::vector<double_vector_t> double_matrix_t; // MATRIZ TIPO DOUBLE 00029 typedef std::vector<simtime_t> simtime_t_vector_t; // VECTOR TIPO SIM_TIME 00030 typedef std::vector<Analysis> analysis_vector_t; // VECTOR CLASE ANALISIS 00031 typedef std::vector<analysis_vector_t> analysis_matrix_t; // MATRIZ CLASE ANALISIS 00032 00033 class OLT_Rx : public cSimpleModule 00034 { 00035 private: 00036 // DEFINIMOS LOS PARAMETROS PARA LA CLASE ANALISIS 00037 // PARAMETRO PARA OBTENER EL RETARDO GLOBAL CON LA CLASE ANALISIS 00038 std::vector<Analysis> retardo_global_P; // VECTOR DE CLASE ANALISIS PARA CREAR EL RETARDO GLOBAL 00039 00040 // PARAMETRO PARA OBTENER LA CARGA TOTAL CON LA CLASE ANALISIS 00041 std::vector<Analysis> carga_onu; 00042 00043 // PARAMETRO PARA OBTENER LA CARGA TOTAL, POR PRIORIDADES, CON LA CLASE ANALISIS 00044 analysis_matrix_t carga_prioridades; 00045 00046 // PARAMETROS PARA OBTENER EL RETARDO DE CADA SLA CON LA CLASE ANALISIS 00047 std::vector<Analysis> retardo_sla; // VECTOR DE CLASE ANALISIS PARA CREAR EL RETARDO GLOBAL DE CADA SLA 00048 00049 // PARAMETROS PARA OBTENER EL RETARDO DE CADA SLA CON LA CLASE ANALISIS 00050 std::vector <std::vector < Analysis > > retardo_servicios_sla; // MATRIZ DE CLASE ANALISIS PARA CREAR EL RETARDO DE LOS SLAs POR SERVICIOS 00051 00052 // PARAMETRO PARA OBTENER LA MEDIA DE LOS BYTES QUE SE QUEDAN EN LA COLAS DESPUES DE CADA CICLO CON LA CLASE ANALISIS 00053 std::vector<Analysis> media_bytes_total_onus; // VECTOR DE CLASE ANALISIS PARA CREAR LOS BYTES QUE SE QUEDAN EN LA COLAS DESPUES DE CADA CICLO 00054 00055 // DEFINIMOS LOS ARCHIVOS DONDE SE GUARDAN LOS RESULTADOS DE RECOGER LAS ESTADASTICAS 00056 FILE * retardo_analisis_sla; // ARCHIVO DONDE SE GUARDARAN LOS RESULTADOS DE LA CLASE ANALISIS PARA EL RETARDO DE LOS SLAs 00057 FILE * retardo_analisis; // ARCHIVO DONDE SE GUARDARAN LOS RESULTADOS DE LA CLASE ANALISIS PARA EL RETARDO GLOBAL 00058 FILE * media_total_onu; // ARCHIVO DONDE GUARDAMOS LA MEDIA DE LAS COLAS 00059 FILE * tamano_throughput; //ARCHIVO DONDE GUARDAMOS EL THROUGHPUT 00060 FILE * plr_file; //ARCHIVO DONDE GUARDAMOS EL PLR 00061 FILE * varianza; //ARCHIVO DONDE GUARDAMOS LA VARIANZA 00062 FILE * tamano_throughput_sla; 00063 FILE * retardo_total; 00064 FILE * carga_onus; 00065 FILE * carga_prioridades_onus; 00066 00067 int_vector_t num_sla; // VECTOR PARA GUARDAR EL IDENTIFICADOR DEL SLA DE LA ONU ASOCIADA 00068 simtime_t_vector_t retardo_P; // VECTOR DONDE GUARDAMOS EL RETARDO GLOBAL DE LOS SERVICIOS 00069 simtime_t_vector_t retardo; // VECTOR DONDE GUARDAMOS EL RETARDO DE LOS SLAs 00070 double numReceived; // VARIABLE PARA CONTAR EL NUMERO DE PAQUETES ETHERNET RECIBIDOS 00071 long WirelessRx; 00072 long OpticalRx; 00073 double_vector_t TotalBytes; 00074 double_matrix_t PriorityBytes; 00075 double OpticalBytes; 00076 double WirelessBytes; 00077 double carga_cola; 00078 double carga_prioridad; 00079 int onus; 00080 int prioridades; 00081 simtime_t delay; 00082 simtime_t delay_opt; 00083 simtime_t delay_wir; 00084 int_vector_t tam_packet_queue; // TAMANYO EN BYTES QUE QUEDAN EN LAS COLAS DESPUES DE CADA CICLO 00085 00086 protected: 00087 virtual void initialize(); 00088 virtual void handleMessage(cMessage *msg); 00089 long double throughput; 00090 long double total_bits; 00091 double total_bits_throughput; 00092 long double total_bits_report; 00093 long double throughput_report; 00094 double total_bits_throughput_report; 00095 long double throughput_cabecera; 00096 long double total_bits_cabecera; 00097 double total_bits_throughput_cabecera; 00098 long double B_guarda; 00099 long double B_guarda_total; 00100 long double total_bw_perdido_bits; 00101 long double total_time_perdido; 00102 double media; 00103 00104 public: 00105 Analysis retardo_inalambrico; 00106 Analysis retardo_optico; 00107 Analysis plr; 00108 double numpaquetes; 00109 double plr_total; 00110 MAC_OLT *mac_olt; 00111 double_vector_t var_Mbps; 00112 double_vector_t cont_var; 00113 std::vector <Analysis> desviacion; 00114 std::vector <Analysis> plr_sla; 00115 double_vector_t throughput_sla; 00116 int cont_aux; 00117 int contador; 00118 double_vector_t total_bits_sla; 00119 virtual void volcadoFicheros(); 00120 int volcado; 00121 virtual void finish(); 00122 }; 00123 00124 #endif