Compound Module QuaggaOSPFBackbone

File: Examples/Quagga/OSPFBackbone/Backbone.ned

(no description)

channelInstaller: ChannelInstaller R1: QuaggaRouter N1: EtherHub N2: EtherHub R2: QuaggaRouter R4: QuaggaRouter R3: QuaggaRouter N4: EtherHub N5: EtherHub R5: QuaggaRouter R7: QuaggaRouter R6: QuaggaRouter N6: EtherHub N3: EtherHub H1: StandardHost H2: StandardHost

Usage diagram:

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.

Contains the following modules:

If a module type shows up more than once, that means it has been defined in more than one NED file.

ChannelInstaller

Replaces channel objects in the network.

EtherHub

A generic wiring hub model.

QuaggaRouter

Quagga-based IP router.

StandardHost

IP host with TCP, UDP layers and applications.

Networks:

quaggaOSPFBackbone (no description)

Unassigned submodule parameters:

Name Type Description
R1.namid numeric
R1.routingFile string
R1.routingDaemon string

"ripd", "ospfd", etc.

R1.networkLayer.proxyARP bool
R1.networkLayer.ip.procDelay numeric const
R1.networkLayer.arp.retryTimeout numeric

number seconds ARP waits between retries to resolve an IP address

R1.networkLayer.arp.retryCount numeric

number of times ARP will attempt to resolve an IP address

R1.networkLayer.arp.cacheTimeout numeric

number seconds unused entries in the cache will time out

R1.ppp[*].queueType string
R1.eth[*].queueType string
R1.eth[*].mac.promiscuous bool

if true, all packets are received, otherwise only the ones with matching destination MAC address

R1.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.

R1.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.

R1.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).

R1.eth[*].mac.writeScalars bool

enable/disable recording statistics in omnetpp.sca

R1.eth[*].encap.writeScalars bool

enable/disable recording statistics in omnetpp.sca

R1.tcp.mss numeric const

maximum segment size

R1.tcp.advertisedWindow numeric const

in bytes (Note: normally, NIC queues should be at least this size)

R1.tcp.tcpAlgorithmClass string

TCPTahoe/TCPReno/TCPNoCongestionControl/DumbTCP

R1.tcp.sendQueueClass string

TCPVirtualDataSendQueue/TCPMsgBasedSendQueue

R1.tcp.receiveQueueClass string

TCPVirtualDataRcvQueue/TCPMsgBasedRcvQueue

R1.tcp.recordStats bool

recording seqNum etc. into output vectors on/off

R1.zebra.fsroot string
R1.ospfd.fsroot string
N1.writeScalars bool

enable/disable recording statistics in omnetpp.sca

N2.writeScalars bool

enable/disable recording statistics in omnetpp.sca

R2.namid numeric
R2.routingFile string
R2.routingDaemon string

"ripd", "ospfd", etc.

R2.networkLayer.proxyARP bool
R2.networkLayer.ip.procDelay numeric const
R2.networkLayer.arp.retryTimeout numeric

number seconds ARP waits between retries to resolve an IP address

R2.networkLayer.arp.retryCount numeric

number of times ARP will attempt to resolve an IP address

R2.networkLayer.arp.cacheTimeout numeric

number seconds unused entries in the cache will time out

R2.ppp[*].queueType string
R2.eth[*].queueType string
R2.eth[*].mac.promiscuous bool

if true, all packets are received, otherwise only the ones with matching destination MAC address

R2.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.

R2.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.

R2.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).

R2.eth[*].mac.writeScalars bool

enable/disable recording statistics in omnetpp.sca

R2.eth[*].encap.writeScalars bool

enable/disable recording statistics in omnetpp.sca

R2.tcp.mss numeric const

maximum segment size

R2.tcp.advertisedWindow numeric const

in bytes (Note: normally, NIC queues should be at least this size)

R2.tcp.tcpAlgorithmClass string

TCPTahoe/TCPReno/TCPNoCongestionControl/DumbTCP

R2.tcp.sendQueueClass string

TCPVirtualDataSendQueue/TCPMsgBasedSendQueue

R2.tcp.receiveQueueClass string

TCPVirtualDataRcvQueue/TCPMsgBasedRcvQueue

R2.tcp.recordStats bool

recording seqNum etc. into output vectors on/off

R2.zebra.fsroot string
R2.ospfd.fsroot string
R4.namid numeric
R4.routingFile string
R4.routingDaemon string

