helper: Add LFID route calculation
Loop-Free In-port Dependent (LFID) route calculation provides a set of loop-free paths.
Basically porting the existing code from https://github.com/schneiderklaus/ndnSIM-routing
Refs: #4985
Change-Id: I1ab25e729851cf2233c3b99be715ba0159cca0c7
diff --git a/examples/topologies/topo-abilene.txt b/examples/topologies/topo-abilene.txt
new file mode 100644
index 0000000..499929a
--- /dev/null
+++ b/examples/topologies/topo-abilene.txt
@@ -0,0 +1,60 @@
+# any empty lines and lines starting with '#' symbol are ignored
+#
+# The file should contain exactly two sections: router and link, each starting with the corresponding keyword
+#
+# router section defines topology nodes and their relative positions (e.g., to use in visualizer)
+router
+
+# each line in this section represents one router and should have the following data
+# node comment yPos xPos
+
+router0 NA 0 1
+router1 NA 1 1
+router2 NA 1 2
+router3 NA 1 3
+router4 NA 1 4
+router5 NA 1 4
+router6 NA 1 4
+router7 NA 1 4
+router8 NA 2 1
+router9 NA 2 1
+producer NA 2 1
+
+# Note that `node` can be any string. It is possible to access to the node by name using Names::Find, see examples.
+
+# link section defines point-to-point links between nodes and characteristics of these links
+link
+
+# Each line should be in the following format (only first two are required, the rest can be omitted)
+# srcNode dstNode bandwidth metric delay queue
+# bandwidth: link bandwidth
+# metric: routing metric // Set real routing metrics inside simulation file!
+# delay: link delay
+# queue: MaxPackets for transmission queue on the link (both directions)
+
+
+# label LinkType LinkLabel LinkNote cost
+
+router0 router1 100Mbps 71 5ms
+router0 router2 100Mbps 20 5ms
+
+router1 producer 100Mbps 16 5ms
+
+router2 router9 100Mbps 54 5ms
+
+router3 router4 100Mbps 71 5ms
+router3 router6 100Mbps 102 5ms
+
+router4 router5 100Mbps 31 5ms
+router4 router6 100Mbps 93 5ms
+
+router5 router8 10Mbps 137 5ms
+
+router6 router7 100Mbps 55 5ms
+
+router7 router8 10Mbps 65 5ms
+router7 producer 10Mbps 45 5ms
+
+router8 router9 10Mbps 70 5ms
+
+router9 producer 10Mbps 43 5ms
diff --git a/examples/topologies/topo-grid.txt b/examples/topologies/topo-grid.txt
new file mode 100644
index 0000000..f733388
--- /dev/null
+++ b/examples/topologies/topo-grid.txt
@@ -0,0 +1,51 @@
+# any empty lines and lines starting with '#' symbol are ignored
+#
+# The file should contain exactly two sections: router and link, each starting with the corresponding keyword
+#
+# router section defines topology nodes and their relative positions (e.g., to use in visualizer)
+router
+
+# each line in this section represents one router and should have the following data
+# node comment yPos xPos
+
+router0 NA 0 1
+router1 NA 1 1
+router2 NA 1 2
+router3 NA 1 3
+router4 NA 1 4
+router5 NA 1 4
+router6 NA 1 4
+router7 NA 1 4
+producer NA 2 1
+
+
+# Note that `node` can be any string. It is possible to access to the node by name using Names::Find, see examples.
+
+# link section defines point-to-point links between nodes and characteristics of these links
+link
+
+# Each line should be in the following format (only first two are required, the rest can be omitted)
+# srcNode dstNode bandwidth metric delay queue
+# bandwidth: link bandwidth
+# metric: routing metric // Set real routing metrics inside simulation file!
+# delay: link delay
+# queue: MaxPackets for transmission queue on the link (both directions)
+
+router0 router1 100Mbps 1 5ms
+router0 router3 100Mbps 2 5ms
+
+router1 router2 100Mbps 3 5ms
+router1 router4 100Mbps 4 5ms
+
+router2 router5 100Mbps 5 5ms
+
+router3 router4 100Mbps 16 5ms
+router3 router6 100Mbps 1 5ms
+
+router4 router5 100Mbps 8 5ms
+router4 router7 100Mbps 4 5ms
+
+router6 router7 100Mbps 5 5ms
+
+router5 producer 10Mbps 10 5ms
+router7 producer 10Mbps 2 5ms