FullTest.ned 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. package inet.examples.ospfv2.fulltest;
  2. import inet.common.misc.ThruputMeteringChannel;
  3. import inet.linklayer.ethernet.EtherHub;
  4. import inet.networklayer.configurator.ipv4.IPv4NetworkConfigurator;
  5. import inet.node.inet.StandardHost;
  6. import inet.node.ospfv2.OSPFRouter;
  7. channel C extends ThruputMeteringChannel
  8. {
  9. delay = 0.1us;
  10. datarate = 100Mbps;
  11. thruputDisplayFormat = "#N";
  12. }
  13. module OspfLan
  14. {
  15. parameters:
  16. int h; // number of hosts on the hub
  17. @display("i=old/cloud");
  18. gates:
  19. inout ethg[];
  20. submodules:
  21. hub: EtherHub {
  22. @display("is=s");
  23. }
  24. host[h]: StandardHost {
  25. @display("is=s");
  26. }
  27. connections:
  28. for i=0..sizeof(ethg)-1 {
  29. hub.ethg++ <--> ethg[i];
  30. }
  31. for i=0..h-1 {
  32. hub.ethg++ <--> C <--> host[i].ethg++;
  33. }
  34. }
  35. module OSPF_Area1
  36. {
  37. parameters:
  38. @display("p=10,42;b=432,504");
  39. gates:
  40. inout ethg[3];
  41. submodules:
  42. RT1: OSPFRouter {
  43. parameters:
  44. @display("p=232,136");
  45. gates:
  46. ethg[2];
  47. }
  48. RT2: OSPFRouter {
  49. parameters:
  50. @display("p=236,348");
  51. gates:
  52. ethg[2];
  53. }
  54. N1: OspfLan {
  55. parameters:
  56. h = 2;
  57. @display("p=140,136");
  58. }
  59. N2: OspfLan {
  60. parameters:
  61. h = 2;
  62. @display("p=140,348");
  63. }
  64. N3: OspfLan {
  65. parameters:
  66. h = 1;
  67. @display("p=360,252");
  68. }
  69. N4: OspfLan {
  70. parameters:
  71. h = 2;
  72. @display("p=360,453");
  73. }
  74. connections:
  75. N1.ethg++ <--> C <--> RT1.ethg[0];
  76. RT1.ethg[1] <--> C <--> N3.ethg++;
  77. N2.ethg++ <--> C <--> RT2.ethg[0];
  78. RT2.ethg[1] <--> C <--> N3.ethg++;
  79. // towards other areas
  80. N3.ethg++ <--> { @display("m=n"); } <--> ethg[0];
  81. N3.ethg++ <--> { @display("m=e"); } <--> ethg[1];
  82. N4.ethg++ <--> { @display("m=e"); } <--> ethg[2];
  83. }
  84. module OSPF_Area2
  85. {
  86. parameters:
  87. @display("p=10,10;b=424,400");
  88. gates:
  89. inout ethg[4];
  90. submodules:
  91. RT8: OSPFRouter {
  92. parameters:
  93. @display("p=304,196");
  94. gates:
  95. ethg[2];
  96. }
  97. N6: OspfLan {
  98. parameters:
  99. h = 1;
  100. @display("p=304,100");
  101. }
  102. N7: OspfLan {
  103. parameters:
  104. h = 2;
  105. @display("p=304,300");
  106. }
  107. N8: OspfLan {
  108. parameters:
  109. h = 1;
  110. @display("p=104,100");
  111. }
  112. connections:
  113. N6.ethg++ <--> C <--> RT8.ethg[0];
  114. RT8.ethg[1] <--> C <--> N7.ethg++;
  115. // towards other areas
  116. N8.ethg++ <--> ethg[0];
  117. N8.ethg++ <--> { @display("m=n"); } <--> ethg[1];
  118. N6.ethg++ <--> { @display("m=e"); } <--> ethg[2];
  119. N6.ethg++ <--> ethg[3];
  120. }
  121. module OSPF_Area3
  122. {
  123. parameters:
  124. @display("p=10,10;b=264,528");
  125. gates:
  126. inout ethg[1];
  127. submodules:
  128. RT9: OSPFRouter {
  129. parameters:
  130. @display("p=148,200");
  131. gates:
  132. ethg[2];
  133. }
  134. RT12: OSPFRouter {
  135. parameters:
  136. @display("p=148,360");
  137. gates:
  138. ethg[3];
  139. }
  140. N9: OspfLan {
  141. parameters:
  142. h = 1;
  143. @display("p=148,284");
  144. }
  145. N10: OspfLan {
  146. parameters:
  147. h = 2;
  148. @display("p=148,452");
  149. }
  150. N11: OspfLan {
  151. parameters:
  152. h = 2;
  153. @display("p=144,112");
  154. }
  155. H1: StandardHost {
  156. parameters:
  157. @display("p=64,360;i=device/pc_s");
  158. }
  159. connections:
  160. RT9.ethg[1] <--> C <--> N9.ethg++;
  161. RT9.ethg[0] <--> C <--> N11.ethg++;
  162. RT12.ethg[1] <--> C <--> H1.ethg++;
  163. RT12.ethg[0] <--> C <--> N9.ethg++;
  164. RT12.ethg[2] <--> C <--> N10.ethg++;
  165. // towards other areas
  166. ethg[0] <--> { @display("m=e"); } <--> N9.ethg++;
  167. }
  168. network OSPF_RFC2328_Fig6
  169. {
  170. parameters:
  171. @display("p=10,10;b=704,560");
  172. submodules:
  173. Area1: OSPF_Area1 {
  174. parameters:
  175. @display("p=120,172;b=176,168");
  176. }
  177. Area2: OSPF_Area2 {
  178. parameters:
  179. @display("p=448,468;b=176,168");
  180. }
  181. Area3: OSPF_Area3 {
  182. parameters:
  183. @display("p=128,468;b=176,168");
  184. }
  185. RT3: OSPFRouter {
  186. parameters:
  187. @display("p=276,208");
  188. gates:
  189. ethg[3];
  190. }
  191. RT4: OSPFRouter {
  192. parameters:
  193. @display("p=276,144");
  194. gates:
  195. ethg[2];
  196. }
  197. RT5: OSPFRouter {
  198. parameters:
  199. @display("p=496,144");
  200. gates:
  201. ethg[6];
  202. }
  203. RT6: OSPFRouter {
  204. parameters:
  205. @display("p=424,208");
  206. gates:
  207. ethg[3];
  208. }
  209. RT7: OSPFRouter {
  210. parameters:
  211. @display("p=496,328");
  212. gates:
  213. ethg[4];
  214. }
  215. RT10: OSPFRouter {
  216. parameters:
  217. @display("p=424,328");
  218. gates:
  219. ethg[3];
  220. }
  221. RT11: OSPFRouter {
  222. parameters:
  223. @display("p=284,468");
  224. gates:
  225. ethg[2];
  226. }
  227. N12: OspfLan {
  228. parameters:
  229. h = 1;
  230. @display("p=620,277");
  231. }
  232. N13: OspfLan {
  233. parameters:
  234. h = 1;
  235. @display("p=620,97");
  236. }
  237. N14: OspfLan {
  238. parameters:
  239. h = 1;
  240. @display("p=496,42");
  241. }
  242. N15: OspfLan {
  243. parameters:
  244. h = 1;
  245. @display("p=608,356");
  246. }
  247. configurator: IPv4NetworkConfigurator {
  248. parameters:
  249. config = xml("<config>"+"\n"+
  250. "<interface among='Area1.N1.* Area1.RT1' address='10.1.11.x' netmask='255.255.255.0' />"+"\n"+
  251. "<interface among='Area1.N2.* Area1.RT2' address='10.1.12.x' netmask='255.255.255.0' />"+"\n"+
  252. "<interface among='Area1.N3.* Area1.RT1 Area1.RT2 RT3 RT4' address='10.1.13.x' netmask='255.255.255.0' metric='1' />"+"\n"+
  253. "<interface among='Area1.N4.* RT3' address='10.1.14.x' netmask='255.255.255.0' metric='1' />"+"\n"+
  254. "<interface among='Area1.N2.* Area1.RT2' address='10.1.15.x' netmask='255.255.255.0' />"+"\n"+
  255. "<interface among='Area2.N8.* RT10 RT11' address='10.2.21.x' netmask='255.255.255.0' />"+"\n"+
  256. "<interface hosts='Area2.N6.*' address='10.2.22.x' netmask='255.255.255.0' />"+"\n"+
  257. "<interface hosts='RT7 RT10 Area2.RT8' towards='Area2.N6.*' address='10.2.22.x' netmask='255.255.255.0' />"+"\n"+
  258. "<interface among='Area2.N7.* Area2.RT8' address='10.2.23.x' netmask='255.255.255.0' />"+"\n"+
  259. "<interface among='Area3.N10.* Area3.RT12' address='10.3.31.x' netmask='255.255.255.0' />"+"\n"+
  260. "<interface among='Area3.N11.* Area3.RT9' address='10.3.32.x' netmask='255.255.255.0' />"+"\n"+
  261. "<interface among='Area3.H1 Area3.RT12' address='10.3.33.x' netmask='255.255.255.0' />"+"\n"+
  262. "<interface among='Area3.N9 Area3.N9.* Area3.RT* RT11' address='10.3.34.x' netmask='255.255.255.0' />"+"\n"+
  263. "<interface hosts='RT5 RT7' towards='N12.*' address='10.99.12.x' netmask='255.255.255.0' />"+"\n"+
  264. "<interface hosts='N12.*' address='10.99.12.x' netmask='255.255.255.0' />"+"\n"+
  265. "<interface among='RT5 N13.*' address='10.99.13.x' netmask='255.255.255.0' />"+"\n"+
  266. "<interface among='RT5 N14.*' address='10.99.14.x' netmask='255.255.255.0' />"+"\n"+
  267. "<interface among='RT3 RT4 RT5 RT6 RT7 RT10' address='10.0.104.x' netmask='255.255.255.x' />"+"\n"+
  268. "<interface among='RT7 N15.*' address='10.99.15.x' netmask='255.255.255.0' />"+"\n"+
  269. "<route hosts='Area*.H* Area*.N*.host[*] N*.host[*]' destination='*' netmask='0.0.0.0' interface='eth0' />"+"\n"+
  270. "</config>"+"\n");
  271. addStaticRoutes = false;
  272. addDefaultRoutes = false;
  273. @display("p=120,43");
  274. }
  275. connections:
  276. RT3.ethg[0] <--> C <--> Area1.ethg[1];
  277. RT3.ethg[1] <--> C <--> Area1.ethg[2];
  278. RT3.ethg[2] <--> C <--> RT6.ethg[0];
  279. RT4.ethg[0] <--> C <--> Area1.ethg[0];
  280. RT4.ethg[1] <--> C <--> RT5.ethg[1];
  281. RT5.ethg[5] <--> C <--> N14.ethg++;
  282. RT5.ethg[3] <--> C <--> RT7.ethg[0];
  283. RT5.ethg[2] <--> C <--> RT6.ethg[2];
  284. RT5.ethg[4] <--> C <--> N12.ethg++;
  285. RT5.ethg[0] <--> C <--> N13.ethg++;
  286. RT6.ethg[1] <--> C <--> RT10.ethg[0];
  287. RT7.ethg[1] <--> C <--> Area2.ethg[3];
  288. RT7.ethg[3] <--> C <--> N12.ethg++;
  289. RT7.ethg[2] <--> C <--> N15.ethg++;
  290. RT10.ethg[1] <--> C <--> Area2.ethg[1];
  291. RT10.ethg[2] <--> C <--> Area2.ethg[2];
  292. RT11.ethg[1] <--> C <--> Area2.ethg[0];
  293. RT11.ethg[0] <--> C <--> Area3.ethg[0];
  294. }