Gestão de Home Networks
Wilson Vieira da Silva
Orientador: Salviano Filipe Silva Pinto Soares
Co-orientador: Pedro Miguel Mestre Alves da Silva
Vila Real, 2009
Gestão de Home Networks
Wilson Vieira da Silva
Orientador: Salviano Filipe Silva Pinto Soares
Co-orientador: Pedro Miguel Mestre Alves da Silva
Dissertação submetida à
Universidade de Trás-os-Montes e Alto Douro
Para a obtenção do grau de
Mestre
em Engenharia Electrotécnica e de Computadores, de acordo com o disposto no
DR – I série – A, Decreto-Lei n.º 74/2006 de 24 de Março e no
Regulamento de Estudos Pós-Graduados da UTAD
DR, 2.ª série – Deliberação n.º 2391/2007
Orientação Científica:
Salviano Filipe Silva Pinto Soares
Professor Auxiliar do
Departamento de Engenharias da Escola de Ciências e Tecnologia da Universidade de
Trás-os-Montes e Alto Douro
UTAD
Pedro Miguel Mestre Alves da Silva
Professor Auxiliar do
Departamento de Engenharias da Escola de Ciências e Tecnologia da Universidade de
Trás-os-Montes e Alto Douro
UTAD
Trabalho realizado em parceria com estágio curricular realizado na PT Inovação no
âmbito do Programa Talento 2008/2009
Acompanhamento do trabalho:
Eng. Alexandre Laranjeira
Colaborador da PT Inovação
iii
iv
À minha família e amigos
à UTAD
e
à PT Inovação
v
vi
Gestão de Home Networks
Wilson Vieira da Silva
Submetido na Universidade de Trás-os-Montes e Alto Douro para o preenchimento dos
requisitos parciais para obtenção do grau de Mestre em Engenharia Electrotécnica e de
Computadores
Resumo –
A evolução da banda larga e a introdução de novos equipamentos
especializados em determinado tipo de serviço exigem a adopção de soluções
inovadoras que permitam uma gestão e configuração rápida e flexível de acordo com as
necessidades específicas de cada equipamento e cliente.
A recente convergência de diversos serviços (voz, dados, wireless e televisão) num
mesmo canal de acesso (Triple Play e Quadruple Play) e a profusão de aplicações têm
dificultado a gestão, segurança e garantia do QoS (Quality of Service) nas redes,
provocando assim a procura de novas soluções.
Garantir a configuração, integridade e despiste de casos de avaria, são nesta altura
grandes desafios para os sistemas de suporte à operação dos operadores.
A PT Inovação dispõe de um sistema, o Network Activator, que é responsável pela
mediação entre os sistemas de suporte à operação e os equipamentos da rede.
Este trabalho apresenta um módulo de gestão de equipamentos baseado no recente
protocolo de gestão remoto CWMP (CPE WAN Management Protocol), com o
objectivo de um dia vir a ser integrado à plataforma da PT Inovação.
Palavras-chave: Gestão de Redes, Home Networking, Protocolos de Gestão, CPE
WAN Management Protocol, Simple Network Management Protocol, Universal Plug
and Play, Network Configuration, Command Line Interface, BroadBand Forum,
Application Programing Interface, Java, API_TR069.
vii
viii
Management of Home Networks
Wilson Vieira da Silva
Submitted to the University of Trás-os-Montes and Alto Douro in partial fulfillment of
the requirements for the degree of Master of Science in Electrical and Computers
Engineering
Abstract
– The broadband evolution and the new specialized equipment
introduction at specific type of service require innovative solutions that enable
management and fast and flexible configuration, according to the specific needs of each
client and equipment.
The recent convergence of various services (voice, data, wireless and television) in the
same channel access (Triple Play and Quadruple Play), and the increase of the number
of applications has hindered the management, security and QoS (Quality of Service) in
data networks, thus causing a demand for new solutions.
Ensure the configuration, integrity, and screening of cases of failure, are, at this time
great challenges in the operation support systems of the operators.
PT Inovação has a system, Network Activator, which is responsible for mediating
between operation support systems and network equipment.
This work presents a module equipment management based on recent remote
management protocol CWMP (CPE WAN Management Protocol), with the aim of
being able to be integrated into the platform of PT Inovação.
Keywords: Network Management, Home Networking, Management Protocols, CPE
WAN Management Protocol, Simple Network Management Protocol, Universal Plug
and Play, Network Configuration, Command Line Interface, BroadBand Forum,
Application Programming Interface, Java, API_TR069.
ix
x
Agradecimentos
Além das pessoas que aqui vou citar, agradeço também a todas as outras que comigo
conviveram não só durante o período de realização deste trabalho, mas durante todos
estes meus anos de vida; sem eles o resultado final nunca teria sido o mesmo.
Institucionalmente, os meus agradecimentos ao Magnífico Reitor da Universidade de
Trás-os-Montes e Alto Douro, Professor Doutor Mascarenhas Ferreira, ao director da
Escola de Ciências e Tecnologia da Universidade de Trás-os-Montes e Alto Douro,
Professor Doutor José Afonso Moreno Bulas Cruz, ao director do Departamento de
Engenharias da ECT professor doutor Luís Ramos e ao pessoal administrativo, pelas
facilidades concedidas e meios colocados à disposição para a realização deste.
Ao Professor Doutor Salviano Filipe Silva Pinto Soares, orientador deste trabalho, por
todo o apoio e orientação que me deu, desde o primeiro ao último momento.
Ao Professor Doutor Pedro Mestre, na qualidade de co-orientador, pelas suas sugestões
e ideias que viabilizaram e traçaram de forma significativa, o rumo deste trabalho.
Ao Engenheiro Alexandre Laranjeira, meu orientador no estágio curricular realizado na
PT Inovação, pelo grande conhecimento e experiência que me passou durante este
período, tendo sido bastante agradável trabalhar ao lado deste grande profissional.
A toda a PT Inovação pela oportunidade de realização deste estágio, pelas óptimas
condições que me disponibilizaram durante a realização do projecto e pela grande
camaradagem que recebi de todos os profissionais desta empresa.
Finalmente, gostaria de expressar a minha mais profunda gratidão a toda a minha
família, sendo eles os grandes responsáveis por tudo aquilo o que sou e tenho.
A todos, muito obrigado.
UTAD, Vila Real
Wilson Vieira da Silva
31 de Outubro, 2009.
xi
xii
Índice
Resumo…………………………………………………………………… ..
vii
Abstract…………………………………………………………………… ..
ix
Agradecimentos…………………………………………………………….
xi
Índice……………………………………………………………………….
xiii
Índice de Figuras…………………………………………………………....
xv
Índice de Tabelas……………………………………………………………
xvii
Acrónimos…………………………………………………………………..
xix
1
1.1
1.2
1.3
1
3
4
4
Introdução………………………………………………………….
Motivação…………………………………………………...
Objectivos…………………………………………………...
Organização da Dissertação………………………………....
2
Protocolos de Gestão………………………………………………
2.1
Universal Plug and Play…………………………………….
2.2
Interface de Linha de Comando…………………………….
2.3
Simple Network Management Protocol…………………….
2.4
Network Configuration……………………………………..
2.5
CPE WAN Management Protocol………………………….
2.5.1
BroadBand Forum………………………………….
2.5.2
Descrição da norma CWMP (TR-069)……………. .
2.5.3
Funcionalidades…………………………………… .
2.5.4
Arquitectura..……………………………………… .
2.5.5
Parâmetros………………………………………… .
2.5.6
Estabelecimento de Sessões………………………...
2.5.7
Modelo de Comunicação………………………….. .
2.5.8
Métodos RPC……………………………………... .
2.5.8.1
Métodos CPE……………………………… .
2.5.8.2
Métodos ACS……………………………….
2.5.9
Integração de TR-069 com UPnP…………………. .
2.5.10
Extensões TR-069………………………………… .
7
9
10
11
13
14
15
16
18
19
20
21
22
24
25
27
28
30
3
33
Concepção da API_TR069………………………………………
xiii
3.1
3.2
3.2.1
3.2.2
3.2.3
3.2.4
3.3
3.3.1
3.3.2
3.4
3.4.1
3.4.2
3.4.2.1
3.4.2.2
3.4.2.3
Requisitos…………………………………………………..
Use Cases……………………………………………………
Reboot……………………………………………….
Upgrade de Firmware………………………………..
Configuração de um Serviço………………………..
Detecção de Falha de Energia……………………….
Arquitectura……………………………………………….. ..
Actores Externos……………………………………
Componentes Internas………………………………
Diagramas…………………………………………………...
Diagrama de Classes…………………………………
Diagrama de Sequência……………………………..
Reboot………………………………………
Download de Firmware…………………….
Inform não Requisitado ………………………
34
35
35
36
36
37
38
38
39
41
41
43
44
47
48
4
4.1
4.2
4.3
4.4
4.5
4.6
4.7
Implementação da API_TR069…………………………………. .
CPE_Entity………………………………………………..
CPE Factory……………………………………………….
Session Manager…………………………………………..
Request Client……………………………………………..
Connection Manager………………………………………
ACS_Entity………………………………………………..
Interfaces Externas………………………………………..
49
49
50
50
51
51
52
52
5
5.1
5.2
5.3
5.4
5.5
5.6
Testes……………………………………………………………..
Reboot…………………………………………………….
Factory Reset……………………………………………...
Download…………………………………………………
Várias Sessões Activas……………………………………
Configuração de Serviço………………………………….
Recolha de Informação e detecção de erros na Comunicação
55
56
58
59
60
62
63
6
Conclusões e Trabalhos Futuros………………………………..
65
Bibliografia………………………………………………………………
xiv
67
Índice de Tabelas
1
2
Camadas protocolares do protocolo CWMP………………
Métodos TR-069…………………………………………...
xv
19
25
xvi
Índice de Figuras
1 Ambiente UPnP………………………………………………………….
9
2 Ambiente de gestão SNMP………………………………………………
12
3 Ambiente de gestão utilizando o protocolo CWMP……………………..
17
4 Exemplo de uma transacção de mensagens numa sessão TR-069……….
23
5 Integração de TR-069 com UPnP………………………………………..
29
6 Conjunto de extensões pertencentes ao âmbito de aplicação do CWMP..
31
7 Arquitectura e componentes da API_TR069…………………………… .
38
8 Diagrama de Classes da API_TR069…………………………………….
41
9 Diagrama de Sequência referente a invocação do método de Reboot……
44
10 Diagrama de Sequência referente a invocação do método de Download.
47
11 Diagrama de Sequência de um Inform não Requesitado……………….
48
xvii
xviii
Acrónimos
ACS – Auto-Configuration Server, servidor responsável pela auto configuração de
CPE.
API – Application Programming Interface, trata-se de um conjunto de rotinas e padrões
estabelecidos por um software.
BEEP – Blocks Extensible Exchange Protocol, geralmente também conhecido por
BXXP, corre tipicamente sobre TCP e possibilita a troca de mensagens (frames). Ao
contrário de HTTP e de outros protocolos semelhantes, este permite que ambos os
extremos da conexão consigam enviar mensagens a qualquer momento.
CLI – Command-line Interface, mecanismo que permite interagir com um software
através da digitação de comandos para realizar determinadas tarefas.
CPE – Customer-Premises Equipment ou também conhecido por Customer-Provided
Equipment, equipamento localizado nas instalações do cliente e conectado a um canal
de uma operadora de telecomunicações.
CWMP – CPE WAN Management Protocol, também bem conhecido por TR-069,
trata-se de um protocolo da camada de aplicação que permite gestão remota de CPE.
EPON – Ethernet PON, tecnologia PON que utilize pacotes Ethernet em vez de células
ATM.
HTTP – HyperText Transfer Protocol, protocolo da camada de aplicação utilizado para
transferir dados por intranets e pela World Wide Web.
HTTPS – HyperText Transfer Protocol Secure, implementação do protocolo HTTP
sobre uma camada SSL ou TLS.
IDE – Integrated Development Environment, trata-se de um ambiente integrado para
desenvolvimento de software.
IETF – Internet Engineering Task Force, grupo internacional cuja função é estruturar
correctamente a evolução da arquitectura da internet e garantir o seu correcto
funcionamento.
IP – Internet Protocol, protocolo sob o qual assenta a infra-estrutura da Internet.
IPTV – IPTV ou TVIP trata-se de um método de transmissão de sinais televisivos
utilizando o protocolo IP.
ISP – Internet Service Provider, corresponde ao fornecedor do acesso à internet.
xix
JDK – Java Development Kit, é um conjunto de utilitários que permitem criar sistemas
de software para a plataforma java. É composto por compilador e bibliotecas.
LAN – Local Area Network, rede de computadores de pequena dimensão, cobrindo por
exemplo a área de uma casa, escritório ou mesmo de um pequeno grupo de edifícios.
MIB – Management Information Base, tipo de base de dados usada para gerir
dispositivos em redes de comunicações.
NAT – Network Address Translation, é uma técnica que consiste em alterar o endereço
IP de origem de um pacote que passa por um router ou firewall de maneira que um
computador de uma rede interna tenha acesso ao exterior (rede publica).
NETCONF – Network Configuration, é um protocolo de gestão de redes desenvolvido
pelo IETF.
NGN – Next Generation Networking, termo amplo que descreve as recentes e futuras
evoluções arquitecturais nas redes de telecomunicações.
OSI – Open Systems Interconnection, arquitectura que define uma forma comum de
conectar computadores.
OSS – Operations Suport System, trata-se de sistemas computacionais usados pelos
fornecedores de serviços de telecomunicações para dar suporte aos seus clientes.
PDA – Personal Digital Assistants, é um computador de dimensões reduzidas dotado de
uma grande capacidade computacional.
PON – Passive Optical Network, é a tecnologia que permite transmissão de dados
através de fibra óptica.
QoS – Quality of Service, refere-se a capacidade de fornecer um serviço conforme as
exigências.
RPC – Remote Procedure Call, trata-se de um processo de comunicação que permite
que um programa local invoque remotamente a execução de um outro programa.
SNMP – Simple Network Management Protocol, é um protocolo da camada de
aplicação utilizado para gestão de redes TCP/IP.
SOAP – Simple Object Access Protocol, é um protocolo utilizado para troca de
informações utilizando tecnologias baseadas em XML.
SSL – Secure Sockets Layer, protocolo utilizado para transmitir documentos de forma
segura através da internet.
SSH – Secure Shell, trata-se de um protocolo de rede que permite a conexão com outro
computador na rede de forma a executar comandos remotamente.
STB – Set-Top Box ou conversor, é um termo que descreve um equipamento que se
conecta a um televisor e a uma fonte externa de sinal, e transforma este sinal em
conteúdo no formato que possa ser apresentado em uma tela.
xx
TCP – Transmission Control Protocol, é um dos protocolos sob os quais assenta o
núcleo da Internet. Ele verifica se os dados são enviados de forma correcta, na
sequência apropriada e sem erros, pela rede.
TCP/IP – Corresponde a um conjunto de protocolos utilizados para comunicação entre
computadores em rede.
TLS – Transport Layer Security, tal como o seu predecessor trata-se de um protocolo
encriptado que promove uma comunicação segura através da Internet.
TR-064 – Technical Report 64, desenvolvido pelo actual BroadBand Forum,
corresponde a norma que especifica como deverá ser feita a comunicação entre o
Residential Gateway e os hosts da LAN.
TR-069 – Technical Report 69, desenvolvido pelo actual BroadBand Forum,
corresponde a norma de especificação do protocolo CWMP.
TR-111 – Technical Report 111, desenvolvido pelo actual BroadBand Forum,
corresponde a norma que define a gestão de dispositivos pertencentes a home network
através do protocolo TR-069.
UML – Unified Modeling Language, é uma linguagem que auxilia a visualização do
desenho da comunicação entre objectos.
UPnP – Universal Plug and Play, é um conjunto de protocolos de redes de
computadores que permite conexões directas e simplificadas para implementação de
redes em casas e escritórios.
VoIP – Voice over Internet Protocol, tecnologia que permite transmissão de
comunicações de voz sobre redes IP.
WAN – Wide Area Network, rede de computadores que cobre uma grande área.
WS – Web Services, trata-se de sistemas de software desenhados para suportar interoperacionalidade e interacção de sistemas computacionais através da rede.
xDSL – Família de tecnologias que fornecem um meio de transmissão digital de dados
(ex: ADSL, HDSL, VDSL, SDSL, UDSL), aproveitando a própria rede de telefonia que
chega na maioria das residências.
XML – Extensible Markup Language, é uma linguagem utilizada para facilitar o
transporte e armazenamento de informação.
xxi
xxii
1
Introdução
As comunicações electrónicas têm convergido para um modelo de redes de multiserviço baseadas em tecnologias integradoras, designadas de Next Generation
Networking (NGN) [42].
Para os Internet Service Provider (ISP), as actuais redes de acesso de banda larga
representam não só um acrescido risco de segurança nas redes dos seus clientes, mas
também, uma maior dificuldade em garantir a respectiva QoS (Quality of Service). Tais
dificuldades devem-se à associação de quatro factores: elevados débitos disponíveis
para cada um dos clientes; elevado número de clientes servidos por cada ISP;
permanente solicitação das ligações (xDSL, cabo, fibra, 3G); e a falta de conhecimentos
técnicos dos clientes que garanta a correcta gestão da sua rede doméstica.
Ainda que parte das dificuldades actuais já existissem anteriormente, o carácter
intermitente das ligações dial-up clássicas e os reduzidos débitos disponíveis, tornavam
mais simples aos ISP a tarefa de detectar e controlar situações de risco para as suas
redes, para os seus clientes ou terceiros.
A recente convergência de diversos serviços (voz, dados, wireless e televisão) num
mesmo canal de acesso (Triple Play e Quadruple Play) e a profusão de aplicações têm
1
dificultado a gestão, segurança e garantia do QoS nas redes, provocando assim a
procura de novas soluções.
Os ISP têm considerado que a gestão e segurança da rede do cliente estão fora da sua
esfera de influência, devendo ser administrada autonomamente pelo cliente.
Normalmente, os operadores consideram que a sua esfera de influência acaba no seu
equipamento de fronteira, sendo responsabilidade do cliente a gestão dos seus próprios
equipamentos de home gateway e de tudo o que esteja para lá desses equipamentos.
Actualmente as redes Triple e Quadruple Play alteram parcialmente esta perspectiva,
passando a ser necessárias e aceites algumas intervenções do operador no interior da
rede do cliente, nomeadamente para administrar remotamente set-top box (STB) e
gateways de serviço telefónico.
A entrada dos operadores nas redes domésticas tem influenciado que entidades tais
como BroadBand Forum [4] e Home Gateway Initiative [16] apostem na normalização
das tecnologias que permitem administrar e monitorizar remotamente não só os
equipamentos de fronteira home gateway mas também outros equipamentos CPE
(Customer Premise Equipment) localizados na rede do cliente.
As principais ferramentas utilizadas pelos administradores das redes para gerir seus
equipamentos foram as interfaces de linha de comando CLI, oferecidas pelos fabricantes
do equipamento, e o protocolo de aplicação SNMP (Simple Network Management
Protocol) desenvolvido pelo IETF [19]. Actualmente tem-se optado pela norma CWMP
(CPE WAN Management Protocol), também conhecida como TR-069.
O TR-069 pertence ao âmbito das Broadband Suites do referido fórum, fazendo assim
parte de uma família de normas e protocolos extensíveis e orientados para a gestão em
ambientes de banda larga.
Esta norma tem vindo a conhecer crescente aceitação, sendo de esperar que seja
gradualmente integrada por todas as aplicações de administração, do lado dos
operadores, e por todos os equipamentos, no lado dos fabricantes de CPE (em especial
routers/modems ADSL e set-top boxes).
A adopção do TR-069, permite que seja relativamente simples ao operador disseminar
novas regras e configurações para grupos alargados de utilizadores, em função dos
respectivos perfis e equipamentos instalados.
A gestão de configurações é realizada recorrendo a um servidor de auto-configuração
(ACS, ou Auto-configuration Server, segundo a terminologia TR-069), que realiza a
distribuição de actualizações de software dos CPE, a adição de novos serviços e a
gestão dos perfis do ambiente.
Outras tecnologias recentes tais como UPnP (Universsal Plug and Play) e NetConf
(Network Configuration) foram também padronizadas para apoiar e responder às actuais
necessidades de gestão das redes.
2
O nosso objectivo principal foi desenvolver uma solução de gestão de equipamentos
utilizando o protocolo CWMP que se comporta como servidor ACS para gerir CPE TR069, permitindo configurar remotamente equipamentos de clientes sem que estes
necessitem de possuir conhecimento técnico. Permite também a configuração de
equipamentos de variadíssimos fabricantes, desde que suportem as normas TR-069 ou
TR-064 (protocolo que possibilita interacção entre os protocolos UPnP e o standard TR069).
Deste trabalho resultou um protótipo capaz de gerir equipamentos TR-069 e isolar as
especificações deste protocolo de outros sistemas ou utilizadores que virão a utilizar
esta ferramenta. Pretende-se que uma versão evoluída desta ferramenta venha a ser
integrada na plataforma Network Activator [28] da PT Inovação.
Esta solução trata-se de uma API (Application Programming Interface) desenvolvida na
linguagem de programação orientada a objectos Java [33] [24], tendo sido utilizado o
software gratuito NetBeans IDE 6.5.1 instalado com a versão 6 do Kit de
Desenvolvimento Java (JDK) da Sun [25], como ferramenta de compilação e
desenvolvimento da API.
1.1 Motivação
O TR-069 tem-se vindo a tornar cada vez mais como protocolo padrão na gestão e
configuração remota de CPE, a sua utilidade suscitou o interesse da PT Inovação para a
criação de uma proposta de estágio curricular com o objectivo de implementar um
módulo de gestão baseado nesta norma.
A PT Inovação pretende que este módulo desenvolvido seja o ponto de partida para que
num futuro próximo a sua plataforma Network Activator conte com uma solução TR069 de forma a melhor servir os seus clientes.
O projecto desta dissertação de Mestrado foi integrado neste estágio curricular realizado
nas instalações da PT Inovação em Aveiro durante o período 1/12/2008 a 1/9/2009.
3
1.2 Objectivos
Os objectivos projectados no enquadramento desta proposta de dissertação foram os
seguintes:
Aquisição/consolidação de Conhecimentos
Estudo da norma TR-069 e aquisição de valências necessárias para a realização do
projecto.
Implementação de um ACS
Construção de um módulo de gestão de equipamentos baseado no recente protocolo de
gestão remoto CWMP.
Realização de testes com equipamentos da PT Inovação
O ACS implementado deverá ser testado convenientemente.
1.3 Organização da Dissertação
Além deste capítulo introdutório, que visa enquadrar este trabalho, apresentar os
objectivos traçados e sua motivação, esta dissertação é composta por mais cinco
capítulos.
O capítulo dois, “Protocolos de Gestão”, apresenta a importância da gestão de
equipamentos na realidade das redes actuais e futuras, e contem uma descrição de
diversas tecnologias de gestão, sendo dedicado especial atenção a tecnologia de gestão
remota utilizada na realização deste projecto, o CPE WAN Management Protocol.
Os três capítulos seguintes, “Concepção”, “Implementação” e “Testes”, correspondem a
uma descrição detalhada das fases do desenvolvimento e funcionamento do módulo de
configuração e gestão de equipamentos TR-069 construído.
O capítulo “Concepção”, capítulo três, descreve a análise teórica realizada antes da
implementação prática da aplicação. Aqui serão apresentados requisitos, casos de
utilização, arquitectura e diagramas de classes e fluxo que explicam o funcionamento da
aplicação. Este esboço teórico foi feito, com o intuito de prever as necessidades a ter em
conta durante o seu desenvolvimento; a correcta forma de implementação; e o
funcionamento e resultado final.
Por outro lado, o quarto capítulo, “Implementação” corresponde a uma análise mais
detalhada e a explicação dos procedimentos práticos escolhidos para a implementação
do sistema. Aqui será descrito sucintamente o funcionamento do servidor ACS; serão
apresentadas as funcionalidades que o sistema suporta e será também explicada a forma
como o utilizador ou um sistema interage com a aplicação.
4
No quinto capítulo, “Testes”, são apresentados os resultados obtidos com a aplicação
desenvolvida.
Por último, o capitulo seis, “Conclusões e Trabalhos Futuros”, tal como o nome do
capítulo indica, é onde é feita uma apreciação final e global acerca da API_TR069 e são
referidos trabalhos que poderão ser realizados ainda no âmbito deste projecto.
No fim do documento são citadas as fontes que me auxiliaram na elaboração deste
documento.
5
6
2
Protocolos de Gestão
Desde o aparecimento do primeiro computador no inicio dos anos 60 do século passado,
tem-se verificado que tecnologia tem gerado tecnologia a uma velocidade
impressionante.
Em particular duas áreas que continuam a registar uma forte evolução tecnológica são
as redes de telecomunicações e redes de computadores, encontrando-se ambas
actualmente em sentido de convergência. Esta convergência associada aos novos
avanços tecnológicos das redes tem levado a que estas duas áreas actuem numa
dimensão comum, que é o fornecimento de múltiplos serviços baseados em uma única
infra-estrutura.
O conceito de convergência, o "internetwork", que corresponde a um conjunto de
dispositivos e procedimentos que permitem a interconexão de redes individuais,
formando redes de maiores dimensões e capacidades. Estas redes são baseadas no
emprego de computadores e seus recursos de controlo, aliadas à utilização de técnicas
de comutação de pacotes e transmissão de dados dos sistemas de telecomunicações,
sendo, portanto, uma combinação de ambas as tecnologias.
O grande símbolo desta convergência de tecnologias é a Internet.
Num futuro próximo e de uma forma global todos os nossos equipamentos domésticos
(televisão, fogão, microondas, lâmpadas, etc.) serão implementados com interfaces de
7
rede, possibilitando a sua conexão à Internet. Tudo poderá ser equipado com tais
aparelhos de rede, possibilitando uma forma de vida cada vez mais conveniente, indo ao
encontro da célebre frase citada por Max Frisch "Tecnologia é a habilidade de organizar
o mundo de forma que não tenhamos que senti-lo" [13].
A criação do modelo de referência OSI [15] [44] corresponde a um dos maiores passos
dados na gestão de redes. Este modelo promoveu a coordenação e estruturação das
comunicações de dados, permitindo redução da complexidade de desenvolvimento de
normas; maior flexibilidade e simplicidade de implementação de alterações e
funcionalidades nas camadas; incorporação de novas tecnologias e compatibilidade
entre fabricantes [41].
Durante muito tempo a existência de um único protocolo padronizado (SNMP) e as
interfaces CLI integradas nos equipamentos, foram suficientes para garantir uma
correcta gestão e monitorização de equipamentos e serviços nas nossas redes.
No entanto, o SNMP nunca se afirmou como uma solução fiável e segura em termos de
configuração e as interfaces de linhas de comando (CLI) sempre se apresentaram
mecanismos muito pouco flexíveis, visto certos aspectos funcionais dependerem
directamente do fabricante do equipamento.
Se adicionarmos a estes factores o aumento da dimensão das redes IP, concluí-se
facilmente que estas ferramentas não atendem às necessidades de configuração das
redes modernas actuais, daí a necessidade da criação de soluções de gestão automáticas
e capazes de configurar sistemas a partir de protocolos padronizados e extensíveis.
Existem várias razões que tornaram o TR-069 como tecnologia padrão na gestão de
equipamentos dos clientes dos ISP.
A criação de um protocolo de gestão remota como o CPE WAN Management Protocol
(TR-069) representa a possibilidade, de que ISP sejam capazes de aceder remotamente a
diferentes equipamentos de diferentes fabricantes, através de uma tecnologia
completamente padronizada e através da mesma infra-estrutura.
Apesar do âmbito de aplicação deste protocolo ser de configuração ponto a ponto dentro
de uma rede WAN, o mesmo foi desenhado para ser compatível com outras tecnologias,
nomeadamente o UPnP, tornando-o assim um protocolo extensível e capaz de chegar
também as nossas LAN.
Uma outra característica deste protocolo é a sua flexibilidade: baseia-se em protocolos
completamente normalizados e de utilização aberta (SOAP [47], XML [50],
HTTP/HTTPS [45], TCP [27]), permitindo assim que os próprios ISP desenvolvam as
suas próprias ferramentas de gestão.
Disponibiliza também mecanismos que permitem facilmente instalar novos serviços e
software nos equipamentos. Garante ainda uma comunicação bastante segura e fiável
entre servidor e cliente TR-069.
8
Face as limitações de configuração apresentadas pelo protocolo SNMP, o IETF
desenvolveu o Network Configuration (NetConf), tratando-se também de um protocolo
de configuração e gestão remota baseado em tecnologias abertas e padronizadas.
Relativamente ao TR-069, o NetConf tem como única diferença o facto de permitir ser
encapsulado e transportado através de diferentes tecnologias (SOAP, BEEP, SSH). É
igualmente bastante seguro em todas as suas implementações.
Neste capítulo iremos falar um pouco de todas estas soluções de gestão, no entanto será
dedicado especial atenção ao protocolo de gestão remota CPE WAN Management
Protocol ou também conhecido por TR-069.
2.1 Universal Plug and Play
A tecnologia Universal Plug and Play (UPnP) [35] estende do Plug and Play; é
constituída por protocolos abertos (TCP/IP [48]) direccionados para a comunicação na
Internet e por tecnologias Web; é promulgada pelo UPnP Forum [34]; define uma
arquitectura capaz de estabelecer conexão ponto a ponto em redes de dispositivos
inteligentes e é projectada para proporcionar fácil utilização e flexibilidade, dado
basear-se em padrões de conectividade ad-hoc [36] [37].
Estas redes são pequenas tais como as que temos em nossas casas, pequenos negócios
ou mesmo espaços públicos onde poderá existir ou não conexão à internet. Esta
tecnologia pretende facilitar a implementação e instalação destas redes, a partilha de
dados e comunicações entre dispositivos.
Figura 1 – Ambiente UPnP [18].
A existência desta tecnologia faz com que o conceito futurista “All-IP” (tudo possuirá
endereço IP) se torne possível num futuro não muito distante. Podemos imaginar um
9
despertador activado pela rede que sabe das suas reuniões, verifica o trânsito e a
previsão do tempo, calcula quando você precisa acordar e, pela manhã, o informa do
horário do seu voo, a previsão do local de destino, e quando você precisa sair. Em
direcção ao aeroporto, o seu assistente pessoal digital (PDA) activado pelo UPnP
encontra o melhor lugar para estacionar o carro e solicita um jornal para você se
informar sobre a actualidade. Enquanto viaja, o seu PDA verifica as suas reuniões, faz
as reservas dos restaurantes e hotéis e pede alguns petiscos para quando você chegar a
casa. Actualmente estas extravagâncias ainda não existem, mas serão possíveis com a
existência do UPnP [11].
Quando os dispositivos que incorporam a tecnologia UPnP são fisicamente conectados à
rede conectam-se automaticamente uns aos outros, sem a necessidade de o utilizador
configurar ou centralizar serviços e servidores.
A especificação UPnP é baseada em protocolos de rede tais como: IP, TCP, UDP,
HTTP e XML. Permitindo assim que os dispositivos comuniquem facilmente entre si,
negociem portas e permitam que aplicações UPnP trabalhem de forma transparente sem
a necessidade de configuração. Daí a razão pela qual ser chamada de universal pois não
necessitar de drivers específicos de dispositivo, usando esses protocolos padrões em seu
lugar.
Os dispositivos UPnP podem configurar automaticamente o endereçamento de rede,
anunciar sua presença em uma sub-rede e permitir a troca de descrições de serviços e
dispositivos. Um computador com o Windows XP ou Windows Vista pode actuar como
um ponto de controlo de UPnP, descobrindo e controlando dispositivos através de uma
interface de rede.
Basicamente, dispositivos UPnP transmitem as suas capacidades a todos os pontos na
rede e permitem que clientes UPnP ajam como pontos de controlo.
Comparativamente aos resultados verificados com a tecnologia Plug and Play, que
facilitou as acções de configuração e adição de novos periféricos a um único
computador, o UPnP não se apresenta como uma novidade tão revolucionária. No
entanto certamente trata-se de um grande e importante passo na evolução das nossas
redes.
2.2 Interface de Linha de Comando
Uma interface de linha de comando é um mecanismo que permite o envio de comandos
para realizar tarefas em determinado computador ou sistema, possibilitando assim uma
interacção com o mesmo [40].
10
Este mecanismo poderá ser utilizado na gestão de equipamentos, sendo uma técnica
amplamente utilizada em todo o universo informático.
Este método de gerir um computador, para executar uma determinada tarefa, baseia-se
na escrita de um comando na linha de comandos e respectivo envio do comando. O
envio desse comando será feito após seja pressionada a tecla “Enter”. Nesse momento o
interpretador da linha de comandos recebe, analisa e executa o referido comando [32].
Este interpretador de linha de comandos deverá estar a correr num terminal de texto
localmente ou numa janela shell, remotamente como por exemplo um cliente PuTTY.
Após a conclusão, o comando geralmente retorna ao utilizador o resultado da execução
da operação em formato texto na CLI.
Os fabricantes dos equipamentos de rede (tipicamente Switchs, Routers, Hubs, Bridges)
incorporam nos seus equipamentos mecanismos que permitem configura-los através de
CLI, proporcionando aos administradores das redes, técnicas fáceis de configuração. No
entanto, estas ferramentas variam de fabricante para fabricante. O seu uso representa um
elevado custo operacional, associado ao desenvolvimento dos scripts e da sua
manutenção. De salientar ainda o facto de o administrador necessitar de conhecer bem o
equipamento e os comandos que ele incorpora.
2.3 Simple Network Management Protocol
No início da década de 80, o protocolo Simple Network Management Protocol (SNMP)
começou a ser desenvolvido pelo Internet Engineering Task Force (IETF), com o
objectivo de disponibilizar uma forma simples e prática de gerir equipamentos numa
rede de computadores.
O SNMP é um protocolo de gestão pertencente a camada de aplicação do modelo OSI.
Pode ser utilizado tanto para obter informações, como alterar a configuração de
equipamentos SNMP que se encontram espalhados numa rede baseada na pilha de
protocolos TCP/IP.
Estes equipamentos são denominados de agentes SNMP, enquanto a entidade que gere
estes agentes é denominado por gestor.
A informação de gestão dos agentes pode ser acedida através do repositório conhecido
por Management Information Base (MIB). Na realidade este repositório não contém
qualquer tipo de dados, mas sim a informação acerca de que dados podem ser usados
para gerir o agente.
11
O funcionamento do SNMP é baseado numa troca de informações entre a MIB do
agente e a aplicação do gestor. As acções de gestão são realizadas através do envio de
pedidos por parte do gerente a um ou mais agentes utilizando o protocolo de transporte
UDP (User Datagram Protocol).
Figura 2 – Ambiente de gestão SNMP [39].
Em termos de operações, o SNMP disponibiliza duas operações básicas (SET e GET) e
suas derivações (GET-NEXT e TRAP).
A operação SET é utilizada para alterar o valor de determinada variável; o gestor
solicita que o agente faça uma alteração no valor da variável.
A operação GET é utilizada para ler o valor de determinada variável; o gestor solicita
que o agente obtenha o valor da referida variável.
A operação GET-NEXT é utilizada para ler o valor da variável seguinte; neste caso o
gestor fornece o nome de uma variável e obtém o valor e o nome da próxima variável;
também utilizado para obter valores e nomes de variáveis de uma tabela de tamanho
desconhecido;
A operação de TRAP é utilizada para informar o gestor da ocorrência de determinado
evento.
Apesar do SNMP ser um protocolo muito bom em termos de monitorização, o mesmo
não se reflecte nas acções de configuração. O facto de utilizar datagramas UDP para
transporte da sua informação de gestão, faz dele um protocolo muito pouco fiável e
seguro. Devido a estas deficiências, o IETF tem vindo a desenvolver novas versões
deste protocolo (SNMPv2 e SNMPv3).
Se adicionarmos a estas lacunas o facto do acesso aos agentes não ser controlado nem
registado, e ainda o facto da arquitectura das MIBs variarem entre alguns fabricantes,
faz com que o SNMP muito dificilmente se torne um protocolo talhado para a
configuração de equipamentos.
12
Uma especificação completa e detalhada deste protocolo pode ser encontrada no RFC
1157 [10].
2.4 Network Configuration
O Network Configuration (NetConf) trata-se de uma tecnologia de gestão e
configuração de rede. A sua implementação foi iniciada em Maio de 2003 e foi
publicado em Dezembro de 2006 pelo Internet Engineering Task Force (IETF) [12].
O NetConf disponibiliza mecanismos capazes de instalar, recuperar, manipular e apagar
configurações de dispositivos de rede. A sua utilidade é semelhante à utilização de
linhas de comando e interfaces Web quando estas são utilizadas como técnicas de
configuração de equipamentos de rede. Estas técnicas geralmente são direccionadas à
interacção directa do humano com o equipamento e o seu uso é muitas vezes meramente
local. O NetConf pode ser utilizado para gerir equipamentos remotamente, e
disponibiliza uma interface flexível e programável, fomentando a criação de aplicações
automáticas de configuração e monitorização de dispositivos de rede.
Sessões NetConf possibilitam efectuar múltiplas alterações de configuração simultâneas
dentro da mesma sessão. Nestas sessões é possível realizar alterações e só depois decidir
aplica-las, evitando que operadores de rede cometam erros de configuração.
O grupo de trabalho NetConf preocupou-se em produzir um protocolo adequado à
configuração de rede com as seguintes principais características:
•
•
•
•
•
•
•
•
Capaz de fornecer mecanismos que diferenciem dados configuráveis de dados
não configuráveis;
Seja suficientemente extensível para que fabricantes proporcionem acesso a
todos os dados de configuração dos dispositivos usando um protocolo único;
Interface aberta e programável;
Utilize uma representação textual dos dados, de forma a serem facilmente
editados, não havendo assim necessidade da utilização de ferramentas
complexas de manipulação;
Permita integração com os actuais métodos de autenticação do utilizador;
Independência a nível de transporte;
Suporte um conjunto de operações de configuração;
Promova suporte a notificações assíncronas.
Antes do NetConf a opção natural de configuração era o Simple Network Management
Protocol (SNMP). Foi largamente difundido entre fornecedores e portanto
frequentemente encontrado em dispositivos comerciais. Porém, para ser utilizado
concretamente como protocolo de configuração, o utilizador do SNMP precisa levar em
13
consideração as carências do protocolo, particularmente a nível de fiabilidade e
segurança. O SMNP continua a apresentar-se como um excelente protocolo de
monitorização, apesar de apresentar as referidas limitações a nível de configuração.
Com a criação do NetConf, o IETF apresentou um protocolo de configuração sem as
limitações existentes no SNMP, como também um protocolo baseado nas novas
tecnologias de Web Services (WS) [49], que têm sido alvo de grande investigação no
contexto de gestão de redes.
O objectivo principal do NetConf é unificar a maneira pela qual os dispositivos de rede
são configurados, propondo padrões que sejam simples e suficientemente genéricos para
abranger diversos tipos de dispositivos.
De forma geral, pode-se dizer que o NETCONF é um conjunto de definições para
formação de documentos Extensible Markup Language (XML) de configuração.
Dentre as características dos WS, pode-se citar sua simplicidade e padronização, que
contribuem para a obtenção da interoperabilidade entre aplicações. O protocolo
largamente utilizado para troca de mensagens WS é o Simple Object Access Protocol
(SOAP) baseado em XML e transportado geralmente via HTTP.
O IETF propõe as seguintes formas de transportar o protocolo NetConf:
•
•
•
•
•
NetConf encapsulado em mensagens SOAP sobre HTTP [17];
NetConf encapsulado em mensagens SOAP sobre HTTPS (via SSL-TLS) [1];
NetConf encapsulado em mensagens SOAP sobre BEEP [14];
NetConf directamente sobre BEEP (Blocks Extensible Exchange Protocol)
[23][29];
NetConf directamente sobre SSH (Secure Shell) [38].
O princípio de funcionamento do NETCONF é baseado no paradigma RPC (Remote
Procedure Call), através do qual é definido um conjunto de operações do protocolo [26].
Basicamente o gerente NETCONF (cliente) codifica uma requisição RPC em XML e a
envia ao agente NETCONF (servidor). O agente, ao receber uma mensagem
NETCONF, processa a requisição e envia uma resposta RPC de volta ao gerente. Tanto
mensagem de pedido como resposta são enviadas em formato XML, e têm as suas
estruturas totalmente descritas em schema XML [46], permitindo ao gerente e agente
NETCONF validarem as mensagens recebidas.
2.5 CPE WAN Management Protocol
O CPE Wan Management Protocol foi publicado em Maio de 2004 no relatório técnico
69 do DSL Fórum (actual BroadBand Forum), daí o protocolo ser também conhecido
14
por TR-069. Trata-se de um protocolo de gestão remota de dispositivos e já encontrou
ampla aceitação por grandes fabricantes, tais como a Thomson, Alcatel e Cisco, que
implementam clientes TR-069 em seus dispositivos [5].
2.5.1 BroadBand Forum
O BroadBand Forum corresponde a um consórcio global constituído por cerca de 200
líderes da indústria das telecomunicações, computação, redes e empresas provedoras de
serviços. Fundado em 1994 originalmente com o nome de ADSL Forum e
posteriormente DSL Forum. Actualmente é conhecido por BroadBand Forum onde a 18
de Maio de 2009 conseguiu uma forte união com o IP/MPLS Forum.
O IP/MPLS Forum trata-se de uma organização internacional cujos seus membros são
entidades tais como: provedores de serviço, fabricantes de equipamentos, centros de
teste e utilizadores empresariais. A sua missão é indicar soluções e aplicações
direccionadas à correcta utilização de diversas tecnologias de rede.
Com esta união, o BroadBand Forum tornou-se o órgão central para especificações da
próxima geração de redes IP.
O BroadBand Forum age em benefício dos seus membros, reconhecendo a
competitividade verificada entre eles, e procura definir leis globais que tornem essa
competitividade saudável. Com estas leis o BroadBand Forum pretende ainda garantir
uma correcta utilização das técnicas especificadas, partilhar as melhores práticas de
implementação, promover o mercado da banda larga e facilitar o desenvolvimento
interoperacional da banda larga com base em componentes de rede.
Desde 1994, este Forum desenvolveu mais de 100 especificações baseadas na definição
da tecnologia DSL (Digital Subscriber Line) para fornecer máxima eficiência de gestão
da banda larga. Dado abordar todas as formas da tecnologia DSL, o seu nome foi
alterado para DSL Forum em 1999.
Ao longo dos anos, esta organização focou o seu trabalho no desenvolvimento da
arquitectura de fibra óptica e em garantir que prestadores de serviço fossem capazes de
gerir as suas próprias redes a partir de uma plataforma de endereçamento IP. De modo a
realçar esse trabalho desenvolvido, em 2008 o seu nome foi novamente alterado para
BroadBand Forum.
Em 2005, foi criado o BroadBandSuite, que agrupou uma serie de soluções técnicas de
transporte, gestão da rede digital e apoio ao cliente. Actualmente o BroadBandSuite
destaca 3 conjuntos de soluções desenvolvidas pelo BroadBand Forum: rede,
administração e especificações orientadas ao utilizador.
15
Algumas das principais especificações de rede desenvolvidas até ao momento tratam-se
soluções para tecnologias tais como ADSL, SHDSL e ADSL2/2plus. Até ao fim de
2009 serão ainda concluídos testes de performance da tecnologia VDSL2.
Para além de trabalhos desenvolvidos associados a este vasto conjunto de tecnologias
DSL, tem surgido outros trabalhos associados a outras tecnologias tais como: PON,
EPON e desenvolvimento de normas Ethernet ponto a ponto.
O BroadBand Fórum também tem tido preocupações relacionadas com a eficiência
energética, tencionando propor medidas que permitam a aderência de indústrias aos
compromissos globais de redução de energia.
O trabalho desenvolvido inclui também especificações direccionadas a configuração de
redes, aos sistemas de controlo de acesso e aos sistemas de suporte a operações. Estas
especificações correspondem a práticas correctas para solucionar problemas em banda
larga, incluindo mecanismos de controlo de frames e fornecendo mecanismos de
controlo direccionados a operadores remotos de linhas fixas.
O desenvolvimento do protocolo de gestão remota da rede digital doméstica (TR-069)
corresponde a um marco importante na história do BroadBand Forum, tornando-se
mesmo como protocolo padrão para gestão remota. A capacidade de facilmente
adicionar modelos de objectos a novos equipamentos tem contribuído para que
provedores de serviço sejam capazes de manter sempre actualizados serviços e
aplicações nos dispositivos.
2.5.2 Descrição da norma CWMP (TR-069)
A finalidade da criação deste protocolo foi desenvolver um padrão de gestão de
equipamentos em ambiente WAN. Com base nesta plataforma de gestão comum,
provedores de serviço são capazes de gerir todos os seus equipamentos através da
internet, independentemente do dispositivo ou fabricante. Até aqui nunca tinha existido
uma plataforma de gestão semelhante, devido ao facto dos fabricantes de equipamentos
criarem seus próprios mecanismos de configuração e não partilharem esses mecanismos
com os seus concorrentes.
O TR-069 trata-se de um protocolo da camada de aplicação que proporciona
comunicação bidireccional entre determinado equipamento que se pretenda configurar e
a respectiva entidade configuradora. Essa comunicação é baseada em mensagens SOAP
sobre HTTP e garante uma configuração segura.
O desenvolvimento do padrão TR-069 trata-se de uma resposta à complexidade
registada na configuração dos equipamentos do utilizador comum.
16
O TR-069 é utilizado para gestão/configuração remota de equipamentos domésticos
(modems, routers, gateways, set-top box, telefones VoIP) TR-069 do utilizador comum.
Sendo a sua grande maioria gateways residenciais, poderá também ser utilizado para a
gestão de outros equipamentos não TR-069, visto ser possível a sua integração com a
tecnologia UPnP, tornando-o assim capaz de alcançar uma vasta quantidade de
dispositivos nas nossas redes.
Num ambiente TR-069, o elemento responsável pela gestão dos equipamentos CPE
(Customer Premises Equipment) é o ACS (Auto Configuration Server) que terá duas
interfaces de comunicação distintas como se pode observar na figura 3. Uma diz
respeito à informação trocada com fornecedores de serviço, sistemas de controlo de
acesso e operadores que estarão a utilizar este servidor (esta interface está fora do
âmbito de aplicação do TR-069). A outra interface corresponde à comunicação deste
servidor com os dispositivos TR-069.
Cada CPE só pode ser gerido por um único ACS, num ambiente multi-provedor. Poderá
ser limitativo, dado que toda a configuração de gestão de determinado CPE terá de ser
mantida num único ACS que será responsável por resolver todos os conflitos
relacionados com a configuração dos dados de configuração e distribuir a configuração
para os respectivos dispositivos.
Figura 3 – Ambiente de gestão utilizando o protocolo CWMP [5].
A figura 3 representa um ambiente TR-069 contendo as entidades já referidas.
O TR-069 apresenta vantagens sobre outros protocolos de gestão, tais como SNMP ou
NETCONF. Utiliza TCP como protocolo de transporte em vez de datagramas UDP
usados no SNMP, aumentando assim a fiabilidade que se trata de uma característica
bastante importante num protocolo de configuração.
Outra característica importante do TR-069 trata-se do facto de não usar conexões TCP
persistentes entre a aplicação gestora e o equipamento, permitindo assim que o ACS
17
seja capaz de gerir uma grande quantidade de CPE simultaneamente ao contrário de
algumas implementações de NetConf, que necessitam de manter a sua conexão de
gestão sempre aberta com o equipamento que está a operar.
Comparativamente ao NetConf, o TR-069 apresenta-se bastante mais flexível visto
existirem extensões que o colocam compatível com tecnologias modernas tais como o
UPnP, conseguindo assim alcançar equipamentos das LAN e equipamentos não TR069.
Em termos de flexibilidade de operacionalidade o TR-069 incorpora um mecanismo que
proporciona que tanto ACS como CPE sejam capazes de iniciarem o estabelecimento de
sessões TR-069.
O TR-069 foi também projectado para promover um elevado nível de segurança e para
impedir a manipulação ilícita das operações efectuadas entre um CPE e respectivo ACS.
Fornece ainda confidencialidade para essas operações, e permite vários níveis de
autenticação.
2.5.3 Funcionalidades
O TR-069 oferece as seguintes ferramentas e funcionalidades de gestão:
•
Auto-configuração e provisionamento dinâmico de serviço.
Capacidade de reconfigurar e permitir recolha de informação de CPE TR-069.
•
Download Software / Firmware.
Oferece ferramentas de gestão de download do software CPE bem como a actualização
de ficheiros de firmware. Coloca ainda ao nosso dispor mecanismos para identificação
da versão, iniciação do download, e notificação acerca do sucesso ou falha de
download.
Quando o Download é iniciado pelo ACS, o ACS fornece ao CPE a localização do
arquivo a ser transferido. O CPE, em seguida, efectua a transferência, e notifica o ACS.
No entanto estas transferências podem ser opcionalmente iniciadas pelo próprio CPE.
Nesse caso, o CPE envia um pedido de download de um determinado tipo de arquivo ao
ACS. O ACS responde iniciando o download seguindo os mesmos passos como se fosse
o ACS a fazer o download.
•
Acompanhamento de Estado e Desempenho.
18
Proporciona suporte a CPE de forma a tornar disponível informação com a qual o ACS
poderá usar para monitorar o estado e performance do CPE. Também define um
conjunto de mecanismos que permite que o CPE notifique o ACS de alterações no seu
estado.
Diagnóstico
•
Promove suporte a CPE de forma a tornar disponível informação com a qual o ACS
poderá usar para diagnosticar e resolver problemas de conectividade ou serviços, bem
como a habilidade de executar definidos testes de diagnóstico.
2.5.4 Arquitectura
O CPE WAN Management Protocol contém mecanismos exclusivos, no entanto o seu
funcionamento baseia-se no uso de diversos protocolos padrão.
A tabela 1 mostra as camadas protocolares no qual o protocolo CWMP é constituído.
Camada
CPE/ACS
Application
Descrição
Aplicações CWMP usadas nas entidades CPE e ACS. A
aplicação é localmente definida e não faz parte do CPE WAN
Management Protocol
RPC Methods
Métodos RPC especificados
Management Protocol
SOAP
Uma norma baseada em sintaxe XML utilizada para codificar
RPC Methods. Especificamente SOAP 1.1
HTTP
SSL/TLS
TCP/IP
na norma do
CPE WAN
HTTP 1.1
Padrão do Internet Transport Layer Security Protocols.
Especificamente, SSL 3.0 (Secure Socket Layer) ou TLS 1.0
(Transport Layer Security).
Padrão TCP/IP.
Tabela 1 – Camadas protocolares do protocolo CWMP.
O uso de SSL / TLS para transporte do CWMP é recomendado, embora o protocolo
pode ser utilizado directamente sobre uma conexão TCP. Se SSL / TLS não for
utilizada, alguns aspectos da segurança serão sacrificados. SSL / TLS fornece
confidencialidade e integridade dos dados e permite autenticação em ambos os
terminais.
19
Determinadas restrições sobre a utilização de SSL / TLS e TCP são definidas na norma
do CWMP [5].
O funcionamento básico deste protocolo de configuração baseia-se em troca de
mensagens SOAP transaccionadas entre CPE e ACS através de HTTP 1.1, onde o CPE
comporta-se como cliente HTTP e ACS como servidor HTTP. No entanto o protocolo
contém também um mecanismo de pedidos de conexão que permite ao ACS comportarse como cliente e CPE por sua vez como servidor.
As operações e informações CWMP enviadas nas mensagens SOAP são emitidas em
formato textual e codificadas na linguagem de transporte XML.
Um ACS é capaz de configurar e monitorar um CPE através de uma série de métodos
RPC (Get, Set, Inform, Download, Upload, Reboot entre outros) disponibilizados pelo
protocolo.
Este protocolo possibilita que programadores com base em ferramentas de
desenvolvimento, construam de uma forma aberta aplicações de configuração seguras,
dinâmicas e escaláveis.
2.5.5 Parâmetros
O CPE WAN Management Protocol define mecanismos através dos quais um ACS é
capaz de ler, alterar ou mesmo apagar parâmetros internos dos equipamentos,
atribuindo-lhe assim capacidades tais como configuração, monitorização e
edição/adição fácil de novos serviços aos equipamentos. Parâmetros de diferentes tipos
de CPE são definidos em normas separadas.
TR-106: Modelo de Dados para Equipamentos TR-069 [7].
TR-098: Modelo de Dados para Internet Gateway Device TR-069 [3].
TR-104: Modelo de Dados para VoIP CPE [8].
Cada parâmetro consiste num par nome/valor. O nome identifica um determinado
parâmetro, e possui uma estrutura hierárquica semelhante para arquivos num directório,
com cada nível separados por um "." (ponto). O valor de uma
Parâmetro pode ser uma definição de diversos tipos de dados.
Os parâmetros podem ser definidos como de leitura ou leitura e escrita. Parâmetros só
de leitura podem ser utilizados pelo ACS para determinar características específicas do
funcionamento de determinado CPE, observar o estado actual do dele ou reunir dados
estatísticos.
20
Parâmetros que possibilitem leitura e escrita, permitem que um ACS seja capaz de
personalizar vários aspectos do funcionamento do CPE de forma a melhorar e corrigir o
seu desempenho.
Apesar de certos parâmetros serem passíveis a alteração, contém informação
confidencial (por exemplo passwords de determinado utilizador); nessas situações, caso
seja pretendida a leitura desses valores, será retornado um valor vazio. O valor de
alguns parâmetros de escrita podem ser modificáveis por outros meios, por exemplo via
alguma auto-configuração existente na LAN. Daí a necessidade de precaução na
implementação dos mecanismos de auto-configuração tanto do lado WAN como LAN.
2.5.6 Estabelecimento de Sessões
O CPE WAN Management Protocol tem definido mecanismos que permitem que o CPE
se conecte ao ACS em diversas condições, garantindo assim que a comunicação CPE –
ACS ocorra com alguma frequência mínima.
Conhecendo previamente o endereço do ACS, CPE poderá a qualquer momento
estabelecer sessão com o ACS, essa sessão entre os dois terminais é iniciada após o
CPE enviar ao ACS uma mensagem Inform num POST HTTP. Este Inform trata-se de
um método RPC invocado pelo CPE e executado no ACS, e é utilizado para estabelecer
as sessões de transacção entre CPE e ACS. A invocação deste método contém
informação relevante acerca do equipamento e informa o ACS das razões pela qual ele
pretende estabelecer sessão.
O CPE inicia comunicação com ACS em diversas situações tais como o momento em
que é ligado à rede após a sua instalação inicial; sempre que seja ligado ou reiniciado ou
mesmo quando ocorrem eventos que devam ser comunicados ao ACS (como por
exemplo quando o endereço IP do CPE é alterado). Além destas condições é ainda
definido no CPE um período de tempo no qual estabelece comunicação periódica com o
ACS sobre uma base de tempo contínua. Caso a mensagem de Inform se trate de uma
invocação periódica deste método, a mensagem SOAP deverá indicar na estrutura de
eventos a ocorrência do evento PERIODIC.
Este protocolo contém, no entanto, um mecanismo que permite estabelecimento
assíncrono de sessões. Cada CPE TR-069 possui um serviço HTTP suportando
autenticação do tipo digest no qual o ACS poderá actuar como cliente HTTP, podendo
assim informar o CPE de que se pretende comunicar com ele. Uma vez que o CPE
receba um pedido de conexão enviado pelo ACS, irá responder nos próximos 30
segundos com a invocação do método Inform, indicando a ocorrência do evento de
CONNECTION REQUEST.
Em cada caso, quando a comunicação é estabelecida o CPE identifica-se
21
exclusivamente através da informação de fabrico (serial number), de modo ao ACS
conhecer o CPE com quem se esta a comunicar e possa responder de forma correcta.
2.5.7 Modelo de Comunicação
A comunicação estabelecida pelo protocolo TR-069 corresponde a uma troca
bidireccional de pedidos e respostas RPC. Esta transacção é concluída quando ambos os
terminais não tem mais mensagens para enviar. O CPE é responsável por estabelecer e
terminar as sessões TR-069.
De modo a possibilitar uma troca sequencial de operações numa única sessão, o CPE
deverá manter a conexão TCP durante toda sessão.
A figura 4 contém um exemplo de uma transacção entre CPE e ACS e demonstra o
fluxo da comunicação e como a mesma ocorre em ambos os sentidos. Neste exemplo o
ACS invoca no CPE os métodos GetParameterValues e SetParameterValues, e recebe
do CPE as respostas das invocações desses métodos.
22
Figura 4 – Exemplo de uma transacção de mensagens numa sessão TR-069 [5].
•
•
•
•
•
•
A sessão inicia com o estabelecimento da conexão TCP.
Estabelecimento e activação de SSL e respectiva activação do mecanismo de
segurança.
Neste momento o CPE envia um POST HTTP invocando o método Inform para
inicializar a transacção de operações com o ACS.
O ACS responde com InformResponse, indicando ao CPE de que o Inform
enviado foi recebido com sucesso e que o CPE foi autenticado com sucesso.
No seguimento da chegada do InformResponse o CPE entrega ao ACS um
POST HTTP vazio indicando que a sessão foi estabelecida com sucesso e que
esta pronto a receber pedidos de invocação de métodos RPC.
Em resposta ao POST vazio, o ACS responde invocando no CPE uma operação,
sendo neste caso do exemplo apresentado na imagem, um GetParameterValues.
23
•
•
•
•
•
O CPE responde num novo POST com o GetParameterValuesResponse
retornando o resultado à invocação do referido método.
O ACS opta por invocar nova operação, desta feita um SetParameterValues.
O CPE retorna o resultado dessa operação no SetParameterValuesResponse.
O ACS envia uma mensagem vazia ao equipamento informando que não
pretende invocar mais operações.
O CPE termina sessão e de seguida irá iniciar uma conexão do tipo “standby”
podendo vir a ser aproveitada novamente pelo ACS assim que pretenda.
2.5.8 Métodos RPC
O CPE WAN Management Protocol, utiliza um mecanismo bidireccional de chamada
de procedimentos remotos (RPC) que permite que uma aplicação utilize serviços de
uma outra aplicação a correr numa maquina remota. A aplicação que invoca a execução
dos procedimentos envia mensagens contendo indicação do procedimento a executar e
os dados necessários para a execução remota do programa. Uma vez executados, os
respectivos resultados serão enviados à aplicação que fez a chamada dos procedimentos.
O equipamento CPE deverá suportar uma série de métodos RPC, que poderão ser
invocados pelo servidor de auto-configuração ACS, por outro lado o próprio CPE
poderá invocar chamadas de procedimentos no ACS.
Na tabela 2 estão listados os métodos requeridos e opcionais existentes em ambos os
lados, conforme é especificado na norma TR-069 [5].
24
Tabela 2 – Métodos TR-069 [5].
2.5.8.1 Métodos CPE
A invocação destes métodos será unicamente da responsabilidade do ACS. Contudo
existe a excepção do método de Reboot, no qual, o próprio equipamento poderá em
situações pontuais decidir iniciar a execução própria desse método.
Os seguintes métodos correspondem as principais operações que podem ser executadas
em equipamentos TR-069.
GetRPCMethods
Este método será utilizado para conhecer o conjunto de métodos suportados pelo CPE.
A invocação deste método não terá qualquer tipo de argumentos e a resposta a sua
invocação será uma lista dos nomes dos métodos que o CPE incorpora.
25
SetParameterValues
Este método deverá ser chamado pelo ACS de modo a modificar o valor de um ou mais
parâmetros do CPE. A invocação deste método necessita ter como parâmetros de
entrada uma lista de pares nome – valor, onde o nome corresponderá ao nome do
parâmetro e o valor será o valor que se pretende atribuir ao parâmetro. A resposta a
invocação deste método informa se todos os parâmetros foram validados e aplicados
com sucesso ou todos os parâmetros foram validados mas alguns ainda não aplicados.
GetParameterValues
Este método deverá ser chamado pelo ACS de modo a obter o valor de um ou mais
parâmetros do CPE. A invocação deste método necessita ter como parâmetros de
entrada uma lista com os nomes dos parâmetros que pretendemos conhecer. A resposta
a sua invocação será uma lista de pares nome – valor contendo o nome e o respectivo
valor do parâmetro.
GetParameterNames
Este método deverá ser chamado pelo ACS de modo a obter os parâmetros acessíveis
em determinado CPE. A invocação deste método necessita ter como parâmetros de
entrada um apontador e um booleano. O apontador apontará para um nó da hierarquia
de parâmetros, correspondendo assim ao directório completo de um parâmetro ou uma
parte parcial desse directório. Caso o apontador seja vazio o apontador fica a apontar
para o topo da hierarquia.
Caso o booleano seja falso, a resposta deverá conter todos os parâmetros cujo nome
contenha o apontador passado. Caso verdadeiro a resposta deverá conter somente os nós
filho do apontador passado.
A resposta além de conter a informação dos nomes dos parâmetros que se pretendem
visualizar, contem também a indicação se o parâmetro é só de leitura ou de leitura e
escrita.
Reboot
Este método provoca que o CPE se reinicie. A invocação deste método é mais destinada
a ser feita do lado do CPE do que ACS, visto ser rara a situação em que após uma
alteração da configuração do CPE, seja necessário efectuar um Reboot ao equipamento,
e quando isso acontece o próprio CPE deverá executar o seu próprio Reboot. Contudo
opcionalmente poderá também ser implementado do lado do ACS.
O uso do método no entanto é bastante simples, unicamente é usado um parâmetro
vazio na sua invocação, sendo a resposta também vazia.
26
Factory Reset
Este método repõe a configuração do equipamento no estado em que foi definido pelo
fabricante.
Download
Este método deverá ser usado pelo ACS para fazer com que o CPE inicie determinado
download a partir de um URL designado pelo ACS. Para a invocação deste método são
necessários bastantes mais parâmetros comparativamente aos outros métodos ate aqui
falados, fazendo dele, um dos métodos mais complexos do CWMP. De entre todos
esses parâmetros convêm salientar os mais importantes, tais como uma indicação do
tipo de download que pretendemos que o CPE efectue (Firmware Upgrade Image, Web
Content ou Vendor Configuration File). Uma indicação do URL onde se encontra
localizado o ficheiro. Dados de utilizador e palavra-chave, necessários para autenticação
no servidor onde se encontra o ficheiro (caso não seja necessária autenticação, estes
dados deverão ser vazios). Deverá ser ainda especificado o nome e tamanho do ficheiro
em bytes.
Em resposta à invocação deste método o CPE indica se o Download foi ou não
completado e aplicado com sucesso, o momento em que iniciou o download e o
momento em que terminou essa acção.
2.5.8.2 Métodos ACS
A invocação destes métodos será unicamente da responsabilidade dos CPE.
Os seguintes métodos correspondem as principais operações que podem ser invocadas
num ACS.
GetRPCMethods
Este método será utilizado para conhecer o conjunto de métodos suportados pelo ACS.
A invocação deste método não terá qualquer tipo de argumentos e a resposta a sua
invocação será uma lista dos nomes dos métodos que o ACS incorpora.
Inform
27
O CPE deverá chamar este método para iniciar a sequência de transacção sempre que
seja necessário estabelecer sessão com o ACS.
A mensagem de inform deverá conter diversa informação tal como: Identificação do
equipamento (Organizationally Unique Identifier, serial number, Manufacturer,
ProductClass), listagem dos eventos ocorridos no equipamento durante o período de
tempo compreendido entre o ultimo inform e este. A data e hora actual, e ainda alguma
informação de configuração do equipamento.
TransferComplete
O CPE invoca este método de forma a informar o ACS que foi concluída uma
transferência de um download ou upload anteriormente inicializado após a invocação do
método de Download ou Upload.
A mensagem de TransferComplete conterá no seu conteúdo, indicação de sucesso ou
falha de determina acção e respectivos instantes de início e finalização da acção.
2.5.9 Integração de TR-069 com UPnP
Dado o âmbito de aplicação da tecnologia UPnP ser meramente local, os equipamentos
que suportam UPnP mas não suportem TR-069, não poderão ser configurados
remotamente.
Um componente intermediário entre os protocolos TR-069 e UPnP permitirá ao ACS
descobrir, controlar e receber eventos de dispositivos UPnP, mesmo que o servidor se
encontre numa rede diferente.
Este componente intermédio actuara como proxy e terá como objectivo traduzir a
comunicação utilizada por ambos os protocolos, a sua localização será dentro da rede
local e terá conexão com o ACS [30].
A implementação de uma proxy deste tipo trata-se de uma componente de software
desenvolvida em linguagem de programação Java, daí o único requisito necessário neste
dispositivo ser a existência da instalação de uma máquina virtual Java.
A arquitectura geral desta proxy pode ser observada na figura 5.
28
Figura 5 – Integração de TR-069 com UPnP.
O desenvolvimento do protocolo TR-064
TR
(LAN-side CPE Configuration Specification)
é o grande responsável pela possibilidade de integração destas duas tecnologias [31].
O TR-064 trata-se
se de um complemento ao protocolo TR-069
TR
e assenta em
especificações UPnP. Este protocolo permite que um gateway TR-069
TR
consiga auto
configurar e gerir equipamentos na sua LAN, possibilitando assim que um ACS TR-069
TR
consiga alcançar e gerir remotamente equipamentos (TR-069
(TR 069 ou não TR-069)
TR
nas
nossas LAN.
O TR-064
064 é dividido em duas grandes componentes, a arquitectura do dispositivo
disposit
UPnP, na qual define como o software do dispositivo consegue descobrir e apreender
dinamicamente as capacidades de outros pontos UPnP e assim controla-los
controla
e configuralos [21].. E um modelo que anuncia as suas próprias capacidades e funções.
Dado o facto de TR--064
064 assentar em especificações UPnP, permite uma estrutura de
gestão comum a vários fabricantes de dispositivos,
dispositi
facilitando a taarefa aos ISP.
Os ISP têm geralmente optado por protocolos padrão para suporte e activação de
d
serviços em todos os seus CPE.
CP No entanto, as ferramentas annteriormente existentes
para este fim apresentavam lacunas e complexidade e nenhuma delas provou ser
robusta, segura, bem definida e extensível o suficiente.
A solução para encontrar uma tecnologia que permitisse aos ISP interagir com os
subscritores residenciais e capaz de contornar as limitações apresentadas anteriormente,
passou por uma combinação normalizada entre as redes WAN e LAN.
A referida combinação foi possível após o aparecimento dos protocolos TR-069
TR
e TR064.
Dados dos CPE podem ser usados e manipulados por ambos os protocolos (TR-069
(TR
e
TR-064),
064), permitindo uma gestão de ponto a ponto sem qualquer tipo de
descontinuidades.
Por exemplo, num serviço VoIP os dados de configuração podem ser descarregados
para o dispositivo
positivo através de um ACS TR-069
TR 069 no ISP, enquanto uma aplicação TR-064
T
existente no PC do utilizador é responsável pala subscrição do serviço.
Caso o utilizador registar algum
a
problema com o serviço, poderá facilmente executar
localmente uma aplicação
aplica
TR-064
064 de forma a diagnosticar e restaurar o dispositivo. Por
29
outro lado a aplicação de gestão TR-069 será utilizada para monitorar o desempenho e a
disponibilidade do serviço.
2.5.10 Extensões TR-069
A popularidade desta tecnologia e a sua larga difusão impulsionou o aparecimento das
recentes normas e de relatórios técnicos.
Esses novos mecanismos e aperfeiçoamentos têm sido adicionados ao protocolo,
permitido uma melhoria e flexibilidade do seu acesso a ambientes de gestão.
De entre as diversas melhorias e extensões, podemos focar três bastante importantes. A
primeira trata-se de permitir que um gateway residencial num ambiente multifornecedor não utilize unicamente o ACS pré configurado, mas seja capaz de auto
descobrir o ACS ao qual foi subscrito, logo no momento em que este seja ligado.
Outra importante melhoria foi a possibilidade de diagnóstico a partir da utilização do
comando PING, permitindo que um ACS consiga testar a sua conectividade a pedido do
dispositivo. Dado o dispositivo poder ser gerido por múltiplos provedores de serviço,
poderá ocorrer congestionamento de conexões, daí a utilidade do procedimento PING.
A última extensão ao protocolo, que aqui é relatada corresponde à habilitação de
configuração de equipamentos LAN TR-069. Este caso de utilização do protocolo é
descrito no relatório técnico TR-111 [2] e especifica esta implementação em duas
situações distintas. A situação em que o ACS se encontra conectado primeiramente a
uma NAT antes de chegar ao dispositivo e no caso em que o ACS se encontra
directamente conectado ao dispositivo.
A figura 6 apresenta um ambiente DSL completo, desde o operador remoto e ISP até a
rede local do cliente. Esquematiza onde as diferentes normas e extensões especificadas
pelo BroadBand Forum são aplicadas.
30
Figura 6 – Conjunto de extensões pertencentes ao âmbito de aplicação do CWMP [9].
O BroadBand Forum possui no seu site uma lista detalhada [6] de todas as extensões e
relatórios técnicos que têm sido desenvolvidos e adicionados ao funcionamento do
CWMP.
31
32
3
Concepção da API_TR069
Com o desenvolvimento deste trabalho, pretende-se criar uma solução capaz de gerir
equipamentos TR-069 e isolar as especificações do protocolo de outros sistemas ou
utilizadores que virão a utilizar esta ferramenta.
Neste capítulo é apresentada a análise teórica realizada antes da implementação da
respectiva API, de forma a antever as respectivas necessidades e precauções a ter
durante o seu desenvolvimento; a correcta forma de implementação; e o funcionamento
e resultado final.
A análise foi baseada na especificação dos seguintes tópicos:
•
•
•
•
Requisitos;
Use cases;
Arquitectura;
Diagramas.
33
3.1 Requisitos da API_TR069
Este módulo de gestão foi desenhado para satisfazer e apresentar os seguintes requisitos
e funcionalidades:
BroadBand Forum Compliant
•
API TR-069 que implemente os respectivos métodos obrigatórios e
procedimentos referenciados pela norma TR-069 do BroadBand Forum.
Comunicação entre ACS e CPE
•
•
•
•
•
•
Suportar sessões SSL/TLS de HTTPs ou HTTP.
Suportar autenticação Básica e Digest.
Suportar simultaneamente múltiplas sessões TR-069 com equipamentos
diferentes.
Aproveitar sessões já criadas para novos pedidos de configuração.
Ter capacidade para invocar todos os métodos cuja implementação é obrigatória
por parte do CPE.
Além destes métodos, implementar também: Reboot, FactoryReset e
GetRPCMethods.
Configuração
•
•
Capacidade de reconfiguração e instalação de novo firmware nos CPE.
Configuração de serviços.
Permitir Recolha de Informação (Configuração; Falhas e Desempenho):
Configuração
•
•
Capacidade de recolha de informação de configuração de CPE.
Entrega de informação para cadastro externo dos CPE.
Falhas
•
Detecção de notificações de falhas.
Desempenho
•
Recolha de informação de desempenho.
34
Comunicação Externa
•
•
•
Capacidade para pedir autenticação de CPE a uma plataforma externa de
Controlo de Acessos.
Capacidade de notificação de plataformas externas de gestão de falhas.
Capacidade de fornecer informação para Cadastro de CPE.
3.2 Use Cases
Para melhor entender a interacção desta aplicação de gestão com o utilizador, são
descritas quatro aplicações desta API de gestão:
•
•
•
•
Invocação do método de Reboot
Invocação de um Upgrade de firmware
Configuração de um serviço num CPE
Detecção de Falha de Energia
3.2.1 Reboot
- Utilizador pede a API uma entidade CPE passando o ID do CPE;
- Utilizador Invoca método Reboot;
- CPE envia ao ACS a resposta ao método de Reboot;
- Caso a API receba a resposta de Reboot com sucesso:
- Utilizador recebe resposta;
- Utilizador Invoca novas operações ou termina Sessão;
- Caso contrário:
- Utilizador recebe mensagem de erro;
- Sessão é terminada;
35
3.2.2 Upgrade de Firmware
- Utilizador pede a API um elemento CPE passando o ID do CPE;
- Utilizador Invoca o método Download com o respectivo URL da localização do
ficheiro;
- O CPE envia ao ACS a resposta ao método de Download;
- Caso o download tenha sido feito e aplicado com sucesso:
- Utilizador recebe resposta;
- Utilizador Invoca novas operações ou termina Sessão;
- Caso contrário:
- Utilizador recebe resposta;
- É esperado que nas próximas sessões o CPE indique a ocorrência do evento de
TransferComplete e que envie uma mensagem TransferComplete informando se
o download foi executado e aplicado com sucesso ou ocorreu algum erro durante
o download;
- Utilizador Invoca novas operações ou termina Sessão;
3.2.3 Configuração de um Serviço
- Utilizador pede a API uma entidade CPE passando o ID do CPE;
- Utilizador Invoca método SetParameterValues indicando as respectivas alterações que
pretende efectuar na configuração do CPE;
- CPE envia ao ACS a resposta ao método;
- Caso as alterações tenham sido feitas e aplicadas com sucesso:
- Utilizador é notificado da alteração dos parâmetros e respectiva activação do
serviço;
- Utilizador Invoca novas operações ou termina Sessão;
- Caso alterações executadas mas não aplicadas:
36
- Utilizador é notificado das alterações e da necessidade de invocar o método
Reboot;
- Utilizador invoca método Reboot;
- Utilizador Invoca novas operações ou termina Sessão;
3.2.4 Detecção de Falha de Energia
- Uma vez que o CPE reinicie, ele invocará automaticamente o método Inform:
- Verificada a ocorrência do evento BOOT;
- Utilizador é notificado da ocorrência deste evento.
37
3.3 Arquitectura
A figura 7 corresponde à arquitectura da API_TR069. Esta figura apresenta a
comunicação entre as suas componentes internas,
internas e as diferentes comunicações com os
seus actores externos.
Figura 7 – Arquitectura e componentes da API_TR069.
3.3.1 Actores Externos
H. N. (Home Network)
Rede doméstica do Cliente.
CONF
Plataforma externa responsável pela invocação de pedidos de configuração no nosso
sistema.
38
DIAG
Plataforma externa responsável pela invocação de pedidos de diagnóstico no nosso
sistema.
CAD
Plataforma externa que poderá ser acedida pelo nosso sistema com o intuito de lhe
oferecer informação relativa ao cadastro de equipamentos.
G. F. (Gestão de Falhas)
Plataforma externa que poderá ser acedida pelo nosso sistema com o intuito de lhe
oferecer informação da ocorrência de falhas.
DES
Plataforma externa que poderá ser acedida pelo nosso sistema com o intuito de lhe
oferecer informação de desempenho.
C. A. (Controlo de Acesso)
Plataforma externa cujo nosso sistema recorrerá para resolver questões de Autenticação.
3.3.2 Componentes Internas
CPE Layer
Componente que irá atender os diferentes pedidos externos. A cada um destes pedidos,
irá criar uma nova entidade que permitirá comunicação TR-069 entre o nosso ACS e o
respectivo CPE.
Para que o CPE Layer consiga criar esta entidade é necessária informação de
identificação do CPE e uma sessão activa com este CPE.
39
A informação de identificação do CPE será passada pelo próprio utilizador externo,
enquanto a sessão será pedida à componente Session Manager, que se encarregará de a
criar e entregar ao nosso CPE Layer para que possa criar a referida entidade (fig. 7).
Esta camada tem como responsabilidade representar os equipamentos home gateway
perante o utilizador da API. Para cada sessão criada, será instanciada uma classe que
representará o equipamento. Através dessa classe o utilizador poderá invocar os
métodos TR-069.
Session Manager
Bloco responsável pela gestão do ciclo de vida das sessões.
Ele conterá o registo dos diferentes pedidos de sessão e de todas as sessões activas.
O Session Manager recorrerá a componente Connection Request para a criação da
referida sessão.
Além de criar sessões, este bloco também tem a capacidade de as terminar.
Connection Request
Bloco responsável por enviar pedidos de conexão aos respectivos CPE, actuando como
cliente HTTP.
A recepção de cada pedido de conexão no CPE provocará o envio de uma mensagem
TR-069 de retorno ao nosso ACS. Esta mensagem permitirá estabelecer uma sessão TR069 entre ele e o ACS.
Connection Manager
Este bloco detecta a chegada de todas as mensagens TR-069 direccionadas ao nosso
ACS.
O Connection Manager terá as funções de recorrer ao Session Manager a fim de
verificar se existe interesse nesta conexão ou passar ao ACS Layer a respectiva
mensagem caso ela se trate da invocação de um método ACS.
ACS Layer
Esta componente tem a função de processar as mensagens que correspondem a
invocações de métodos ACS, executar esses métodos e enviar a respectiva mensagem
de resposta, podendo vir a comunicar com sistemas externos.
40
3.4 Diagramas
Os seguintes diagramas de classes e de sequência foram criados com a ferramenta de
software gratuita JUDE/Community [20], utilizando a linguagem UML [43].
3.4.1 Diagrama de Classes
Os diagramas de classe facilitam a compreensão e elaboração da estrutura interna do
projecto. Neste diagrama são identificadas todas as classes e blocos que o sistema
necessita possuir e mostra a dependência e associação entre classes e como elas irão
comunicar entre si.
O correcto esboço de um diagrama de classes, além de facilitar a análise do
funcionamento do sistema, é também importante para que esse mesmo sistema seja
construído correcta e eficazmente. De seguida irá ser explicado passo a passo a
elaboração deste diagrama.
Analisando o sistema que pretendemos desenvolver, partimos do princípio que
necessitamos de um bloco responsável por criar entidades CPE, ele será denominado
por CPE FACTORY.
Assim sendo começaremos o nosso diagrama por este mesmo bloco (fig. 8).
Figura 8 – Diagrama de Classes da API_TR069.
41
Para o bloco CPE FACTORY conseguir criar a respectiva entidade CPE, necessitará
informação de identificação do equipamento e de uma sessão TR-069. Essa informação
de identificação será dada pela própria plataforma que está a utilizar esta API, no
entanto a sessão ser-lhe-á retornada mais tarde pelo bloco SESSION MANAGER.
Como se pode ver na figura 8, o CPE FACTORY estará associado a um bloco gestor de
sessões (SESSION MANAGER) no qual ele registará o pedido para obter uma sessão
com determinado equipamento. O SESSION MANAGER terá de ser capaz de agregar
múltiplas sessões e geri-las conforme as necessidades dos diferentes pedidos de
configuração e diagnóstico.
Este bloco não só terá conhecimento dos pedidos de sessão, mas também das sessões
que se encontram activas.
Os CPE TR-069 incorporam um servidor HTTP no qual poderá ser utilizado para
informar o respectivo CPE de que este ACS se pretende comunicar. Este serviço
encontra-se permanentemente à escuta e para se conseguir aceder é necessária a devida
autenticação.
Como se pode observar na figura 8, o SESSION MANAGER estará também associado
a um bloco responsável por enviar pedidos de conexão aos CPE que é o REQUEST
CLIENT e funcionará como um cliente HTTP.
Assim que seja registado no SESSION MANEGER o interesse de sessão com
determinado equipamento, será passado ao REQUEST CLIENT a informação
necessária para que o nosso sistema possa informar o respectivo CPE da necessidade de
se comunicar com ele.
A este pedido HTTP enviado pelo REQUEST CLIENT, o equipamento deverá
responder com uma outra mensagem que permitirá estabelecer uma sessão TR-069 entre
ele e o nosso ACS.
Necessitamos assim de um bloco que funcione como servidor HTTP, e que processe as
mensagens que cheguem. Esse bloco é o CONNECTION MANAGER e a ele
encontram-se associados os blocos ACS e SESSION MANAGER.
O bloco ACS (fig. 8) é o bloco que incorpora as operações TR-069 que podem ser
invocadas no nosso ACS pelos CPE.
Caso o pedido HTTP corresponda a uma invocação de um método do ACS, o
CONNECTION MANAGER recorre ao ACS para processar a respectiva operação e
criar/enviar a mensagem de resposta.
De seguida o CONNECTION MANAGER recorre ao SESSION MANAGER
informando que existe conexão com determinado equipamento.
42
Com esta informação o bloco SESSION MANAGER decide criar uma sessão, que
corresponde ao bloco SESSION (fig. 8) que simboliza uma sessão activa com
determinado equipamento.
Toda a comunicação entre CPE e ACS passará pelo bloco CONNECTION
MANAGER e por sua vez será entregue ao SESSION MANAGER que saberá
encaminhar essa informação à respectiva sessão.
Finalmente este diagrama fica concluído quando esta sessão que foi criada é retornada
ao bloco CPE FACTORY que a utilizará para criar o elemento CPE (fig. 8).
Este CPE incorpora as operações que poderão ser executadas no equipamento através do
protocolo de gestão remota TR-069.
Neste momento quem estiver a utilizar a API tem reunidas as condições necessárias
para gerir o respectivo equipamento remotamente.
Como podemos observar na figura 8, o bloco com maior número de associações é o
SESSION MANAGER, tratando-se assim um dos blocos mais complexos de toda a
API, sendo responsável pelas seguintes funções:
- Conhecer todos os pedidos de sessão;
- Conhecer todas as sessões activas;
- Passar pedidos ao REQUEST CLIENT;
- Criar sessões;
- Entregar as sessões criadas às respectivas entidades que realizaram os pedidos;
- Entregar mensagens de resposta às respectivas sessões;
- Terminar sessões.
3.4.2 Diagramas de Sequência
Pretende-se com os seguintes diagramas facilitar a compreensão do funcionamento e da
comunicação interna e externa do sistema. O primeiro diagrama ilustra o funcionamento
genérico da aplicação. Este diagrama corresponde ao caso de utilização da invocação do
método de Reboot sendo o diagrama semelhante para a invocação das restantes
operações TR-069.
Num segundo diagrama é apresentado o caso de utilização em que o utilizador da API
pretende executar um Download de firmware. Neste caso, como iremos observar no
43
respectivo diagrama, após a invocação desta operação além da resposta ao método de
Download o CPE envia uma mensagem de TransferComplete.
O último diagrama apresenta uma situação em que é detectada a chegada de uma
mensagem de inform (mensagem utilizada para o estabelecimento de sessões TR-069)
que não foi requerida. Esta situação é importante, dado que os CPE TR-069 poderem
enviar este tipo de mensagens em diversas situações.
3.4.2.1 Reboot
Figura 9 – Diagrama de Sequência referente a invocação do método de Reboot.
44
Este diagrama (fig. 9) corresponde a uma situação em que o utilizador da API pretende
invocar a operação de Reboot em determinado CPE. Este diagrama ilustra de forma
pormenorizada como a API reage a invocação da operação e chegada da respectiva
resposta.
Nesta situação são utilizados todos os blocos referidos no diagrama de classes, e segue a
seguinte sequência:
1 O CPE FACTORY recebe um pedido para criação de uma entidade CPE.
1.1 O CPE FACTORY pede uma sessão ao SESSION MANAGER.
1.1.1 O SESSION MANAGER procura pedidos de sessões.
1.1.2 O pedido é passado ao REQUEST CLIENT.
1.1.2.1 O REQUEST CLIENT pede ao equipamento para estabelecer conexão.
1.1.2.1.1 O equipamento envia mensagem Inform para estabelecer conexão.
1.1.2.1.1.1 O CONNECTION MANAGER recorre a entidade ACS para processar a
mensagem de Inform.
1.1.2.1.1.1.1 O ACS verifica de conhece o CPE através de uma plataforma externa de
controlo e acesso CA.
1.1.2.1.1.1.2 O ACS regista informação do CPE numa plataforma externa de Cadastro.
1.1.2.1.1.1.3 O ACS regista na plataforma externa Event Manager os eventos ocorridos
no CPE.
1.1.2.1.1.1.4 O ACS envia ao CPE a resposta a este Inform.
1.1.2.1.2 CPE envia POST vazio.
1.1.2.1.2.1 O CONNECTION MANAGER informa o SESSION MANAGER da
chegada de um POST vazio.
1.1.3 O SESSION MANAGER verifica a existência de pedido de sessão para este CPE.
1.1.4 O SESSION MANAGER cria uma sessão e retorna-a ao CPE FACTORY.
1.2 O CPE FACTORY cria uma entidade CPE.
1.3 O CPE FACTORY atribui à entidade CPE criada a sessão que lhe foi retornada pelo
SESSION MANAGER.
2 O utilizador invoca na entidade CPE a operação de Reboot.
2.1 A entidade CPE passa a mensagem de Reboot à sessão SESSION.
45
2.1.1 A sessão SESSION envia essa mensagem ao equipamento, de forma a invocar a
operação de Reboot no equipamento.
2.1.1.1 O CPE responde com uma mensagem de RebootResponse.
2.1.1.1.1 O CONNECTION MANAGER recebe esta mensagem e passa-a ao SESSION
MANAGER.
2.1.1.1.1.1 O SESSION MANAGER verifica se existe sessão activa com este
equipamento que enviou a mensagem.
2.1.1.1.1.2 O SESSION MANAGER entrega a resposta a sessão SESSION e o
utilizador é notificado do resultado da operação, podendo assim executar mais
operações caso pretenda.
3 O utilizador informa que não pretende executar mais operações no CPE.
3.1 O SESSION MANAGER é informado da necessidade de terminar determinada
sessão.
3.1.1 O SESSION MANAGER verifica se existe algum pedido para esta sessão.
3.1.2 O SESSION MANAGER elimina o registo desta sessão como activa e informa a
sessão SESSION que ela deverá terminar.
3.1.2.1 A sessão SESSION envia uma mensagem vazia ao equipamento.
3.1.2.1.1 O equipamento responde com uma mensagem vazia.
3.1.2.1.1.1 O CONNECTION MANAGER informa o SESSION MANAGER da
chegada de uma mensagem vazia vinda de determinado equipamento.
3.1.3 O SESSION MANAGER verifica a existência de pedido para sessão com este
equipamento.
3.1.4 Visto não existir pedido de sessão, o SESSION MANAGER informa a sessão
SESSION que ela deverá ser completamente terminada.
3.1.4 Sessão SESSION envia uma segunda mensagem vazia ao CPE e é terminada a
sessão TR-069.
46
3.4.2.2 Download de Firmware
Figura 10 – Diagrama de Sequência referente a invocação do método de Download.
Como se pode observar na figura 10, este diagrama mantêm-se bastante idêntico ao
diagrama anterior, a única diferença é o facto que após terminada a sessão, o CPE
inicializará o download da respectiva imagem de software.
Após ter iniciado o download e após um determinado período de tempo o CPE invocará
no nosso ACS o método de TransferComplete indicando o estado da operação de
download.
47
3.4.2.3 Inform não Requisitado
Figura 11 – Diagrama de Sequência de um Inform não Requisitado.
Este diagrama (fig. 11) demonstra como o sistema reage à chegada de um Inform que
não corresponde a um pedido de conexão realizado pelo Client Request. Este exemplo
pode por exemplo corresponder a um Inform periódico.
Uma vez chegado o Inform, este é atendido da mesma forma como qualquer outro.
Dado não existir registo de pedido para esta conexão no SESSION MANAGER, ele
próprio encarrega-se de terminar essa conexão.
Entretanto quando chegar este Inform, caso exista registo de um pedido de sessão para
este CPE, ele será aproveitado para a criação de uma sessão.
48
4
Implementação da API_TR069
De seguida irá ser descrita a metodologia adoptada na implementação de cada um dos
blocos identificados anteriormente, bem como as funcionalidades do sistema
desenvolvido. No documento anexo javadocs, pode ser analisada ao pormenor toda a
estrutura do projecto desenvolvido.
4.1 CPE_Entity
A entidade CPE é constituída por uma única classe que incorpora os métodos referentes
as diferentes operações TR-069 que podem ser invocadas nos CPE pela API_TR069. As
mensagens SOAP das operações são aqui criadas em formato XML e entregues à
respectiva sessão que se encarregará de as enviar ao respectivo equipamento. Em
retorno ao envio desta mensagem é recebida uma outra mensagem SOAP que
corresponde a resposta de execução desta operação no CPE. Dessa resposta é extraída a
informação relevante e entregue a quem esta a utilizar esta API.
49
4.2 CPE Factory
Este bloco como o seu próprio nome indica, é responsável por criar entidades CPE e
passa-las a quem as requisitou. É constituído também por uma única classe singleton (só
existirá uma instancia deste objecto) que incorpora o método getCpeInstance(), que tem
como função registar o pedido de sessão no Session Manager e espera até que lhe seja
entregue a respectiva sessão. De seguida cria uma nova entidade CPE e entrega-a a
quem a pediu.
4.3 Session Manager
Este bloco é considerado um dos mais complexos de toda a API_TR069. Como já foi
dito anteriormente, terá de ser capaz de registar e eliminar os diferentes pedidos de
sessões; criar/terminar sessões; entregar sessões; passar à respectiva sessão as
mensagens de resposta aos métodos invocados por ela; e eliminar o registo de sessões
activas.
Além da classe Session Manager, este bloco é constituído pelas classes Session
Manager Worker e Handle Connection Request.
A classe Session Manager é singleton e incorpora uma série de métodos como se pode
verificar no documento de anexo - java docs. De entre todos estes métodos, o método
responsável por desencadear o funcionamento base da API_TR069 é o getSession().
Este método regista o pedido de sessão para determinado CPE numa lista de pedidos.
Sempre que chega um novo elemento à fila de sessões criadas, é verificado se o pedido
criado anteriormente corresponde à sessão criada. Caso essa relação seja verdadeira,
essa sessão é removida da lista de sessões criadas e é entregue a entidade que a pediu.
O Session Manager Worker corresponde a uma Thread que é arrancada quando o
Session Manager é instanciado. Esta Thread tem como objectivo detectar a chegada de
novos pedidos de sessão à lista de pedidos e atende-los separadamente.
Dado o processo de criação de sessões ser bastante lento, esta criação é feita por threads
independentes. Para cada pedido de sessão distinto é lançada uma nova thread pelo
Session Manager Worker para a criação dessa sessão. Essas Threads são as Handle
Connection Request e recorrem ao Request Client para enviar os pedidos de sessão aos
CPE, morrendo de seguida.
50
4.4 Request Client
Como o nome indica, este bloco funciona como um cliente que envia pedidos. É
constituído pela classe Request Client e incorpora o método sendRequest(). Este método
tem a função enviar um pedido HTTP (GET) a um determinado CPE utilizando
autenticação do tipo digest. Este pedido será direccionado para um URL configurado
previamente no CPE para receber pedidos de conexão. Em resposta à chegada deste
pedido de conexão, o CPE enviará um POST HTTP contendo uma mensagem SOAP
com o método de Inform usado para estabelecer sessões TR-069.
Para a criação deste cliente HTTP foi utilizada a API commons-httpclient.jar da apache
que incorpora uma série de funcionalidades direccionadas a implementação de clientes
HTTP.
4.5 Connection Manager
Este bloco é constituído por duas classes, Connection Manager e a Handle Request.
A classe Connection Manager implementa um servidor HTTP que se encontra à escuta
de pedidos.
Para a implementação deste servidor foi aproveitado o facto da versão 6 do JDK da Sun
já possuir uma classe HttpServer fácil de utilizar e implementar, não sendo necessário
utilizar uma API externa.
Para cada pedido que chegue a este servidor, é lançado o método handle(HttpExchange)
com um pacote de dados que permite comunicação HTTP com a entidade que efectuou
o pedido.
Esta classe é do tipo singleton e é lançada assim que a API_TR069 seja iniciada.
Dado poderem chegar múltiplos pedidos HTTP simultaneamente, e para não
sobrecarregar a Thread que se encontra a correr este serviço HTTP, optou-se por lançar
uma Thread distinta (Handle Request) para processar separadamente cada um destes
pedidos HTTP.
Esta Thread Handle Request é lançada dentro do método handle(HttpExchange) do
Connection Manager e tem como objectivo processar estes pedidos.
Os pedidos enviados pelos CPE podem ser de três tipos:
•
Post referente a invocação de um método ACS.
51
•
•
Post vazio.
Post desconhecido.
Caso o pedido se trate de uma invocação de um dos métodos ACS, esta Thread irá
recorrer ao ACS_Entity, onde irá executar o respectivo método e enviar a respectiva
mensagem de resposta ao CPE.
Caso se trate de um POST vazio, o Handle Request informará o Session Manager da
chegada deste POST e ai o Session Manager saberá qual o propósito da chegada desse
POST.
Caso se trate de um pedido desconhecido, é lançada uma excepção e uma mensagem de
ERRO.
4.6 ACS_Entity
A entidade ACS é constituída por uma única classe que incorpora os métodos referentes
às diferentes operações TR-069 que os CPE podem invocar no nosso ACS.
Além de executar essas operações, o ACS_Entity também tem as tarefas de criar e
enviar as respectivas mensagens SOAP de resposta em formato XML.
4.7 Interfaces Externas
Além destes blocos principais da API_TR069, também foram definidas três interfaces e
respectivas classes que permitirão à API comunicar para o exterior. São elas CA, Event
Manager e Cadastro.
A interface CA permite que a API_TR069, recorra a um serviço de controlo de acessos
externo para garantir a autenticação dos CPE no ACS.
A API_TR069 entrega informação de identificação do CPE ao CA e recebe uma
notificação acerca deste CPE.
A API_TR069 entregará ao Event Manager estruturas de eventos ocorridos nos
respectivos CPE. O objectivo do Event Manager é conter o registo dos eventos relativos
aos CPE pertencentes ao domínio de gestão.
52
Outro sistema externo que a API_TR069 poderá recorrer, será o de Cadastro. Este
sistema reunirá informação acerca dos clientes que se comunicam com este sistema.
A API_TR069 entrega ao Cadastro diversas informações dos CPE, tais como:
Fabricante; OUI (identificador único); tipo de CPE; Serial Number.
Estas três interfaces recebem da API_TR069 os dados necessários para que elas possam
vir a ser usadas caso seja pretendido.
53
54
5
Testes
Neste capítulo são apresentados os relatórios que resultaram de algumas situações de
teste realizadas. Estes testes serviram não só para verificar o correcto funcionamento da
API, detecção de bugs e falhas no sistema, mas também para provar que a API_TR069
suporta os requisitos que foram definidos durante a sua concepção.
Para isso, foi criado um ambiente de testes TR-069, onde o nosso ACS actuou como
entidade gestora de dois CPE.
Foram também criadas e adicionadas três novas classes java ao projecto, permitindo
assim efectuar os respectivos testes.
Classes pertencentes ao ambiente de testes:
ClassPrincipal – Classe responsável por iniciar o sistema de log, iniciar o serviço
HTTP do ConnectionManager e permitir que o utilizador desta API introduza a
identificação dos CPE que pretende gerir. De seguida é lançado um Thread (Utilizador)
para cada pedido de configuração, simulando assim diferentes pedidos de sessão
efectuados por diferentes entidades.
Utilizador – Thread que pede uma nova entidade CPE ao CPE Factory, para com ela
poder invocar os métodos TR-069 no CPE.
Menu – Esta classe é responsável por entregar ao utilizador da API um menu de
operações TR-069, permitindo assim uma fácil interacção entre o utilizador e a
API_TR069.
55
Estes relatórios de teste, correspondem aos relatórios de mensagens de logs geradas pela
própria API_TR069, no entanto, dado estes relatórios serem bastante extensos, optou-se
por apresentar filtros dos relatórios originais.
Os relatórios originais destes relatórios aqui apresentados poderão ser consultados no
documento anexo “AnexoRelatóriosDeTeste”.
Como poderá ser verificado nos relatórios originais o procedimentos de criação e
entrega de sessões, e os de pedidos e entrega das entidades CPE mantêm-se sempre
iguais independentemente das operações que se pretendam efectuar. Logo no primeiro
teste (Reboot) será explicado detalhadamente o funcionamento integral da API, ao
contrário dos testes seguintes que terão uma análise mais simplificada.
De seguida são apresentados relatórios referentes a cinco situações de teste distintas.
5.1 Reboot
0 INFO [2009-08-19 14:45:34,028:main] tr069.testes.ClassPrincipal - Sistema de logs iniciado!!!
5 INFO [2009-08-19 14:45:34,033:main] tr069.testes.ClassPrincipal - ********************
7 INFO [2009-08-19 14:45:34,035:main] tr069.testes.ClassPrincipal - *
*
9 INFO [2009-08-19 14:45:34,037:main] tr069.testes.ClassPrincipal - *
*
10 INFO [2009-08-19 14:45:34,038:main] tr069.testes.ClassPrincipal - * Modulo Gestao
*
12 INFO [2009-08-19 14:45:34,040:main] tr069.testes.ClassPrincipal - *
*
14 INFO [2009-08-19 14:45:34,042:main] tr069.testes.ClassPrincipal - *
TR069
*
16 INFO [2009-08-19 14:45:34,044:main] tr069.testes.ClassPrincipal - *
*
18 INFO [2009-08-19 14:45:34,046:main] tr069.testes.ClassPrincipal - *
*
20 INFO [2009-08-19 14:45:34,048:main] tr069.testes.ClassPrincipal - *
*
22 INFO [2009-08-19 14:45:34,050:main] tr069.testes.ClassPrincipal - *
V1.0 *
24 INFO [2009-08-19 14:45:34,052:main] tr069.testes.ClassPrincipal - ********************
35 INFO [2009-08-19 14:45:34,063:main] tr069.api_tr069.ConnectionManager - Start Connection
Manager
153 INFO [2009-08-19 14:45:34,181:main] tr069.testes.ClassPrincipal - Menu Principal
155 INFO [2009-08-19 14:45:34,183:main] tr069.testes.ClassPrincipal - 1 - Get CPE
157 INFO [2009-08-19 14:45:34,185:main] tr069.testes.ClassPrincipal - 2 - Configurar CPEs
160 INFO [2009-08-19 14:45:34,188:main] tr069.testes.ClassPrincipal - 0 - Sair
162 INFO [2009-08-19 14:45:34,190:main] tr069.testes.ClassPrincipal 1200 INFO [2009-08-19 14:45:35,228:main] tr069.testes.ClassPrincipal - 1
1202 INFO [2009-08-19 14:45:35,230:main] tr069.testes.ClassPrincipal - Escolha o Id do CPE TR069
que pretende configurar
1203 INFO [2009-08-19 14:45:35,231:main] tr069.testes.ClassPrincipal - 1 - 192.168.125.78
1204 INFO [2009-08-19 14:45:35,232:main] tr069.testes.ClassPrincipal - 2 - 192.168.125.80
1205 INFO [2009-08-19 14:45:35,233:main] tr069.testes.ClassPrincipal 1957 INFO [2009-08-19 14:45:35,985:main] tr069.testes.ClassPrincipal - 1
1957 INFO [2009-08-19 14:45:35,985:main] tr069.testes.ClassPrincipal - Menu Principal
1958 INFO [2009-08-19 14:45:35,986:main] tr069.testes.ClassPrincipal - 1 - Get CPE
1958 INFO [2009-08-19 14:45:35,986:main] tr069.testes.ClassPrincipal - 2 - Configurar CPEs
1958 INFO [2009-08-19 14:45:35,986:main] tr069.testes.ClassPrincipal - 0 - Sair
1959 INFO [2009-08-19 14:45:35,987:main] tr069.testes.ClassPrincipal 2827 INFO [2009-08-19 14:45:36,855:main] tr069.testes.ClassPrincipal - 2
6958 INFO [2009-08-19 14:45:40,986:Thread-3] tr069.testes.Utilizador - Start new utilizador
6962 INFO [2009-08-19 14:45:40,990:Thread-3] tr069.api_tr069.CpeFactory - Start CpeFactory
6964 INFO [2009-08-19 14:45:40,992:Thread-3] tr069.api_tr069.CpeFactory - Entrou no Cpe Factory
7020 INFO [2009-08-19 14:45:41,048:Thread-3] tr069.api_tr069.SessionManager - Start Session Manager
7027 INFO [2009-08-19 14:45:41,055:Thread-3] tr069.api_tr069.SessionManager - Registou pedido de
Sessao para o CPE com IP: 192.168.125.78
7079 INFO [2009-08-19 14:45:41,107:Thread-4] tr069.api_tr069.SessionManagerWorker - Start Session
Manager Worker
8096 INFO [2009-08-19 14:45:42,124:Thread-5] tr069.api_tr069.HandleConnectionRequest - Entrou no
Handler Connection Request
8097 DEBUG [2009-08-19 14:45:42,125:Thread-5] tr069.api_tr069.HandleConnectionRequest - Vai atender
pedido:::192.168.125.78
8120 INFO [2009-08-19 14:45:42,148:Thread-5] tr069.api_tr069.RequestClient - Entrou no
RequestClient
9568 DEBUG [2009-08-19 14:45:43,596:Thread-5] commons.httpclient.HttpConnection - Open connection to
192.168.125.78:51005
9987 INFO [2009-08-19 14:45:44,015:Thread-2] tr069.api_tr069.ConnectionManager - Chegou um novo
Post HTTP ao Connection Manager
56
9997 INFO [2009-08-19 14:45:44,025:Thread-7] tr069.api_tr069.HandleRequest - Entrou no Handle
Request
10012 INFO [2009-08-19 14:45:44,040:Thread-5] tr069.api_tr069.HandleConnectionRequest - Morreu
HandleConnectionRequest
15340 INFO [2009-08-19 14:45:49,368:Thread-7] tr069.api_tr069.HandleRequest - Chegou Inform vindo
de: 192.168.125.78
15349 INFO [2009-08-19 14:45:49,377:Thread-7] tr069.api_tr069.CA - CPE conhecido
15353 INFO [2009-08-19 14:45:49,381:Thread-7] tr069.api_tr069.Cadastro - Manufacturer: THOMSON
15354 INFO [2009-08-19 14:45:49,382:Thread-7] tr069.api_tr069.Cadastro - OUI: 00147F
15356 INFO [2009-08-19 14:45:49,384:Thread-7] tr069.api_tr069.Cadastro - ProductClass: SpeedTouch
780
15357 INFO [2009-08-19 14:45:49,385:Thread-7] tr069.api_tr069.Cadastro - SerialNumber: CP0610JT7YB
15370 INFO [2009-08-19 14:45:49,398:Thread-7] tr069.api_tr069.EventManager - EVENTO: CONNECTION
REQUEST, A sessao foi estabelcida apos um pedido realizado pelo ACS
15372 INFO [2009-08-19 14:45:49,400:Thread-7] tr069.api_tr069.ACS_Entity - Vai enviar InformResponse
15527 INFO [2009-08-19 14:45:49,555:Thread-2] tr069.api_tr069.ConnectionManager - Chegou um novo
Post HTTP ao Connection Manager
15530 INFO [2009-08-19 14:45:49,558:Thread-8] tr069.api_tr069.HandleRequest - Entrou no Handle
Request
15532 INFO [2009-08-19 14:45:49,560:Thread-8] tr069.api_tr069.HandleRequest - Chegou Post Vazio
vindo de: 192.168.125.78
15536 INFO [2009-08-19 14:45:49,564:Thread-8] tr069.api_tr069.SessionManager - Existe Pedido de
Sessao para o CPE com o IP: 192.168.125.78
15538 INFO [2009-08-19 14:45:49,566:Thread-8] tr069.api_tr069.SessionManager - Vai ser criada uma
Sessao TR069 com o CPE com o IP: 192.168.125.78
15608 INFO [2009-08-19 14:45:49,636:Thread-3] tr069.api_tr069.CpeFactory - Sessao
recebida:192.168.125.78
15613 INFO [2009-08-19 14:45:49,641:Thread-3] tr069.api_tr069.CPE_Entity - Foi criada uma nova
entidade CPE
15615 INFO [2009-08-19 14:45:49,643:Thread-3] tr069.api_tr069.CpeFactory - Criou Entidade CPE com a
respectiva Sessao TR069 com o host 192.168.125.78
15617 INFO [2009-08-19 14:45:49,645:Thread-3] tr069.api_tr069.CpeFactory - Entregou Entidade CPE ao
utilizador da API
15620 INFO [2009-08-19 14:45:49,648:Thread-3] tr069.testes.MenuTR069 15621 INFO [2009-08-19 14:45:49,649:Thread-3] tr069.testes.MenuTR069 - Menu Operacoes TR069
15622 INFO [2009-08-19 14:45:49,650:Thread-3] tr069.testes.MenuTR069 - 1 - Set Parameter Values
15624 INFO [2009-08-19 14:45:49,652:Thread-3] tr069.testes.MenuTR069 - 2 - Get Parameter Values
15626 INFO [2009-08-19 14:45:49,654:Thread-3] tr069.testes.MenuTR069 - 3 - Get Parameter Names
15627 INFO [2009-08-19 14:45:49,655:Thread-3] tr069.testes.MenuTR069 - 4 - Reboot
15628 INFO [2009-08-19 14:45:49,656:Thread-3] tr069.testes.MenuTR069 - 5 - Download
15629 INFO [2009-08-19 14:45:49,657:Thread-3] tr069.testes.MenuTR069 - 6 - Factory Reset
15631 INFO [2009-08-19 14:45:49,659:Thread-3] tr069.testes.MenuTR069 - 7 - GetRPCMethods
15632 INFO [2009-08-19 14:45:49,660:Thread-3] tr069.testes.MenuTR069 - 0 - Terminar Sessao
15633 INFO [2009-08-19 14:45:49,661:Thread-3] tr069.testes.MenuTR069 18887 INFO [2009-08-19 14:45:52,915:Thread-3] tr069.testes.MenuTR069 - 4
18889 INFO [2009-08-19 14:45:52,917:Thread-3] tr069.testes.MenuTR069 - Operacao Reboot
18943 INFO [2009-08-19 14:45:52,971:Thread-2] tr069.api_tr069.ConnectionManager - Chegou um novo
Post HTTP ao Connection Manager
18945 INFO [2009-08-19 14:45:52,973:Thread-9] tr069.api_tr069.HandleRequest - Entrou no Handle
Request
18959 INFO [2009-08-19 14:45:52,987:Thread-9] tr069.api_tr069.HandleRequest - Chegou RebootResponse
vindo de: 192.168.125.78
18964 DEBUG [2009-08-19 14:45:52,992:Thread-3] tr069.api_tr069.CPE_Entity - Reboot Executado com
Sucesso
18970 INFO [2009-08-19 14:45:52,998:Thread-3] tr069.testes.MenuTR069 18971 INFO [2009-08-19 14:45:52,999:Thread-3] tr069.testes.MenuTR069 18973 INFO [2009-08-19 14:45:53,001:Thread-3] tr069.testes.MenuTR069 - Menu Operacoes TR069
18974 INFO [2009-08-19 14:45:53,002:Thread-3] tr069.testes.MenuTR069 - 1 - Set Parameter Values
18974 INFO [2009-08-19 14:45:53,002:Thread-3] tr069.testes.MenuTR069 - 2 - Get Parameter Values
18975 INFO [2009-08-19 14:45:53,003:Thread-3] tr069.testes.MenuTR069 - 3 - Get Parameter Names
18976 INFO [2009-08-19 14:45:53,004:Thread-3] tr069.testes.MenuTR069 - 4 - Reboot
18976 INFO [2009-08-19 14:45:53,004:Thread-3] tr069.testes.MenuTR069 - 5 - Download
18977 INFO [2009-08-19 14:45:53,005:Thread-3] tr069.testes.MenuTR069 - 6 - Factory Reset
18978 INFO [2009-08-19 14:45:53,006:Thread-3] tr069.testes.MenuTR069 - 7 - GetRPCMethods
18978 INFO [2009-08-19 14:45:53,006:Thread-3] tr069.testes.MenuTR069 - 0 - Terminar Sessao
18979 INFO [2009-08-19 14:45:53,007:Thread-3] tr069.testes.MenuTR069 20526 INFO [2009-08-19 14:45:54,554:Thread-3] tr069.testes.MenuTR069 - 0
20527 INFO [2009-08-19 14:45:54,555:Thread-3] tr069.testes.MenuTR069 - Terminar Sessao
20531 DEBUG [2009-08-19 14:45:54,559:Thread-3] tr069.api_tr069.SessionManager - Removeu pedido
20531 INFO [2009-08-19 14:45:54,559:Thread-3] tr069.api_tr069.SessionManager - Existem 0 Pedidos
para atender
20534 INFO [2009-08-19 14:45:54,562:Thread-3] tr069.api_tr069.SessionManager - Sessao foi Terminada
Este teste serviu para testar o correcto funcionamento do método de Reboot.
Como se pode observar no relatório, para testar a API_TR069 começamos por indicar
na Thread de testes ClassPrincipal (main) que se pretende configurar o CPE com o IP
192.168.125.78, sendo lançada uma outra Thread de testes Thread Utilizador (Thread 3)
que pede ao CPE Factory uma entidade CPE. O Cpe Factory encarrega-se por registar
um novo pedido para uma sessão TR069 no SessionManager e aguarda que ela lhe seja
entregue para que possa criar e devolver a entidade CPE ao Utilizador.
57
O SessionManagerWorker (Thread 4) detecta o pedido para uma nova sessão e lança
uma nova thread (Thread 5) para que o RequestClient envie o pedido de conexão ao
respectivo equipamento.
O CPE responde com um POST HTTP contendo a mensagem de Inform, que é recebida
pelo ConnectionManager. A Thread ConnectionManager (Thread 2) detecta a chegada
do novo POST e lança uma Thread HandleRequest (Thread 7) para atender e processar
esse mesmo POST.
Este HandleRequest (Thread 7) recorre a entidade CA a fim de determinar se conhece o
CPE, regista informação de identificação e eventos no Cadastro e EventManager
respectivamente. De seguida envia ao CPE a respectiva mensagem de InformResponse e
morre.
O ConnectionManager (Thread 2) detecta a chegada de um POST vazio e lança outro
HandleRequest (Thread 8) para atender este novo POST.
Este Thread (Thread 8) informa o SessionManager da chegada de um POST vazio,
decide criar uma nova sessão, entrega-a a entidade que a pediu (Thread 3) e de seguida
morre.
Com esta sessão o CPE Factory (Thread 3) cria a entidade CPE e passa-a ao Utilizador,
que instancia a classe de testes Menu com a entidade CPE que lhe foi entregue e opta
pela operação de Reboot.
De seguida o ConnectionManager (Thread 2) detecta a chegada de um novo POST
contendo a mensagem de RebootResponse, e lança uma nova Thread HandleRequest
(Thread 9) para atender este POST.
Para terminar o teste o utilizador opta pela opção de terminar a sessão, e o
SessionManager encarrega-se por fechar a sessão caso não encontre nenhum pedido de
interesse para esta sessão.
De notar que o Reboot só é realizado quando a sessão TR-069 for terminada.
5.2 Factory Reset
19389 INFO [2009-08-20
19390 INFO [2009-08-20
19392 INFO [2009-08-20
19394 INFO [2009-08-20
19396 INFO [2009-08-20
19397 INFO [2009-08-20
19399 INFO [2009-08-20
19401 INFO [2009-08-20
19402 INFO [2009-08-20
19404 INFO [2009-08-20
23149 INFO [2009-08-20
23149 INFO [2009-08-20
23192 INFO [2009-08-20
Post HTTP ao Connection
23193 INFO [2009-08-20
Request
20:39:56,172:Thread-3]
20:39:56,173:Thread-3]
20:39:56,175:Thread-3]
20:39:56,177:Thread-3]
20:39:56,179:Thread-3]
20:39:56,180:Thread-3]
20:39:56,182:Thread-3]
20:39:56,184:Thread-3]
20:39:56,185:Thread-3]
20:39:56,187:Thread-3]
20:39:59,932:Thread-3]
20:39:59,932:Thread-3]
20:39:59,975:Thread-2]
Manager
20:39:59,976:Thread-9]
tr069.testes.MenuTR069 - Menu Operacoes TR069
tr069.testes.MenuTR069 - 1 - Set Parameter Values
tr069.testes.MenuTR069 - 2 - Get Parameter Values
tr069.testes.MenuTR069 - 3 - Get Parameter Names
tr069.testes.MenuTR069 - 4 - Reboot
tr069.testes.MenuTR069 - 5 - Download
tr069.testes.MenuTR069 - 6 - Factory Reset
tr069.testes.MenuTR069 - 7 - GetRPCMethods
tr069.testes.MenuTR069 - 0 - Terminar Sessao
tr069.testes.MenuTR069 tr069.testes.MenuTR069 - 6
tr069.testes.MenuTR069 - Operacao Factory Reset
tr069.api_tr069.ConnectionManager - Chegou um novo
tr069.api_tr069.HandleRequest - Entrou no Handle
58
23208 INFO [2009-08-20 20:39:59,991:Thread-9] tr069.api_tr069.HandleRequest - Chegou
cwmp:FactoryResetResponse vindo de: 192.168.125.77
23212 DEBUG [2009-08-20 20:39:59,995:Thread-3] tr069.api_tr069.CPE_Entity - FactoryReset Executado
com Sucesso
23218 INFO [2009-08-20 20:40:00,001:Thread-3] tr069.testes.MenuTR069 23218 INFO [2009-08-20 20:40:00,001:Thread-3] tr069.testes.MenuTR069 23219 INFO [2009-08-20 20:40:00,002:Thread-3] tr069.testes.MenuTR069 - Menu Operacoes TR069
23219 INFO [2009-08-20 20:40:00,002:Thread-3] tr069.testes.MenuTR069 - 1 - Set Parameter Values
23220 INFO [2009-08-20 20:40:00,003:Thread-3] tr069.testes.MenuTR069 - 2 - Get Parameter Values
23220 INFO [2009-08-20 20:40:00,003:Thread-3] tr069.testes.MenuTR069 - 3 - Get Parameter Names
23220 INFO [2009-08-20 20:40:00,003:Thread-3] tr069.testes.MenuTR069 - 4 - Reboot
23221 INFO [2009-08-20 20:40:00,004:Thread-3] tr069.testes.MenuTR069 - 5 - Download
23221 INFO [2009-08-20 20:40:00,004:Thread-3] tr069.testes.MenuTR069 - 6 - Factory Reset
23221 INFO [2009-08-20 20:40:00,004:Thread-3] tr069.testes.MenuTR069 - 7 - GetRPCMethods
23222 INFO [2009-08-20 20:40:00,005:Thread-3] tr069.testes.MenuTR069 - 0 - Terminar Sessao
23222 INFO [2009-08-20 20:40:00,005:Thread-3] tr069.testes.MenuTR069 25363 INFO [2009-08-20 20:40:02,146:Thread-3] tr069.testes.MenuTR069 - 0
25363 INFO [2009-08-20 20:40:02,146:Thread-3] tr069.testes.MenuTR069 - Terminar Sessao
25376 DEBUG [2009-08-20 20:40:02,159:Thread-3] tr069.api_tr069.SessionManager - Removeu pedido
25377 INFO [2009-08-20 20:40:02,160:Thread-3] tr069.api_tr069.SessionManager - Existem 0 Pedidos
para atender
25381 INFO [2009-08-20 20:40:02,164:Thread-3] tr069.api_tr069.SessionManager - Sessao foi Terminada
Relativamente ao teste anterior a única diferença foi o facto de o utilizador optar pela
operação de Factory Reset. Novamente o equipamento só repõe as configurações de
fabrico quando a sessão TR-069 é terminada.
5.3 Download
18480 INFO [2009-08-19 17:45:12,710:Thread-3]
18481 INFO [2009-08-19 17:45:12,711:Thread-3]
18482 INFO [2009-08-19 17:45:12,712:Thread-3]
18484 INFO [2009-08-19 17:45:12,714:Thread-3]
18485 INFO [2009-08-19 17:45:12,715:Thread-3]
18486 INFO [2009-08-19 17:45:12,716:Thread-3]
18487 INFO [2009-08-19 17:45:12,717:Thread-3]
18488 INFO [2009-08-19 17:45:12,718:Thread-3]
18489 INFO [2009-08-19 17:45:12,719:Thread-3]
18490 INFO [2009-08-19 17:45:12,720:Thread-3]
20605 INFO [2009-08-19 17:45:14,835:Thread-3]
20610 INFO [2009-08-19 17:45:14,840:Thread-3]
20611 INFO [2009-08-19 17:45:14,841:Thread-3]
20612 INFO [2009-08-19 17:45:14,842:Thread-3]
20614 INFO [2009-08-19 17:45:14,844:Thread-3]
20615 INFO [2009-08-19 17:45:14,845:Thread-3]
21783 INFO [2009-08-19 17:45:16,013:Thread-3]
21785 INFO [2009-08-19 17:45:16,015:Thread-3]
21786 INFO [2009-08-19 17:45:16,016:Thread-3]
34389 INFO [2009-08-19 17:45:28,619:Thread-3]
http://192.168.89.45:80/ZZOHAA62F5.bin
34391 INFO [2009-08-19 17:45:28,621:Thread-3]
38616 INFO [2009-08-19 17:45:32,846:Thread-3]
38617 INFO [2009-08-19 17:45:32,847:Thread-3]
41044 INFO [2009-08-19 17:45:35,274:Thread-3]
41045 INFO [2009-08-19 17:45:35,275:Thread-3]
56411 INFO [2009-08-19 17:45:50,641:Thread-3]
56414 INFO [2009-08-19 17:45:50,644:Thread-3]
67754 INFO [2009-08-19 17:46:01,984:Thread-3]
67756 INFO [2009-08-19 17:46:01,986:Thread-3]
70572 INFO [2009-08-19 17:46:04,802:Thread-3]
70776 INFO [2009-08-19 17:46:05,006:Thread-2]
Post HTTP ao Connection Manager
70779 INFO [2009-08-19 17:46:05,009:Thread-9]
Request
70795 INFO [2009-08-19 17:46:05,025:Thread-9]
DownloadResponse vindo de: 192.168.125.78
70796 DEBUG [2009-08-19 17:46:05,026:Thread-3]
Sucesso
70808 INFO [2009-08-19 17:46:05,038:Thread-3]
nem Aplicado
70809 INFO [2009-08-19 17:46:05,039:Thread-3]
70809 INFO [2009-08-19 17:46:05,039:Thread-3]
70809 INFO [2009-08-19 17:46:05,039:Thread-3]
70809 INFO [2009-08-19 17:46:05,039:Thread-3]
70810 INFO [2009-08-19 17:46:05,040:Thread-3]
70810 INFO [2009-08-19 17:46:05,040:Thread-3]
70810 INFO [2009-08-19 17:46:05,040:Thread-3]
70811 INFO [2009-08-19 17:46:05,041:Thread-3]
70811 INFO [2009-08-19 17:46:05,041:Thread-3]
70811 INFO [2009-08-19 17:46:05,041:Thread-3]
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
-
Menu Operacoes TR069
1 - Set Parameter Values
2 - Get Parameter Values
3 - Get Parameter Names
4 - Reboot
5 - Download
6 - Factory Reset
7 - GetRPCMethods
0 - Terminar Sessao
5
Operacaoo Download
Escolha o tipo de Download
1 - Firmware Upgrade Image
2 - Web Content
3 - Vendor Configuration File
1
Introduza os seguintes dados:
URL
tr069.testes.MenuTR069 - Username
tr069.testes.MenuTR069 - tr069
tr069.testes.MenuTR069 - Password
tr069.testes.MenuTR069 - ola
tr069.testes.MenuTR069 - Tamanho do ficheiro
tr069.testes.MenuTR069 - 32000000
tr069.testes.MenuTR069 - Nome do ficheiro
tr069.testes.MenuTR069 - ZZOHAA62F5.bin
tr069.testes.MenuTR069 - Tempo de Atraso
tr069.testes.MenuTR069 - 0
tr069.api_tr069.ConnectionManager - Chegou um novo
tr069.api_tr069.HandleRequest - Entrou no Handle
tr069.api_tr069.HandleRequest - Chegou
tr069.api_tr069.CPE_Entity - Download Executado com
tr069.testes.MenuTR069 - Download ainda nao Terminado
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
tr069.testes.MenuTR069
59
-
Menu Operacoes TR069
1 - Set Parameter Values
2 - Get Parameter Values
3 - Get Parameter Names
4 - Reboot
5 - Download
6 - Factory Reset
7 - GetRPCMethods
70811 INFO [2009-08-19 17:46:05,041:Thread-3] tr069.testes.MenuTR069 - 0 - Terminar Sessao
70812 INFO [2009-08-19 17:46:05,042:Thread-3] tr069.testes.MenuTR069 74311 INFO [2009-08-19 17:46:08,541:Thread-3] tr069.testes.MenuTR069 - 0
74313 INFO [2009-08-19 17:46:08,543:Thread-3] tr069.testes.MenuTR069 - Terminar Sessao
74317 DEBUG [2009-08-19 17:46:08,547:Thread-3] tr069.api_tr069.SessionManager - Removeu pedido
74318 INFO [2009-08-19 17:46:08,548:Thread-3] tr069.api_tr069.SessionManager - Existem 0 Pedidos
para atender
74323 INFO [2009-08-19 17:46:08,553:Thread-3] tr069.api_tr069.SessionManager - Sessao foi Terminada
94422 INFO [2009-08-19 17:46:28,652:Thread-2] tr069.api_tr069.ConnectionManager - Chegou um novo
Post HTTP ao Connection Manager
98032 INFO [2009-08-19 17:46:32,262:Thread-11] tr069.api_tr069.HandleRequest - Chegou Inform vindo
de: 192.168.125.78
98034 INFO [2009-08-19 17:46:32,264:Thread-11] tr069.api_tr069.CA - CPE conhecido
98037 INFO [2009-08-19 17:46:32,267:Thread-11] tr069.api_tr069.Cadastro - Manufacturer: THOMSON
98037 INFO [2009-08-19 17:46:32,267:Thread-11] tr069.api_tr069.Cadastro - OUI: 00147F
98039 INFO [2009-08-19 17:46:32,269:Thread-11] tr069.api_tr069.Cadastro - ProductClass: SpeedTouch
780
98040 INFO [2009-08-19 17:46:32,270:Thread-11] tr069.api_tr069.Cadastro - SerialNumber: CP0610JT7YB
98041 INFO [2009-08-19 17:46:32,271:Thread-11] tr069.api_tr069.EventManager - EVENTO: TRANSFER
COMPLETE, A sessao foi estabelecida para indicar que determinado download ou upload foi finalizado
correcta ou incorrectamente
Neste teste foi testado o método de download. Aqui o utilizador escolheu a opção de
download, e introduziu os parâmetros necessários para a invocação do método e enviou
a mensagem de Download ao CPE (Thread 3). De seguida o ConnectionManager
detecta a chegada da mensagem de DownloadResponse (Thread 9) indicando que o
Download ainda não foi feito nem aplicado.
Após o término da sessão, o CPE envia uma nova mensagem de Inform com o evento
de TransferComplete (Thread 11) indicando o estado actual do respectivo pedido de
Download.
5.4 Várias Sessões Activas
9394 INFO [2009-08-20 15:56:59,590:Thread-4] tr069.testes.Utilizador - Start new utilizador
9398 INFO [2009-08-20 15:56:59,594:Thread-4] tr069.api_tr069.CpeFactory - Start CpeFactory
9400 INFO [2009-08-20 15:56:59,596:Thread-4] tr069.api_tr069.CpeFactory - Entrou no Cpe Factory
9413 INFO [2009-08-20 15:56:59,609:Thread-4] tr069.api_tr069.SessionManager - Start Session Manager
9423 INFO [2009-08-20 15:56:59,619:Thread-4] tr069.api_tr069.SessionManager - Registou pedido de
Sessao para o CPE com IP: 192.168.125.80
9415 INFO [2009-08-20 15:56:59,611:Thread-3] tr069.testes.Utilizador - Start new utilizador
9582 INFO [2009-08-20 15:56:59,778:Thread-5] tr069.api_tr069.SessionManagerWorker - Start Session
Manager Worker
9684 INFO [2009-08-20 15:56:59,880:Thread-3] tr069.api_tr069.CpeFactory - Entrou no Cpe Factory
9690 INFO [2009-08-20 15:56:59,886:Thread-3] tr069.api_tr069.SessionManager - Registou pedido de
Sessao para o CPE com IP: 192.168.125.78
12167 INFO [2009-08-20 15:57:02,363:Thread-6] tr069.api_tr069.HandleConnectionRequest - Entrou no
Handler Connection Request
12168 DEBUG [2009-08-20 15:57:02,364:Thread-6] tr069.api_tr069.HandleConnectionRequest - Vai atender
pedido:::192.168.125.80
12180 INFO [2009-08-20 15:57:02,376:Thread-6] tr069.api_tr069.RequestClient - Entrou no
RequestClient
25942 DEBUG [2009-08-20 15:57:16,138:Thread-7] commons.httpclient.HttpConnection - Open connection to
192.168.125.78:51005
25950 DEBUG [2009-08-20 15:57:16,146:Thread-6] commons.httpclient.HttpConnection - Open connection to
192.168.125.80:51005
Request
34266 INFO [2009-08-20 15:57:24,462:Thread-9] tr069.api_tr069.HandleRequest - Chegou Inform vindo
de: 192.168.125.80
35504 INFO [2009-08-20 15:57:25,700:Thread-12] tr069.api_tr069.HandleRequest - Chegou
cwmp:GetRPCMethodsResponse vindo de: 192.168.125.80
35505 DEBUG [2009-08-20 15:57:25,701:Thread-4] tr069.api_tr069.CPE_Entity - GetRPCMethods Executado
com Sucesso
35512 INFO [2009-08-20 15:57:25,708:Thread-4] tr069.api_tr069.CPE_Entity - Metodos Suportados pelo
CPE:
35513 INFO [2009-08-20 15:57:25,709:Thread-4] tr069.api_tr069.CPE_Entity - GetRPCMethods
35513 INFO [2009-08-20 15:57:25,709:Thread-4] tr069.api_tr069.CPE_Entity - GetParameterNames
35514 INFO [2009-08-20 15:57:25,710:Thread-4] tr069.api_tr069.CPE_Entity - GetParameterValues
35514 INFO [2009-08-20 15:57:25,710:Thread-4] tr069.api_tr069.CPE_Entity - SetParameterValues
35514 INFO [2009-08-20 15:57:25,710:Thread-4] tr069.api_tr069.CPE_Entity - AddObject
35515 INFO [2009-08-20 15:57:25,711:Thread-4] tr069.api_tr069.CPE_Entity - DeleteObject
35515 INFO [2009-08-20 15:57:25,711:Thread-4] tr069.api_tr069.CPE_Entity - Download
60
35515 INFO [2009-08-20 15:57:25,711:Thread-4] tr069.api_tr069.CPE_Entity - Reboot
35515 INFO [2009-08-20 15:57:25,711:Thread-4] tr069.api_tr069.CPE_Entity - FactoryReset
35520 INFO [2009-08-20 15:57:25,716:Thread-12] tr069.api_tr069.HandleRequest - Thread Morreu
38442 INFO [2009-08-20 15:57:28,638:Thread-10] tr069.api_tr069.HandleRequest - Chegou Inform vindo
de: 192.168.125.78
38574 INFO [2009-08-20 15:57:28,770:Thread-13] tr069.api_tr069.HandleRequest - Chegou
cwmp:SetParameterValuesResponse vindo de: 192.168.125.80
38582 DEBUG [2009-08-20 15:57:28,778:Thread-4] tr069.api_tr069.CPE_Entity - SetParameterValues
Executado com Sucesso
38588 INFO [2009-08-20 15:57:28,784:Thread-4] tr069.api_tr069.CPE_Entity - Todas as alteracoes foram
validadas e aplicadas
38592 DEBUG [2009-08-20 15:57:28,788:Thread-4] tr069.api_tr069.SessionManager - Removeu pedido
38592 INFO [2009-08-20 15:57:28,788:Thread-4] tr069.api_tr069.SessionManager - Existem 1 Pedidos
para atender
38595 INFO [2009-08-20 15:57:28,791:Thread-4] tr069.api_tr069.SessionManager - Sessao foi Terminada
38595 INFO [2009-08-20 15:57:28,791:Thread-4] tr069.testes.Utilizador - Morreu Thread Utilizador
39034 INFO [2009-08-20 15:57:29,230:Thread-16] tr069.api_tr069.HandleRequest - Chegou
cwmp:GetRPCMethodsResponse vindo de: 192.168.125.78
39036 INFO [2009-08-20 15:57:29,232:Thread-16] tr069.api_tr069.HandleRequest - Thread Morreu
39040 DEBUG [2009-08-20 15:57:29,236:Thread-3] tr069.api_tr069.CPE_Entity - GetRPCMethods Executado
com Sucesso
39044 INFO [2009-08-20 15:57:29,240:Thread-3] tr069.api_tr069.CPE_Entity - Metodos Suportados pelo
CPE:
39045 INFO [2009-08-20 15:57:29,241:Thread-3] tr069.api_tr069.CPE_Entity - GetRPCMethods
39047 INFO [2009-08-20 15:57:29,243:Thread-3] tr069.api_tr069.CPE_Entity - GetParameterNames
39048 INFO [2009-08-20 15:57:29,244:Thread-3] tr069.api_tr069.CPE_Entity - GetParameterValues
39049 INFO [2009-08-20 15:57:29,245:Thread-3] tr069.api_tr069.CPE_Entity - SetParameterValues
39051 INFO [2009-08-20 15:57:29,247:Thread-3] tr069.api_tr069.CPE_Entity - AddObject
39052 INFO [2009-08-20 15:57:29,248:Thread-3] tr069.api_tr069.CPE_Entity - DeleteObject
39053 INFO [2009-08-20 15:57:29,249:Thread-3] tr069.api_tr069.CPE_Entity - Download
39054 INFO [2009-08-20 15:57:29,250:Thread-3] tr069.api_tr069.CPE_Entity - Reboot
39056 INFO [2009-08-20 15:57:29,252:Thread-3] tr069.api_tr069.CPE_Entity - FactoryReset
39267 INFO [2009-08-20 15:57:29,463:Thread-2] tr069.api_tr069.ConnectionManager - Chegou um novo
Post HTTP ao Connection Manager
39270 INFO [2009-08-20 15:57:29,466:Thread-17] tr069.api_tr069.HandleRequest - Entrou no Handle
Request
39274 INFO [2009-08-20 15:57:29,470:Thread-17] tr069.api_tr069.HandleRequest - Chegou
cwmp:GetParameterValuesResponse vindo de: 192.168.125.78
39279 DEBUG [2009-08-20 15:57:29,475:Thread-3] tr069.api_tr069.CPE_Entity - GetParameterValues
Executado com Sucesso
39284 DEBUG [2009-08-20 15:57:29,480:Thread-3] tr069.api_tr069.CPE_Entity - 1
39284 INFO [2009-08-20 15:57:29,480:Thread-3] tr069.api_tr069.CPE_Entity - Parametro =
InternetGatewayDevice.LANDevice.1.Hosts.HostNumberOfEntries
Valor = 29
39430 INFO [2009-08-20 15:57:29,626:Thread-2] tr069.api_tr069.ConnectionManager - Chegou um novo
Post HTTP ao Connection Manager
39433 INFO [2009-08-20 15:57:29,629:Thread-18] tr069.api_tr069.HandleRequest - Entrou no Handle
Request
39528 INFO [2009-08-20 15:57:29,724:Thread-18] tr069.api_tr069.HandleRequest - Chegou
cwmp:GetParameterNamesResponse vindo de: 192.168.125.78
39529 DEBUG [2009-08-20 15:57:29,725:Thread-3] tr069.api_tr069.CPE_Entity - GetParameterNames
Executado com Sucesso
39539 INFO [2009-08-20 15:57:29,735:Thread-3] tr069.api_tr069.CPE_Entity - Parametro =
InternetGatewayDevice.DeviceSummary
Premite ser Alterado = false
39539 INFO [2009-08-20 15:57:29,735:Thread-3] tr069.api_tr069.CPE_Entity - Parametro =
InternetGatewayDevice.LANDeviceNumberOfEntries
Premite ser Alterado = false
39540 INFO [2009-08-20 15:57:29,736:Thread-3] tr069.api_tr069.CPE_Entity - Parametro =
InternetGatewayDevice.WANDeviceNumberOfEntries
Premite ser Alterado = false
39540 INFO [2009-08-20 15:57:29,736:Thread-3] tr069.api_tr069.CPE_Entity - Parametro =
InternetGatewayDevice.LANDevice.
Premite ser Alterado = false
39540 INFO [2009-08-20 15:57:29,736:Thread-3] tr069.api_tr069.CPE_Entity - Parametro =
InternetGatewayDevice.WANDevice.
Premite ser Alterado = false
39540 INFO [2009-08-20 15:57:29,736:Thread-3] tr069.api_tr069.CPE_Entity - Parametro =
InternetGatewayDevice.DeviceConfig.
Premite ser Alterado = false
39541 INFO [2009-08-20 15:57:29,737:Thread-3] tr069.api_tr069.CPE_Entity - Parametro =
InternetGatewayDevice.Layer2Bridging.
Premite ser Alterado = false
39541 INFO [2009-08-20 15:57:29,737:Thread-3] tr069.api_tr069.CPE_Entity - Parametro =
InternetGatewayDevice.Layer3Forwarding.
Premite ser Alterado = false
39541 INFO [2009-08-20 15:57:29,737:Thread-3] tr069.api_tr069.CPE_Entity - Parametro =
InternetGatewayDevice.ManagementServer.
Premite ser Alterado = false
39541 INFO [2009-08-20 15:57:29,737:Thread-3] tr069.api_tr069.CPE_Entity - Parametro =
InternetGatewayDevice.X_000E50_Firewall.
Premite ser Alterado = false
39542 INFO [2009-08-20 15:57:29,738:Thread-3] tr069.api_tr069.CPE_Entity - Parametro =
InternetGatewayDevice.DeviceInfo.
Premite ser Alterado = false
39542 INFO [2009-08-20 15:57:29,738:Thread-3] tr069.api_tr069.CPE_Entity - Parametro =
InternetGatewayDevice.Time.
Premite ser Alterado = false
39542 INFO [2009-08-20 15:57:29,738:Thread-3] tr069.api_tr069.CPE_Entity - Parametro =
InternetGatewayDevice.Services.
Premite ser Alterado = false
39543 INFO [2009-08-20 15:57:29,739:Thread-3] tr069.api_tr069.CPE_Entity - Parametro =
InternetGatewayDevice.UserInterface.
Premite ser Alterado = false
39543 DEBUG [2009-08-20 15:57:29,739:Thread-3] tr069.api_tr069.SessionManager - Removeu pedido
39543 INFO [2009-08-20 15:57:29,739:Thread-3] tr069.api_tr069.SessionManager - Existem 0 Pedidos
para atender
39544 INFO [2009-08-20 15:57:29,740:Thread-3] tr069.api_tr069.SessionManager - Sessao foi Terminada
61
Neste teste pretendeu-se verificar o bom funcionamento da API com mais do que uma
sessão TR069 activa simultaneamente. Como podemos observar no relatório temos duas
Threads Utilizador (Thread 3 e Thread 4) que realizam dois pedidos para entidades de
CPE distintas. Temos também dois pedidos de conecção distintos feitos pelos Threads
RequestClient (Thread 6 e Thread 7).
Ao acompanhar a Thread 4, verificamos que após a criação e entrega da entidade CPE,
foram invocadas as operações de GetRPCMethods, SetParameterValues e foi terminada
a sessão.
Simultaneamente a Thread 3 também invocava noutro CPE as operações de
GetRPCMethods e GetParameterNames e foi também terminada a sessão.
De notar que a operação GetParameterNames necessita de bastantes recursos de
processamento para descascar a grande quantidade de informação de interesse do
documento XML recebido na resposta ao método, podendo tornar-se num processo
lento o que poderá também provocar falhas no funcionamento da API caso ela esteja a
lidar com sessões simultâneas. Neste caso foi indicado para se visualizar unicamente os
nomes dos parâmetros filhos da raiz da hierarquia de parâmetros TR-069.
5.5 Configuração de Serviço
16240 INFO [2009-08-19 18:08:26,982:Thread-3] tr069.testes.MenuTR069 - Menu Operacoes TR069
16241 INFO [2009-08-19 18:08:26,983:Thread-3] tr069.testes.MenuTR069 - 1 - Set Parameter Values
16243 INFO [2009-08-19 18:08:26,985:Thread-3] tr069.testes.MenuTR069 - 2 - Get Parameter Values
16244 INFO [2009-08-19 18:08:26,986:Thread-3] tr069.testes.MenuTR069 - 3 - Get Parameter Names
16245 INFO [2009-08-19 18:08:26,987:Thread-3] tr069.testes.MenuTR069 - 4 - Reboot
16246 INFO [2009-08-19 18:08:26,988:Thread-3] tr069.testes.MenuTR069 - 5 - Download
16248 INFO [2009-08-19 18:08:26,990:Thread-3] tr069.testes.MenuTR069 - 6 - Factory Reset
16249 INFO [2009-08-19 18:08:26,991:Thread-3] tr069.testes.MenuTR069 - 7 - GetRPCMethods
16349 INFO [2009-08-19 18:08:27,091:Thread-3] tr069.testes.MenuTR069 - 0 - Terminar Sessao
16351 INFO [2009-08-19 18:08:27,093:Thread-3] tr069.testes.MenuTR069 18184 INFO [2009-08-19 18:08:28,926:Thread-3] tr069.testes.MenuTR069 - 1
18186 INFO [2009-08-19 18:08:28,928:Thread-3] tr069.testes.MenuTR069 - Operacao SetParameterValues
18187 INFO [2009-08-19 18:08:28,929:Thread-3] tr069.testes.MenuTR069 - 1 - Adicionar parametro para
alterar
18188 INFO [2009-08-19 18:08:28,930:Thread-3] tr069.testes.MenuTR069 - 0 - Nao adicionar mais
parametros para alterar
19072 INFO [2009-08-19 18:08:29,814:Thread-3] tr069.testes.MenuTR069 - 1
19074 INFO [2009-08-19 18:08:29,816:Thread-3] tr069.testes.MenuTR069 - Introduza o nome completo do
parametro
29281 INFO [2009-08-19 18:08:40,023:Thread-3] tr069.testes.MenuTR069 InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.Enable
29283 INFO [2009-08-19 18:08:40,025:Thread-3] tr069.testes.MenuTR069 - Introduza o valor do
parametro
31468 INFO [2009-08-19 18:08:42,210:Thread-3] tr069.testes.MenuTR069 - 1
31470 INFO [2009-08-19 18:08:42,212:Thread-3] tr069.testes.MenuTR069 - 1 - Adicionar parametro para
alterar
31471 INFO [2009-08-19 18:08:42,213:Thread-3] tr069.testes.MenuTR069 - 0 - Nao adicionar mais
parametros para alterar
33991 INFO [2009-08-19 18:08:44,733:Thread-3] tr069.testes.MenuTR069 - 0
34142 INFO [2009-08-19 18:08:44,884:Thread-2] tr069.api_tr069.ConnectionManager - Chegou um novo
Post HTTP ao Connection Manager
34145 INFO [2009-08-19 18:08:44,887:Thread-9] tr069.api_tr069.HandleRequest - Entrou no Handle
Request
34150 INFO [2009-08-19 18:08:44,892:Thread-9] tr069.api_tr069.HandleRequest - Chegou
SetParameterValuesResponse vindo de: 192.168.125.80
34164 DEBUG [2009-08-19 18:08:44,906:Thread-3] tr069.api_tr069.CPE_Entity - SetParameterValues
Executado com Sucesso
34171 INFO [2009-08-19 18:08:44,913:Thread-3] tr069.testes.MenuTR069 - Todas as alteracoes foram
validadas e aplicadas
62
Neste teste o Utilizador (Thread 3) optou realizar a operação de SetParameterValues
para activar o serviço de wireless do CPE.
5.6 Recolha de Informação e detecção de erros na
comunicação
23394 INFO [2009-08-19 18:49:31,064:Thread-3] tr069.testes.MenuTR069 - Menu Operacoes TR069
23396 INFO [2009-08-19 18:49:31,066:Thread-3] tr069.testes.MenuTR069 - 1 - Set Parameter Values
23397 INFO [2009-08-19 18:49:31,067:Thread-3] tr069.testes.MenuTR069 - 2 - Get Parameter Values
23398 INFO [2009-08-19 18:49:31,068:Thread-3] tr069.testes.MenuTR069 - 3 - Get Parameter Names
23399 INFO [2009-08-19 18:49:31,069:Thread-3] tr069.testes.MenuTR069 - 4 - Reboot
23400 INFO [2009-08-19 18:49:31,070:Thread-3] tr069.testes.MenuTR069 - 5 - Download
23401 INFO [2009-08-19 18:49:31,071:Thread-3] tr069.testes.MenuTR069 - 6 - Factory Reset
23402 INFO [2009-08-19 18:49:31,072:Thread-3] tr069.testes.MenuTR069 - 7 - GetRPCMethods
23403 INFO [2009-08-19 18:49:31,073:Thread-3] tr069.testes.MenuTR069 - 0 - Terminar Sessao
23404 INFO [2009-08-19 18:49:31,074:Thread-3] tr069.testes.MenuTR069 24855 INFO [2009-08-19 18:49:32,525:Thread-3] tr069.testes.MenuTR069 - 2
24857 INFO [2009-08-19 18:49:32,527:Thread-3] tr069.testes.MenuTR069 - Operacao GetParameterValues
24858 INFO [2009-08-19 18:49:32,528:Thread-3] tr069.testes.MenuTR069 - 1 - Adicionar Parametro a
Visualizar
24859 INFO [2009-08-19 18:49:32,529:Thread-3] tr069.testes.MenuTR069 - 0 - Nao adicionar mais
parametros para visualizar
27379 INFO [2009-08-19 18:49:35,049:Thread-3] tr069.testes.MenuTR069 - 1
27381 INFO [2009-08-19 18:49:35,051:Thread-3] tr069.testes.MenuTR069 - Introduza nome completo do
Parametro
30094 INFO [2009-08-19 18:49:37,764:Thread-3] tr069.testes.MenuTR069 InternetGatewayDevice.LANDevice.1.LANEthernetInterfaceConfig.1.Status
30096 INFO [2009-08-19 18:49:37,766:Thread-3] tr069.testes.MenuTR069 - 1 - Adicionar Parametro a
Visualizar
30097 INFO [2009-08-19 18:49:37,767:Thread-3] tr069.testes.MenuTR069 - 0 - Nao adicionar mais
parametros para visualizar
33793 INFO [2009-08-19 18:49:41,463:Thread-3] tr069.testes.MenuTR069 - 1
33793 INFO [2009-08-19 18:49:41,463:Thread-3] tr069.testes.MenuTR069 - Introduza nome completo do
Parametro
45331 INFO [2009-08-19 18:49:53,001:Thread-3] tr069.testes.MenuTR069 InternetGatewayDevice.LANDevice.1.LANEthernetInterfaceConfig.2.Status
45332 INFO [2009-08-19 18:49:53,002:Thread-3] tr069.testes.MenuTR069 - 1 - Adicionar Parametro a
Visualizar
45333 INFO [2009-08-19 18:49:53,003:Thread-3] tr069.testes.MenuTR069 - 0 - Nao adicionar mais
parametros para visualizar
48525 INFO [2009-08-19 18:49:56,195:Thread-3] tr069.testes.MenuTR069 - 1
48527 INFO [2009-08-19 18:49:56,197:Thread-3] tr069.testes.MenuTR069 - Introduza nome completo do
Parametro
58153 INFO [2009-08-19 18:50:05,823:Thread-3] tr069.testes.MenuTR069 InternetGatewayDevice.LANDevice.1.LANEthernetInterfaceConfig.3.Status
58156 INFO [2009-08-19 18:50:05,826:Thread-3] tr069.testes.MenuTR069 - 1 - Adicionar Parametro a
Visualizar
58157 INFO [2009-08-19 18:50:05,827:Thread-3] tr069.testes.MenuTR069 - 0 - Nao adicionar mais
parametros para visualizar
59418 INFO [2009-08-19 18:50:07,088:Thread-3] tr069.testes.MenuTR069 - 1
59419 INFO [2009-08-19 18:50:07,089:Thread-3] tr069.testes.MenuTR069 - Introduza nome completo do
Parametro
74385 INFO [2009-08-19 18:50:22,055:Thread-3] tr069.testes.MenuTR069 InternetGatewayDevice.LANDevice.1.LANEthernetInterfaceConfig.4.Status
74386 INFO [2009-08-19 18:50:22,056:Thread-3] tr069.testes.MenuTR069 - 1 - Adicionar Parametro a
Visualizar
74387 INFO [2009-08-19 18:50:22,057:Thread-3] tr069.testes.MenuTR069 - 0 - Nao adicionar mais
parametros para visualizar
76612 INFO [2009-08-19 18:50:24,282:Thread-3] tr069.testes.MenuTR069 - 0
76824 INFO [2009-08-19 18:50:24,494:Thread-2] tr069.api_tr069.ConnectionManager - Chegou um novo
Post HTTP ao Connection Manager
76828 INFO [2009-08-19 18:50:24,498:Thread-9] tr069.api_tr069.HandleRequest - Entrou no Handle
Request
76848 INFO [2009-08-19 18:50:24,518:Thread-9] tr069.api_tr069.HandleRequest - Chegou
cwmp:GetParameterValuesResponse vindo de: 192.168.125.78
76850 DEBUG [2009-08-19 18:50:24,520:Thread-3] tr069.api_tr069.CPE_Entity - GetParameterValues
Executado com Sucesso
76856 DEBUG [2009-08-19 18:50:24,526:Thread-3] tr069.api_tr069.CPE_Entity - 4
76858 INFO [2009-08-19 18:50:24,528:Thread-3] tr069.testes.MenuTR069 - Parametro =
InternetGatewayDevice.LANDevice.1.LANEthernetInterfaceConfig.1.Status
Valor = 1
63
76858 INFO [2009-08-19 18:50:24,528:Thread-3] tr069.testes.MenuTR069 - Parametro =
InternetGatewayDevice.LANDevice.1.LANEthernetInterfaceConfig.2.Status
Valor = 1
76858 INFO [2009-08-19 18:50:24,528:Thread-3] tr069.testes.MenuTR069 - Parametro =
InternetGatewayDevice.LANDevice.1.LANEthernetInterfaceConfig.3.Status
Valor = 1
76858 INFO [2009-08-19 18:50:24,528:Thread-3] tr069.testes.MenuTR069 - Parametro =
InternetGatewayDevice.LANDevice.1.LANEthernetInterfaceConfig.4.Status
Valor = 1
76859 INFO [2009-08-19 18:50:24,529:Thread-3] tr069.testes.MenuTR069 76859 INFO [2009-08-19 18:50:24,529:Thread-3] tr069.testes.MenuTR069 76859 INFO [2009-08-19 18:50:24,529:Thread-3] tr069.testes.MenuTR069 - Menu Operacoes TR069
76860 INFO [2009-08-19 18:50:24,530:Thread-3] tr069.testes.MenuTR069 - 1 - Set Parameter Values
76860 INFO [2009-08-19 18:50:24,530:Thread-3] tr069.testes.MenuTR069 - 2 - Get Parameter Values
76860 INFO [2009-08-19 18:50:24,530:Thread-3] tr069.testes.MenuTR069 - 3 - Get Parameter Names
76861 INFO [2009-08-19 18:50:24,531:Thread-3] tr069.testes.MenuTR069 - 4 - Reboot
76861 INFO [2009-08-19 18:50:24,531:Thread-3] tr069.testes.MenuTR069 - 5 - Download
76861 INFO [2009-08-19 18:50:24,531:Thread-3] tr069.testes.MenuTR069 - 6 - Factory Reset
76862 INFO [2009-08-19 18:50:24,532:Thread-3] tr069.testes.MenuTR069 - 7 - GetRPCMethods
76862 INFO [2009-08-19 18:50:24,532:Thread-3] tr069.testes.MenuTR069 - 0 - Terminar Sessao
76862 INFO [2009-08-19 18:50:24,532:Thread-3] tr069.testes.MenuTR069 87242 INFO [2009-08-19 18:50:34,912:Thread-3] tr069.testes.MenuTR069 - 2
87242 INFO [2009-08-19 18:50:34,912:Thread-3] tr069.testes.MenuTR069 - Operacao GetParameterValues
87243 INFO [2009-08-19 18:50:34,913:Thread-3] tr069.testes.MenuTR069 - 1 - Adicionar Parametro a
Visualizar
87243 INFO [2009-08-19 18:50:34,913:Thread-3] tr069.testes.MenuTR069 - 0 - Nao adicionar mais
parametros para visualizar
91068 INFO [2009-08-19 18:50:38,738:Thread-3] tr069.testes.MenuTR069 - 1
91069 INFO [2009-08-19 18:50:38,739:Thread-3] tr069.testes.MenuTR069 - Introduza nome completo do
Parametro
100987 INFO [2009-08-19 18:50:48,657:Thread-3] tr069.testes.MenuTR069 InternetGatewayDevice.LANDevice.1.LANEthernetInterfaceConfig.1.Sta
100989 INFO [2009-08-19 18:50:48,659:Thread-3] tr069.testes.MenuTR069 - 1 - Adicionar Parametro a
Visualizar
100990 INFO [2009-08-19 18:50:48,660:Thread-3] tr069.testes.MenuTR069 - 0 - Nao adicionar mais
parametros para visualizar
102397 INFO [2009-08-19 18:50:50,067:Thread-3] tr069.testes.MenuTR069 - 0
102578 INFO [2009-08-19 18:50:50,248:Thread-2] tr069.api_tr069.ConnectionManager - Chegou um novo
Post HTTP ao Connection Manager
102580 INFO [2009-08-19 18:50:50,250:Thread-10] tr069.api_tr069.HandleRequest - Entrou no Handle
Request
102585 INFO [2009-08-19 18:50:50,255:Thread-10] tr069.api_tr069.HandleRequest - Chegou soapenv:Fault
vindo de: 192.168.125.78
102590 DEBUG [2009-08-19 18:50:50,260:Thread-3] tr069.api_tr069.CPE_Entity - Erro no
GetParameterValues
102599 INFO [2009-08-19 18:50:50,269:Thread-3] tr069.api_tr069.CPE_Entity - Falha no: Client
102600 INFO [2009-08-19 18:50:50,270:Thread-3] tr069.api_tr069.CPE_Entity - Falha do Tipo: CWMP
fault
102606 ERROR [2009-08-19 18:50:50,276:Thread-3] tr069.api_tr069.TR069Exception - Codigo da Falha:9005
102608 ERROR [2009-08-19 18:50:50,278:Thread-3] tr069.api_tr069.TR069Exception - Falha :Invalid
parameter name
102614 FATAL [2009-08-19 18:50:50,284:Thread-3] tr069.api_tr069.CPE_Entity - Erro!!!!!
Neste teste pretendia-se testar o correcto funcionamento da operação de
GetParameterValues e a detecção de falhas enviadas pelos CPE. Para isso o Utilizador
invocou duas vezes a operação de GetParameterValues no entanto na segunda vez
introduziu incorrectamente o nome do parâmetro que pretende visualizar.
Como podemos observar no relatório de teste, na primeira invocação o operador
introduz os nomes dos quatro parâmetros que correspondem ao estado das quatro
interfaces Ethernet do CPE. O CPE responde indicando que as quatro se encontram
activas.
Na segunda invocação o operador introduz incorrectamente o nome do parâmetro que
pretende conhecer, e o CPE já não responde com um GetParameterValuesResponse mas
com uma mensagem Fault indicando o respectivo tipo de falha, que neste caso foi
“Invalid Parameter Name”.
64
6
Conclusões e Trabalhos Futuros
Com a realização deste projecto, conseguimos criar uma solução de gestão baseada num
protocolo que se tem tornado padrão na gestão remota de equipamentos de home
network - o CPE WAN Management Protocol (TR-069).
Após uma fase inicial de consolidação de conhecimentos foi dado início à criação do
desenho e esboço do módulo de gestão.
Durante esta concepção teórica foram definidos os requisitos; casos de utilização;
funcionamento interno; arquitectura global e diagramas de classes e de fluxo referentes
ao funcionamento da API_TR069.
Após a conclusão desta análise teórica, demos início à construção e implementação da
API.
Verificamos que o trabalho realizado na concepção teórica do módulo, não só permitia
uma simples forma de descrever o funcionamento de toda a API mas também muito útil
para a sua implementação.
De notar que alguns pormenores da concepção foram adicionados outros alterados
durante a implementação.
Uma vez concluída a sua implementação, passou-se a uma fase de testes com o intuito
de detecção e correcção de eventuais anomalias. Inicialmente a API_TR069 foi testada
65
com um único utilizador e um único equipamento, isto é, havendo uma única sessão
activa.
Nesta primeira fase de testes pretendíamos garantir o bom funcionamento dos métodos
que a API_TR069 teria de ser capaz de invocar nos CPE bem como os métodos que os
CPE pudessem vir a invocar no ACS. De salientar ainda a grande utilidade que a
ferramenta de software Wireshark [22] nos deu durante esta fase, permitindo através de
capturas na rede perceber ao pormenor como é feita a comunicação entre o CPE e o
ACS, não só durante o estabelecimento e término das sessões mas também nas
invocações dos diferentes métodos. No documento “AnexoCapturas” podem ser vistas
algumas capturas que ajudam a perceber o conteúdo e o fluxo desta comunicação.
Uma vez concluída esta primeira fase de testes e respectiva correcção de anomalias,
procedemos a uma segunda fase de testes, na qual pretendíamos testar o nosso módulo
de gestão com vários utilizadores e CPE, criando-se assim um ambiente de gestão com
múltiplas sessões activas.
Esta fase previa-se ser complexa, uma vez que teria de ser adicionada à API_TR069 um
mecanismo na qual fosse capaz de relacionar as sessões activas com as respectivas
entidades que as pediam.
Após o uso de algumas técnicas que não satisfaziam o funcionamento esperado, foi
finalmente encontrada a solução ideal para a dificuldade que faltava transpor.
Uma vez concluídos estes testes, foram criados os já referenciados relatórios de teste e a
documentação de java docs do projecto desenvolvido.
Esta API_TR069 apresenta-se com um funcionamento bastante robusto, respeita o que
foi delineado na sua concepção teórica e comportar-se como um ACS num ambiente de
gestão de equipamentos TR-069 tal como era pretendido. Trata-se de um bom passo
para o desenvolvimento de uma solução final, que será adequada ao apoio e suporte a
tarefas de configuração dos equipamentos locais do cliente e que permitirá certamente
uma melhoria significativa na qualidade do serviço prestado.
No que diz respeito a trabalhos futuros relativamente a este projecto, podemos citar os
seguintes:
•
•
•
Integração da API_TR069 no Network Activator.
Integração da API_TR069 noutros sistemas da PT Inovação.
Uma vez integrado realizar testes de carga.
Aperfeiçoar e optimizar esta API de forma a poder se tornar numa clara ferramenta de
suporte ao cliente.
66
Bibliografia
[1] Badra B. - Network Working Group (2009), “NETCONF Over Transport Layer
Security (TLS)”, ultima consulta em Abril 2009
[2] Bernstein J., Spets T., Bouchat C. - BroadBand Forum(2005), “Applying TR-069 to
Remote Management of Home Networking Devices”, ultima consulta em Janeiro 2009
[3]Bernstein J., Stark B. (2005), “Internet Gateway Device Version 1.1 Data Model for
TR-069”, ultima consulta em Fevereiro 2009
[4]BroadBand Forum, ultima consulta em Agosto 2009, http://www.broadbandforum.org
[5] Broadband Forum (2007), “CPE WAN Management Protocol v1.1”, ultima consulta
em Dezembro 2008
[6] BroadBand Forum, Technical Reports, ultima consulta em Abril 2009
http://www.broadband-forum.org/technical/trlist.php
[7] BroadBand Forum, Modelo de Dados para Equipamentos TR-069 (TR-106), última
consulta
em
Fevereiro
2009,
http://www.broadbandforum.org/technical/releaseprogram.php
[8] BroadBand Forum, Modelo de Dados para CPE VoIP (TR-104), ultima consulta em
Fevereiro 2009, http://www.broadband-forum.org/technical/releaseprogram.php
[9] BroadBand Forum, The Big Picture DSL Home Technical WG, ultima consulta em
Fevereiro 2009, http://i.cmpnet.com/eetimes.de/2007/11/Bild2.jpg
67
[10] Case J. - Network Working Group (1990), “RFC 1157 – Simple Network
Management Protocol”, ultima consulta em Novembro 2008
[11] Crawford S. (2002), “O que Há de Melhor no UPnP do Windows XP?”, ultima
consulta em Abril 2009.
[12] Enns R. - Network Working Group (2006), “RFC 4741 – Network Configuration
Protocol”, ultima consulta em Janeiro 2009
[13]
Frases
Famosas
(2005),
ultima
consulta
http://www.frasesfamosas.com.br/de/max-frisch.html
em
Abril
2009,
[14] Goddard T. - Network Working Group (2006), “Using the Network Configuration
Protocol (NETCONF) Over the Simple Object Access Protocol (SOAP)”, ultima
consulta em Janeiro 2009
[15] Gouveia L. (1997), “Comunicação de dados – normas”, ultima consulta em Abril
2009
[16] Home Gateway Initiative,
http://www.homegatewayinitiative.org
ultima
consulta
em
Fevereiro
2009,
[17] Iijima T., Atarashi Y., Kimura H., Kitani M. - Network Working Group (2008),
“Experience of implementing NETCONF over SOAP”, ultima consulta em Janeiro 2009
[18] INTEL,
Digital Home Vision, ultima consulta em Fevereiro 2009,
http://images.google.pt/imgres?imgurl=http://cachewww.intel.com/cd/00/00/27/29/272984_272984.jpg&imgrefurl=http://www.intel.com/c
d/corporate/icsc/apac/eng/tech_innovation/272771.htm&usg=__ip3uCtiMVX_smSzCx
V6YEk1-nuU=&h=389&w=500&sz=147&hl=ptPT&start=13&tbnid=vLIKZJwPiLGjaM:&tbnh=101&tbnw=130&prev=/images%3Fq
%3DUPnP%26gbv%3D2%26ndsp%3D18%26hl%3Dpt-PT%26sa%3DN
68
[19] Internet Engineering Task Force, ultima consulta em Fevereiro 2009,
http://www.ietf.org
[20] JUDE/Community, ultima consulta em 2009, http://jude.change-vision.com/judeweb/product/community.html
[21] Kirksey H. (2005), “Standards-based Device Management”, ultima consulta em
Abril 2009
[22] Kurose J., Ross K. (2007), “Wireshark Lab: Getting Started”, ultima consulta em
Janeiro 2009
[23] Lear E. - Network Working Group (2006), “Using the NETCONF Protocol over
the Blocks Extensible Exchange Protocol (BEEP) – RFC 4744”, ultima consulta em
Novembro 2008
[24] McLaughlin B., Pollice G., West D. (2007), Head First
& Design, ultima consulta em Abril 2009
Object-Oriented Analysis
[25] NetBeans, ultima consulta em Março 2009, http://www.netbeans.org/
[26] NetConf Central (2008), Operações NetConf, ultima consulta em Janeiro 2009,
http://www.netconfcentral.org/rpclist
[27] Ogielski A. (1998), “TCP Tutorial”, ultima consulta em Março 2009
[28] PT Inovação (2009), “Network Activator”, ultima consulta em Agosto 2009
[29] Rose M. - Network Working Group (2001), “The Blocks Extensible Exchange
Protocol Core – RFC 3080”, ultima consulta em Dezembro 2008
69
[30] Royon Y., Parrend P., Frénot S., Papastefanos S., Abdelnur H., Poel D. (2007),
“Multi-service, Multi-protocol Management for Residential Gateways”, ultima consulta
em Dezembro 2008
[31] Stark B.- BroadBand Forum (2004), “LAN-Side DSL CPE Configuration”, ultima
consulta em Janeiro 2009
[32] Stephenson N. (1999), In the beginning ...was the command line, ultima consulta
em Fevereiro 2009
[33] SUN (2009), ”The Java Tutorials”, ultima consulta em Março 2009,
http://java.sun.com/docs/books/tutorial/
[34] UPnP Forum, ultima consulta em Janeiro 2009, http://www.upnp-ic.org/home
[35] UPnP Forum (2008), “UPnP Device Architecture 1.0”, ultima consulta em Janeiro
2009
[36] UPnP Forum (2006), “UPnP Forum Releases Enhanced AV Specifications Taking
Home Network to the Next Level”, ultima consulta em Janeiro 2009
[37]
UPnP
Standards,
ultima
consulta
http://www.upnp.org/standardizeddcps/default.asp
em
Abril
2009,
[38] Wasserman M., ThingMagic, Goddard T. - Network Working Group (2006),
“Using the NETCONF Configuration Protocol over Secure Shell (SSH)”, ultima
consulta em Novembro 2008
[39] Wikimedia Commons (2006), “SNMP-Managementkonsole.PNG”, ultima consulta
em
Fevereiro
2009,
http://images.google.pt/imgres?imgurl=http://upload.wikimedia.org/wikipedia/common
s/f/fb/SNMPManagementkonsole.PNG&imgrefurl=http://commons.wikimedia.org/wiki/File:SNMPManagementkonsole.PNG&usg=__yTDn92J2z7szkMfKSeinT9fE_Iw=&h=273&w=30
70
0&sz=7&hl=ptPT&start=3&tbnid=iYnDRKxxC37swM:&tbnh=106&tbnw=116&prev=/images%3Fq
%3DSNMP%26gbv%3D2%26hl%3Dpt-PT%26sa%3DG
[40] Wikipedia, Command Line Interface, ultima consulta em Outubro 2008,
http://en.wikipedia.org/wiki/Command-line_interface
[41] Wikipédia (2008), Gerência de Redes, última consulta em Abril 2009,
http://pt.wikipedia.org/wiki/Ger%C3%AAncia_de_redes
[42] Wikipédia, Next Generation Network, ultima consulta em Agosto 2009,
http://pt.wikipedia.org/wiki/Next_Generation_Networking
[43] Wikipedia (2009), Unified Modeling Language, ultima consulta em Fevereiro
2009, http://en.wikipedia.org/wiki/Unified_Modeling_Language
[44]
Wikipédia,
Modelo
OSI,
ultima
http://pt.wikipedia.org/wiki/Modelo_OSI
consulta
em
Abril
2009,
[45] W3schools, HTML Tutorial, ultima
http://www.w3schools.com/html/default.asp
consulta
em
Março
2009,
[46] W3schools, Schema Tutorial, ultima
http://www.w3schools.com/schema/default.asp
consulta
em
Março
2009,
[47] W3schools, SOAP Tutorial, ultima
http://www.w3schools.com/soap/default.asp
consulta
em
Março
2009,
[48] W3schools, TCP/IP Tutorial, ultima
http://www.w3schools.com/tcpip/default.asp
consulta
em
Março
2009,
[49] W3schools, Web Services Tutorial, ultima consulta em Abril
http://www.w3schools.com/webservices/default.asp
71
2009,
[50] W3schools, XML Tutorial, ultima
http://www.w3schools.com/xml/default.asp
72
consulta
em
Março
2009,
Download

Gestão de Home Networks