"ripd", "ospfd", etc.

R4.networkLayer.proxyARP bool
R4.networkLayer.ip.procDelay numeric const
R4.networkLayer.arp.retryTimeout numeric

number seconds ARP waits between retries to resolve an IP address

R4.networkLayer.arp.retryCount numeric

number of times ARP will attempt to resolve an IP address

R4.networkLayer.arp.cacheTimeout numeric

number seconds unused entries in the cache will time out

R4.ppp[*].queueType string
R4.eth[*].queueType string
R4.eth[*].mac.promiscuous bool

if true, all packets are received, otherwise only the ones with matching destination MAC address

R4.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.

R4.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.

R4.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).

R4.eth[*].mac.writeScalars bool

enable/disable recording statistics in omnetpp.sca

R4.eth[*].encap.writeScalars bool

enable/disable recording statistics in omnetpp.sca

R4.tcp.mss numeric const

maximum segment size

R4.tcp.advertisedWindow numeric const

in bytes (Note: normally, NIC queues should be at least this size)

R4.tcp.tcpAlgorithmClass string

TCPTahoe/TCPReno/TCPNoCongestionControl/DumbTCP

R4.tcp.sendQueueClass string

TCPVirtualDataSendQueue/TCPMsgBasedSendQueue

R4.tcp.receiveQueueClass string

TCPVirtualDataRcvQueue/TCPMsgBasedRcvQueue

R4.tcp.recordStats bool

recording seqNum etc. into output vectors on/off

R4.zebra.fsroot string
R4.ospfd.fsroot string
R3.namid numeric
R3.routingFile string
R3.routingDaemon string

"ripd", "ospfd", etc.

R3.networkLayer.proxyARP bool
R3.networkLayer.ip.procDelay numeric const
R3.networkLayer.arp.retryTimeout numeric

number seconds ARP waits between retries to resolve an IP address

R3.networkLayer.arp.retryCount numeric

number of times ARP will attempt to resolve an IP address

R3.networkLayer.arp.cacheTimeout numeric

number seconds unused entries in the cache will time out

R3.ppp[*].queueType string
R3.eth[*].queueType string
R3.eth[*].mac.promiscuous bool

if true, all packets are received, otherwise only the ones with matching destination MAC address

R3.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.

R3.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.

R3.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).

R3.eth[*].mac.writeScalars bool

enable/disable recording statistics in omnetpp.sca

R3.eth[*].encap.writeScalars bool

enable/disable recording statistics in omnetpp.sca

R3.tcp.mss numeric const

maximum segment size

R3.tcp.advertisedWindow numeric const

in bytes (Note: normally, NIC queues should be at least this size)

R3.tcp.tcpAlgorithmClass string

TCPTahoe/TCPReno/TCPNoCongestionControl/DumbTCP

R3.tcp.sendQueueClass string

TCPVirtualDataSendQueue/TCPMsgBasedSendQueue

R3.tcp.receiveQueueClass string

TCPVirtualDataRcvQueue/TCPMsgBasedRcvQueue

R3.tcp.recordStats bool

recording seqNum etc. into output vectors on/off

R3.zebra.fsroot string
R3.ospfd.fsroot string
N4.writeScalars bool

enable/disable recording statistics in omnetpp.sca

N5.writeScalars bool

enable/disable recording statistics in omnetpp.sca

R5.namid numeric
R5.routingFile string
R5.routingDaemon string

"ripd", "ospfd", etc.

R5.networkLayer.proxyARP bool
R5.networkLayer.ip.procDelay numeric const
R5.networkLayer.arp.retryTimeout numeric

number seconds ARP waits between retries to resolve an IP address

R5.networkLayer.arp.retryCount numeric

number of times ARP will attempt to resolve an IP address

R5.networkLayer.arp.cacheTimeout numeric

number seconds unused entries in the cache will time out

R5.ppp[*].queueType string
R5.eth[*].queueType string
R5.eth[*].mac.promiscuous bool

if true, all packets are received, otherwise only the ones with matching destination MAC address

R5.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.

R5.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.

R5.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).

R5.eth[*].mac.writeScalars bool

enable/disable recording statistics in omnetpp.sca

R5.eth[*].encap.writeScalars bool

enable/disable recording statistics in omnetpp.sca

R5.tcp.mss numeric const

maximum segment size

R5.tcp.advertisedWindow numeric const

in bytes (Note: normally, NIC queues should be at least this size)

R5.tcp.tcpAlgorithmClass string

