EthTest.ned 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import inet.linklayer.contract.IEtherMAC;
  2. import inet.linklayer.ethernet.EtherQoSQueue;
  3. simple EthTestApp
  4. {
  5. parameters:
  6. string destAddr; // MACAddress
  7. string script; // space separated sequence of seconds:bytes pairs
  8. gates:
  9. input in;
  10. output out;
  11. }
  12. module EthTestHost
  13. {
  14. parameters:
  15. bool csmacdSupport = default(true); // by default use CSMA/CD
  16. string macType = default(csmacdSupport ? "EtherMAC" : "EtherMACFullDuplex"); // ~EtherMAC or ~EtherMACFullDuplex
  17. string queueType = default(""); // DropTailQueue, DiffServQueue, or empty to use the internal queue
  18. *.interfaceTableModule = "";
  19. @networkNode();
  20. gates:
  21. inout ethg @labels(EtherFrame-conn);
  22. submodules:
  23. app: EthTestApp {
  24. @display("p=155,72");
  25. }
  26. queue: EtherQoSQueue if queueType != "" {
  27. parameters:
  28. dataQueueType = queueType;
  29. @display("p=65,171;q=l2queue");
  30. }
  31. mac: <macType> like IEtherMAC {
  32. parameters:
  33. queueModule = (queueType == "" ? "" : "^.queue");
  34. @display("p=155,272;q=txQueue");
  35. }
  36. connections:
  37. app.out --> queue.in if queueType != "";
  38. queue.out --> mac.upperLayerIn if queueType != "";
  39. app.out --> mac.upperLayerIn if queueType == "";
  40. mac.upperLayerOut --> app.in;
  41. mac.phys <--> ethg;
  42. }
  43. network EthTestNetwork
  44. {
  45. types:
  46. channel C1 extends ned.DatarateChannel
  47. {
  48. delay = 0s;
  49. }
  50. channel C2 extends PacketLoggerChannel
  51. {
  52. delay = 0s;
  53. }
  54. submodules:
  55. host1: EthTestHost {
  56. @display("p=80,72");
  57. }
  58. host2: EthTestHost {
  59. @display("p=340,72");
  60. }
  61. connections:
  62. host1.ethg$i <-- ethch1:C1 <-- host2.ethg$o;
  63. host1.ethg$o --> ethch2:C2 --> host2.ethg$i;
  64. }