Há uma forte tendência do crescimento das redes heterogêneas no ambiente de comunicações de hoje. Tal diversidade requer que operadores de redes tenham um maior conhecimento e um treinamento mais extenso. Administrar essas diversas redes requer uma coleção de grande quantidade de informações sobre a rede; dados que devem então ser analisados antes das atividade de gerenciamento poderem ser iniciadas. Simultaneamente, há uma expectativa de crescimento de confiabilidade e qualidade dos serviços disponibilizados aos usuários das redes. Esses desafios são as principais motivações para pesquisas em softwares agentes. A maioria das pesquisas nos aspectos de inteligência de agentes vem da Inteligência Artificial Distribuída (DAI) [O'Hare98]. DAI é uma extensão de idéias derivadas da IA aplicada a Sistemas Multi-Agente (MAS) [Lesser95]. Em vez de uma aplicação normalmente muito grande e centralizada que codifica toda a inteligência do sistema, vários programas relativamente pequenos, os agentes, são envolvidos num esforço cooperativo para resolver um problema. Isto não implica que um sistema grande simplesmente seja dividido em pequenos pedaços. Por exemplo, algumas aplicações centralizadas, cada uma capaz de tratar um certo aspecto do sistema, podem ser ligadas através de um sistema de comunicação. Permitindo a troca de pontos de vista entre elas, propondo estratégias para um progresso ou combinar resultados para uma solução. Esta classe de resolução de problema é conhecida como Resolução Distribuida de Problema (DPS) [Decker87], e cada um dos programas que cooperam, pode ser visto como um agente. Em IA, um agente é visto freqüentemente em termos de suas convicções, desejos e inteções (também denominada arquitetura BDI) [Georgeff87]. Embora um sistema baseado em agentes possa ser implementado em uma tecnoligia cliente/servidor, ele difere de sistemas cliente/servidor clássicos porque não há uma distinção clara entre um cliente e um servidor. Todos os agentes participam na computação de acordo com o papel estáticamente nomeado pelo projetista ou nomeado dinamicamente por um humano ou supervisor de agente. Sistemas de gerência de redes têm que lidar com os mesmos assuntos que estão dirigindo pesquisa em software agentes: proliferação de dados e ambientes heterogêneos. O problema com informação que inunda uma rede no caso de mau funcionamento é particularmente severo se for levado em conta uma solução tem que ser encontrada rapidamente. A falha tem que ser diagnosticada rapidamente e fixada automaticamente ou por um operador humano precisa ser informada e aconselhada sobre o curso formal da ação. Em grandes redes, operadores têm que interagir remotamente com muitos dispositivos a partir da workstation de gerência. Para acomodar a diversidade de componentes da rede, aplicações de gerência incorporam números grandes de interfaces e ferramentas. Sistemas de gerência de redes são monólitos normalmente enormes que são difíceis de manter. A seguir tem-se o resultado de uma revisão de várias áreas de aplicação que ilustram como podem ser usados os agentes móveis e como eles podem ajudar.
Gerência das Áreas Funcionais OSISão exigidas muitas ferramentas para endereçar todos os aspectos de de gerência de uma rede de comunicação. O modelo de gerência OSI reconhece tal fato categorizando estas exigências em várias áreas funcionais. São elas:
Serão analisadas várias aplicações potenciais em cada destas áreas. Começa-se pela modelage de redes, considerada necessária para muitas funções de gerência de rede.
Modelagem de RedesEm Gerência de Redes, descoberta automática é um das funções fundamentais do sistema de gerência. Este termo é costumeiramente usado de forma imprópria, porque descoberta poderia objetivar muitas metas. No caso mais simples, há um interesse na busca de dispositivos da rede. Uma versão estendida de descoberta se preocupa com a construção de visões mais detalhadas que podem incluir, por exemplo, serviços disponível em um dispositivo ou dispositivos que satisfazem certas restrições. Se as restrições são funções de estado de ação do dispositivo, então têm-se uma abordagem de descoberta de problema. Como uma complexidade de descoberta aumentada, é mais difícil de implementar usando uma abordagem clássica de cliente/servidor. Código móvel é um meio conveniente para executar a tarefa de descoberta [Schramm98]. Enquanto a descoberta básica em rede (descoberta de um único nodo) não é uma justificativa convincente para o uso de código móvel, suas variações mais sofisticadas certamente trazem o benefício de novas capacidades. Não obstante, a descoberta básica de dispositivos de rede é um meio excelente para ilustrar a abordagem. Um das técnicas de descoberta mais comumente usadas é o envio mensagens de ping a endereços de IP em um certo domínio. O processo de descoberta constrói sua visão da rede pelas respostas recebidas. Ao invés disso, um agente móvel (um deglet - depois de um agente de delegação [Bieszczad,98]) pode ser criado com uma tarefa exclusiva de enviar o identificador de um nodo visitado, ao seu criador (Figura 2). O deglet é então injetado na rede e viaja pelos meios dos padrões de migração implementados [Susilo98]. Há vários aspectos semelhantes a serem solucionado como no algoritmo de ping (por exemplo, o escopo da busca), mas o método é mais flexível. Por exemplo, ele não requer que o interlocutor tenha conhecimento sobre a rede. O término da tarefa pode ser determinada heuristicalmente dentro do deglet, por exemplo, contando os hops ou uma média de visitas de um nodo particular. Através da Incorporação de restrições no deglet de descoberta, pode-se criar modelos parciais da rede [White98b]. Por exemplo, restrições no tipo dos dispositivos no deglet de descoberta resultarão em um modelo da rede que consiste em dispositivos de um certo tipo. Se a restroção está na utilização de um nodo, então pode-se modelar problemas sobre-utilização. Estes modelos da rede podem ser criados dinamicamente. Eles podem ser costurados para satisfazer as expectativas de uma requisição de uma aplicação. Se a tarefa delegada tem uma natureza permanente, então chama-se o agente de netlet (depois de um agente da rede). Netlets são considerados uma parte da infra-estrutura da rede. O processo de descoberta fica contínuo com o uso de netlets de descoberta. O modelo de rede pode ser mantido dinamicamente, porque os netlets podem descobrir as mudanças na configuração da rede. Vários netlets poderiam ser nomeados para executar a tarefa. A velocidade com que são descobertas mudanças pode ser controlada pela densidade de netlets; quanto mais netlets na rede, menor será o processo de descoberta. Claro que, há certas restrições que definem um salto superior no número de netlets, por exemplo, throughput. Netlets podem usar as políticas de migração default implementadas para facilidades de migração. Alternativamente, eles podem implementar os próprios padrões de migração. Por exemplo, um netlet pode definir o escopo de cobertura, assim nunca deixa uma sub-rede particular.
Gerência de Falhas
As restrições não têm que ser limitadas a um único dispositivo da rede. Elas podem codificar descoberta de falha complexa e algoritmos de correlação [El-Darieby98]. A única limitação é o tamanho do netlet com um impacto direto na eficiência com que pode migrar e no throughput de rede. Este aspecto pode ser minimizado tirando proveito do expressividade de Java [Gosling96], técnicas de compressão de código, e métodos inteligentes. Os fundamentos teóricos que suportam a engenharia de agentes móveis sob a perspectiva de desempenho também são fontes de pesquisas [Baldi98]. No outro lado do espectro, pode-se ter sociedades de agentes pequenos, biologicamente inspirados e relativamente simples que precisam de cooperação para prover a inteligência necessária para diagnosticar falhas da rede [White98c]. Vários tipos (ou espécie) de tais agentes minúsculos normalmente são injetados na rede. Cada tipo pode enviar um aspecto do problema, e aquele aspecto é solucionado reforçando uma determinada hipótese pelas observações de um número grande dos mesmos agentes. A solução para o problema emerge pela integração das hipóteses de cada espécie [White98a, White98c]. Poderiam ser permitidos a deglets e netlets, que obedecessem certas providências de segurança, executar ações em dispositivos da rede (Figura 2). Podem ser usados tais netlets ativo para endereçar problemas autonomamente que conduza a uma recuperação imediata, se tal ação é possível. O gerente da rede ou será informado sobre o evento ou será alertado se uma recuperação automática não é possível ou requer envolvimento humano. Vários desses agentes de conserto de rede especializados poderiam prover um alto grau de imunidade da rede para uma gama de problemas. No contexto de deglets, são delegadas tarefas por necessidade por um agente de interface que interage com a entidade que delega. Em contraste, podem ser nomeados netlets automaticamente para suas tarefas a priori pelos seus projetistas e começa automaticamente como uma parte integrante da infra-estrutura da rede. A textura e distribuição de densidade das sociedades de netlets podem ser controladas através de certos mecanismos de segurança. Por exemplo, a freqüência de visitas pode ser medida e e usada para gerar ou terminar os agentes [Bieszczad97].
Se um dispositivo não provê um applet de apresentação, então ou o gerente tem um manipulador próprio para o dispositivo ou um browser de dispositivo genérico será usado. Esta é uma solução extensamente usada nos agentes de dispositivo dos sistemas de gerência de rede de hoje. Um dispositivo não só tem que ter sua representação no gerente implementado, mas também tem que implementar um protocolo de comunicação como SNMP [Case90, Case93] com o gerente que permita a transferência de todos os parâmetros do dispositivo. Isto é o que se faz hoje para gerenciar sistemas grandes e inflexíveis. A solução com applets atualizáveis não tem tais restrições. Uma atração adicional para esta abordagem é provida mantendo um repositório de applets em um servidor, por exemplo, no servidor web do vendedor. O VMC transportado com um dispositivo de rede incluiria só um ponteiro de referência para o applet remoto que seria trazido do servidor quando precisasse. Uma vantagem óbvia é que o vendedor pode manter seu repositório atualizado e convenientemente estruturado, por exemplo, com o uso de vários componentes de software. Esta abordagem poderia ser uma parte de um esquema mais genérico para componentes plug-and-play. De fato, estruturar o servidor do vendedor como um ambiente de código móvel com um VMC que implementa o armazenamento de comportamento de dispositivo parece atraente. Outro exemplo do uso de agentes móveis para manutenção remota endereça o problema de tomar cuidado de dispositivos locais que provêem certos serviços de premissas de cliente; por exemplo, em uma rede de vídeo demanda [Mennie98]. Nas futuras redes, será impossível enviar um técnico que teste todo dispositivo defeituoso, porque haverá centenas de milhares ou mais deles instalados. Ao invés disso, Um agente móvel será enviado. Pode executar um conjunto de testes e pode tentar consertar o dispositivo se possível. Somente nessas falhas um operador humano será envolvido. Os agentes podem incorporar técnicas de máquina de aprendizado que podem melhorar seus comportamentos futuros. Uma biblioteca de agentes pode ser estabelecida com uma seleção automática de agentes para tarefas específicas. Gerência de Configuração
Para ilustrar algumas das oportunidades por usar os agentes móveis, será analisado um exemplo. Circuitos virtuais permanentes para aprovisionamento (PVCs) em uma rede ATM é um exemplo de provisão de serviço. Pode-se levar um longo para negociar todos os aspectos de um PVC que precisa de ser estabelecido entre dois switches ATM, especialmente se esses dois switches são de vendedores diferentes. Muito freqüentemente, um PVC inclui um caminho por uma "nuvem" de rede mantida por um operador da rede. O processo seria até mais longo se outra companhia operacional oferecesse serviços semelhantes mas com preços diferentes. Em uma rede heterogênea, poderia haver vários gerentes de rede envolvidos no processo. Não há nenhum protocolo padronizado para realizar esta tarefa. Um sistema baseado
em agentes móveis (Figura
5) pode manipular tarefas semelhantes de um modo autônomo [Pagurek98]. Um pedido para
montar um PVC pode ser assinalado a um deglet que coordena o processo global. Usa deglets
adicional para executar tarefas parciais. Usando este deglets, todos os dados
necessários são trocados por pontos de encerramento que usam as provisões incorporadas
nos seus respectivos Virtual Managed Components (VMCs). Os deglets comunicam-se com
VMCs usando uma ontologia especial que generaliza o conhecimento de configuração
de conexões cruzadas e PVCs por vendedor. Partes dos dados necessários podem ser
trazidas como requeridas de localizações remotas; por exemplo, os web sites dos
vendedores. Então, outro deglet negocia com o VMCs nas "nuvens" do
operador. A melhor porção é selecionada e a troca subseqüente de informação
necessária completa a ligação. Nesse ponto, a parte requisitante é informada que a
tarefa foi realizada.
O esquema ilustrado na Figura 6 está baseado no uso de vários agentes móveis e estacionários. Pode ser usado para prover capacidades de plug-and-play para componentes de rede [Raza98]. O VMC que vem com o dispositivo novo, uma impressora em nosso exemplo, inclui um bootstrapping que provê o agente. Na conexão com a rede, são enviados vários deglets ou netlets para descobrir os dispositivos da rede que precisarão de drivers de impressora. Então, a página web do fabricante da impressora é contactada, assim podem ser carregadas as mais recentes versões dos drivers exigidos. O VMC de uma impressora pode manter uma lista dos dispositivos que usam a impressora, assim pode coordenar instalações de drivers novos quando necessário. A impressora fica registrada com o vendedor, assim se uma versão nova de um driver está disponível no vendedor, então é enviado automaticamente ao agente de provisão da impressora. Como no caso de agentes para diagnóstico de falha, configuração pode ser um resultado de comportamento cooperativo de grandes números de agentes simples [White98b, Dorigo96]. Gerência de DesempenhoCertos aspectos de medição do desempenho das redes são difíceis se um servidor centralizado é usado. Retardos da rede tornam a precisão das medidas questionável. Em vez de apurar informações dos elementos da rede remotamente, um agente móvel pode ser despachado para executar uma análise do componente localmente. A informação colecionada deste modo é mais precisa, porque não há nenhum retardo envolvido. Uma melhoria semelhante pode ser alcançada com um processo de monitoramento sendo uma parte do elemento testado, mas isso requer que o processo seja uma parte estática do sistema local. A solução com um agente móvel é superior, porque não requer consumo permanente de recursos locais. É de longe mais fácil de administrar da perspectiva de manutenção, uma vez que sempre se pode usar a mais recente versão de um deglet móvel. Em contraste, atualizar um agente estático de monitoramento local é um processo mais longo. Tecnologia de Hot-Swapping também podem estar baseadas em código móvel. Hot-Swapping de esquemas podem ser aplicados para manter redes estacionária monitorando os agentes atualizados. Se o agente de monitoramento local é uma aplicação dinamicamente prolongável (por exemplo, uma aplicação de Java), então módulos incluindo código móvel (extlets) podem ser usados para melhorar a aplicação sempre que necessário sem distrair os serviços que a aplicação provê. O módulo móvel não tem que residir no elemento local todo o tempo, porque pode ser carregado sempre que for necessário, não diferente da forma como os applets são carregados em um web browser. Os esquemas com agentes móveis atuais ainda são melhores, porque eles requerem menos recursos, e adicionalmente provê processando distribuído e correlação inteligente de fatos de fontes diferentes no processo de medição. Por exemplo, uma aplicação de gerenciamento pode usar um deglet para localizar um nodo de ocioso que poderia assumir certos serviços. Serviço de migração, onde um servidor é movido ou "clonado" para um ambiente de execução melhor, pode ser considerado um exemplo de um esquema Hot-Swapping. A decisão para mover ou "clonar" requer análise inteligente de vários fatores como demanda de serviço, carga da rede, taxa de falhas, etc. por exemplo, um gerente de nível de mídia pode ser migrado a outra localização, se a taxa de falha de acesso a seus serviços ou latência da rede é inaceitável. Em outro caso, um servidor que provê serviços de comunicação em um sistema distribuído (por exemplo, coordenador de quadro-negro) poderia ser movido ou "clonado" se as exigências para seus serviços estão na em ascendência em certas áreas. Em todos estes casos, o servidor é, em efeito, um agente móvel. Não há nenhuma restrição no tamanho da definição de um agente, embora normalmente pensa-se em um agente móvel como algo pequeno. No contexto de desempenho de rede, é preciso elevar o aspecto de problemas de desempenho potenciais do uso de agentes móveis. Levado aos agentes móveis extremos, descontrolados poderia inundar a rede e poderia consumir uma proporção grande de seus recursos. A infra-estrutura para agentes móveis obriga certas regras na densidade de agentes. Por exemplo, nem todo o mundo tem permissão de injetar os agentes móveis na rede. Os que são autorizados para fazer isso (operadores humanos ou aplicações de sistema) têm que prover informação sobre o que constitui um padrão normal de comportamento para os seus agentes. Se essas regras são violadas, então a infra-estrutura provê mecanismos de contra-ataque ou, se o problema é persistente, os agentes têm seus serviços recusados. Redes Plug-and-PlayAgentes móveis estão fortemente relacionados com essa última modalidade de redes: uma rede plug-and-play [Bieszczad97]. Uma rede plug-and-play pode automaticamente se auto-configurar para acomodar componente e exigências de usuário. Tem-se exemplos de agentes móveis que executam tal funcionalidade, configurando componentes da rede e provendo serviços. Em outro exemplo, um applet é usado para adaptar a apresentação de dados de rede para o perfil do dispositivo e o perfil do usuário. Se os componentes ou as necessidades de uma rede plug-and-play evoluem, então a rede pode descobrir a mudança e pode modificar os dados de configuração. Os agentes nos exemplos dados possuem as capacidades de descoberta e provisão. Uma rede plug-and-play pode descobrir problemas que podem potencialmente afetar sua integridade resultando em deterioramento da qualidade de serviço ou podem comprometer a segurança. Uma vez descoberto um problema, pode ser enderessado automaticamente, então uma rede plug-and-play pode se consertar com autonomomia. Novamente, foi visto exemplos de netlets que podem incorporar inteligência necessária para descobrir, correlatar e enviar problemas surgidos na rede. Uma rede plug-and-play incorpora uma camada de middleware que provê uma abrangência de serviços para as aplicações de cadeia se sobreporem. Nos exemplos dados, foram descritos netlets que provêem modelagem de redes e serviços de medida de desempenho. |