Hello to all!
To start, I know that there is a mininet mailing list. I have already
sent an e-mail to there, but until now, I had no response.

This is my issue.
I have created a python program to create a testing topology.
For some reason, when I use the "addHost" method and use the argument
"mac" to specify the mac address for the host interface, mininet
ignores the provided mac address an seems to create and specify the
hosts with random mac addresses.
I do not know why this is happening... Can anyone help me?

This is my Python program
#### Starts here

#!/usr/bin/python2

"""
    Custom Network Topology

     2 different zones each controlled by a different Controller
     Each controller manages 3 OpenFlow switches
     Each OF Switch has 3 hosts connected
     Each zone has a triangle shaped topology, where all switches are
conected to the controller

     2 Switches from each zone, interconnect the two zones
      - Switch 2 from Zone 1 connects to the Switch 1 from Zone 2
      - Switch 3 from Zone 1 connects to the Switch 2 from Zone 2

     The two controllers are remote controllers, residing outside from
the mininet environment.

"""
from struct import pack
from mininet.net import Mininet
from mininet.node import RemoteController
from mininet.log import setLogLevel
from mininet.cli import CLI


def byteStr2HexStr(byteStr):
    return ''.join([str.format("{:02X}", ord(x)) for x in byteStr]).strip()

setLogLevel('info')


net = Mininet(build=False)

c1 = net.addController("c1", controller=RemoteController,
ip='192.168.1.254', port=6631)
c2 = net.addController("c2", controller=RemoteController,
ip='192.168.1.254', port=6632)

c1_s1 = net.addSwitch("c1_s1", protocols='OpenFlow13',
dpid=byteStr2HexStr(pack("!Q", 1)), mac='01:00:00:01:01:00')
c1_s2 = net.addSwitch("c1_s2", protocols='OpenFlow13',
dpid=byteStr2HexStr(pack("!Q", 2)), mac='01:00:00:01:02:00')
c1_s3 = net.addSwitch("c1_s3", protocols='OpenFlow13',
dpid=byteStr2HexStr(pack("!Q", 3)), mac='01:00:00:01:03:00')
c2_s1 = net.addSwitch("c2_s1", protocols='OpenFlow13',
dpid=byteStr2HexStr(pack("!Q", 4)), mac='01:00:00:02:01:00')
c2_s2 = net.addSwitch("c2_s2", protocols='OpenFlow13',
dpid=byteStr2HexStr(pack("!Q", 5)), mac='01:00:00:02:02:00')
c2_s3 = net.addSwitch("c2_s3", protocols='OpenFlow13',
dpid=byteStr2HexStr(pack("!Q", 6)), mac='01:00:00:02:03:00')
switches_c1 = [c1_s1, c1_s2, c1_s3]
switches_c2 = [c2_s1, c2_s2, c2_s3]


c1_s1_h1 = net.addHost("c1_s1_h1",
privateDirs=['/home/mininet/Scenarios/Hosts/{}'.format("c1_s1_h1")],
ip='0.0.0.0',  mac='01:00:00:01:01:01')
c1_s1_h2 = net.addHost("c1_s1_h2",
privateDirs=['/home/mininet/Scenarios/Hosts/{}'.format("c1_s1_h2")],
ip='0.0.0.0',  mac='01:00:00:01:01:02')
c1_s1_h3 = net.addHost("c1_s1_h3",
privateDirs=['/home/mininet/Scenarios/Hosts/{}'.format("c1_s1_h3")],
ip='0.0.0.0',  mac='01:00:00:01:01:03')
c1_s2_h1 = net.addHost("c1_s2_h1",
privateDirs=['/home/mininet/Scenarios/Hosts/{}'.format("c1_s2_h1")],
ip='0.0.0.0',  mac='01:00:00:01:02:01')
c1_s2_h2 = net.addHost("c1_s2_h2",
privateDirs=['/home/mininet/Scenarios/Hosts/{}'.format("c1_s2_h2")],
ip='0.0.0.0',  mac='01:00:00:01:02:02')
c1_s2_h3 = net.addHost("c1_s2_h3",
privateDirs=['/home/mininet/Scenarios/Hosts/{}'.format("c1_s2_h3")],
ip='0.0.0.0',  mac='01:00:00:01:02:03')
c1_s3_h1 = net.addHost("c1_s3_h1",
privateDirs=['/home/mininet/Scenarios/Hosts/{}'.format("c1_s3_h1")],
ip='0.0.0.0',  mac='01:00:00:01:03:01')
c1_s3_h2 = net.addHost("c1_s3_h2",
privateDirs=['/home/mininet/Scenarios/Hosts/{}'.format("c1_s3_h2")],
ip='0.0.0.0',  mac='01:00:00:01:03:02')
c1_s3_h3 = net.addHost("c1_s3_h3",
privateDirs=['/home/mininet/Scenarios/Hosts/{}'.format("c1_s3_h3")],
ip='0.0.0.0',  mac='01:00:00:01:03:03')

