4 Resilient Packet Ring – IEEE 802.17
4.6 Serviços do MAC
4.6.3 Serviços do MAC para a camada cliente
O serviço do MAC é definido pela semântica do modelo de interfaces ilustrado na figura 4.15. Um pedido está associado ao sentido do cliente do MAC para o MAC, uma indicação está associada ao sentido do MAC para o cliente do MAC. As primitivas de controlo são usadas pelo cliente local do MAC para solicitar e para receber a informação de controlo das primitivas locais do MAC. São usadas primitivas de dados pelo cliente local do MAC, para trocar unidades de dados do protocolo da camada cliente (PDUs) com os clientes remotos do MAC.
Sub-camada de Controlo do MAC
Sub-camada MAC datapath Trama de transmissão Trama de recepção Trama de transmissão Trama de recepção MA_Data.request MA_Data.indication MA_Control.request MA_Control.indication PHY MAC Cliente MAC Trama de recepção Trama de transmissão
A primitiva MA_DATA.request define a transferência de dados de uma entidade cliente do MAC a uma única entidade par, ou a múltiplas entidades pares no caso de endereços de grupo.
A primitiva MA_DATA.request é invocada pela entidade cliente sempre que os dados devam ser transferidos a uma entidade ou a entidades pares. A recepção desta primitiva faz com que a entidade MAC crie uma trama de dados ou uma trama de dados estendida; preencha os campos cujos valores são dados ou determinados pelos parâmetros deste pedido; e passe a trama correctamente formada à unidade de transmissão, para transferência à entidade ou às entidades pares da sub-camada do MAC.
O MAC não reflecte tramas de volta ao cliente. Se um cliente emitir uma primitiva MA_DATA.request com um valor de destination_address igual ao seu endereço MAC local, o pedido será rejeitado.
O MAC também não aceita pedidos do cliente quando a indicação apropriada de send não estiver presente.
A primitiva MA_DATA.indication define a transferência de dados da entidade da sub-camada do MAC à entidade cliente do MAC.
O MA_DATA.indication é passado desde a entidade da sub-camada do MAC (através da sub- camada de controlo do MAC) à entidade ou às entidades clientes do MAC, para indicar a chegada de uma trama à entidade local da sub-camada do MAC que é destinada ao cliente do MAC. Tais tramas são relatadas apenas se são validamente formadas e o seu endereço de destino designa a entidade local do MAC (endereço de estação local, endereço de grupo ou flooded).
A primitiva MA_CONTROL.request define a transferência de pedidos de controlo do cliente do MAC à sub-camada de controlo do MAC. Não fornece meios directos para um cliente transmitir uma trama de controlo do MAC local em qualquer ringlet; embora as tramas de controlo (por exemplo eco ou flush) possam indirectamente ser geradas em consequência deste pedido.
Se uma entidade ao nível do cliente requerer o ajuste ou a informação de status, ou a configuração de parâmetros de status do MAC, direcciona ou questiona o MLME para ajustar ou obter esta informação. Exemplos incluem as bases de dados da topologia e do status, comutação manual ou forçada de fila-única versus fila-dupla
Esta primitiva define também a transferência de comandos de controlo de uma entidade cliente do MAC à entidade local da sub-camada de controlo do MAC.
Esta primitiva é gerada por um cliente do MAC sempre que deseja usar os serviços da entidade da sub-camada de controlo do MAC.
A primitiva MA_CONTROL.indication define a transferência de indicações de status de controlo da sub-camada de controlo do MAC ao cliente do MAC.
Esta primitiva é gerada pela sub-camada de controlo do MAC sob circunstâncias específicas a cada operação de controlo do MAC.
O uso pelo cliente das indicações fornecidas pelo MA_CONTROL.indication é disponibilizado para permitir que um cliente execute acções mais complexas para além da potencialidade do MAC, por exemplo, implementando um algoritmo mais eficiente de programação de uma trama, baseado no conhecimento dos pontos de bloqueio relatados através do MULTI_CHOKE_IND.
As indicações e os operandos das indicações não são necessariamente passados fisicamente ao cliente. Podem meramente ser disponibilizados ao cliente. Os meios de indicação ou de disponibilização são um detalhe da implementação local.
MA_DATA.request [destination_address, source_address (opcional), mac_service_data_unit, frame_check_sequence (opcional), service_class, ringlet_id (opcional), mac_protection (opcional), mark_fe (opcional), strict_order (opcional), destination_address_extended (opcional), source_address_extended (opcional), flooding_form (opcional)]
transmitida. O source_address, se presente, e diferente do endereço MAC da estação, especifica um endereço MAC individual, a ser usado para criar o campo de saExtended (endereço MAC de origem, estendido) da trama transmitida e para determinar o formato da trama de dados básica ou estendida.
• O mac_service_data_unit fornece o payload a ser entregue. Especifica a unidade de dados de serviço do MAC a ser transmitida pela entidade da sub-camada do MAC no campo de serviceDataUnit da trama transmitida.
• O frame_check_sequence fornece o valor do campo do fcs da trama transmitida.
• O service_class indica a classe de serviço requisitada pelo cliente do MAC, e é usado pela entidade do MAC para seleccionar o valor do campo sc (service class) e para indicar o tratamento requerido pelo MAC para a trama transmitida.
• O ringlet_id indica a escolha do ringlet do cliente, e é usado pela entidade MAC para seleccionar o valor do campo ri (ringlet identifier) da trama transmitida, isto antes de alguma mudança baseada na protecção.
• O mac_protection indica a escolha de se o MAC fornece protecção para a trama.
• O mark_fe indica um pedido para marcar e tratar uma trama como elegível para fairness, não obstante tenha sido marcada ou tratada de outra maneira, guiando a entidade MAC em como ajustar o campo fe (fairness eligible). Este parâmetro é válido apenas para os pedidos que incluem um pedido de Classe-B para o service_class, e é ignorado para todos os pedidos restantes.
• O strict_order indica um pedido para marcar e tratar uma trama de dados como estrita ou relaxada, o que é usado pela entidade MAC para seleccionar o valor so (strict order). O parâmetro de strict_order é ignorado e todas as tramas têm o campo so ajustado a 1, se a variável de forceStrict for ajustada a TRUE.
• O destination_address_extended especifica um indivíduo ou o endereço MAC de grupo, diferente do endereço de MAC local, a ser usado para criar o campo de daExtended da trama transmitida. Se o parâmetro destination_address_extended é fornecido, o MAC usa o formato estendido da trama de dados. Sempre que o parâmetro destination_address_extended é fornecido, o parâmetro source_address_extended é também requerido para ser fornecido. • O source_address_extended especifica um endereço MAC individual, a ser usado para criar o
campo de saExtended da trama transmitida. Se o parâmetro source_address_extended é fornecido, o MAC usa o formato estendido da trama de dados. Sempre que o parâmetro source_address_extended é fornecido, o parâmetro destination_address_extended é requerido também para ser fornecido.
• O flooding_form indica um pedido para usar um flooding form particular, e ajustar o campo fi (flooding indication) de acordo. Um valor omitido ou um valor de FI_NONE dirigem o MAC a não fazer o flooding da trama, a menos que a selecção do ringlet determinar que o necessita. Um valor à excepção de FI_NONE dirige o MAC para fazer o flooding da trama não obstante a determinação que seria feita de outra maneira pela selecção do ringlet, e para usar o
flooding form seleccionado para a trama.
MA_DATA.indication (destination_address, source_address, mac_service_data_unit, frame_check_sequence, reception_status, service_class, ringlet_id, fairness_eligible, strict_order, extended_frame, destination_address_extended, source_address_extended)
• O destination_address indica o valor do campo da da trama que entra. O source_address indica o valor do campo sa da trama que entra.
• O mac_service_data_unit fornece a unidade de dados de serviço do MAC, como especificado pelo campo de serviceDataUnit da trama que entra.
• O reception_status indica o status da trama recebida à entidade cliente do MAC. Este campo pode ter o valor de RECEIVE_FCS_ERROR somente se a variável copyBadFcs é ajustada a TRUE.
• O service_class indica a classe de serviço com a qual a trama foi emitida. • O ringlet_id indica o ajuste do bit ri no cabeçalho da trama.
• O fairness_eligible indica o ajuste do bit fe no cabeçalho da trama. • O strict_order indica o ajuste do bit so no cabeçalho da trama. • O extended_frame indica o ajuste do bit ef no cabeçalho da trama.
No destination_address_extended, se o extended_frame é TRUE indica o valor do campo daExtended da trama que entra.
No source_address_extended, se o extended_frame é TRUE indica o valor do campo saExtended da trama que entra.
O MAC não reflecte tramas de volta ao cliente. Se um MAC receber uma trama com o valor do sa igual ao endereço do MAC local, não faz com que uma primitiva de MA_DATA.indication seja emitida ao cliente de origem.
MA_CONTROL.request (opcode, request_operand_list)
O parâmetro opcode indica a operação de controlo requerida pela entidade cliente do MAC.
opcode significado operandos
OAM_ECHO_REQ Pedido para transmitir uma trama de pedido de eco Payloadpedido de eco e parâmetros de OAM_FLUSH_REQ Pedido para transmitir uma trama de flush Payload e parâmetros de flush
OAM_ORG_REQ Pedido para transmitir uma trama OAM especifica de uma organização Payloadespecíficos de uma e parâmetros organização
Tabela 4.2 — Opcodes de control request
O efeito da recepção desta primitiva pela sub-camada de controlo do MAC é específico do opcode.
MA_CONTROL.indication (opcode, indication_operand_list)
Os elementos do parâmetro indication_operand_list são específicos a cada parâmetro do opcode.