Name | Description |
---|---|
SFNet (network) |
Modelado de SFNet, red WOBAN de San Francisco con 25 BSs, 25 usuarios, 16 ONUs, 1 OLT y 1 Splitter. 5 de BSs-pasarela conectan con 4 ONUs-pasarela. |
//////////////////////////////////////////////////////////////////////////////////////// // 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; import ned.DelayChannel; //Modelado de SFNet, red WOBAN de San Francisco con 25 BSs, 25 usuarios, 16 ONUs, 1 OLT y 1 Splitter. // 5 de BSs-pasarela conectan con 4 ONUs-pasarela. network SFNet { @display("bgl=6;bgs=0.26,m;i=misc/cloud;bgi=background/SFNet_nodes_2,s;bgb=2992.308,1957.692"); //Cada 0.26 píxeles del layout representan 1 metro -> Dimensiones del layout: 778x509px = 2992.3x1957.7m. int numBS; //Numero de estaciones base en la parte inalambrica de la red de acceso int numUser; //Numero de usuarios inalambricos conectados a las estaciones base int numGW; //Numero de BSs que actuan como pasarelas entre la parte optica y la inalambrica int criterio; //Criterio aplicado para realizar el encaminamiento (SPRA, MHRA, DARA). int numcolas; //Numero de clases de servicio en la parte inalambrica int longitud_media_paquete; //Longitud media de los paquetes generados en los modulos User_traffic[] (en Bytes) int conexiones; //Longitud del array de puertas physicalBS[] del modulo compuesto BS int caminos; //Parametro para elegir el numero de "caminos optimos" por el que se encaminan los paquetes inalambricos double tasabinaria; // Capacidad de radio de las BSs double delta_time; // Tiempo de ciclo de cada enlace de las BSs double buffer_size; //Tamanyo del buffer de cada BS double carga_nodo; //Carga de cada fuente de trafico de los usuarios inalambricos int user_insercionmethod_separatequeue0_priorityqueue1; //Parametro para elegir el metodo de insercion de los paquetes en los modulos BS_queue[] int user_extractionmethod_StrictPQ0_Centralized1; //Parametro para elegir el metodo de extraccion de los paquetes en los modulos BS_queue[] double node_load; //Carga de las fuentes de trafico optico int numOnu; //Numero de ONUs en la subred EPON double longpon1; //Longitud del enlace entre OLT y Splitter double longpon2; //Longitud del enlace entre SPlitter y ONUs int numlong; //Numero de longitudes de onda que soporta la parte optica de la red double tambuffer; //Tamanyo del buffer de cada ONU double txrate; //Capacidad de transmision de cada enlace optico int oltmethod_Centralized0_Polling1_wdm2_PollingPID3_DaSPID4; //Parametro para elegir el mecanismo de gestion de ancho de banda dinamico implementado en la capa MAC del OLT 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 de la subred EPON (longitud fija o variable) int longpacketfixed0_trimodal1; //Parametro para elegir el modo de generacion de trafico Self-Similar (paquetes de longitud fija o trimodal) int numstreamV2_32_128_256; //Parametro para elegir el numero de streams de cada fuente optica Self-Similar int numqueue; //Numero de clases de servicio en la parte optica de la red hibrida int numSLA; //Numero de SLAs que soporta la subred optica int w_sla0; //Peso del SLA0 int w_sla1; //Peso del SLA1 int w_sla2; //Peso del SLA2 int w_sla3; //Peso del SLA3 int w_sla4; //Peso del SLA4 int numonu_sla0; //Numero de ONUs asociadas al SLA0 int numonu_sla1; //Numero de ONUs asociadas al SLA1 int numonu_sla2; //Numero de ONUs asociadas al SLA2 int numonu_sla3; //Numero de ONUs asociadas al SLA3 int numonu_sla4; //Numero de ONUs asociadas al SLA4 int BW_garantizado0; //Ancho de banda garantizado para el SLA0 int BW_garantizado1; //Ancho de banda garantizado para el SLA1 int BW_garantizado2; //Ancho de banda garantizado para el SLA2 types: channel wifi extends ned.DelayChannel { // Canal 'wifi': BS<-->User @display("ls=,0"); double distanceWifi; //Longitud del canal double Weight = 0.0; //Peso del canal double propag_delay = distanceWifi * 0.00000000333333333; //Retardo de propagacion del canal // retardo = distancia/velocidad_luz_en_aire(3*10^8m/s) delay = 0s; //Retardo inherente al canal // NOTA: Si quiere accederse remotamente al canal y a sus parametros, el indice de cada uno es: // getChannel()->par(0) = (bool) isDisabled // getChannel()->par(1) = (double) delay // getChannel()->par(2) = (double) distanceWifi // getChannel()->par(3) = (double) Weight // getChannel()->par(4) = (double) propag_delay } channel hops extends ned.DelayChannel { // Canal 'hops': BS<-->BS @display("ls=purple,1,da"); double distanceHops; //Longitud del canal double Weight = 0.0; //Peso del canal double propag_delay = distanceHops * 0.00000000333333333; //Retardo de propagacion del canal // retardo = distancia/velocidad_luz_en_aire(3*10^8m/s) delay = 0s; //Retardo inherente al canal // NOTA: Si quiere accederse remotamente al canal y a sus parametros, el indice de cada uno es: // getChannel()->par(0) = (bool) isDisabled // getChannel()->par(1) = (double) delay // getChannel()->par(2) = (double) distanceHops // getChannel()->par(3) = (double) Weight // getChannel()->par(4) = (double) propag_delay } channel pasarela extends ned.DelayChannel { @display("ls=orange,1,s"); // Canal 'pasarela': BS <--> ONU double distancePasarela = 0; //Longitud del canal double Weight = 0.0; //Peso del canal double propag_delay = distancePasarela * 0.000000005; //Retardo de propagacion del canal // retardo = distancia/velocidad_luz_en_aire(3*10^8m/s) delay = 0s; //Retardo inherente al canal // NOTA: Si quiere accederse remotamente al canal y a sus parametros, el indice de cada uno es: // getChannel()->par(0) = (bool) isDisabled // getChannel()->par(1) = (double) delay // getChannel()->par(2) = (double) distancePasarela // getChannel()->par(3) = (double) Weight // getChannel()->par(4) = (double) propag_delay } channel pon1 extends ned.DelayChannel { @display("ls=red,2,s"); // Canal 'pon1': OLT <--> SPLITTER delay = lengthpon1 * 0.000000005s; //Retardo inherente al canal optico // retardo = longitud/velocidad_luz_en_fibra(2*10^8m/s) double lengthpon1 = longpon1; //LOngitud del canal } channel pon2 extends ned.DelayChannel { @display("ls=red,2,s"); // Canal 'pon2': SPLITTER <--> ONUs delay = lengthpon2 * 0.000000005s; //Retardo inherente al canal optico // retardo = longitud/velocidad_luz_en_fibra(2*10^8m/s) double lengthpon2 = longpon2; //Longitud del canal } submodules: bs0: BS { parameters: @display("is=s;p=1061.5385,1230.7693"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; indice = 0; conexiones = conexiones; gates: physicalBS[conexiones]; } bs1: BS { parameters: @display("is=s;p=1192.3077,969.23083"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; indice = 1; conexiones = conexiones; gates: physicalBS[conexiones]; } bs2: BS { parameters: @display("is=s;p=1515.3846,1603.8462"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; indice = 2; conexiones = conexiones; gates: physicalBS[conexiones]; } bs3: BS { parameters: @display("is=s;p=1880.7693,1538.4615"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; indice = 3; conexiones = conexiones; gates: physicalBS[conexiones]; } bs4: BS { parameters: @display("is=s;p=1738.4615,1130.7693"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; indice = 4; conexiones = conexiones; gates: physicalBS[conexiones]; } bs5: BS { parameters: @display("is=s;p=1415.3846,1188.4615"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; indice = 5; conexiones = conexiones; gates: physicalBS[conexiones]; } bs6: BS { parameters: @display("is=s;p=1480.7693,838.46155"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; indice = 6; conexiones = conexiones; gates: physicalBS[conexiones]; } bs7: BS { parameters: @display("is=s;p=1292.3077,673.07697"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; txrate = txrate; indice = 7; conexiones = conexiones; gates: physicalBS[conexiones]; } bs8: BS { parameters: @display("is=s;p=1623.077,392.3077"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; indice = 8; conexiones = conexiones; gates: physicalBS[conexiones]; } bs9: BS { parameters: @display("is=s;p=1992.3077,423.07693"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; txrate = txrate; indice = 9; conexiones = conexiones; gates: physicalBS[conexiones]; } bs10: BS { parameters: @display("is=s;p=1992.3077,750"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; indice = 10; conexiones = conexiones; gates: physicalBS[conexiones]; } bs11: BS { parameters: @display("is=s;p=2019.2308,1188.4615"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; indice = 11; conexiones = conexiones; gates: physicalBS[conexiones]; } bs12: BS { parameters: @display("is=s;p=2330.7693,1469.2308"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; indice = 12; conexiones = conexiones; gates: physicalBS[conexiones]; } bs13: BS { parameters: @display("is=s;p=2573.077,1665.3846"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; indice = 13; conexiones = conexiones; txrate = txrate; gates: physicalBS[conexiones]; } bs14: BS { parameters: @display("is=s;p=2573.077,1188.4615"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; indice = 14; conexiones = conexiones; gates: physicalBS[conexiones]; } bs15: BS { parameters: @display("is=s;p=2365.3848,1130.7693"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; indice = 15; conexiones = conexiones; gates: physicalBS[conexiones]; } bs16: BS { parameters: @display("is=s;p=2265.3848,926.9231"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; indice = 16; conexiones = conexiones; gates: physicalBS[conexiones]; } bs17: BS { parameters: @display("is=s;p=2234.6155,592.30774"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; indice = 17; conexiones = conexiones; gates: physicalBS[conexiones]; } bs18: BS { parameters: @display("is=s;p=2550,673.07697"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; indice = 18; conexiones = conexiones; gates: physicalBS[conexiones]; } bs19: BS { parameters: @display("is=s;p=2757.6924,1011.5385"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; txrate = txrate; indice = 19; conexiones = conexiones; gates: physicalBS[conexiones]; } bs20: BS { parameters: @display("is=s;p=2857.6924,646.1539"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; indice = 20; conexiones = conexiones; gates: physicalBS[conexiones]; } bs21: BS { parameters: @display("is=s;p=2823.0771,423.07693"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; indice = 21; conexiones = conexiones; gates: physicalBS[conexiones]; } bs22: BS { parameters: @display("is=s;p=2507.6924,365.38464"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; indice = 22; conexiones = conexiones; gates: physicalBS[conexiones]; } bs23: BS { parameters: @display("is=s;p=2300,150"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; indice = 23; conexiones = conexiones; gates: physicalBS[conexiones]; } bs24: BS { parameters: @display("is=s;p=2734.6155,215.38463"); numBS = numBS; numUser = numUser; numGW = numGW; numcolas = numcolas; carga_nodo = carga_nodo; delta_time = delta_time; buffer_size = buffer_size; longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; user_extractionmethod_StrictPQ0_Centralized1 = user_extractionmethod_StrictPQ0_Centralized1; tasabinaria = tasabinaria; txrate = txrate; indice = 24; conexiones = conexiones; gates: physicalBS[conexiones]; } user[numUser]: User { parameters: @display("is=s"); caminos = caminos; numBS = numBS; numUser = numUser; numGW = numGW; tasabinaria = tasabinaria; numcolas = numcolas; buffer_size = buffer_size; carga_nodo = carga_nodo; location = 0.0; //uniform(1.0,250.00,0); longitud_media_paquete = longitud_media_paquete; user_insercionmethod_separatequeue0_priorityqueue1 = user_insercionmethod_separatequeue0_priorityqueue1; } olt: OLT { parameters: @display("p=69.230774,838.46155"); oltmethod_Centralized0_Polling1_wdm2_PollingPID3_DaSPID4 = oltmethod_Centralized0_Polling1_wdm2_PollingPID3_DaSPID4; extractionmethod_StrictPQ0_Centralized1 = extractionmethod_StrictPQ0_Centralized1; methodlength_longvariable0_longfija1 = methodlength_longvariable0_longfija1; numOnu = numOnu; numlong = numlong; txrate = txrate; numqueue = numqueue; longpon1 = longpon1; longpon2 = longpon2; numSLA = numSLA; w_sla0 = w_sla0; w_sla1 = w_sla1; w_sla2 = w_sla2; w_sla3 = w_sla3; w_sla4 = w_sla4; numonu_sla0 = numonu_sla0; numonu_sla1 = numonu_sla1; numonu_sla2 = numonu_sla2; numonu_sla3 = numonu_sla3; numonu_sla4 = numonu_sla4; gates: physicalolt[numlong]; } splitter: SPLITTER { parameters: @display("p=296.15387,838.46155;i=abstract/dispatcher;is=s"); numlong = numlong; gates: splitterIn[numlong]; splitterOut[numlong*numOnu]; } onu[numOnu]: ONU { parameters: @display("p=588.46155,61.538464,column,150;i=abstract/db;is=s"); extractionmethod_StrictPQ0_Centralized1 = extractionmethod_StrictPQ0_Centralized1; insercionmethod_separatequeue0_priorityqueue1 = insercionmethod_separatequeue0_priorityqueue1; methodlength_longvariable0_longfija1 = methodlength_longvariable0_longfija1; longpacketfixed0_trimodal1 = longpacketfixed0_trimodal1; numstreamV2_32_128_256 = numstreamV2_32_128_256; node_load = node_load; numlong = numlong; tambuffer = tambuffer; txrate = txrate; numqueue = numqueue; numcolas = numcolas; numOnu = numOnu; gates: physicalonu[numlong]; gatewirelessInOut[numqueue*2]; } connections allowunconnected: // Conexiones entre cada BS y su User asociado (distancias creadas aleatoriamente): user[0].physicalUser <--> wifi { distanceWifi = user[0].location; } <--> bs0.physicalBS++; user[1].physicalUser <--> wifi { distanceWifi = user[1].location; } <--> bs1.physicalBS++; user[2].physicalUser <--> wifi { distanceWifi = user[2].location; } <--> bs2.physicalBS++; user[3].physicalUser <--> wifi { distanceWifi = user[3].location; } <--> bs3.physicalBS++; user[4].physicalUser <--> wifi { distanceWifi = user[4].location; } <--> bs4.physicalBS++; user[5].physicalUser <--> wifi { distanceWifi = user[5].location; } <--> bs5.physicalBS++; user[6].physicalUser <--> wifi { distanceWifi = user[6].location; } <--> bs6.physicalBS++; user[7].physicalUser <--> wifi { distanceWifi = user[7].location; } <--> bs7.physicalBS++; user[8].physicalUser <--> wifi { distanceWifi = user[8].location; } <--> bs8.physicalBS++; user[9].physicalUser <--> wifi { distanceWifi = user[9].location; } <--> bs9.physicalBS++; user[10].physicalUser <--> wifi { distanceWifi = user[10].location; } <--> bs10.physicalBS++; user[11].physicalUser <--> wifi { distanceWifi = user[11].location; } <--> bs11.physicalBS++; user[12].physicalUser <--> wifi { distanceWifi = user[12].location; } <--> bs12.physicalBS++; user[13].physicalUser <--> wifi { distanceWifi = user[13].location; } <--> bs13.physicalBS++; user[14].physicalUser <--> wifi { distanceWifi = user[14].location; } <--> bs14.physicalBS++; user[15].physicalUser <--> wifi { distanceWifi = user[15].location; } <--> bs15.physicalBS++; user[16].physicalUser <--> wifi { distanceWifi = user[16].location; } <--> bs16.physicalBS++; user[17].physicalUser <--> wifi { distanceWifi = user[17].location; } <--> bs17.physicalBS++; user[18].physicalUser <--> wifi { distanceWifi = user[18].location; } <--> bs18.physicalBS++; user[19].physicalUser <--> wifi { distanceWifi = user[19].location; } <--> bs19.physicalBS++; user[20].physicalUser <--> wifi { distanceWifi = user[20].location; } <--> bs20.physicalBS++; user[21].physicalUser <--> wifi { distanceWifi = user[21].location; } <--> bs21.physicalBS++; user[22].physicalUser <--> wifi { distanceWifi = user[22].location; } <--> bs22.physicalBS++; user[23].physicalUser <--> wifi { distanceWifi = user[23].location; } <--> bs23.physicalBS++; user[24].physicalUser <--> wifi { distanceWifi = user[24].location; } <--> bs24.physicalBS++; // Conexiones entre las 5 BSs-pasarela y la correspondiente ONU-pasarela (distancia nula): for j=0..numcolas-1 { bs7.physicalBS++ <--> pasarela <--> onu[0].gatewirelessInOut++; } for j=0..numcolas-1 { bs9.physicalBS++ <--> pasarela <--> onu[0].gatewirelessInOut++; } for j=0..numcolas-1 { bs24.physicalBS++ <--> pasarela <--> onu[1].gatewirelessInOut++; } for j=0..numcolas-1 { bs19.physicalBS++ <--> pasarela <--> onu[2].gatewirelessInOut++; } for j=0..numcolas-1 { bs13.physicalBS++ <--> pasarela <--> onu[3].gatewirelessInOut++; } // Conexiones entre los 25 modulos BS de la red inalambrica en malla (distancias reales): bs0.physicalBS++ <--> hops { distanceHops = 269.23; } <--> bs1.physicalBS++; bs0.physicalBS++ <--> hops { distanceHops = 571.15; } <--> bs2.physicalBS++; bs0.physicalBS++ <--> hops { distanceHops = 344.23; } <--> bs5.physicalBS++; bs1.physicalBS++ <--> hops { distanceHops = 297.12; } <--> bs5.physicalBS++; bs1.physicalBS++ <--> hops { distanceHops = 317.69; } <--> bs6.physicalBS++; bs1.physicalBS++ <--> hops { distanceHops = 350.00; } <--> bs7.physicalBS++; bs2.physicalBS++ <--> hops { distanceHops = 380.77; } <--> bs3.physicalBS++; bs2.physicalBS++ <--> hops { distanceHops = 419.23; } <--> bs5.physicalBS++; bs3.physicalBS++ <--> hops { distanceHops = 435.77; } <--> bs4.physicalBS++; bs3.physicalBS++ <--> hops { distanceHops = 387.50; } <--> bs11.physicalBS++; bs3.physicalBS++ <--> hops { distanceHops = 444.23; } <--> bs12.physicalBS++; bs4.physicalBS++ <--> hops { distanceHops = 328.85; } <--> bs5.physicalBS++; bs4.physicalBS++ <--> hops { distanceHops = 388.85; } <--> bs6.physicalBS++; bs4.physicalBS++ <--> hops { distanceHops = 465.38; } <--> bs10.physicalBS++; bs4.physicalBS++ <--> hops { distanceHops = 280.77; } <--> bs11.physicalBS++; bs5.physicalBS++ <--> hops { distanceHops = 346.15; } <--> bs6.physicalBS++; bs6.physicalBS++ <--> hops { distanceHops = 257.69; } <--> bs7.physicalBS++; bs6.physicalBS++ <--> hops { distanceHops = 488.46; } <--> bs8.physicalBS++; bs6.physicalBS++ <--> hops { distanceHops = 515.38; } <--> bs10.physicalBS++; bs7.physicalBS++ <--> hops { distanceHops = 419.23; } <--> bs8.physicalBS++; bs8.physicalBS++ <--> hops { distanceHops = 396.15; } <--> bs9.physicalBS++; bs8.physicalBS++ <--> hops { distanceHops = 510.77; } <--> bs10.physicalBS++; bs9.physicalBS++ <--> hops { distanceHops = 318.08; } <--> bs10.physicalBS++; bs9.physicalBS++ <--> hops { distanceHops = 296.15; } <--> bs17.physicalBS++; bs9.physicalBS++ <--> hops { distanceHops = 395.00; } <--> bs23.physicalBS++; bs10.physicalBS++ <--> hops { distanceHops = 435.38; } <--> bs11.physicalBS++; bs10.physicalBS++ <--> hops { distanceHops = 339.23; } <--> bs16.physicalBS++; bs10.physicalBS++ <--> hops { distanceHops = 308.08; } <--> bs17.physicalBS++; bs11.physicalBS++ <--> hops { distanceHops = 440.77; } <--> bs12.physicalBS++; bs11.physicalBS++ <--> hops { distanceHops = 359.23; } <--> bs15.physicalBS++; bs11.physicalBS++ <--> hops { distanceHops = 351.54; } <--> bs16.physicalBS++; bs12.physicalBS++ <--> hops { distanceHops = 300.00; } <--> bs13.physicalBS++; bs12.physicalBS++ <--> hops { distanceHops = 371.15; } <--> bs14.physicalBS++; bs12.physicalBS++ <--> hops { distanceHops = 359.62; } <--> bs15.physicalBS++; bs13.physicalBS++ <--> hops { distanceHops = 454.23; } <--> bs14.physicalBS++; bs14.physicalBS++ <--> hops { distanceHops = 230.77; } <--> bs15.physicalBS++; bs14.physicalBS++ <--> hops { distanceHops = 269.23; } <--> bs19.physicalBS++; bs15.physicalBS++ <--> hops { distanceHops = 217.31; } <--> bs16.physicalBS++; bs15.physicalBS++ <--> hops { distanceHops = 405.77; } <--> bs19.physicalBS++; bs16.physicalBS++ <--> hops { distanceHops = 332.69; } <--> bs17.physicalBS++; bs16.physicalBS++ <--> hops { distanceHops = 390.38; } <--> bs18.physicalBS++; bs16.physicalBS++ <--> hops { distanceHops = 486.54; } <--> bs19.physicalBS++; bs17.physicalBS++ <--> hops { distanceHops = 315.38; } <--> bs18.physicalBS++; bs17.physicalBS++ <--> hops { distanceHops = 350.00; } <--> bs22.physicalBS++; bs18.physicalBS++ <--> hops { distanceHops = 384.62; } <--> bs19.physicalBS++; bs18.physicalBS++ <--> hops { distanceHops = 305.77; } <--> bs20.physicalBS++; bs18.physicalBS++ <--> hops { distanceHops = 351.92; } <--> bs21.physicalBS++; bs18.physicalBS++ <--> hops { distanceHops = 295.38; } <--> bs22.physicalBS++; bs19.physicalBS++ <--> hops { distanceHops = 372.12; } <--> bs20.physicalBS++; bs20.physicalBS++ <--> hops { distanceHops = 216.54; } <--> bs21.physicalBS++; bs21.physicalBS++ <--> hops { distanceHops = 313.85; } <--> bs22.physicalBS++; bs21.physicalBS++ <--> hops { distanceHops = 218.46; } <--> bs24.physicalBS++; bs22.physicalBS++ <--> hops { distanceHops = 272.31; } <--> bs23.physicalBS++; bs22.physicalBS++ <--> hops { distanceHops = 276.15; } <--> bs24.physicalBS++; bs23.physicalBS++ <--> hops { distanceHops = 429.62; } <--> bs24.physicalBS++; // Conexion entre el OLT y el SPLITTER for j=0..numlong-1 { olt.physicalolt[j] <--> pon1 <--> splitter.splitterIn[j]; } // Conexion entre el SPLITTER y todas las ONUs for j=0..(numlong*numOnu)-1 { splitter.splitterOut[j] <--> pon2 <--> onu[j/numlong].physicalonu[j%numlong]; } }