TCPTahoe/TCPReno/TCPNoCongestionControl/DumbTCP

R5.tcp.sendQueueClass string

TCPVirtualDataSendQueue/TCPMsgBasedSendQueue

R5.tcp.receiveQueueClass string

TCPVirtualDataRcvQueue/TCPMsgBasedRcvQueue

R5.tcp.recordStats bool

recording seqNum etc. into output vectors on/off

R5.zebra.fsroot string
R5.ospfd.fsroot string
R7.namid numeric
R7.routingFile string
R7.routingDaemon string

"ripd", "ospfd", etc.

R7.networkLayer.proxyARP bool
R7.networkLayer.ip.procDelay numeric const
R7.networkLayer.arp.retryTimeout numeric

number seconds ARP waits between retries to resolve an IP address

R7.networkLayer.arp.retryCount numeric

number of times ARP will attempt to resolve an IP address

R7.networkLayer.arp.cacheTimeout numeric

number seconds unused entries in the cache will time out

R7.ppp[*].queueType string
R7.eth[*].queueType string
R7.eth[*].mac.promiscuous bool

if true, all packets are received, otherwise only the ones with matching destination MAC address

R7.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.

R7.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.

R7.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).

R7.eth[*].mac.writeScalars bool

enable/disable recording statistics in omnetpp.sca

R7.eth[*].encap.writeScalars bool

enable/disable recording statistics in omnetpp.sca

R7.tcp.mss numeric const

maximum segment size

R7.tcp.advertisedWindow numeric const

in bytes (Note: normally, NIC queues should be at least this size)

R7.tcp.tcpAlgorithmClass string

TCPTahoe/TCPReno/TCPNoCongestionControl/DumbTCP

R7.tcp.sendQueueClass string

TCPVirtualDataSendQueue/TCPMsgBasedSendQueue

R7.tcp.receiveQueueClass string

TCPVirtualDataRcvQueue/TCPMsgBasedRcvQueue

R7.tcp.recordStats bool

recording seqNum etc. into output vectors on/off

R7.zebra.fsroot string
R7.ospfd.fsroot string
R6.namid numeric
R6.routingFile string
R6.routingDaemon string

"ripd", "ospfd", etc.

R6.networkLayer.proxyARP bool
R6.networkLayer.ip.procDelay numeric const
R6.networkLayer.arp.retryTimeout numeric

number seconds ARP waits between retries to resolve an IP address

R6.networkLayer.arp.retryCount numeric

number of times ARP will attempt to resolve an IP address

R6.networkLayer.arp.cacheTimeout numeric

number seconds unused entries in the cache will time out

R6.ppp[*].queueType string
R6.eth[*].queueType string
R6.eth[*].mac.promiscuous bool

if true, all packets are received, otherwise only the ones with matching destination MAC address

R6.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.

R6.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.

R6.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).

R6.eth[*].mac.writeScalars bool

enable/disable recording statistics in omnetpp.sca

R6.eth[*].encap.writeScalars bool

enable/disable recording statistics in omnetpp.sca

R6.tcp.mss numeric const

maximum segment size

R6.tcp.advertisedWindow numeric const

in bytes (Note: normally, NIC queues should be at least this size)

R6.tcp.tcpAlgorithmClass string

TCPTahoe/TCPReno/TCPNoCongestionControl/DumbTCP

R6.tcp.sendQueueClass string

TCPVirtualDataSendQueue/TCPMsgBasedSendQueue

R6.tcp.receiveQueueClass string

TCPVirtualDataRcvQueue/TCPMsgBasedRcvQueue

R6.tcp.recordStats bool

recording seqNum etc. into output vectors on/off

R6.zebra.fsroot string
R6.ospfd.fsroot string
N6.writeScalars bool

enable/disable recording statistics in omnetpp.sca

N3.writeScalars bool

enable/disable recording statistics in omnetpp.sca

H1.numTcpApps numeric const
H1.numUdpApps numeric const
H1.tcpAppType string
H1.udpAppType string
H1.IPForward bool
H1.namid numeric const
H1.routingFile string
H1.tcp.mss numeric const

maximum segment size

H1.tcp.advertisedWindow numeric const

in bytes (Note: normally, NIC queues should be at least this size)

H1.tcp.tcpAlgorithmClass string

TCPTahoe/TCPReno/TCPNoCongestionControl/DumbTCP

H1.tcp.sendQueueClass string

