NED File src/inet/node/inet/Router.ned
Name | Type | Description |
---|---|---|
Router | compound module |
IPv4 router that supports wireless, Ethernet, PPP and external interfaces. By default, no wireless and external interfaces are added; the number of Ethernet and PPP ports depends on the external connections. |
Source code
// // Copyright (C) 2000 Institut fuer Telematik, Universitaet Karlsruhe // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with this program; if not, see <http://www.gnu.org/licenses/>. // package inet.node.inet; import inet.applications.contract.IUDPApp; import inet.routing.contract.IBGPRouting; import inet.routing.contract.IIPRouting; import inet.routing.contract.IPIMRouting; import inet.transportlayer.contract.ITCP; import inet.transportlayer.contract.IUDP; // // IPv4 router that supports wireless, Ethernet, PPP and external interfaces. // By default, no wireless and external interfaces are added; the number of // Ethernet and PPP ports depends on the external connections. // // - Can be connected via ethernet interface to other nodes using // the ethg gate. By default full-duplex connections are supported // only (twisted pair). Set **.eth.typename="EthernetInterface" for // a full/half-duplex CSMA/CD implementation (coaxial cable) // - By default contains no wireless cards, however it can be configured // by the numRadios parameter. Wirless card type is configured by the // **.wlan.typename parameter. see: inet.linklayer.ieee80211 or other // modules implementing ~IWirelessNic // - Also external interfaces can be configured for HW in the loop simulation // using the numExtInterfaces parameter and setting the type using // **.ext.typename in the INI file. see: ~ExtInterface and ~IExternalNic // - PPP queueing type can be set using **.ppp.queueType see: ~PPPInterface // - If wireless card is present, node mobility can be set using **.mobility.typename // see: inet.mobility and ~IMobility // // By default, dynamic routing is not supported. Specific routing protocols can // be added by setting the hasOSPF/hasRIP/hasBGP parameters. // module Router extends NodeBase { parameters: @display("i=abstract/router"); forwarding = true; bool hasOSPF = default(false); bool hasRIP = default(false); bool hasBGP = default(false); bool hasPIM = default(false); bool hasDHCP = default(false); string tcpType = default(firstAvailableOrEmpty("TCP", "TCP_lwIP", "TCP_NSC")); // tcp implementation (e.g. ~TCP, ~TCP_lwIP, ~TCP_NSC) or ~TCPSpoof string udpType = default("UDP"); submodules: ospf: <"OSPFRouting"> like IIPRouting if hasOSPF { parameters: @display("p=465,287,row"); } bgp: <"BGPRouting"> like IBGPRouting if hasBGP { parameters: ospfRoutingModule = default(parent.hasOSPF ? "^.ospf" : ""); @display("p=214,80;i=block/network"); } tcp: <tcpType> like ITCP if hasBGP && tcpType != "" { parameters: @display("p=214,180;i=block/transport"); } rip: <"RIPRouting"> like IUDPApp if hasRIP { parameters: @display("p=404,80"); } dhcp: <"DHCPServer"> like IUDPApp if hasDHCP { parameters: @display("p=566,80"); } udp: <udpType> like IUDP if hasRIP || hasDHCP { @display("p=404,180"); } pim: <"PIMRouting"> like IPIMRouting if hasPIM { @display("p=175,287"); } connections allowunconnected: if hasOSPF { ospf.ipOut --> networkLayer.transportIn++; ospf.ipIn <-- networkLayer.transportOut++; } if hasBGP { bgp.tcpOut --> tcp.appIn++; bgp.tcpIn <-- tcp.appOut++; tcp.ipOut --> networkLayer.transportIn++; tcp.ipIn <-- networkLayer.transportOut++; } if hasRIP { rip.udpOut --> udp.appIn++; rip.udpIn <-- udp.appOut++; } if hasDHCP { dhcp.udpOut --> udp.appIn++; dhcp.udpIn <-- udp.appOut++; } if hasRIP || hasDHCP { udp.ipOut --> networkLayer.transportIn++; udp.ipIn <-- networkLayer.transportOut++; } if hasPIM { pim.networkLayerOut --> networkLayer.transportIn++; pim.networkLayerIn <-- networkLayer.transportOut++; } }