File: Nodes/Adhoc/MFMobileHost.ned
Models a mobile host with a wireless (802.11b) card in ad-hoc mode. This model contains the Mobility Framework's 802.11 implementation, Nic80211, and IP, TCP and UDP protocols. The mobility model can be dynamically specified with the mobilityType parameter.
See also: MobileHost, WirelessHost
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.
BasicMobility | This is not an actual mobility model, but a prototype for other mobility models. |
InterfaceTable | Keeps the table of network interfaces. |
NetworkLayer | Network layer of an IP node. |
Nic80211 | This NIC implements an 802.11 network interface card. |
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. |
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. |
Name | Type | Description |
---|---|---|
numTcpApps | numeric const | |
numUdpApps | numeric const | |
tcpAppType | string | |
udpAppType | string | |
IPForward | bool | |
routingFile | string | |
mobilityType | string |
Name | Direction | Description |
---|---|---|
radioIn | input |
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 |
wlan.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. |
wlan.mac.maxQueueSize | numeric const | |
wlan.mac.rtsCts | bool | |
wlan.mac.bitrate | numeric const | |
wlan.mac.broadcastBackoff | numeric const | |
wlan.decider.debug | bool | debug switch |
wlan.decider.snirThreshold | numeric const | |
wlan.decider.bitrate | numeric const | |
wlan.snrEval.channelNumber | numeric const | channel identifier |
wlan.snrEval.debug | bool | debug switch |
wlan.snrEval.transmitterPower | numeric const | |
wlan.snrEval.bitrate | numeric const | |
wlan.snrEval.headerLength | numeric const | |
wlan.snrEval.carrierFrequency | numeric const | |
wlan.snrEval.thermalNoise | numeric const | |
wlan.snrEval.pathLossAlpha | numeric const | |
wlan.snrEval.sensitivity | numeric const |
module MFMobileHost parameters: numTcpApps: numeric const, numUdpApps: numeric const, tcpAppType: string, udpAppType: string, IPForward: bool, routingFile: string, mobilityType: string; gates: in: radioIn; submodules: 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[1], ifOut[1]; display: "p=248,247;i=block/fork;q=queue"; wlan: Nic80211; display: "p=248,349;q=queue;i=block/ifcard"; mobility: mobilityType like BasicMobility; display: "p=149,307;i=block/cogwheel"; 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 radioIn --> wlan.radioIn; wlan.uppergateOut --> networkLayer.ifIn[0]; wlan.uppergateIn <-- networkLayer.ifOut[0]; endmodule