• Nenhum resultado encontrado

3. CONSTRUINDO UMA MIB SNMP

3.6.1 RFC 2578 – SMIv2

A RFC 2578 trata da estrutura de gerenciamento propriamente dita, mapeando os módulos (e as respectivas cláusulas) e os objetos. A SMIv2 é dividida em três partes: definições de módulos, definições de objetos e definições de notificações:

Segundo MCCLOGHRIE (1999a), as definições de módulos são usadas para fazer a descrição dos módulos de informação. A macro ASN.1 , MODULE-IDENTITY é usada para fornecer dados para contato e revisão histórica para o módulo e deve ser incluída apenas uma vez em cada módulo. O valor desta macro é o nome do objeto na sub-árvore Internet, - é o nome da MIB – e deve ser escrito em letras minúsculas. As cláusulas desta macro são estruturadas da seguinte forma: nome MODULE-IDENTITY LAST-UPDATED ORGANIZATION CONTACT-INFO DESCRIPTION REVISION DESCRIPTION

55

ORGANIZATION – é obrigatória; contém um texto com o nome da organização responsável pelo desenvolvimento da MIB.

CONTACT-INFO – é obrigatória; informa o nome, endereço, número de telefone e endereço eletrônico da pessoa responsável por detalhes sobre a MIB.

DESCRIPTION – é obrigatória; contém um texto descrevendo o conteúdo da MIB.

REVISION – não é obrigatória; é usada para descrever as revisões feitas na MIB, deve estar em ordem cronológica inversa e cada revisão deve conter a data e hora.

DESCRIPTION – é obrigatória; contém uma descrição das alterações efetuadas pela revisão.

A figura 3.5 exibe um exemplo da macro MODULE-IDENTITY: ecommerce MODULE-IDENTITY

LAST-UPDATED "0209161200Z" ORGANIZATION "UFSC-CPGCC" CONTACT-INFO

Roseleine Calgaro de Mello

Rua Lauro Linhares, 2123 sala 803 A Trindade - Florianópolis – SC

88036-002 – Brazil

Email: [email protected]" DESCRIPTION

"The MIB module defines e-commerce's clients activities. The tables'size are variable because the manageable events are dynamic, for example, sometimes there can be 1 or 100 clients in the e-commerce site."

::= { experimental 9999 }

Fig. 3.5 Exemplo da macro MODULE-IDENTITY

A macro OBJECT-IDENTITY é usada para definir informações de uma declaração OBJECT IDENTIFIER. Todas as declarações OBJECT IDENTIFIER que definem um valor de tipo de identificação – usando o tipo AutonomousType (definido na RFC 2579) – devem ser definidas através da macro OBJECT IDENTIFIER. Em uma chamada desta macro o valor passado é um OBJECT IDENTIFIER. A expansão desta macro acontece durante a implementação e não durante a execução. As cláusulas desta macro são estruturadas:

56

STATUS DESCRIPTION REFERENCE

STATUS – é obrigatória, indica se a definição é atual ou histórica. Os valores possíveis são “current” - indica que esta definição é válida, “obsolete” - indica que a definição está obsoleta e não deve ser implementada ou “deprecated” – indica que a definição está obsoleta mas permite a implementação para fins de interoperabilidade com versões existentes.

DESCRIPTION – é obrigatória; contém uma descrição textual da declaração do objeto.

REFERENCE – não é obrigatória; contém uma referência textual para outro documento ou módulo de informação que indica informações adicionais relevantes para a definição.

As definições de objetos são usadas para descrever os objetos gerenciados. A macro ASN.1, OBJECT-TYPE é usada para informar a sintaxe e semântica destes objetos. Para os objetos “folha” – que não estão contidos em uma tabela -, as instâncias são identificadas colocando um zero ao nome do objeto. Para os objetos colunares – contidos em uma tabela – a instância é identificada pela cláusula INDEX da tabela. O conteúdo desta macro é o nome do objeto – é um OBJECT IDENTIFIER – atribuído administrativamente. Apenas quando o objeto for uma linha conceitual, outros objetos podem ser derivados dele. As cláusulas desta macro são estruturadas:

