File: Nodes/INET/StandardHost.ned
IP host with TCP, UDP layers and applications.
The following diagram shows usage relationships between modules, networks and channels. Unresolved module (and channel) types are missing from the diagram. Click here to see the full picture.
If a module type shows up more than once, that means it has been defined in more than one NED file.
EthernetInterface | Ethernet network interface. Corresponds to the prototype NetworkInterface. Complements EtherMAC and EtherEncap with an output queue for QoS and RED support. |
InterfaceTable | Keeps the table of network interfaces. |
NAMTraceWriter | When placed inside a host or router, it writes a NAM trace, based on notifications it receives via the NotificationBoard. Expects to find a NAMTrace module named "nam" at network level. |
NetworkLayer | Network layer of an IP node. |
NotificationBoard | Using NotificationBoard, modules can now notify each other about "events" such as routing table changes, interface status changes (up/down), interface configuration changes, wireless handovers, changes in the state of the wireless channel, mobile node position changes, etc. |
PPPInterface | PPP interface. Complements the PPP module with an output queue for QoS and RED support. |
PingApp | Generates ping requests and calculates the packet loss and round trip parameters of the replies. |
RoutingTable | Stores the routing table. (Per-interface configuration is stored in InterfaceTable.) |
TCP | TCP protocol implementation. Supports RFC 793, RFC 1122, RFC 2001. Compatible with both IPv4 and IPv6. |
TCPApp | Template for TCP applications. |
UDP | |
UDPApp | Template for UDP applications. |
If a module type shows up more than once, that means it has been defined in more than one NED file.
BulkTransfer | (no description) |
MulticastNetwork | (no description) |
NClients | (no description) |
FlatNet | (no description) |
REDTestDebug | (no description) |
REDTest | (no description) |
REDTestTh | (no description) |
KIDSNw1 | (no description) |
LDPTEST | (no description) |
RSVPTE4 | Example network to demonstrate RSVP-TE. |
R37 | (no description) |
RSVPTE4 | Example network to demonstrate CSPF algorithm used in RSVP-TE. The network consists of 5 LSR and 4 hosts. Host 1 and 2 have different requests of bandwidth level. |
RSVPTE4 | Example network to demonstrate RSVP-TE. |
RSVPTE4 | Example network to demonstrate RSVP-TE. |
RSVPTE4 | Example network to demonstrate RSVP-TE. |
ARPTest | (no description) |
TwoNetsArea | (no description) |
OneNetArea | (no description) |
Backbone | (no description) |
OSPF_Area1 | (no description) |
OSPF_Area2 | (no description) |
OSPF_Area3 | (no description) |
OSPF_TestNetwork | (no description) |
SimpleTest | (no description) |
QuaggaOSPFBackbone | (no description) |
ZebraTest | (no description) |
SimpleTest | (no description) |
Name | Type | Description |
---|---|---|
numTcpApps | numeric const | |
numUdpApps | numeric const | |
tcpAppType | string | |
udpAppType | string | |
IPForward | bool | |
namid | numeric const | |
routingFile | string |
Name | Direction | Description |
---|---|---|
in [ ] | input | |
out [ ] | output | |
ethIn [ ] | input | |
ethOut [ ] | output |
Name | Type | Description |
---|---|---|
tcp.mss | numeric const | maximum segment size |
tcp.advertisedWindow | numeric const | in bytes (Note: normally, NIC queues should be at least this size) |
tcp.tcpAlgorithmClass | string | TCPTahoe/TCPReno/TCPNoCongestionControl/DumbTCP |
tcp.sendQueueClass | string | TCPVirtualDataSendQueue/TCPMsgBasedSendQueue |
tcp.receiveQueueClass | string | TCPVirtualDataRcvQueue/TCPMsgBasedRcvQueue |
tcp.recordStats | bool | recording seqNum etc. into output vectors on/off |
pingApp.destAddr | string | |
pingApp.srcAddr | string | |
pingApp.packetSize | numeric const | of ping payload, in bytes |
pingApp.interval | numeric | time to wait between pings (can be random) |
pingApp.hopLimit | numeric const | TTL or hopLimit for IP packets |
pingApp.count | numeric const | stop after count ping requests, 0 means continuously |
pingApp.startTime | numeric const | send first ping at startTime |
pingApp.stopTime | numeric const | send no pings after stopTime, 0 means forever |
pingApp.printPing | bool | dump on stdout |
networkLayer.ip.procDelay | numeric const | |
networkLayer.arp.retryTimeout | numeric | number seconds ARP waits between retries to resolve an IP address |
networkLayer.arp.retryCount | numeric | number of times ARP will attempt to resolve an IP address |
networkLayer.arp.cacheTimeout | numeric | number seconds unused entries in the cache will time out |
ppp[*].queueType | string | |
eth[*].queueType | string | |
eth[*].mac.promiscuous | bool | if true, all packets are received, otherwise only the ones with matching destination MAC address |
eth[*].mac.address | string | MAC address as hex string (12 hex digits), or "auto". "auto" values will be replaced by a generated MAC address in init stage 0. |
eth[*].mac.txrate | numeric | maximum data rate supported by this station (bit/s); actually chosen speed may be lower due to auto- configuration. 0 means fully auto-configured. |
eth[*].mac.duplexEnabled | bool | whether duplex mode can be enabled or not; whether MAC will actually use duplex mode depends on the result of the auto-configuration process (duplex is only possible with DTE-to-DTE connection). |
eth[*].mac.writeScalars | bool | enable/disable recording statistics in omnetpp.sca |
eth[*].encap.writeScalars | bool | enable/disable recording statistics in omnetpp.sca |
module StandardHost parameters: numTcpApps: numeric const, numUdpApps: numeric const, tcpAppType: string, udpAppType: string, IPForward: bool, namid: numeric const, routingFile: string; gates: in: in[]; out: out[]; in: ethIn[]; out: ethOut[]; submodules: namTrace: NAMTraceWriter; parameters: namid = namid; display: "p=60,310;i=block/sink"; notificationBoard: NotificationBoard; display: "p=60,70;i=block/control"; interfaceTable: InterfaceTable; display: "p=60,150;i=block/table"; routingTable: RoutingTable; parameters: IPForward = IPForward, routerId = "", routingFile = routingFile; display: "p=60,230;i=block/table"; tcpApp: tcpAppType[numTcpApps] like TCPApp; display: "p=163,67;i=block/app"; tcp: TCP; display: "p=163,154;i=block/wheelbarrow"; udpApp: udpAppType[numUdpApps] like UDPApp; display: "i=block/app;p=272,67"; udp: UDP; display: "p=272,154;i=block/transport"; pingApp: PingApp; display: "i=block/app;p=343,200"; networkLayer: NetworkLayer; parameters: proxyARP = false; gatesizes: ifIn[sizeof(out)+sizeof(ethOut)], ifOut[sizeof(out)+sizeof(ethOut)]; display: "p=248,247;i=block/fork;q=queue"; ppp: PPPInterface[sizeof(out)]; display: "p=205,350,row,90;q=txQueue;i=block/ifcard"; eth: EthernetInterface[sizeof(ethOut)]; display: "p=240,350,row,90;q=txQueue;i=block/ifcard"; connections nocheck: for i=0..numTcpApps-1 do tcpApp[i].tcpOut --> tcp.from_appl++; tcpApp[i].tcpIn <-- tcp.to_appl++; endfor; tcp.to_ip --> networkLayer.TCPIn; tcp.from_ip <-- networkLayer.TCPOut; for i=0..numUdpApps-1 do udpApp[i].to_udp --> udp.from_app++; udpApp[i].from_udp <-- udp.to_app++; endfor; udp.to_ip --> networkLayer.UDPIn; udp.from_ip <-- networkLayer.UDPOut; networkLayer.pingOut --> pingApp.pingIn; networkLayer.pingIn <-- pingApp.pingOut; // connections to network outside for i=0..sizeof(out)-1 do in[i] --> ppp[i].physIn; out[i] <-- ppp[i].physOut; ppp[i].netwOut --> networkLayer.ifIn[i]; ppp[i].netwIn <-- networkLayer.ifOut[i]; endfor; for i=0..sizeof(ethOut)-1 do ethIn[i] --> eth[i].physIn; ethOut[i] <-- eth[i].physOut; eth[i].netwOut --> networkLayer.ifIn[sizeof(out)+i]; eth[i].netwIn <-- networkLayer.ifOut[sizeof(out)+i]; endfor; endmodule