NED File ONU.ned

Name Description
ONU (compound module)

El modulo compuesto ONU representa a las unidades opticas de red, situadas en las dependencias de los usuarios opticos. Hay 'numOnu' modulos ONU en la red, de los cuales 'numGW-1' actuan de pasarela entre las tecnologias optica e inalambrica.

Source code:

////////////////////////////////////////////////////////////////////////////////////////
// PROYECTO FIN DE CARRERA															  //
// TITULO: Diseño e Implementacion de Nuevas Arquitecturas de Acceso Hibridas         //
//	       Opticas-wireless         												  //
// AUTOR: Ana Emma Lopez Mato														  //
// TUTOR: Noemi Merayo Alvarez														  //
// INGENIERIA TECNICA DE TELECOMUNICACIONES, SISTEMAS DE TELECOMUNICACION			  //
// UNIVERSIDAD DE VALLADOLID													      //
////////////////////////////////////////////////////////////////////////////////////////

package red_wireless;
// El modulo compuesto ONU representa a las unidades opticas de red, situadas en las dependencias de los usuarios opticos.
// Hay 'numOnu' modulos ONU en la red, de los cuales 'numGW-1' actuan de pasarela entre las tecnologias optica e inalambrica.
module ONU
{
    parameters:
        @display("i=abstract/db");
        int extractionmethod_StrictPQ0_Centralized1; //Parametro para elegir el metodo de extraccion de paquetes de los modulos ONU_SISTqueue[]
        int insercionmethod_separatequeue0_priorityqueue1; //Parametro para elegir el metodo de insercion de paquetes en los modulos ONU_SISTqueue[]
        int methodlength_longvariable0_longfija1; //Parametro para elegir la configuracion de los enlaces opticos (longitud fija o variable)
        int longpacketfixed0_trimodal1; //Parametro para elegir el modo de generacion de paquetes Self-Similar (longitud fija o trimodal)
        int numstreamV2_32_128_256; //Parametro para elegir el numero de streams de cada fuente de trafico Self-Similar
        double node_load; //Carga de cada fuente de trafico Self-Similar
        int numlong; //Numero de longitudes de onda soportadas por la subred optica
        double tambuffer; //Tamanyo del buffer de cada ONU
        double txrate; //Capacidad de transmision de cada enlace optico
        int numcolas; //Numero de clases de servicio del trafico inalambrico
        int numqueue; //Numero de clases de servicio del trafico optico
        int numOnu; //Numero de ONUs en la parte optica de la red hibrida
        int aux; //Parametro auxiliar para incluir los modulos ONU como nodos en la instancia de la clase cTopology
		double dist_pasarela; //Variable para generar aleatoriamente la longitud del canal entre BS y ONU pasarelas
    gates:
        inout physicalonu[]; //Array de puertas de entrada/salida que conectan este modulo con el Splitter
        inout gatewirelessInOut[]; //Array de puertas de entrada/salida que conectan este modulo con una BS pasarela (si es una ONU pasarela)

    submodules:
        onu_rx: ONU_Rxuser {
            parameters:
                @display("p=291,220");
        }
        onu_wdm: ONU_WDMSplitter {
            parameters:
                @display("p=54,137");
                txrate = txrate;
                numOnu = numOnu;
                methodlength_longvariable0_longfija1 = methodlength_longvariable0_longfija1;
			gates:
                wdmnet[numlong];
                wdmqueueIn[numqueue+1];
        }
        onu_ptp: ONU_Point_to_Point {
            parameters:
                @display("p=170,220");
        }
        onu_mac: MAC_ONU {
            parameters:
                @display("p=170,137");
                extractionmethod_StrictPQ0_Centralized1 = extractionmethod_StrictPQ0_Centralized1;
                numlong = numlong;
                numqueue = numqueue;
                numOnu = numOnu;
        }
        onu_squeue: ONU_Squeue {
            parameters:
                @display("p=170,50");
                numqueue = numqueue;
                numcolas = numcolas;
                txrate = txrate;
            gates:
                queuegenIn[numqueue+1];
                queuewdmOut[numqueue+1];
                queuegatewayInOut[numqueue*2];
        }
        onu_table: ONU_Table {
            parameters:
                @display("p=54,50");
                numqueue = numqueue;
                numOnu = numOnu;
        }
        onu_source: ONU_Source {
            parameters:
                @display("p=291,50");
                extractionmethod_StrictPQ0_Centralized1 = extractionmethod_StrictPQ0_Centralized1;
                insercionmethod_separatequeue0_priorityqueue1 = insercionmethod_separatequeue0_priorityqueue1;
                longpacketfixed0_trimodal1 = longpacketfixed0_trimodal1;
                numstreamV2_32_128_256 = numstreamV2_32_128_256;
                node_load = node_load;
                numlong = numlong;
                tambuffer = tambuffer;
                txrate = txrate;
                numqueue = numqueue;
            gates:
                sourceOut[numqueue];
        }
    connections allowunconnected:
        onu_wdm.wdmptpOut --> onu_ptp.onuptpwdmIn;
        onu_ptp.onuptpmacOut --> onu_mac.macptpIn;
        onu_mac.macrxuserOut --> onu_rx.onurxIn;
        onu_mac.macgenOut --> onu_source.sourcemac;
        onu_source.queue_report --> onu_squeue.queuegenIn[numqueue];

        for i=0..numlong-1 {
            onu_wdm.wdmnet[i] <--> physicalonu[i];
        }
        for j=0..numqueue-1 {
            onu_source.sourceOut[j] --> onu_squeue.queuegenIn[j];
        }
        for j=0..numqueue {
            onu_squeue.queuewdmOut[j] --> onu_wdm.wdmqueueIn[j];
        }
        for i=0..numqueue*2-1 {
            gatewirelessInOut[i] <--> onu_squeue.queuegatewayInOut[i];
        }
}