nome OBJECT-IDENTIFIER

SYNTAX Integer32 e INTEGER

OCTECT STRING OBJECT IDENTIFIER SEQUENCE e SEQUENCE OF IpAddress Counter32 e Counter 64 Gauge32

57 TimeTicks Unsigned32 UNITS MAX-ACCESS STATUS DESCRIPTION REFERENCE INDEX / AUGMENTS DEFVAL

SYNTAX – é obrigatória; define o tipo de estrutura de dados que o objeto corresponde. Os tipos possíveis são os tipos base, ou convenções textuais – (é um tipo novo definido usando um tipo base existente – definido na RFC2579). Os tipos base são:

Integer32 e INTEGER – valor inteiro com intervalo de -2147483648 a 2147483647. O tipo INTEGER pode ser usado associado a um nome de opção, por exemplo: a opção ativo é representada pelo INTEGER 1 e a opção inativo é representada pelo INTEGER 2; o primeiro caracter da opção deve ser minúsculo e hífens não são permitidos.

OCTET STRING – representa valores binários ou dados de texto.

OBJECT IDENTIFIER – representa nomes definidos administrativamente – usado para identificar objetos de um módulo.

Construção de BITS – representa uma lista de bits nomeados (SEQUENCE, SEQUENCE OF). Consiste de um ou mais letras ou dígitos, no máximo de 64 caracteres. O caracter inicial deve ser uma letra minúscula.

IpAddress – representa um endereço internet de 32 bits.

Counter32 – representa um inteiro não negativo que é incrementado de 1 até o valor decimal de 4294967295 e então volta a incrementar a partir de zero. A cláusula MAX- ACCESS para este tipo deve ser “read-only” ou “accessible-for-notify”.

58

Gauge32 – representa um inteiro não negativo que pode incrementar ou decrementar até um determinado valor.

TimeTicks – representa um inteiro não negativo que representa o tempo em milésimos de segundos entre dois períodos. Estes períodos devem ser especificados na cláusula DESCRIPTION do objeto.

Counter64 – representa um inteiro não negativo que é incrementado de 1 até o valor máximo de 18446744073709551615, e então volta a incrementar a partir de zero. A cláusula MAX-ACCESS para este tipo deve ser “read-only” ou “accessible-for- notify”.

Unsigned32 – representa valores inteiros entre 0 e 4294967295 inclusive.

Conceptual Tables – é uma estrutura tabular usada para um conjunto ordenado de objetos. Cada linha conceitual da tabela - (define as colunas da tabela) pode conter zero ou mais linhas e cada linha pode contar um ou mais objetos escalares – quando em uma tabela são chamados de objetos colunares. Usa-se a macro OBJECT-TYPE para definir o objeto que representa a coluna e o objeto que representa cada linha da tabela. Para tabelas que permitem a criação e exclusão de instâncias de objetos (linhas da tabela) dinamicamente deve haver um objeto com a sintaxe “RowStatus” e a cláusula MAX-ACCESS para este objeto deve ser “read-create” – esta é a coluna que identifica o estado da linha conceitual.

UNITS – não é obrigatória; contém um texto das unidades associadas ao objeto.

MAX-ACCESS - é obrigatória; define o nível máximo de acesso ao objeto. Os valores possíveis - do menor acesso ao maior - são: not-accessible, accessible-for-notify, read-only, read-write e read-create. Se em uma linha conceitual um objeto tem nível máximo de acesso igual a “read-create”, nenhum outro objeto na mesma linha conceitual pode ter acesso igual a “read-write”.

59

STATUS – é obrigatória; indica se a definição é atual ou histórica. Os valores possíveis são “current” - indica que esta definição é válida, “obsolete” - indica que a definição está obsoleta e não deve ser implementada ou “deprecated” – indica que a definição está obsoleta mas permite a implementação para fins de interoperabilidade com versões existentes.

DESCRIPTION – é obrigatória; contém uma descrição textual do objeto informando as definições semânticas necessárias para a implementação.

