[pox-dev] Problem with determining packet is coming from which switch

Murphy McCauley murphy.mccauley at gmail.com
Mon Jul 8 15:32:08 PDT 2013


If a packet from Host 1 is forwarded across four switches, how do you know which one was the first one where Host 1 is actually attached and not just some non-first switch?

There may not be a super easy answer to this question.  POX's host_tracker component attempts one possible solution to this issue.  A simple possibility is to use openflow.discovery to figure out which ports are "edge" ports and which ports connect switches to other switches.  Only "learn" a host position at an edge port.

-- Murphy

On Jul 8, 2013, at 2:50 PM, nibble nibble wrote:

> 
> I am creating a topology with two switches and each switch has 4 hosts(the code for creating the topology is included). Then I have a script for pox learning which process each received packet and try to figure out each host is connected to which one of the switches(the code is included).
> 
> When I ping two hosts inside the same switch, the code is working perfectly, but if I do "n1 ping n6 -c1"
> it does not return the correct switches. For example this is the result:(I can also include the complete code)
> 
> 
> 
>  host 1
> switch 1
>  [ 1.  0.  0.  0.  0.  0.  0.  0.]
> 
>  host 1
> switch 2
>  [ 2.  0.  0.  0.  0.  0.  0.  0.]
> 
>  host 6
>  switch 2
>  [ 2.  0.  0.  0.  0.  2.  0.  0.]
> 
>  host 6
>  switch 1
>  [ 2.  0.  0.  0.  0.  1.  0.  0.]
> 
> 
> 
> 
> 
> 
> 
> Creating topology: 
>  
> Class MyTopo(Topo):
>     def __init__(self,  enable_all = True):
>         setLogLevel('info')    
>         super(MyTopo, self).__init__()
>         
>         self.switch1 = self.addSwitch('s1')
>         self.switch2 = self.addSwitch('s2')
>         n = 0
>         for h in range(4):
>             n += 1
>             host = self.addHost('n%s' % (n))
>             self.addLink(host, self.switch1) 
>         for h in range(4):
>             n += 1            
>             host = self.addHost('n%s' % (n))
>             self.addLink(host, self.switch2)
>         self.addLink(self.switch1, self.switch2) 
> 
> 
> 
> Processing packets:
>  
> packet = event.parsed
> ip = packet.find('ipv4')
> if ip is not None:
>     parts = (str(ip.srcip)).split(".")
>     lp = parts[3]
>     log.info("host %s" % lp)
>     log.info("switch %s" % event.dpid)
>     hosts[int(lp) - 1] = event.dpid
>     
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.noxrepo.org/pipermail/pox-dev-noxrepo.org/attachments/20130708/914603b1/attachment-0002.htm>


More information about the pox-dev mailing list