Gestão de Redes e Sistemas Distribuídos Monitorização remota – RMON 2003/2004 Teresa Maria Vazão IST/INESC Contactos:IST/Tagus-Park Email: [email protected] Tel: 214233242 Sumário Módulo II • • • • • • • Arquitectura de Gestão SNMP • SNMPv1; MIB-II; SNMPv2 • RMON (cont) • SNMPv3 Arquitectura de Gestão OSI/TMN CORBA como Arquitectura de Gestão Gestão baseada na WEB JAVA como Arquitectura de Gestão Gestão DMTF Integração de Arquitecturas de Gestão TMV - 2004 Gestão de Redes e Sistemas Distribuídos 2 RMON - Monitorização Remota Grupo relativos alarmes, filtragem e captura de pacotes Grupo alarm Definição de valores de limiar para avaliação de QoS • Limiar ultrapassado conduz à geração de alarme • Uma só tabela - alarmTable • • • • • Identificação do valor da variável monitorizada Periodo de amostragem Características do valor de limiar (absoluto ou relativo) Limiares superior e inferior Alarmes a serem gerados pelos limiares superior e inferior (indíces da tabela de eventos). • Tabela indexada por : alarmIndex TMV - 2004 Gestão de Redes e Sistemas Distribuídos 3 RMON - Monitorização Remota AlarmEntry alarmEntry OBJECT-TYPE SYNTAX AlarmEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A list of parameters that set up a periodic checking for alarm conditions. For example, an instance of the alarmValue object might be named alarmValue.8" INDEX { alarmIndex } ::= { alarmTable 1 } AlarmEntry ::= SEQUENCE { alarmIndex Integer32, alarmInterval Integer32, alarmVariable OBJECT IDENTIFIER, alarmSampleType INTEGER, alarmValue Integer32, alarmStartupAlarm INTEGER, alarmRisingThreshold Integer32, alarmFallingThreshold Integer32, alarmRisingEventIndex Integer32, alarmFallingEventIndex Integer32, alarmOwner OwnerString, alarmStatus EntryStatus } TMV - 2004 Gestão de Redes e Sistemas Distribuídos 4 RMON - Monitorização Remota AlarmEntry alarmEntry OBJECT-TYPE SYNTAX AlarmEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A list of parameters that set up a periodic checking for alarm conditions. For example, an instance of the alarmValue object might be named alarmValue.8" INDEX { alarmIndex } ::= { alarmTable 1 } AlarmEntry ::= SEQUENCE { alarmIndex Integer32, alarmInterval Integer32, //Duração em segundos da amonstragem alarmVariable OBJECT IDENTIFIER, alarmSampleType INTEGER, //Variável a ser amostrads alarmValue Integer32, //Valor absoluto ou relativo alarmStartupAlarm INTEGER, //Valor que gerou o alarme alarmRisingThreshold Integer32, //Limiar superior alarmFallingThreshold Integer32, //Limiar inferior alarmRisingEventIndex Integer32, //Evento do limiar superior alarmFallingEventIndex Integer32, //Evento do limiar inferior alarmOwner OwnerString, alarmStatus EntryStatus } TMV - 2004 Gestão de Redes e Sistemas Distribuídos 5 RMON - Monitorização Remota Ainda sobre os alarmes TMV - 2004 Gestão de Redes e Sistemas Distribuídos 6 RMON - Monitorização Remota Grupo relativos alarmes, filtragem e captura de pacotes Grupo filter Selecção dos pacotes a serem monitorizados • dataFilter - selecção de pacotes com base em padrões • statusFilter - selecção de pacotes com base em estado • combinação lógica de ambos (AND ou OR) • tabela indexada por: filterIndex • associação de um conjunto de filtros a um canal (channelIfIndex) • channel -conjunto de pacotes que satisfaz os critérios de filtragem (acceptMatched) ou que não satisfaz os critérios de filtragem (acceptFailed) • • • • TMV - 2004 mantêm-se um contador de pacotes tem um estado associado (on ou off) pode ser configurado para gerar um evento ou o pacote ser capturado tabela indexada por: channelIndex Gestão de Redes e Sistemas Distribuídos 7 RMON - Monitorização Remota filterPktDataOffset Aplicação de Filtros PACOTE filterPktData Dados a comparar Bitwise XNOR Bitwise AND filterPktDataMask Só bits a 1 é que são analisados ! filterPktDataNotMask Bitwise NOT Igualdade Bitwise AND TMV - 2004 Gestão de Redes e Sistemas Distribuídos Desigualdade Bitwise AND 8 RMON - Monitorização Remota filterEntry filterEntry OBJECT-TYPE SYNTAX FilterEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A set of parameters for a packet filter applied on a particular interface. As an example, an instance of the filterPktData object might be named filterPktData.12" INDEX { filterIndex } ::= { filterTable 1 } FilterEntry ::= SEQUENCE { filterIndex Integer32, filterChannelIndex Integer32, filterPktDataOffSet Integer32, //Posição onde se deve iniciar a procura filterPktData OCTET STRING, //Bits que se devem procurar filterPktDataMask OCTET STRING, //Máscara que identifica os bits a //analisar filterPktDataNotMask OCTET STRING, //Bit=0=>Igualdade; Bit=1=>inverso filterPktStatus Integer32, filterPktStatusMask Integer32, filterPktStatusNotMask Integer32, filterOwner OwnerString, filterStatus EntryStatus } TMV - 2004 Gestão de Redes e Sistemas Distribuídos 9 RMON - Monitorização Remota Aplicação de Canais Estado do Pacote Pacote DataFilter (i, 1) Resultado AND StatusFilter (i, 1) OR DataFilter (i, Ni) AND StatusFilter (i, Ni) Condições: • channelDataControl = on ; pode ser gerado evento; pacote pode ser capturado • channelMatches incrementado por cada pacote que passa o filtro TMV - 2004 Gestão de Redes e Sistemas Distribuídos 10 RMON - Monitorização Remota channelEntry channelEntry OBJECT-TYPE SYNTAX ChannelEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A set of parameters for a packet channel applied on a particular interface. As an example, an instance of the channelMatches object might be named channelMatches.3" INDEX { channelIndex } ::= { channelTable 1 } ChannelEntry ::= SEQUENCE { channelIndex channelIfIndex channelAcceptType channelDataControl channelTurnOnEventIndex channelTurnOffEventIndex channelEventIndex channelEventStatus channelMatches channelDescription channelOwner channelStatus } TMV - 2004 Gestão Integer32, Integer32, INTEGER, //Matched ou Failed INTEGER, //On (dados fluem no canal); Off (não) Integer32, //Evento q. põe channelDataControl on Integer32, //Evento q. Põe channelDataControl off Integer32, //Índice do evento a ser gerado INTEGER, //eventReady,eventFired,eventAlwaysReady Counter32, //Nº de vezes que ocorreu um match DisplayString, OwnerString, EntryStatus de Redes e Sistemas Distribuídos 11 RMON - Monitorização Remota Uma pausa para descobrirem …. Filtrar os pacotes UDP que chegam ao porto 160 da máquina cujo endereço IP é 146.193.1.144 e que está ligada a uma rede Ethernet. Contar o número de pacotes UDP recebidos nesse canal •Criar uma linha na tabela de filtros •Criar um canal •Contar o número de ocorrências do canal TMV - 2004 Gestão de Redes e Sistemas Distribuídos 12 RMON - Monitorização Remota Aplicação de Filtros - exemplo Inicio do campo protocolo PACOTE Valor de: Protocolo = UDP Porto (UDP) DA filterPktData Bitwise XNOR Bitwise AND filterPktDataMask Posição de: Protocolo, Porto, DA = 1 filterPktDataNotMask Bitwise NOT Igualdade = 0 Bitwise AND TMV - 2004 Gestão de Redes e Sistemas Distribuídos Bitwise AND 13 RMON - Monitorização Remota MIB-RMON - Aplicação de Filtros FilterEntry ::= SEQUENCE { filterIndex filterChannelIndex filterPktDataOffset filterPktData filterPktDataMask filterPktDataNotMask filterPktStatus filterPktStatusMask filterPktStatusNotMask filterOwner filterStatus } TMV - 2004 INTEGER (1..65535), INTEGER (1..65535), INTEGER, OCTET STRING, OCTET STRING, OCTET STRING, INTEGER, INTEGER, INTEGER, OwnerString, EntryStatus Gestão de Redes e Sistemas Distribuídos 14 RMON - Monitorização Remota MIB-RMON - Aplicação de Filtros Cabeçalho das Tramas Ethernet 0 16 47 Endereço MAC de Destino Endereço MAC de Origem Tipo de Protocolo Campo de Informação Cabeçalho dos Pacotes IP 0 23 bytes 16 31 Versão IHL Tipo de Serviço Comprimento Total do Datagrama Flags Identificação para reassemblagem Offset do segment Time to Live Protocolo Checksum do Cabeçalho Endereço IP de Origem Endereço IP de Destino Cabeçalho do Pacote UDP 0 31 Porto de Origem Comprimento Porto de Destino Checksum Campo de Informação TMV - 2004 Gestão de Redes e Sistemas Distribuídos 15 RMON - Monitorização Remota MIB-RMON - Aplicação de Filtros Criar uma linha, na tabela de filtros SetRequest (X.Y.filterStatus[1]= createRequest (2) SetRequets (X.Y.filterChannelIndex[1] = 1 ) Programar o filtro Ver em seguida ………………………………………………………………………………………. Terminar a criação do filtro e activá-lo SetRequest (X.Y.filterStatus[1] = valid (1)) NOTA: X = iso.org.dod.internet.mgmt.mib-2.rmon Y = filter.filterTable.filterEntry TMV - 2004 Gestão de Redes e Sistemas Distribuídos 16 RMON - Monitorização Remota MIB-RMON - Aplicação de Filtros Programar o filtro • Ponto inicial da análise: identificador do protocolo SetRequest (X.Y.filterPktDataOffset[1] = 23 Programar o filtro • Os dados que se vão comparar com os pacotes de entrada: • IP Dest = 146.193.1.144 92:c1:1:90 • Port=160 a0 • Protocolo = UDP = 17 11 SetRequest (X.Y.filterPktData[1]= 11:00:00:00:00:00:00:92:c1:1:90:00:00:00:00:a0 TMV - 2004 Gestão de Redes e Sistemas Distribuídos 17 RMON - Monitorização Remota MIB-RMON - Aplicação de Filtros Programar o filtro • A máscara que vai ser aplicada no processo de comparação (só os bits com 1 vão ser analisados) SetRequest (X.Y.filterPktDataMask [1] = ff:00:00:00:00:00:00:ff:ff:ff:ff:00:00:ff:ff) Programar o filtro • Indicação se se pretende obter uma igualdade (0) ou desigualdade (1) SetRequest (X.Y.filterPktDataNotMask [1] = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00) TMV - 2004 Gestão de Redes e Sistemas Distribuídos 18 RMON - Monitorização Remota MIB-RMON - Aplicação de canais Criar uma linha, na tabela de canais SetRequest (X.Z.channelStatus[1]= createRequest (2) Programar o canal SetRequest (X.Z.channelAcceptType[1]= acceptMatched(1)) Terminar a criação do canal e activá-lo SetRequest (X.Z.channelStatus[1] = valid (1)) Obter valores da contagem GetRequest (X.Z.channelMatches[1]) NOTA: X = iso.org.dod.internet.mgmt.mib-2.rmon Z = filter.channelTable.channelEntry TMV - 2004 Gestão de Redes e Sistemas Distribuídos 19 RMON - Monitorização Remota Grupo relativos alarmes, filtragem e captura de pacotes Grupo packet Capture Selecção dos pacotes a serem capturados de um dos canais associados aos filtros • Tabela de Controlo - bufferControlTable • Canal objecto de captura • Parâmetros da tabela de dados • tipo de acção a realizar quando o buffer estiver cheio, dimensão máxima da (parte) de pacote a capturar , tamanho do buffer • Tabela de Dados - captureBufferTable: • (partes) de pacotes capturados, dimensão do pacote real, instante de captura • tabela indexada por: captureBufControlInd + captureBufInd TMV - 2004 Gestão de Redes e Sistemas Distribuídos 20 RMON - Monitorização Remota bufferControlEntry bufferControlEntry OBJECT-TYPE SYNTAX BufferControlEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A set of parameters that control the collection of a stream of packets that have matched filters. As an example, an instance of the bufferControlCaptureSliceSize object might be named bufferControlCaptureSliceSize.3" INDEX { bufferControlIndex } ::= { bufferControlTable 1 } BufferControlEntry ::= SEQUENCE { bufferControlIndex Integer32, bufferControlChannelIndex Integer32, //Id. canais que originam pacotes bufferControlFullStatus INTEGER, //spaceAvailable ou full bufferControlFullAction INTEGER, //lockWhenFull -> full bufferControlCaptureSliceSize Integer32, //Nº máx. de octetos capturados/pacote bufferControlDownloadSliceSize Integer32, //N máx. de octetos/pacote lidos (SNMP) bufferControlDownloadOffset Integer32, //Offset do 1º octeto lido (SNMP) bufferControlMaxOctetsRequested Integer32, //Nº máx. de octetos do buffer (pedido) bufferControlMaxOctetsGranted Integer32, //Nº máx. de octectos do buffer (dado) bufferControlCapturedPackets Integer32, //Nº de octectos no buffer bufferControlTurnOnTime TimeTicks, //sysUpTime do início da captura bufferControlOwner OwnerString, bufferControlStatus EntryStatus } TMV - 2004 Gestão de Redes e Sistemas Distribuídos 21 RMON - Monitorização Remota captureBufferEntry captureBufferEntry OBJECT-TYPE SYNTAX CaptureBufferEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A packet captured off of an attached network. As an example, an instance of the captureBufferPacketData object might be named captureBufferPacketData.3.1783" INDEX { captureBufferControlIndex, captureBufferIndex } ::= { captureBufferTable 1 } CaptureBufferEntry ::= SEQUENCE captureBufferControlIndex captureBufferIndex captureBufferPacketID captureBufferPacketData captureBufferPacketLength captureBufferPacketTime captureBufferPacketStatus } TMV - 2004 { Integer32, Integer32, Integer32, //Nº de ordem de rxd dos pacotes OCTET STRING, //Dados Integer32, //Dimensão Integer32, //tempo (ms) início da capt. do pacote Integer32 Gestão de Redes e Sistemas Distribuídos 22 RMON - Monitorização Remota Grupo relativos alarmes, filtragem e captura de pacotes Grupo event Definição de eventos • Um evento é gerado por uma condição e pode causar uma acção, causar o armazenamento em logs ou gerar um Trap. • Tabela de Controlo - eventControlTable • Descrição de um evento • Parâmetros da tabela de dados • tipo de evento (none, Log, snmp-trap, log-and-trap) , comunidade do(s) Gestor(es) de destino do Trap • Tabela de Dados - logTable: • evento armazenado e tempo de geraçãp • tabela indexada por: logEventIndex + logIndex TMV - 2004 Gestão de Redes e Sistemas Distribuídos 23 RMON - Monitorização Remota eventEntry eventEntry OBJECT-TYPE SYNTAX EventEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A set of parameters that describe an event to be generated when certain conditions are met. As an example, an instance of the eventLastTimeSent object might be named eventLastTimeSent.6" INDEX { eventIndex } ::= { eventTable 1 } EventEntry ::= SEQUENCE eventIndex eventDescription eventType eventCommunity eventLastTimeSent eventOwner eventStatus } TMV - 2004 { Integer32, DisplayString, INTEGER, //None, log, snmptrap, log-and-trap OCTET STRING, //String de comunidade para o trap TimeTicks, //sysUpTime em que o evento foi gerado OwnerString, EntryStatus Gestão de Redes e Sistemas Distribuídos 24 RMON - Monitorização Remota logEntry logEntry OBJECT-TYPE SYNTAX LogEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A set of data describing an event that has been logged. For example, an instance of the logDescription object might be named logDescription.6.47" INDEX { logEventIndex, logIndex } ::= { logTable 1 } LogEntry ::= SEQUENCE { logEventIndex logIndex logTime logDescription } TMV - 2004 Integer32, Integer32, TimeTicks, DisplayString Gestão de Redes e Sistemas Distribuídos 25 RMON - Monitorização Remota Uma pausa para descobrirem …. Definir a programação necessária à geração de Trap-snmp quando o ritmo de chegada de octetos atingir 30Mb/s ? Criar uma linha nas tabelas • alarmTable para definir as condições de geração de alarme • eventTable para definir o alarme TMV - 2004 Gestão de Redes e Sistemas Distribuídos 26 RMON - Monitorização Remota Exemplo de aplicação Criar a entrada na tabela de alarmes SetRequest (X.Y.alarmStatus[1]= createRequest (2) SetRequet (X.Y.alarmIndex[1] = 1 ) SetRequet (X.Y.alarmOwner[1] = ´RNL´ ) Programar alarme para medir pacotes à entrada e gerar alarme quando o ritmo atingir 30Mb/s SetRequest SetRequest SetRequest SetRequest SetRequest SetRequest (X.Y.alarm.Interval[1] = 60) (X.Y.alarmVariable[1]= etherStatsOctets) (X.Y.alarmSampleType[1]= 1) (X.Y.alarmStartupAlarm[1]= 1) (X.Y.alarmRisingThreshold[1]= 30*106/8) (X.Y.alarmRisingEventIndex[1]= 2) Activar entrada na tabela de alarmes SetRequest (X.Y.alarmStatus[1] = valid (1)) NOTA: X = iso.org.dod.internet.mgmt.mib-2.rmon Y = alarm.alarmTable.alarmEntry TMV - 2004 Gestão de Redes e Sistemas Distribuídos 27 RMON - Monitorização Remota Exemplo de aplicação Criar a entrada na tabela de eventos SetRequest (X.Y.eventStatus[2]= createRequest (2) SetRequet (X.Y. eventIndex[2] = 2 ) SetRequet (X.Y. eventOwner[2] = ´RNL´ ) Programar o evento para gerar um Trap-SNMP a ser recebido pelos Gestores da comunidade priv-rnl SetRequest (X.Y.eventType[2] = snmp-trap (3)) SetRequest (X.Y.eventDescription[2]= ´Upper-threshold reached´) SetRequest (X.Y.eventCommunity[2]= ´priv-rnl´) Activar entrada na tabela de eventos SetRequest (X.Y.eventStatus[1] = valid (1)) NOTA: X = iso.org.dod.internet.mgmt.mib-2.rmon Y = alarm.eventTable.eventEntry TMV - 2004 Gestão de Redes e Sistemas Distribuídos 28 Resumo da aula • RMON • Estudo de RMON 1 (cont) TMV - 2004 Gestão de Redes e Sistemas Distribuídos 29