REFERENCE – não é obrigatória; contém uma referência textual para outro documento ou módulo de informação que indica informações adicionais relevantes para a definição.

INDEX – é obrigatória apenas se o objeto é uma linha conceitual de uma tabela e se a cláusula AUGMENTS não estiver presente. Informa qual é o objeto que identifica a instância dos objetos da tabela. O objeto pode estar presente na mesma tabela ou em outra, mas não pode ser um objeto escalar. A sintaxe do objeto INDEX não pode ser Counter32 nem Counter64 e a cláusula MAX-ACCESS para o objeto índice deve ser “not-accessible”.

AUGMENTS – é obrigatória apenas se o objeto é uma linha conceitual de uma tabela e se a cláusula INDEX não estiver presente. Cada linha conceitual deve ter uma cláusula INDEX ou AUGMENTS. Se existe um relacionamento de um para um entre duas tabelas a cláusula AUGMENTS deve ser usada, mas se existir um relacionamento esparso entre duas tabelas então a cláusula INDEX deve ser usada.

DEFVAL – não é obrigatória; define um valor padrão para o objeto. Esta cláusula não deve ser usada para objetos com sintaxe igual a Counter32 ou Counter64.

60

ecommClientTable OBJECT-TYPE

SYNTAX SEQUENCE OF EcommClientEntry MAX-ACCESS not-accessible

STATUS current DESCRIPTION

"This table holds all clients who visit the site." ::= { ecommClient 1} ecommClientEntry OBJECT-TYPE SYNTAX EcommClientEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION

"An entry (conceptual row) in the e-commerce client table." INDEX { ecommClientId } ::= { ecommClientTable 1 } EcommClientEntry ::= SEQUENCE { ecommClientId Unsigned32, ecommClientName SnmpAdminString } ecommClientId OBJECT-TYPE SYNTAX Unsigned32 (1..4294967295) MAX-ACCESS not-accessible STATUS current DESCRIPTION

"An index that uniquely identify an e-commerce client." ::= { ecommClientEntry 1 }

Fig. 3.6 Exemplo da macro OBJECT-TYPE

As definições de notificações são usadas para descrever transmissões não solicitadas de informações de gerenciamento (SNMPv2-Trap-PDU ou InformRequest-PDU). A macro ASN.1, NOTIFICATION-TYPE, é usada para informar a sintaxe e semântica de uma notificação e o valor passado nesta macro é o nome da notificação. A expansão desta macro é feita durante a implementação e não durante a execução. As cláusulas desta macro são assim estruturadas: nome NOTIFICATION-TYPE OBJECTS STATUS DESCRIPTION REFERENCE

61

OBJECTS – não é obrigatória; define uma seqüência ordenada de tipos de objetos da MIB. Em cada instância de notificação, somente uma instância para cada tipo de objeto deve estar presente e na ordem especificada. Um objeto especificado nesta cláusula deve ter conteúdo diferente de “not-accessible” na cláusula MAX-ACCESS.

STATUS – é obrigatória, indica se a definição é atual ou histórica. Os valores possíveis são “current” - indica que esta definição é válida, “obsolete” - indica que a definição está obsoleta e não deve ser implementada ou “deprecated” – indica que a definição está obsoleta mas permite a implementação para fins de interoperabilidade com versões existentes.

DESCRIPTION – é obrigatória; contém uma descrição da notificação que fornece a semântica necessária para a implementação e deve indicar quais instâncias dos objetos mencionados na cláusula OBJECT devem estar contidos neste tipo de notificação.

REFERENCE – não é obrigatória; contém uma referência textual para outro documento ou módulo de informação que indica informações adicionais relevantes para a definição.

A figura 3.7 exibe um exemplo de utilização da macro NOTIFICATION-TYPE.

ecommNotifOperErr NOTIFICATION-TYPE OBJECTS { ecommProblemsTime, ecommProblemsOperDescr, ecommClientID, ecommProductID } STATUS current DESCRIPTION

"When it has been enabled, this notificatin is generated whenever an operational error occours." ::= {ecommNotifications 1}

62

Documentos relacionados