Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding protocol MRP (IEC 62439-2) #947

Draft
wants to merge 129 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
129 commits
Select commit Hold shift + click to select a range
712ccd7
Inital add of mrp protocol
DJtime Feb 10, 2024
479ebae
Updated Copyright
DJtime Feb 10, 2024
aae5bef
remove duplicate mrp folder
DJtime Feb 10, 2024
2f5b2ac
change test frame handling and manager voting
DJtime Feb 13, 2024
e515f2a
Update L2NodeConfigurator.cc
DJtime Feb 13, 2024
470bf50
Update MediaRedundancyNode.cc
DJtime Feb 14, 2024
f9f643c
Additions and Error Correction
DJtime Feb 16, 2024
00aeb37
mrp: reformatting source code
DJtime Feb 17, 2024
2883dc8
mrp: resolved formatting error
DJtime Feb 17, 2024
9395436
Update MacForwardingTable.h
DJtime Feb 17, 2024
65359bc
Update MacForwardingTable.h
DJtime Feb 17, 2024
9a227c4
Update MacForwardingTable.h
DJtime Feb 17, 2024
3e8809f
Update MacForwardingTable.h
DJtime Feb 17, 2024
dea505e
Update MacForwardingTable.h
DJtime Feb 17, 2024
40af40d
Update MacForwardingTable.h
DJtime Feb 17, 2024
b53aff4
Updating NED-file documentation
DJtime Feb 23, 2024
63e24ff
reworked signals and ned-parameters
DJtime Mar 13, 2024
010bc82
mrp: Inital add of mrp protocol
DJtime Feb 10, 2024
f862b60
mrp: Updated Copyright
DJtime Feb 10, 2024
f830dd9
mrp: remove duplicate mrp folder
DJtime Feb 10, 2024
f499a08
mrp: change test frame handling and manager voting
DJtime Feb 13, 2024
d13e439
mrp: Update L2NodeConfigurator.cc
DJtime Feb 13, 2024
558327b
mrp: Update MediaRedundancyNode.cc
DJtime Feb 14, 2024
8ee978b
mrp: Additions and Error Correction
DJtime Feb 16, 2024
1343f9c
mrp: reformatting source code
DJtime Feb 17, 2024
80d5b55
mrp: resolved formatting error
DJtime Feb 17, 2024
ce96183
mrp: Update MacForwardingTable.h
DJtime Feb 17, 2024
4667474
mrp: Update MacForwardingTable.h
DJtime Feb 17, 2024
5752097
mrp: Update MacForwardingTable.h
DJtime Feb 17, 2024
0f60581
mrp: Update MacForwardingTable.h
DJtime Feb 17, 2024
ffbc6e6
mrp: Update MacForwardingTable.h
DJtime Feb 17, 2024
553b7c8
mrp: Update MacForwardingTable.h
DJtime Feb 17, 2024
6f16156
mrp: Updating NED-file documentation
DJtime Feb 23, 2024
e0c8194
mrp: reworked signals and ned-parameters
DJtime Mar 13, 2024
70e56af
mrp: adjust NED files for L2NetworkConfigurator being moved on INET m…
avarga Mar 25, 2024
2efdafa
mrp: EtherType.msg: fix indentation
avarga Mar 25, 2024
87cf8d5
mrp: MrpRelay: fixed include path
ZoltanBojthe Apr 9, 2024
8c5a281
mrp: examples: MrpSwitch: fixed imports
ZoltanBojthe Apr 9, 2024
7b3db7e
mrp: omnetpp.ini: cosmetics
avarga Mar 26, 2024
8d5a0e0
mrp: examples: Mrp: fixed network: use Mrp network from exmples/mrp f…
ZoltanBojthe Apr 9, 2024
dd2e47d
mrp: examples: Mrp: reduce number of packets in LargeNetworkWithHosts…
ZoltanBojthe Apr 9, 2024
d9f7802
mrp: tests: fingerprints: added base fingerprints for Mrp
ZoltanBojthe Apr 9, 2024
3ed9a28
mrp: MrpPdu.msg: capitalized class names
avarga Mar 24, 2024
81d92b6
mrp: MrpPdu.msg: capitalized enum names
avarga Mar 24, 2024
ac18423
mrp: MrpPdu.msg: field names changed to lowecase
avarga Mar 24, 2024
3937a0f
imrp: ContinuityCheckMessage.msg: capitalize class names
avarga Mar 24, 2024
79b88e5
mrp: capitalized names of non-msg types and enums
avarga Mar 24, 2024
f5fe7cd
mrp: changed signal names to lowercase
avarga Mar 24, 2024
1b75ec3
mrp: change arg names to lowercase
avarga Mar 24, 2024
e03d247
mrp: fix typo: Hysterisis -> Hysteresis
avarga Mar 24, 2024
88004c8
mrp: rename sourceAddress to localBridgeAddress, to avoid confusion w…
avarga Mar 24, 2024
5ba1d9b
mrp: Mrp: renamed managerPrio to reduce confusion with ManagerPrio ar…
avarga Mar 24, 2024
040adb7
mrp: renamed local variables to start with lowercase
avarga Mar 24, 2024
10e1487
mrp: change signal names to lowercase initial
avarga Mar 25, 2024
b164175
mrp: remove the word "Signal" from the end of signal names
avarga Mar 25, 2024
aedc73e
mrp: eliminate subfolders under mrp/
avarga Apr 9, 2024
0175098
mrp: ContinuityCheckMessage.msg: timers moved out to a separate file
avarga Mar 25, 2024
97178e0
mrp: MrpSwitch moved into node/
avarga Apr 9, 2024
de5a946
mrp: added comment for ContinuityCheckMessage
avarga Mar 25, 2024
4ad574a
mrp: make separate class for "End" TLV instead of (mis)using TlvHeader
avarga Mar 25, 2024
2ab07a2
mrp: MrpPdu.msg: C++ classes for various TLVs renamed
avarga Mar 25, 2024
988c4c1
mrp: MrpPdu.msg: added comments for classes
avarga Mar 25, 2024
26e1407
mrp: remove read() (empty and unused method)
avarga Mar 25, 2024
2e3b2d7
mrp: module comments moved to where the NEDDOC tool finds them
avarga Mar 25, 2024
e2450ba
mrp: MrpPdu.msg: note that times are in milliseconds
avarga Mar 26, 2024
6889653
mrp: test/networks/mrp removed
avarga Mar 27, 2024
e832329
mrp: added support for displaying info above module icon via displayS…
avarga Mar 27, 2024
368255a
mrp: static_cast<MacAddress>() -> MacAddress()
avarga Mar 27, 2024
5c42d67
mrp: change disabled link color because it was too close to bg color
avarga Mar 28, 2024
d7b6a18
mrp: remove unimplemented "blockedStateSupported" parameter
avarga Mar 28, 2024
18e770a
mrp: remove unused parameter "InterconnectionName"
avarga Apr 2, 2024
e693a4b
mrp: ccmInterval converted to @unit(s) too
avarga Mar 25, 2024
c7dc4e9
mrp: temporarily add "_ms" suffix to variables holding time in *milli…
avarga Apr 9, 2024
f38d67d
mrp: fix wrong MRP_Blocked field, and deducing link state from MRP_Li…
avarga Mar 26, 2024
1e5415a
mrp: fix for filling MRP_LinkInfo field
avarga Mar 26, 2024
7d319f6
mrp: use enum instead of uint16_t for link state
avarga Apr 9, 2024
adc42bf
mrp: more args converted to lowercase initial
avarga Mar 28, 2024
d67eba3
mrp: linkDetectionDelay and processingDelay converted from @unit(ms) …
avarga Mar 25, 2024
342ba76
mrp: convert to simtime_t: defaultTestInterval, shortTestInterval
avarga Mar 26, 2024
55a1957
mrp: convert to simtime_t: topologyChangeInterval
avarga Apr 10, 2024
45b2998
mrp: convert to simtime_t: linkDownInterval, linkUpInterval
avarga Apr 10, 2024
b5f3bdd
mrp: convert to simtime_t: ccmInterval
avarga Mar 26, 2024
f95718e
mrp: convert to simtime_t: inTestDefaultInterval (no fingerprint change)
avarga Apr 10, 2024
bcf3d60
mrp: convert to simtime_t: inLinkStatusPollInterval (no fingerprint c…
avarga Apr 10, 2024
105f7b3
mrp: convert to simtime_t: inTopologyChangeInterval (no fingerprint c…
avarga Apr 10, 2024
b3cf249
mrp: convert to simtime_t: inLinkChangeInterval (no fingerprint change)
avarga Apr 10, 2024
9540f3d
mrp: convert to simtime_t: topologyChangeInd(), interconnTopologyChan…
avarga Apr 10, 2024
5270e40
mrp: use scheduleAfter() instead of scheduleAt(simTime() + delta)
avarga Apr 10, 2024
e64ede3
mrp: processingDelay, linkDetectionDelay: use cPar*
avarga Mar 26, 2024
8c63640
mrp: eliminated "double time=0;" local vars
avarga Apr 10, 2024
afce65a
mrp: mrpRole parameter converted from int to @enum
avarga Mar 26, 2024
01ce987
mrp: mrpNetworks.ned: added visualizing the switch states on network …
avarga Mar 27, 2024
90f63c2
mrp: mrpNetworks.ned: renamed to uppercase, module position tweaks
avarga Mar 27, 2024
e430c63
mrp: omnetpp.ini: merged entries by using pattern syntax
avarga Mar 28, 2024
362915d
mrp: MrpNetworks.ned: layout made more spacious and even
avarga Apr 2, 2024
8532f91
mrp: interconnectionRole: converted from int to string @enum
avarga Apr 2, 2024
f485a1f
mrp: MrpInterconnection: displayStringTextFormat to include interconn…
avarga Apr 2, 2024
3befb7b
mrp: MrpInterconnection: enums and vars renamed per table on page 43 …
avarga Apr 2, 2024
0315363
mrp: displayStringTextFormat tweak
avarga Apr 3, 2024
4c52128
mrp: some doc comments
avarga Mar 26, 2024
1068f73
mrp: rename: currentState -> nodeState, currentRingState -> ringState
avarga Apr 4, 2024
ee8115f
mrp: rename expectedRole to role
avarga Apr 4, 2024
e1ba1d8
mrp: make ringState and nodeState traced, record as enums
avarga Apr 4, 2024
5ececa1
mrp: remove unused class members -- TODO check
avarga Apr 3, 2024
50e2882
mrp: fingerprints/mrp.csv: delete nonexistent simulation runs
avarga Apr 12, 2024
c904dc1
mrp: cosmetics: adjusted copyright headers
avarga Apr 16, 2024
17169ca
mrp: omnetpp.ini: give names to iteration variables
avarga Apr 15, 2024
a604695
mrp: omnetpp.ini: merged more entries by using pattern syntax
avarga Apr 17, 2024
c816a56
mrp: MrpInterfaceData files moved from configurator/ to mrp/
avarga Apr 16, 2024
a95fb6f
mrp: MrpSwitch minor changes
avarga Apr 17, 2024
335ab16
mrp: MrpSwitch: remove mrpMeasurementLayer
avarga Apr 17, 2024
6c04316
mrp: MrpPdu.msg: added descriptions
avarga Apr 16, 2024
da56922
mrp: Mrp, MrpInterconnection, MrpRelay, etc: refined/extended NED docu
avarga Apr 10, 2024
1a1e4b9
mrp: MrpProtocolDissector implemented
avarga Apr 17, 2024
19cbeb6
mrp: linkCheckEnabled and ringCheckEnabled merged to interconnectionC…
avarga Apr 18, 2024
74bea37
common: implemented the par() NED function for accessing arbitrary mo…
avarga Apr 17, 2024
17217f9
mrp: LargeNetwork scenario refactored
avarga Apr 17, 2024
521610d
mrp: example: utilize section inheritance to reduce duplications; Sma…
avarga Apr 17, 2024
31e7a85
mrp: convert ringTime computation to simtime_t
avarga Apr 18, 2024
56591fb
mrp: minor adjustments (use int for interfaceId everywhere; naming co…
avarga Apr 19, 2024
df6c106
mrp: rename variables to better reflect their types
avarga Apr 19, 2024
57cfc8a
mrp: refactor port initialization
avarga Apr 19, 2024
bfce258
mrp: delete unused field lostPDU
avarga Apr 19, 2024
7d0157a
WIP: define an "Mrp" project feature
avarga Apr 16, 2024
b7f7363
misc TODO items
avarga Apr 17, 2024
5893247
WIP showcase
avarga Apr 17, 2024
40d72ee
Revert "WIP showcase"
avarga Apr 17, 2024
b6861fa
WIP Mrp: statistics
avarga Apr 18, 2024
b532277
Merge remote-tracking branch 'upstream/topic/mrp' into mrp
DJtime Apr 20, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions .oppfeatures
Original file line number Diff line number Diff line change
Expand Up @@ -848,6 +848,40 @@
compileFlags = ""
linkerFlags = ""
/>

<feature
id = "Mrp"
name = "MRP (Media Redundancy Protocol)"
description = "Implementation of the Media Redundancy Protocol on Ethernet networks."
initiallyEnabled = "true"
requires = ""
recommended = ""
labels = "protocols"
nedPackages = "
inet.linklayer.mrp
inet.node.mrp
"
extraSourceFolders = ""
compileFlags = "-DINET_WITH_MRP"
linkerFlags = ""
/>

<feature
id = "MrpExamples"
name = "MRP examples"
description = "Examples for MRP."
initiallyEnabled = "true"
requires = "Ethernet Mrp"
recommended = ""
labels = "protocols"
nedPackages = "
inet.examples.mrp
"
extraSourceFolders = ""
compileFlags = ""
linkerFlags = ""
/>

<feature
id = "NetworkEmulationSupport"
name = "Network emulation support"
Expand Down
11 changes: 11 additions & 0 deletions examples/mrp/Events.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<script>
<at t="1s">
<disconnect src-module="node2" src-gate="ethg[1]" />
</at>
<at t="2s">
<connect src-module="node2" src-gate="ethg[1]"
dest-module="node1" dest-gate="ethg[0]"
channel-type="inet.node.ethernet.Eth100M">
</connect>
</at>
</script>
11 changes: 11 additions & 0 deletions examples/mrp/Events50.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<script>
<at t="1s">
<disconnect src-module="node[12]" src-gate="ethg[0]" />
</at>
<at t="2s">
<connect src-module="node[12]" src-gate="ethg[0]"
dest-module="node[13]" dest-gate="ethg[1]"
channel-type="inet.node.ethernet.Eth100M">
</connect>
</at>
</script>
17 changes: 17 additions & 0 deletions examples/mrp/EventsInter.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<script>
<at t="750ms">
<disconnect src-module="node2" src-gate="ethg[1]" />
</at>
<at t="1250ms">
<connect src-module="node2" src-gate="ethg[1]"
dest-module="node1" dest-gate="ethg[0]"
channel-type="inet.node.ethernet.Eth100M">
</connect>
</at>
<at t="1750ms">
<disconnect src-gate="ethg[2]" src-module="node2"></disconnect></at>
<at t="2500ms">
<connect channel-type="inet.node.ethernet.Eth100M" dest-gate="ethg[2]" dest-module="node6" src-gate="ethg[2]"
src-module="node2">
</connect></at>
</script>
156 changes: 156 additions & 0 deletions examples/mrp/MrpNetworks.ned
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
// Copyright (C) 2024 Daniel Zeitler
// SPDX-License-Identifier: LGPL-3.0-or-later

package inet.examples.mrp;

import inet.common.scenario.ScenarioManager;
import inet.node.ethernet.Eth100M;
import inet.node.ethernet.EthernetHost;
import inet.node.mrp.MrpSwitch;
import inet.visualizer.canvas.integrated.IntegratedCanvasVisualizer;


network Mrp4
{
@display("bgb=640,520");
submodules:
scenarioManager: ScenarioManager {
@display("p=80,80;is=s");
}
visualizer: IntegratedCanvasVisualizer {
@display("p=80,160;is=s");
}
node0: MrpSwitch {
@display("p=350,150");
}
node1: MrpSwitch {
@display("p=450,250");
}
node2: MrpSwitch {
@display("p=350,350");
}
node3: MrpSwitch {
@display("p=250,250");
}
connections:
node0.ethg[0] <--> Eth100M <--> node1.ethg[1];
node1.ethg[0] <--> Eth100M <--> node2.ethg[1];
node2.ethg[0] <--> Eth100M <--> node3.ethg[1];
node3.ethg[0] <--> Eth100M <--> node0.ethg[1];
}

network Mrp4withHosts extends Mrp4
{
@display("bgb=720,520");
submodules:
host1: EthernetHost {
parameters:
csmacdSupport = false;
eth.duplexMode = true;
@display("p=350,50");
}
host2: EthernetHost {
parameters:
csmacdSupport = false;
eth.duplexMode = true;
@display("p=550,250");
}

host3: EthernetHost {
parameters:
csmacdSupport = false;
eth.duplexMode = true;
@display("p=350,450");
}
host4: EthernetHost {
parameters:
csmacdSupport = false;
eth.duplexMode = true;
@display("p=150,250");
}
connections:
node0.ethg[2] <--> Eth100M <--> host1.ethg;
node1.ethg[2] <--> Eth100M <--> host2.ethg;
node2.ethg[2] <--> Eth100M <--> host3.ethg;
node3.ethg[2] <--> Eth100M <--> host4.ethg;
}

network Mrp8 extends Mrp4
{
@display("bgb=980,500");
submodules:
node4: MrpSwitch {
@display("p=700,150");
}
node5: MrpSwitch {
@display("p=800,250");
}
node6: MrpSwitch {
@display("p=700,350");
}
node7: MrpSwitch {
@display("p=600,250");
}
host1: EthernetHost {
parameters:
csmacdSupport = false;
eth.duplexMode = true;
@display("p=150,250");
}
host2: EthernetHost {
parameters:
csmacdSupport = false;
eth.duplexMode = true;
@display("p=450,400");
}
host3: EthernetHost {
parameters:
csmacdSupport = false;
eth.duplexMode = true;
@display("p=900,250");
}
host4: EthernetHost {
parameters:
csmacdSupport = false;
eth.duplexMode = true;
@display("p=600,400");
}
connections:
node4.ethg[0] <--> Eth100M <--> node5.ethg[1];
node5.ethg[0] <--> Eth100M <--> node6.ethg[1];
node6.ethg[0] <--> Eth100M <--> node7.ethg[1];
node7.ethg[0] <--> Eth100M <--> node4.ethg[1];
node0.ethg[2] <--> Eth100M <--> node4.ethg[2];
node2.ethg[2] <--> Eth100M <--> node6.ethg[2];
host1.ethg <--> Eth100M <--> node3.ethg[2];
host2.ethg <--> Eth100M <--> node1.ethg[2];
host3.ethg <--> Eth100M <--> node5.ethg[2];
host4.ethg <--> Eth100M <--> node7.ethg[2];
}

network MrpRing
{
parameters:
int numNodes;
submodules:
scenarioManager: ScenarioManager {
@display("p=95,48;is=s");
}
visualizer: IntegratedCanvasVisualizer {
@display("p=95,100;is=s");
}
node[numNodes]: MrpSwitch {
gates:
ethg[3];
}
host[numNodes]: EthernetHost {
parameters:
csmacdSupport = false;
eth.duplexMode = true;
}
connections:
for i=0..numNodes-1 {
node[i].ethg[0] <--> Eth100M <--> node[(i+1) % numNodes].ethg[1];
host[i].ethg <--> Eth100M <--> node[i].ethg[2];
}
}
Loading