c2_s1_h1 = net.addHost("c1_s1_h1",
privateDirs=['/home/mininet/Scenarios/Hosts/{}'.format("c2_s1_h1")],
ip='0.0.0.0',  mac='01:00:00:02:01:01')
c2_s1_h2 = net.addHost("c1_s1_h2",
privateDirs=['/home/mininet/Scenarios/Hosts/{}'.format("c2_s1_h2")],
ip='0.0.0.0',  mac='01:00:00:02:01:02')
c2_s1_h3 = net.addHost("c1_s1_h3",
privateDirs=['/home/mininet/Scenarios/Hosts/{}'.format("c2_s1_h3")],
ip='0.0.0.0',  mac='01:00:00:02:01:03')
c2_s2_h1 = net.addHost("c1_s2_h1",
privateDirs=['/home/mininet/Scenarios/Hosts/{}'.format("c2_s2_h1")],
ip='0.0.0.0',  mac='01:00:00:02:02:01')
c2_s2_h2 = net.addHost("c1_s2_h2",
privateDirs=['/home/mininet/Scenarios/Hosts/{}'.format("c2_s2_h2")],
ip='0.0.0.0',  mac='01:00:00:02:02:02')
c2_s2_h3 = net.addHost("c1_s2_h3",
privateDirs=['/home/mininet/Scenarios/Hosts/{}'.format("c2_s2_h3")],
ip='0.0.0.0',  mac='01:00:00:02:02:03')
c2_s3_h1 = net.addHost("c1_s3_h1",
privateDirs=['/home/mininet/Scenarios/Hosts/{}'.format("c2_s3_h1")],
ip='0.0.0.0',  mac='01:00:00:02:03:01')
c2_s3_h2 = net.addHost("c1_s3_h2",
privateDirs=['/home/mininet/Scenarios/Hosts/{}'.format("c2_s3_h2")],
ip='0.0.0.0',  mac='01:00:00:02:03:02')
c2_s3_h3 = net.addHost("c1_s3_h3",
privateDirs=['/home/mininet/Scenarios/Hosts/{}'.format("c2_s3_h3")],
ip='0.0.0.0',  mac='01:00:00:02:03:03')
hosts = [c1_s1_h1, c1_s1_h2, c1_s1_h3, c1_s2_h1, c1_s2_h2, c1_s2_h3,
c1_s3_h1, c1_s3_h2, c1_s3_h3, c2_s1_h1, c2_s1_h2, c2_s1_h3, c2_s2_h1,
c2_s2_h2, c2_s2_h3, c2_s3_h1, c2_s3_h2, c2_s3_h3]


net.addLink(c1_s1_h1, c1_s1)
net.addLink(c1_s1_h2, c1_s1)
net.addLink(c1_s1_h3, c1_s1)
net.addLink(c1_s2_h1, c1_s2)
net.addLink(c1_s2_h2, c1_s2)
net.addLink(c1_s2_h3, c1_s2)
net.addLink(c1_s3_h1, c1_s3)
net.addLink(c1_s3_h2, c1_s3)
net.addLink(c1_s3_h3, c1_s3)

net.addLink(c2_s1_h1, c2_s1)
net.addLink(c2_s1_h2, c2_s1)
net.addLink(c2_s1_h3, c2_s1)
net.addLink(c2_s2_h1, c2_s2)
net.addLink(c2_s2_h2, c2_s2)
net.addLink(c2_s2_h3, c2_s2)
net.addLink(c2_s3_h1, c2_s3)
net.addLink(c2_s3_h2, c2_s3)
net.addLink(c2_s3_h3, c2_s3)

net.addLink(c1_s2, c2_s1)
net.addLink(c1_s3, c2_s2)

net.build()

for switch in switches_c1:
    switch.start([c1])

for switch in switches_c2:
    switch.start([c2])

for host in hosts:
    host.cmdPrint("dhclient {} &".format(host.defaultIntf().name))

CLI(net)
net.stop()
### Ends Here.


I start this program, named "testing_scenario.py", inside the Ubuntu
VM provided in the mininet website, by using the following console
command:
sudo ./testing_scenario.py

-- 

Carlos Miguel Ferreira
Researcher at Telecommunications Institute
Aveiro - Portugal
Work E-mail - c...@av.it.pt
Skype & GTalk -> carlosmf...@gmail.com
LinkedIn -> http://www.linkedin.com/in/carlosmferreira
_______________________________________________
openflow-discuss mailing list
openflow-discuss@lists.stanford.edu
https://mailman.stanford.edu/mailman/listinfo/openflow-discuss

Reply via email to