Package: inet.linklayer.ethernet.modular
EthernetCutthroughInterface
compound moduleThis module represents an Ethernet network interface with cut-through support.
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Extends
| Name | Type | Description |
|---|---|---|
| LayeredEthernetInterface | compound module |
This module implements an Ethernet network interface. |
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| displayStringTextFormat | string | "%a (%i)\n%m" | |
| recordPcap | bool | false | |
| numPcapRecorders | int | recordPcap ? 1 : 0 | |
| protocol | string | "ethernetmac" | |
| broadcast | bool | true | |
| multicast | bool | true | |
| address | string | "auto" | |
| bitrate | double | ||
| mtu | int | 1500B | |
| interfaceTableModule | string | ||
| macTableModule | string |
Properties
| Name | Value | Description |
|---|---|---|
| networkInterface | ||
| lifecycleSupport | ||
| class | NetworkInterface | |
| display | i=block/ifcard |
Gates
| Name | Direction | Size | Description |
|---|---|---|---|
| upperLayerIn | input | ||
| upperLayerOut | output | ||
| cutthroughIn | input | ||
| cutthroughOut | output | ||
| phys | inout |
Signals
| Name | Type | Unit |
|---|---|---|
| packetDropped | inet::Packet |
Statistics
| Name | Title | Source | Record | Unit | Interpolation Mode |
|---|---|---|---|---|---|
| packetDropInterfaceDown | packet drops: interface down | packetDropReasonIsInterfaceDown(packetDropped) | count, sum(packetBytes), vector(packetBytes) | none | |
| packetDropNoCarrier | packet drops: no carrier | packetDropReasonIsNoCarrier(packetDropped) | count, sum(packetBytes), vector(packetBytes) | none |
Direct method calls (observed)
| call to | function | info |
|---|---|---|
| MessageDispatcher | inet::MessageDispatcher::handleRegisterInterface | handleRegisterInterface |
| MessageDispatcher | inet::MessageDispatcher::pushPacket | pushPacket |
| EthernetCutthroughInterface | inet::NetworkInterface::receiveSignal | POST_MODEL_CHANGE |
| InterfaceTable | inet::InterfaceTable::findInterfaceByName | findInterfaceByName |
| InterfaceTable | inet::InterfaceTable::interfaceChanged | interfaceChanged |
| PacketQueue | inet::queueing::PacketQueue::pushPacket | pushPacket |
Called methods (observed)
| function | info | call from |
|---|---|---|
| inet::NetworkInterface::pushPacket | pushPacket | MessageDispatcher, EthernetFcsChecker |
| inet::NetworkInterface::receiveSignal | POST_MODEL_CHANGE | -=Network=-, EthernetCutthroughInterface, OmittedMeasurementLayer, OmittedProcessingDelayLayer, OmittedTrafficConditionerLayer |
Push out messages (observed)
| gate | msg | kind | ctrl | destModule | tags |
|---|---|---|---|---|---|
| upperLayerIn | Packet | 0 | PacketQueue | CutthroughTag, DirectionTag, EncapsulationProtocolReq, InterfaceInd, InterfaceReq, MacAddressReq, PacketProtocolTag | |
| upperLayerOut | Packet | 0 | MessageDispatcher | CutthroughTag, DirectionTag, DispatchProtocolReq, InterfaceInd, PacketProtocolTag |
Shared Tagging operations (observed)
| tagType | tagAction |
|---|---|
| InterfaceInd | addTagIfAbsent |
Tagging operations (observed)
| tagType | tagAction |
|---|---|
| clearTags |
Unassigned submodule parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| pcapRecorder.verbose | bool | true |
whether to log packets on the module output |
| pcapRecorder.pcapFile | string | "" |
the PCAP file to be written |
| pcapRecorder.fileFormat | string | "pcapng" | |
| pcapRecorder.snaplen | int | 65535 |
maximum number of bytes to record per packet |
| pcapRecorder.dumpBadFrames | bool | true |
enable dump of frames with hasBitError |
| pcapRecorder.sendingSignalNames | string | "packetSentToLower" |
space-separated list of outbound packet signals to subscribe to |
| pcapRecorder.receivingSignalNames | string | "packetReceivedFromLower" |
space-separated list of inbound packet signals to subscribe to |
| pcapRecorder.dumpProtocols | string | "ethernetmac ppp ieee80211mac" |
space-separated list of protocol names as defined in the Protocol class |
| pcapRecorder.packetFilter | object | "*" |
which packets are considered, matches all packets by default |
| pcapRecorder.helpers | string | "" |
usable PcapRecorder::IHelper helpers for accept packettype and store/convert packet as specified linktype currently available: "inet::AckingMacToEthernetPcapRecorderHelper" |
| pcapRecorder.alwaysFlush | bool | false |
flush the pcapFile after each write to ensure that all packets are captured in case of a crash |
| pcapRecorder.displayStringTextFormat | string | "rec: %n pks" |
Source code
// // This module represents an Ethernet network interface with cut-through support. // module EthernetCutthroughInterface extends LayeredEthernetInterface { parameters: string macTableModule; *.bitrate = default(this.bitrate); *.macTableModule = default(this.macTableModule); phyLayer.typename = default("EthernetStreamThroughPhyLayer"); phyLayer.cutthroughSource.typename = default("EthernetCutthroughSource"); phyLayer.cutthroughSink.typename = default("EthernetCutthroughSink"); }File: src/inet/linklayer/ethernet/modular/EthernetCutthroughInterface.ned