O sistema de TE foi simulado utilizando o software ns2. Desta forma, para possibilitar a simulação do sistema foi necessário o desenvolvimento de um conjunto de programas, que implementam os módulos de software descritos nas seções anteriores. Os programas desenvolvidos foram GEDOM.CPP, CADTOP.CPP, D*.TCL, PROMED.CPP, PQUEDA.CPP, AIEC.CPP, BPTRAIN.M, RNAPREV.M, CFL*.CPP, CFLAG.CPP, SGA_TE.M e SALVAMED.TCL. Os programas acessam os seguintes arquivos:
• ARQLSPP.TR: cadastra os dados das LSP´s principais; • ARQLSPR.TR: cadastra os dados das LSP´s reservas;
• ARQCAMIN.TR: cadastra os caminhos a serem utilizados pelas LSP´s;
• HABIL*.TR: arquivo de habilitações utilizado para comunicação entre os programas que implementam o sistema de TE;
• D*.TR: cadastra os traces de medição de tráfego gerados pelo ns2 para cada topologia;
• MEDENREP.TR: cadastra informações sobre as características dos enlaces e também as medições de tráfego representativas;
• FHENLACE.TR: cadastra o histórico de medições de tráfego dos enlaces do domínio MPLS;
• FLUXOS.TR: cadastra as necessidade de QoS das aplicações como vazão, atraso máximo, jitter, e perda máxima;
• FMEDFLUX.TR: cadastra as medições de tráfego fim a fim das aplicações; • FHMEDFLUX.TR: cadastra o histórico de medições de tráfego fim a fim das
aplicações;
• QUEDA.TR: cadastra informações sobre as quedas nos enlaces; • HQUEDA*.TR: cadastra o histórico de quedas nos enlaces;
• AUTORFLUX*.TR: contêm informações de controle sobre as autorizações das aplicações realizadas pelo CAC (bloqueios, desbloqueios, vazão autorizada, etc).
O diagrama apresentado na Figura 38 mostra a interação entre os programas durante as simulações do sistema de TE.
O programa CADTOP.CPP implementa o CARQ descrito nas seções anteriores. Ele possibilita o cadastro em arquivos das informações referentes ao domínio MPLS, e necessidades em termos de parâmetros de QoS desejados pelas aplicações. As informações referentes aos enlaces do domínio MPLS armazenadas no arquivo MEDENREP.TR são nó origem, nó destino, largura de banda, e atraso mínimo. Os demais campos do arquivo MEDENREP.TR como, por exemplo, vazão representativa, atraso representativo, jitter representativo e perda representativa, serão depois preenchidos automaticamente pelo PROMED. As informações referentes as aplicações submetidas ao domínio armazenadas no arquivo FLUXOS.TR são nó origem, nó destino, prioridade, vazão desejada, atraso máximo desejado, Jitter máximo desejado e perda máxima desejada. O programa CADTOP é o primeiro a ser executado, uma vez que os outros programas da simulação necessitam das informações cadastradas nestes arquivos.
D*.TCL SALVAMED.TCL GEDOM.CPP ARQLSPP.TR HABIL*.TR D*.TR Traces de medições de tráfego CFL*.CPP PROMED.CPP e PQUEDA*.CPP Habilitação de leitura "0" não tem LSP "1" tem LSP "0" não tem "1" tem Grava Traces
Ativa PQUEDA* e PROMED Ativa AIEC.CPP Lê Traces "1" CFL terminou "0" CFL não terminou Lê caminhos "1" PROMED terminou "0" PROMED não terminou
AUTORFLUX.TR Caminho da LSP principal Caminho da LSP reserva Ativa D* Ativa SALVAMED ARQLSPR.TR CFLAG.CPP AIEC.CPP "1" CFLAG terminou
"0" CFLAG não terminou Habilitação término proc. Habilitação término proc.
"1" AIEC terminou "0" AIEC não terminou Habilitação término proc.
Habilitação término proc.
ARQLSPP.TR ARQLSPP.TR Bloqueio/desbloqueio de tráfego de aplicação Ativa CFLAG.CPP Ativa CFL*.CPP Lê caminhos Lê autorizações Indicação existência LSP Habilita leitura de Traces Ler Numsim Atualiza Numsim Lê indicativos de término proc. ARQLSPP.TR MEDENREP.TR Configurações medições dos enlaces
Figura 38 - Interação entre os programas para a simulação do sistema de TE.
O GEDOM.CPP faz a integração dos programas construídos para a simulação do sistema de TE no domínio MPLS. O Algoritmo mostrado na Figura 39 apresenta as atividades executadas pelo programa.
Algoritmo GEDOM
{ Objetivo: efetuar a simulação do sistema de TE. } numsim Å 10 {Define o número de simulações. } sim Å 0 {Inicializa numero de simulações. } Inicializa campos do arquivo de habilitações HABIL.TR
hab.numsim Å 0 hab.hablecfl Å 0 hab.habletrace Å 0 hab.habesctrace Å 0 hab.hablspp Å 0 hab.hablspr Å 0 hab.habaiec Å 0 hab.habcflag Å 0
grava campos em HABIL*.TR
apaga arquivos de simulações anteriores
apaga conteúdos dos arquivos de LSP´s (ARQLSPP.TR e ARQLSPR.TR) lê HABIL*.TR
enquanto (sim < numsim) faça se (sim > 0)
Lê HABIL*.TR
enquanto (hab.hablecfl = 0) {cfl* não terminou o processamento. } lê HABIL*.TR
fim enquanto hab.hablecfl Å 0 atualiza HABIL*.TR tempoaiec Å resto (sim/8) tempoOtim Å resto (sim/6) fim se
ativa D*.TCL lê HABIL*.TR
enquanto (hab.habletrace = 0) {D*.TCL não terminou a simulação. } lê HABIL*.TR fim enquanto hab.habletrace Å 0 sim Å sim + 1 atualiza HABIL*.TR ativa PQUEDA.CPP lê HABIL*.TR
enquanto (hab.habletrace = 0) {PQUEDA.CPP não terminou. } lê HABIL*.TR fim enquanto hab.habletrace Å 0 atualiza HABIL*.TR ativa PROMED.CPP lê HABIL.TR
hab.habletrace Å 0 atualiza HABIL*.TR
se ((sim < numsim) e (tempoaiec = 0)) ativa AIEC.CPP
FimSe
lê HABIL.TR
enquanto (hab.habaiec = 0) {AIEC não terminou. } lê HABIL*.TR
fim enquanto hab. habaiec Å 0 atualiza HABIL*.TR ativa SALVAMED*.TCL
se ((sim < numsim) e (tempoOtim > 0)) ativa CFL*.CPP
fim se
se ((sim < numsim) e (tempoOtim = 0)) ativa CFLAG.CPP
fim se
lê HABIL.TR
enquanto (hab.habcflag = 0) {CFLAG não terminou. } lê HABIL*.TR fim enquanto hab. habcflag Å 0 atualiza HABIL*.TR fim enquanto fim algoritmo
Figura 39 - Algoritmo para a simulação do sistema de TE
O D*.TCL é um conjunto de versões de programas que implementam no simulador ns2, as diferentes topologias do domínio MPLS utilizadas neste trabalho. Por exemplo, para a topologia I foram construídas versões do programa para simulação do modelo básico de TE, TE com re-encaminhamento em caso de falhas em enlaces do domínio, TE com aumento do tráfego das aplicações prioritárias, TE com CAC, TE com CAC e algoritmo de otimização e TE com CAC e algoritmo de identificação de enlaces críticos. O mesmo ocorreu com a topologia II. O D*.TCL além das atividades normais de implementação do domínio MPLS, também lê os arquivos de LSP´s (ARQLSPP.TR e ARQLSPR.TR) criados pelo CFL*.CPP, e em seguida cria e ativa as LSP´s necessárias.
como trabalho futuro uma alteração no sistema de TE, com a inclusão de uma terceira função de pertinência de entrada no SIF, representando a confiabilidade do caminho candidato para estabelecimento da LSP. A confiabilidade será mais alta quanto menor for o número de ocorrências de falhas em enlaces do caminho.
O programa PROMED.CPP implementa o CPMT e o DAV, descritos nas seções anteriores. Ele é responsável pelas seguintes tarefas:
• Recolhe as medições de tráfego referentes aos enlaces do domínio e entre os nós origem e destino das aplicações (fim-a-fim);
• Armazena, processa, e classifica as medições de tráfego por enlaces e fluxos; • Grava as medições em arquivos de histórico de enlaces e fluxos;
• Escolhe as medições representativas por enlaces e depois providencia a gravação em arquivos.
O AIEC implementa o algoritmo de identificação de enlaces críticos. O AIEC.CPP utiliza os programas BPTRAIN.M e RNAPREV.M, que são responsáveis pela implementação da MLP. A MLP, como já descrito, efetua a previsão da vazão no enlace crítico.
O CFL*.CPP é um conjunto de versões de programas que implementam os diferentes sistemas de TE descritos nas seções anteriores. Foram construídas versões do programa para simulação do modelo básico de TE, TE com re-encaminhamento em caso de falhas em enlaces do domínio, TE com aumento do tráfego das aplicações prioritárias, TE com CAC e aplicações comportadas, TE com CAC e aplicações não comportadas com prioridade estática e TE com CAC e aplicações não comportadas mas com prioridade dinâmica (RCPT).
O CFL implementa os módulos CLPC, CCF, IANL, SIF, ECL e CAL. O módulo CAL é executado em conjunto com o programa D*.TCL.
O CFLAG.CPP implementa o módulo de otimização dos recursos da rede utilizando algoritmos genéticos (OAG). O CFLAG.CPP utiliza o programa SGA_TE.M. O SGA_TE.M implementa a otimização usando algoritmos genéticos.
O programa SALVAMED.TCL é o responsável pela atualização dos arquivos durante as simulações.
Os programas foram desenvolvidos utilizando MatLab e as linguagens C/C++ e Otcl. Uma das funções utilizadas pelo programa CFL*.CPP implementa o SIF. Esta função foi originalmente desenvolvida na linguagem JFS (MORTENSEN, 2004) e depois foi convertida para C/C++.