ExtUpperEthernetInterface¶
Package: inet.emulation.linklayer.ethernet
compound module ExtUpperEthernetInterface
Provides an Ethernet network interface suitable for emulation. The upper part of the network interface is realized in the real world using a real TAP device of the host computer which is running the simulation.
Usage diagram¶
Inheritance diagram¶
Extends¶
Name |
Type |
Description |
|---|---|---|
compound module |
A base for external network interfaces, network interface modules that connect the simulation to the network stack of the host OS. |
Parameters¶
Name |
Type |
Default value |
Description |
|---|---|---|---|
displayStringTextFormat |
string |
“%a (%i)\n%m” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
recordPcap |
bool |
false |
|
numPcapRecorders |
int |
recordPcap ? 1 : 0 |
|
isWireless |
bool |
false |
|
interfaceTableModule |
string |
Module path of the interface table module |
|
device |
string |
Name of the attached OS device (e.g. tap0, veth0, etc.) |
|
namespace |
string |
“” |
Name of the OS network namespace (optional) |
copyConfiguration |
string |
“” |
Copy interface configuration such as MAC address, IP address, and MTU from/to the external interface. |
address |
string |
“auto” |
|
broadcast |
bool |
true |
|
multicast |
bool |
true |
|
pointToPoint |
bool |
false |
|
mtu |
int |
4470B |
|
csmacdSupport |
bool |
false |
By default, CSMA/CD is turned off, so only point-to-point duplex links are supported. |
bitrate |
double |
nan bps |
Properties¶
Name |
Value |
Description |
|---|---|---|
class |
ExtInterface |
|
display |
bgb=450,400 |
|
lifecycleSupport |
||
networkInterface |
Gates¶
Name |
Direction |
Size |
Description |
|---|---|---|---|
upperLayerIn |
input |
||
upperLayerOut |
output |
||
cutthroughIn |
input |
||
cutthroughOut |
output |
||
phys |
inout |
Signals¶
Name |
Type |
Unit |
Description |
|---|---|---|---|
packetDropped |
Statistics¶
Name |
Title |
Source |
Record |
Unit |
Interpolation Mode |
Description |
|---|---|---|---|---|---|---|
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 |
Unassigned submodule parameters¶
Name |
Type |
Default value |
Description |
|---|---|---|---|
pcapRecorder.displayStringTextFormat |
string |
“rec: %n pks” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
pcapRecorder.verbose |
bool |
true |
Whether to log packets on the module output |
pcapRecorder.recordEmptyPackets |
bool |
true |
Specifies if zero length packets are recorded or not |
pcapRecorder.enableConvertingPackets |
bool |
true |
Specifies if converting packets to link type is allowed or not |
pcapRecorder.pcapFile |
string |
“” |
The PCAP file to be written, suggested value: pcapFile = “${resultdir}/${configname}-#${runnumber}” + fullpath() + “.pcap” |
pcapRecorder.fileFormat |
string |
“pcapng” |
|
pcapRecorder.snaplen |
int |
65535 |
Maximum number of bytes to record per packet |
pcapRecorder.timePrecision |
int |
6 |
Time precision in recorded file. pcap supports only 6 (usec) or 9 (nanosec), pcapng supports more values (see ‘if_tsresol’ option in pcapng file format). |
pcapRecorder.dumpBadFrames |
bool |
true |
Enable dump of frames with hasBitError |
pcapRecorder.sendingSignalNames |
string |
“transmissionEnded” |
Space-separated list of outbound packet signals to subscribe to |
pcapRecorder.receivingSignalNames |
string |
“receptionEnded” |
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 |
pcapRecorder.alwaysFlush |
bool |
false |
Flush the pcapFile after each write to ensure that all packets are captured in case of a crash |
tap.displayStringTextFormat |
string |
“TAP device: {device}\nrcv:{numReceived} snt:{numSent}” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
tap.device |
string |
Name of the existing real tap interface |
|
tap.namespace |
string |
“” |
|
tap.packetNameFormat |
string |
“Ext-%p-%t-%n” |
Source code¶
//
// Provides an Ethernet network interface suitable for emulation.
// The upper part of the network interface is realized in the real world using
// a real TAP device of the host computer which is running the simulation.
//
module ExtUpperEthernetInterface extends ExtInterface like IEthernetInterface
{
parameters:
bool csmacdSupport = default(false); // By default, CSMA/CD is turned off, so only point-to-point duplex links are supported.
double bitrate @unit(bps) = default(nan bps);
*.bitrate = default(bitrate);
@display("bgb=450,400");
gates:
input cutthroughIn @loose;
output cutthroughOut @loose;
inout phys @labels(EthernetSignal);
submodules:
tap: ExtEthernetTapDevice {
parameters:
@display("p=350,100");
}
queue: <default("EthernetQueue")> like IPacketQueue {
parameters:
packetCapacity = default(10000);
@display("p=250,200");
}
mac: <default(csmacdSupport ? "EthernetCsmaMacPhy" : "EthernetMacPhy")> like IEtherMac {
parameters:
@display("p=350,300");
}
connections allowunconnected:
tap.lowerLayerOut --> queue.in;
queue.out --> mac.upperLayerIn;
tap.lowerLayerIn <-- mac.upperLayerOut;
mac.phys <--> { @display("m=s"); } <--> phys;
}
File: src/inet/emulation/linklayer/ethernet/ExtUpperEthernetInterface.ned