TCPVirtualDataSendQueue/TCPMsgBasedSendQueue

H1.tcp.receiveQueueClass string

TCPVirtualDataRcvQueue/TCPMsgBasedRcvQueue

H1.tcp.recordStats bool

recording seqNum etc. into output vectors on/off

H1.pingApp.destAddr string

destination IP or IPv6 address

H1.pingApp.srcAddr string

source IP or IPv6 address (useful with multi-homing)

H1.pingApp.packetSize numeric const

of ping payload, in bytes

H1.pingApp.interval numeric

time to wait between pings (can be random)

H1.pingApp.hopLimit numeric const

TTL or hopLimit for IP packets

H1.pingApp.count numeric const

stop after count ping requests, 0 means continuously

H1.pingApp.startTime numeric const

send first ping at startTime

H1.pingApp.stopTime numeric const

send no pings after stopTime, 0 means forever

H1.pingApp.printPing bool

dump on stdout

H1.networkLayer.ip.procDelay numeric const
H1.networkLayer.arp.retryTimeout numeric

number seconds ARP waits between retries to resolve an IP address

H1.networkLayer.arp.retryCount numeric

number of times ARP will attempt to resolve an IP address

H1.networkLayer.arp.cacheTimeout numeric

number seconds unused entries in the cache will time out

H1.ppp[*].queueType string
H1.eth[*].queueType string
H1.eth[*].mac.promiscuous bool

if true, all packets are received, otherwise only the ones with matching destination MAC address

H1.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.

H1.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.

H1.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).

H1.eth[*].mac.writeScalars bool

enable/disable recording statistics in omnetpp.sca

H1.eth[*].encap.writeScalars bool

enable/disable recording statistics in omnetpp.sca

H2.numTcpApps numeric const
H2.numUdpApps numeric const
H2.tcpAppType string
H2.udpAppType string
H2.IPForward bool
H2.namid numeric const
H2.routingFile string
H2.tcp.mss numeric const

maximum segment size

H2.tcp.advertisedWindow numeric const

in bytes (Note: normally, NIC queues should be at least this size)

H2.tcp.tcpAlgorithmClass string

TCPTahoe/TCPReno/TCPNoCongestionControl/DumbTCP

H2.tcp.sendQueueClass string

TCPVirtualDataSendQueue/TCPMsgBasedSendQueue

H2.tcp.receiveQueueClass string

TCPVirtualDataRcvQueue/TCPMsgBasedRcvQueue

H2.tcp.recordStats bool

recording seqNum etc. into output vectors on/off

H2.pingApp.destAddr string

destination IP or IPv6 address

H2.pingApp.srcAddr string

source IP or IPv6 address (useful with multi-homing)

H2.pingApp.packetSize numeric const

of ping payload, in bytes

H2.pingApp.interval numeric

time to wait between pings (can be random)

H2.pingApp.hopLimit numeric const

TTL or hopLimit for IP packets

H2.pingApp.count numeric const

stop after count ping requests, 0 means continuously

H2.pingApp.startTime numeric const

send first ping at startTime

H2.pingApp.stopTime numeric const

send no pings after stopTime, 0 means forever

H2.pingApp.printPing bool

dump on stdout

H2.networkLayer.ip.procDelay numeric const
H2.networkLayer.arp.retryTimeout numeric

number seconds ARP waits between retries to resolve an IP address

H2.networkLayer.arp.retryCount numeric

number of times ARP will attempt to resolve an IP address

H2.networkLayer.arp.cacheTimeout numeric

number seconds unused entries in the cache will time out

H2.ppp[*].queueType string
H2.eth[*].queueType string
H2.eth[*].mac.promiscuous bool

if true, all packets are received, otherwise only the ones with matching destination MAC address

H2.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.

H2.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.

H2.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).

H2.eth[*].mac.writeScalars bool

enable/disable recording statistics in omnetpp.sca

H2.eth[*].encap.writeScalars bool

enable/disable recording statistics in omnetpp.sca

Source code:

module QuaggaOSPFBackbone
    submodules:
        channelInstaller : ChannelInstaller;
            parameters:
                channelClass = "ThruputMeteringChannel",
                channelAttrs = "format=#N";
            display: "p=98,50;i=block/cogwheel_s";
        R1: QuaggaRouter;
            gatesizes:
                ethIn[3],
                ethOut[3];
            display: "p=372,340;i=srouter";
        N1: EtherHub;
            gatesizes:
                in[2],
                out[2];
            display: "p=368,268;i=device/hub";
        N2: EtherHub;
            gatesizes:
                in[3],
                out[3];
            display: "p=452,384;i=device/hub";
        R2: QuaggaRouter;
            gatesizes:
                ethIn[2],
                ethOut[2];
            display: "p=368,188;i=srouter";
        R4: QuaggaRouter;
            gatesizes:
                ethIn[2],
                ethOut[2];
            display: "p=216,432;i=srouter";
        R3: QuaggaRouter;
            gatesizes:
                ethIn[2],
                ethOut[2];
            display: "p=532,428;i=srouter";
        N4: EtherHub;
            gatesizes:
                in[4],
                out[4];
            display: "p=368,100;i=device/hub";
        N5: EtherHub;
            gatesizes:
                in[3],
                out[3];
            display: "p=612,476;i=device/hub";
        R5: QuaggaRouter;
            gatesizes:
                ethIn[2],
                ethOut[2];
            display: "p=488,284;i=srouter";
        R7: QuaggaRouter;
            gatesizes:
                ethIn[2],
                ethOut[2];
            display: "p=256,284;i=srouter";
        R6: QuaggaRouter;
            gatesizes:
                ethIn[2],
                ethOut[2];
            display: "p=372,476;i=srouter";
        N6: EtherHub;
            gatesizes:
                in[3],
                out[3];
            display: "p=136,476;i=device/hub";
        N3: EtherHub;
            gatesizes:
                in[2],
                out[2];
            display: "p=292,384;i=device/hub";
        H1: StandardHost;
            gatesizes:
                ethIn[1],
                ethOut[1];
            display: "p=372,420;i=device/laptop";
        H2: StandardHost;
            gatesizes:
                ethIn[1],
                ethOut[1];
            display: "p=368,40;i=device/laptop";
    connections:
        R1.ethOut[0] --> delay 0.1us --> N1.in[1];
        N1.out[1] --> delay 0.1us --> R1.ethIn[0];
        R1.ethOut[1] --> delay 0.1us --> N2.in[2];
        N2.out[2] --> delay 0.1us --> R1.ethIn[1];
        N1.out[0] --> delay 0.1us --> R2.ethIn[1];
        R2.ethOut[1] --> delay 0.1us --> N1.in[0];
        R2.ethOut[0] --> delay 0.1us --> N4.in[2];
        N4.out[2] --> delay 0.1us --> R2.ethIn[0];
        N4.out[1] --> delay 0.1us --> R5.ethIn[1];
        R5.ethOut[1] --> delay 0.1us --> N4.in[1];
        R5.ethOut[0] --> delay 0.1us --> N5.in[2];
        N5.out[2] --> delay 0.1us --> R5.ethIn[0];
        N2.out[0] --> delay 0.1us --> R3.ethIn[1];
        R3.ethOut[1] --> delay 0.1us --> N2.in[0];
        R3.ethOut[0] --> delay 0.1us --> N5.in[1];
        N5.out[1] --> delay 0.1us --> R3.ethIn[0];
        N5.out[0] --> delay 0.1us --> R6.ethIn[0];
        R6.ethOut[0] --> delay 0.1us --> N5.in[0];
        N6.out[2] --> delay 0.1us --> R6.ethIn[1];
        R6.ethOut[1] --> delay 0.1us --> N6.in[2];
        R1.ethOut[2] --> delay 0.1us --> N3.in[0];
        N3.out[0] --> delay 0.1us --> R1.ethIn[2];
        N3.out[1] --> delay 0.1us --> R4.ethIn[0];
        R4.ethOut[0] --> delay 0.1us --> N3.in[1];
        R4.ethOut[1] --> delay 0.1us --> N6.in[1];
        N6.out[1] --> delay 0.1us --> R4.ethIn[1];
        N4.out[3] --> delay 0.1us --> R7.ethIn[0];
        R7.ethOut[0] --> delay 0.1us --> N4.in[3];
        R7.ethOut[1] --> delay 0.1us --> N6.in[0];
        N6.out[0] --> delay 0.1us --> R7.ethIn[1];
        N4.out[0] --> delay 0.1us --> H2.ethIn[0];
        H2.ethOut[0] --> delay 0.1us --> N4.in[0];
        N2.out[1] --> delay 0.1us --> H1.ethIn[0];
        H1.ethOut[0] --> delay 0.1us --> N2.in[1];
    display: "p=10,10;b=736,568";
endmodule