script.
"""
import logging
+from mininet.log import setLogLevel
from dcemulator.net import DCNetwork
from api.zerorpcapi import ZeroRpcApiEndpoint
"""
net = DCNetwork()
+ """
+ 1b. add a monitoring agent to the DCNetwork
+ """
+ mon_api = ZeroRpcApiEndpointDCNetwork("0.0.0.0", 5151)
+ mon_api.connectDCNetwork(net)
+ mon_api.start()
+
"""
2. Add (logical) data centers to the topology
(each data center is one "bigswitch" in our simplified
first prototype)
"""
- dc1 = net.addDatacenter("dc1")
- dc2 = net.addDatacenter("dc2")
- dc3 = net.addDatacenter("dc3")
- dc4 = net.addDatacenter("dc4")
+ dc1 = net.addDatacenter("datacenter1")
+ dc2 = net.addDatacenter("datacenter2")
+ dc3 = net.addDatacenter("long_data_center_name3")
+ dc4 = net.addDatacenter(
+ "datacenter4",
+ metadata={"mydata": "we can also add arbitrary metadata to each DC"})
"""
3. You can add additional SDN switches for data center
These links can use Mininet's features to limit bw, add delay or jitter.
"""
net.addLink(dc1, dc2)
- net.addLink("dc1", s1)
- net.addLink(s1, "dc3")
- net.addLink(s1, dc4)
+ net.addLink("datacenter1", s1)
+ net.addLink(s1, dc3)
+ net.addLink(s1, "datacenter4")
"""
5. We want to access and control our data centers from the outside,
# connect data centers to this endpoint
zapi1.connectDatacenter(dc1)
zapi1.connectDatacenter(dc2)
+ zapi1.connectDatacenter(dc3)
+ zapi1.connectDatacenter(dc4)
# run API endpoint server (in another thread, don't block)
zapi1.start()
net.start()
net.CLI()
# when the user types exit in the CLI, we stop the emulator
+ # we need to explicitly stop the monitoring api, so the Ryu controller is also terminated
+ mon_api.stop()
net.stop()
def main():
+ setLogLevel('info') # set Mininet loglevel
create_topology1()