creator.py

Go to the documentation of this file.
00001 #!/usr/bin/python
00002 
00003 secondaryRouters = 4
00004 hostsPerRouter = 4
00005 
00006 
00007 
00008 ###
00009 #   creation of routing file for main router
00010 ###
00011 
00012 mainRouterFile = open("mainRouter.mrt", "w")
00013 
00014 mainRouterFile.write("ifconfig:\n")
00015 
00016 for i in range(0,secondaryRouters):
00017   mainRouterFile.write("name: eth%i    encap: Ethernet    inet_addr: 192.%i.0.1\n" % (i, i))
00018   mainRouterFile.write("MTU: 1500    Metric: 1    BROADCAST    MULTICAST\n")
00019 
00020 mainRouterFile.write("ifconfigend.\n")
00021 mainRouterFile.write("route:\n")
00022 
00023 for i in range(0, secondaryRouters):
00024   mainRouterFile.write("192.%i.0.0    192.%i.0.2    255.255.0.0    G    0    eth%i\n" % (i, i, i))
00025 
00026 for i in range(0, secondaryRouters):
00027   mainRouterFile.write("225.0.0.1    192.%i.%i.2    255.255.255.255    G    0    eth%i\n" % (i, i, i))
00028 
00029 mainRouterFile.write("routeend.\n")
00030 mainRouterFile.close()
00031 
00032 
00033 ###
00034 #   creation of routing files for secondary routers
00035 #     creation of routing files for hosts
00036 ###
00037 
00038 for i in range(0, secondaryRouters):
00039 
00040   secondaryRouterFile = open("secondaryRouter%i.mrt" % i, "w")
00041   secondaryRouterFile.write("ifconfig:\n")
00042   secondaryRouterFile.write("name: eth0    encap: Ethernet    inet_addr: 192.%i.0.2\n" % (i))
00043   secondaryRouterFile.write("MTU: 1500    Metric: 1    BROADCAST    MULTICAST\n")
00044 
00045   for j in range(0, hostsPerRouter):
00046     secondaryRouterFile.write("name: eth%i    encap: Ethernet    inet_addr: 192.%i.%i.1\n" % (j + 1, i, j + 1))
00047     secondaryRouterFile.write("MTU: 1500    Metric: 1    BROADCAST    MULTICAST\n")
00048 
00049   secondaryRouterFile.write("ifconfigend.\n")
00050   secondaryRouterFile.write("route:\n")
00051 
00052   for j in range(0, hostsPerRouter):
00053     secondaryRouterFile.write("192.%i.%i.2     *    255.255.255.255    H    0    eth%i\n" % (i, j + 1, j + 1))
00054 
00055   for j in range(0, hostsPerRouter):
00056     secondaryRouterFile.write("225.0.0.1    *    255.255.255.255    H    0    eth%i\n" % (j + 1))
00057 
00058   secondaryRouterFile.write("225.0.0.1    192.%i.0.1    255.255.255.255    G    0    eth0\n" % (i))
00059 
00060   secondaryRouterFile.write("default:    192.%i.0.1    255.255.255.255    G    0    eth0\n" % (i))
00061   secondaryRouterFile.write("routeend.\n")
00062   secondaryRouterFile.close()
00063 
00064   for j in range(0, hostsPerRouter):
00065     hostRoutingFile = open("host%i-%i.mrt" % (i, j), "w")
00066     hostRoutingFile.write("ifconfig:\n")
00067     hostRoutingFile.write("name: eth0    encap: Ethernet    inet_addr: 192.%i.%i.2\n" % (i, j + 1))
00068     hostRoutingFile.write("MTU: 1500    Metric: 1    BROADCAST    MULTICAST\n")
00069     hostRoutingFile.write("Groups: 225.0.0.1\n")
00070     hostRoutingFile.write("ifconfigend.\n")
00071     hostRoutingFile.write("route:\n")
00072     hostRoutingFile.write("225.0.0.1    192.%i.%i.1    255.255.255.255    G    0    eth0\n" % (i, j + 1))
00073     hostRoutingFile.write("default:    192.%i.%i.1    255.255.255.255    G    0    eth0\n" % (i, j + 1))
00074     hostRoutingFile.write("routeend.\n")
00075     hostRoutingFile.close()
00076 
00077 
00078 ###
00079 #   creation of network description
00080 ###
00081 
00082 networkFile = open("multicast2.ned", "w")
00083 networkFile.write("""import "RTPHost", "Router";
00084 
00085 channel ethernet
00086   delay normal(0.00015,0.00005);
00087   datarate 10*10^6;
00088 endchannel
00089 
00090 module RTPMulticast2
00091   parameters:
00092     debug: bool;
00093   submodules:
00094     mainRouter: Router
00095       parameters:
00096         nodename = "mainRouter",
00097         numOfPorts = %i,
00098         routingFile = "mainRouter.mrt";
00099       gatesizes:
00100         in[%i],
00101         out[%i];
00102 """ % (secondaryRouters, secondaryRouters, secondaryRouters))
00103 
00104 for i in range(0, secondaryRouters):
00105   networkFile.write("""
00106     secondaryRouter%i: Router
00107       parameters:
00108         nodename = "secondaryRouter%i",
00109         numOfPorts = %i,
00110         routingFile = "secondaryRouter%i.mrt";
00111       gatesizes:
00112         in[%i],
00113         out[%i];
00114 """ % (i, i, hostsPerRouter + 1, i, hostsPerRouter + 1, hostsPerRouter + 1))
00115 
00116   for j in range(0, hostsPerRouter):
00117     networkFile.write("""
00118     host%i_%i: RTPHost
00119       parameters:
00120 """ % (i, j))
00121     networkFile.write("""
00122         debug = debug,
00123         numOfPorts = 1,
00124         nodename = "host%i-%i",
00125         routingFile = "host%i-%i.mrt";
00126 """ % (i, j, i, j))
00127 
00128 networkFile.write("""
00129   connections:
00130 """)
00131 
00132 for i in range(0, secondaryRouters):
00133   networkFile.write("""    mainRouter.out[%i] --> ethernet --> secondaryRouter%i.in[0],
00134     mainRouter.in[%i] <-- ethernet <-- secondaryRouter%i.out[0],
00135 """ % (i, i, i, i))
00136 
00137   for j in range(0, hostsPerRouter):
00138 
00139      if ((i == secondaryRouters - 1) & (j == hostsPerRouter - 1)):
00140        networkFile.write("""    secondaryRouter%i.out[%i] --> ethernet --> host%i_%i.in[0],
00141     secondaryRouter%i.in[%i] <-- ethernet <-- host%i_%i.out[0];
00142 """ % (i, j + 1, i, j, i, j + 1, i, j))
00143 
00144      else:
00145        networkFile.write("""    secondaryRouter%i.out[%i] --> ethernet --> host%i_%i.in[0],
00146     secondaryRouter%i.in[%i] <-- ethernet <-- host%i_%i.out[0],
00147 """ % (i, j + 1, i, j, i, j + 1, i, j))
00148 
00149 networkFile.write("""
00150 endmodule
00151 
00152 network
00153   rtpNetwork: RTPMulticast2
00154     parameters:
00155       debug = true;
00156 endnetwork""")
00157 
00158 networkFile.close()
00159 
00160 
00161 ###
00162 #   creation of omnetpp.ini
00163 ###
00164 
00165 omnetppiniFile = open("omnetpp.ini", "w")
00166 omnetppiniFile.write("""
00167 [General]
00168 network = rtpNetwork
00169 ini-warnings = false
00170 total-stack-kb=27535
00171 
00172 [Tkenv]
00173 default-run=1
00174 module-messages = yes
00175 Verbose-simulation = yes
00176 
00177 [Parameters]
00178 *.numOfProcessors = 1
00179 *.profileName = "RTPAVProfile"
00180 *.destinationAddress = "225.0.0.1"
00181 *.portNumber = 5004
00182 *.bandwidth = 8000
00183 *.fileName = ""
00184 *.payloadType = 32
00185 *.autoOutputFileNames = true
00186 *.sessionEnterDelay = 0s
00187 *.transmissionStartDelay = 10s
00188 *.transmissionStopDelay = 3m
00189 *.sessionLeaveDelay = 10m
00190 """)
00191 omnetppiniFile.close()