Skip to content

Commit d03f9e6

Browse files
committed
NED: Extended documentation of network nodes.
1 parent efbdab6 commit d03f9e6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+437
-152
lines changed

src/inet/node/aodv/AodvRouter.ned

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,23 @@ import inet.node.inet.AdhocHost;
1111
import inet.routing.aodv.Aodv;
1212

1313
//
14-
// It models a ~WirelessHost extended with ~Aodv submodule.
14+
// A mobile node with the Ad hoc On-Demand Distance Vector (AODV)
15+
// routing protocol. Extends AdhocHost by adding the AODV routing protocol module.
1516
//
16-
// AODV is an on-demand MANET routing protocol. Each node
17-
// works similar to a 'router': they manage their own routing
18-
// tables, send requests for routes, and consult the IP layer via
19-
// Netfilter hooks for data forwarding.
17+
// AODV is a reactive routing protocol designed for mobile ad hoc networks (MANETs).
18+
// Each node maintains its own routing table and discovers routes on-demand when
19+
// communication is needed, rather than proactively maintaining routes to all destinations.
2020
//
21-
// Scenarios where AODV routing is desired use this module as a
22-
// host module.
21+
// Key features:
22+
// - On-demand route discovery using Route Request (RREQ) and Route Reply (RREP) messages
23+
// - Route maintenance through Route Error (RERR) messages when links break
24+
// - Sequence numbers to ensure loop-free routes and route freshness
25+
// - Hop-by-hop routing where each node maintains only the next hop information
26+
// - Inherits wireless capabilities and mobility support from AdhocHost
2327
//
24-
// The AODV v.2 (known as Dymo) is also implemented: ~Dymo,
25-
// ~DymoRouter.
28+
// The AODV v.2 (known as Dymo) is also implemented in INET as ~Dymo and ~DymoRouter.
2629
//
27-
// @see ~Aodv, ~Dymo, ~DymoRouter.
30+
// @see ~AdhocHost, ~DymoRouter, ~ManetRouter
2831
//
2932
module AodvRouter extends AdhocHost
3033
{

src/inet/node/base/ApplicationLayerNodeBase.ned

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,18 @@ package inet.node.base;
1010
import inet.applications.contract.IApp;
1111
import inet.common.MessageDispatcher;
1212

13+
//
14+
// An extension of the transport layer node base that adds support for applications.
15+
// Provides the highest level of abstraction for network nodes, completing the full
16+
// network stack from physical to application layer.
17+
//
18+
// This module adds an application layer with configurable application modules and
19+
// a message dispatcher that connects applications to the transport protocols.
20+
// It serves as the foundation for end-user devices like hosts and specialized nodes
21+
// that need application functionality.
22+
//
23+
// @see ~TransportLayerNodeBase, ~NetworkLayerNodeBase, ~StandardHost
24+
//
1325
module ApplicationLayerNodeBase extends TransportLayerNodeBase
1426
{
1527
parameters:

src/inet/node/base/LinkLayerNodeBase.ned

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,16 @@ import inet.networklayer.common.InterfaceTable;
2323
import inet.node.contract.IEthernetNetworkNode;
2424
import inet.protocolelement.contract.IProtocolLayer;
2525

26+
//
27+
// An extension of the basic node infrastructure with link layer
28+
// functionality. Provides support for various network interfaces and link layer
29+
// protocols, forming the foundation for network connectivity.
30+
//
31+
// This module adds an interface table and multiple types of network interfaces,
32+
// including Ethernet, PPP, wireless, loopback, tunnel, and virtual interfaces.
33+
// It also includes support for link layer protocols such as LLC, bridging,
34+
// and various Ethernet encapsulation methods.
35+
//
2636
module LinkLayerNodeBase extends NodeBase like IEthernetNetworkNode
2737
{
2838
parameters:

src/inet/node/base/NetworkLayerNodeBase.ned

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,13 @@ package inet.node.base;
1010
import inet.common.MessageDispatcher;
1111
import inet.networklayer.contract.INetworkLayer;
1212

13+
//
14+
// An extension of the link layer node base with network layer functionality.
15+
// Provides support for multiple network protocols, including IPv4 and IPv6.
16+
//
17+
// This module adds network layer capabilities to the node architecture, enabling
18+
// end-to-end connectivity across different networks.
19+
//
1320
module NetworkLayerNodeBase extends LinkLayerNodeBase
1421
{
1522
parameters:

src/inet/node/base/NodeBase.ned

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,19 @@ import inet.power.contract.IEnergyManagement;
1818
import inet.power.contract.IEnergyStorage;
1919

2020
//
21-
// This module contains the most basic infrastructure for network nodes that are
22-
// not strictly communication protocol-related.
21+
// The fundamental infrastructure for all network nodes focusing on non-communication
22+
// aspects of network nodes.
2323
//
24-
// See derived modules: ~StandardHost, ~WirelessHost, ~AdhocHost, ~Router, etc.
24+
// It provides among others:
25+
// - Node lifecycle management through NodeStatus
26+
// - Optional local clock for modeling clock skew
27+
// - Optional modules for with energy storage, management, and generation
28+
// - Support for node mobility
29+
//
30+
// NodeBase is not intended to be used directly in simulations but rather serves
31+
// as a base module for more specialized node types that add communication capabilities.
32+
//
33+
// @see ~StandardHost, ~WirelessHost, ~AdhocHost, ~Router
2534
//
2635
module NodeBase like INetworkNode
2736
{

src/inet/node/base/TransportLayerNodeBase.ned

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,16 @@ import inet.transportlayer.contract.ISctp;
1212
import inet.transportlayer.contract.ITcp;
1313
import inet.transportlayer.contract.IUdp;
1414

15+
//
16+
// An extension of the network layer node base with transport layer protocols.
17+
// Provides support for UDP, TCP, and SCTP, enabling end-to-end communication
18+
// services for applications.
19+
//
20+
// This module adds transport layer capabilities to the node architecture, bridging
21+
// the gap between applications and the network layer. It handles connection management,
22+
// reliability, flow control, and congestion control depending on the transport
23+
// protocol used.
24+
//
1525
module TransportLayerNodeBase extends NetworkLayerNodeBase
1626
{
1727
parameters:

src/inet/node/bgp/BgpRouter.ned

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,24 @@ package inet.node.bgp;
99
import inet.node.inet.Router;
1010

1111
//
12-
// IP router with BGPv4 and OSPFv4 support.
12+
// A router that supports Border Gateway Protocol version 4 (BGPv4) along with Open Shortest
13+
// Path First version 4 (OSPFv4). It extends the standard Router module with BGP and OSPF
14+
// functionality enabled.
15+
//
16+
// BGP is the core routing protocol of the Internet that maintains paths to other autonomous
17+
// systems. It makes routing decisions based on network policies, rule-sets, and path attributes
18+
// rather than purely technical metrics. BGP is designed to exchange routing and reachability
19+
// information among autonomous systems on the Internet.
20+
//
21+
// The combination of BGP for external routing and OSPF for internal routing is a common
22+
// configuration in real-world networks, particularly for Internet Service Providers and
23+
// large enterprise networks.
24+
//
25+
// @see ~OspfRouter
1326
//
1427
module BgpRouter extends Router
1528
{
1629
parameters:
1730
hasBgp = true;
1831
hasOspf = true;
1932
}
20-

src/inet/node/contract/IEthernetNetworkNode.ned

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,15 @@
88
package inet.node.contract;
99

1010
//
11-
// This is the module interface for all Ethernet node types in a network.
11+
// Interface for all network nodes that have Ethernet connectivity. Extends the base
12+
// INetworkNode interface by adding Ethernet-specific gates and parameters.
13+
//
14+
// This interface is implemented by various node types that participate in
15+
// Ethernet networks, such as hosts, switches, and routers with Ethernet interfaces.
16+
// It ensures that all Ethernet-capable nodes have the necessary gates to connect
17+
// to Ethernet networks.
18+
//
19+
// @see ~EthernetHost, ~EthernetSwitch, ~StandardHost, ~Router
1220
//
1321
moduleinterface IEthernetNetworkNode extends INetworkNode
1422
{

src/inet/node/contract/INetworkNode.ned

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,13 @@
88
package inet.node.contract;
99

1010
//
11-
// Contains the common interface for all node types in a network.
11+
// INetworkNode defines the common interface for all network node types in INET.
12+
// It serves as the base interface that all node modules must implement to be
13+
// recognized and treated as network nodes within the simulation.
14+
//
15+
// This interface provides no specific functionality itself but establishes
16+
// the common ground for different node types such as hosts, routers, switches,
17+
// and access points.
1218
//
1319
moduleinterface INetworkNode
1420
{

src/inet/node/dsdv/DsdvRouter.ned

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,14 @@ import inet.node.inet.AdhocHost;
1111
import inet.routing.dsdv.Dsdv;
1212

1313
//
14-
// A DSDV router.
14+
// A mobile node with the Destination-Sequenced Distance Vector
15+
// (DSDV) routing protocol. Extends AdhocHost by adding the DSDV routing protocol module.
16+
//
17+
// DSDV is a proactive, table-driven routing protocol designed for mobile ad hoc networks.
18+
// Each node maintains a routing table with entries for all possible destinations in the
19+
// network, along with the next hop and distance (number of hops) to reach them.
20+
//
21+
// @see ~AodvRouter
1522
//
1623
module DsdvRouter extends AdhocHost
1724
{

0 commit comments

Comments
 (0)