IProtocolLayer

Package: inet.protocolelement.contract

IProtocolLayer

module interface

This module interface is implemented by all protocol layer modules that connect to a higher and to a lower protocol layer, both of which is optional.

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Implemented by

Name Type Description
BridgingLayer compound module

This module provides various layer 2 services such as packet forwarding, interface selection, virtual LAN handling, stream handling.

DirectionReverserLayer compound module

This module provides a layer that combines the decision for local delivery with the service of reversing the direction of an incoming packet to outgoing for packet forwarding.

Ieee8021dRelay simple module

This modul forwards frames (EtherFrame) based on their destination MAC addresses to appropriate ports.

Ieee8021qLayer compound module (no description)
Ieee8021qProtocol compound module

This module implements the IEEE 802.1Q protocol encapsulation/decapsulation. It also provides socket support so applications can use the protocol directly.

Ieee8021rLayer compound module (no description)
Ieee8021rProtocol compound module

This module implements the IEEE 802.1r protocol encapsulation/decapsulation.

InterfaceRelayLayer compound module

This module combines the interface MAC address learning from incoming packets with the outgoing interface selection for outgoing packets into a single layer.

MacRelayUnit simple module (no description)
Mpls simple module

Implements the MPLS protocol.

OmittedProtocolLayer compound module

This module implements the module given interface and can be used as an omitted optional module that removes itself from the module hierarchy during initialize.

StreamCoderLayer compound module

This module combines a stream decoder and a stream encoder into a layer. For incoming packets the stream decoder determines the stream of the packet. For outgoing packets the stream encoder determines the VLAN id, etc. of the packet.

StreamFilterLayer compound module

This module combines two packet filters into a protocol layer so that it can be used in a layered compound module. There are separate submodules for ingress and egress traffic, but in most cases only the ingress filter is used.

StreamIdentifierLayer compound module

This module wraps a stream identifier into a protocol layer so that it can be used in a layered compound module.

StreamPolicyLayer compound module (no description)
StreamRelayLayer compound module

This module combines a stream merger and a stream splitter module into a stream relay layer. For incoming packets the identified streams are merged by the stream merger. For outgoing packets the requested streams are split by the stream splitter.

VlanPolicyLayer compound module (no description)

Used in compound modules

Name Type Description
BridgingLayer compound module

This module provides various layer 2 services such as packet forwarding, interface selection, virtual LAN handling, stream handling.

EthernetSwitch compound module

Model of an Ethernet switch.

Ieee8021qLayer compound module (no description)
Ieee8021rLayer compound module (no description)
LinkLayerNodeBase compound module (no description)
StreamPolicyLayer compound module (no description)

Known subclasses

Name Type Description
IIeee8021qLayer module interface (no description)
IIeee8021rLayer module interface (no description)
IMacRelayUnit module interface

Module interface for modules providing Ethernet switch functionality. These modules handle the mapping between ports and MAC addresses, and forward frames to appropriate ports.

Properties

Name Value Description
omittedTypename OmittedProtocolLayer
display i=block/layer

Source code

//
// This module interface is implemented by all protocol layer modules that
// connect to a higher and to a lower protocol layer, both of which is optional.
//
moduleinterface IProtocolLayer
{
    parameters:
        @omittedTypename(OmittedProtocolLayer);
        @display("i=block/layer");
    gates:
        input upperLayerIn;
        output upperLayerOut;
        input lowerLayerIn;
        output lowerLayerOut;
}
File: src/inet/protocolelement/contract/IProtocolLayer.ned