So it probably has to do with fragmentation and the fact that l2_multi does exact matches. The other controllers you're testing are probably doing forwarding based on just IP or Ethernet destinations, which simplifies things. Modify l2_multi to do that too and see if it makes a difference.
Around line 384 of l2_multi.py, there's the line: match = of.ofp_match.from_packet(packet) Comment it out and do a simpler match. Like... match = of.ofp_match(dl_dst = packet.dst) -- Murphy On Oct 19, 2014, at 5:45 PM, Tim Huang <pds...@gmail.com> wrote: > Sorry for my unclear statement. > > I’m using the discovery, STP, l2_multi modules on the controller with the > diamond topology, like > > h1—s0—— s1—— s2—h3 > | | > | ——s3—— | > > > When I issue a ping on h1 (10.0.0.1) like this > ------------------- > root@ubuntu:~# ping 10.0.0.3 -s 1600 > PING 10.0.0.3 (10.0.0.3) 1600(1628) bytes of data. > ^C > --- 10.0.0.3 ping statistics --- > 14 packets transmitted, 0 received, 100% packet loss, time 13102ms > —————————— > The ping can never be successful. By default, I can’t see any warning or > error log information on pox. > > If you ping with smaller size packet like 1000 bytes, there isn't any > problem. After I tested, the threshold is around 1500, I’m thinking it’s > because of fragmentation. > > ————————————————————— > root@ubuntu:~# ping 10.0.0.3 -s 1000 > PING 10.0.0.3 (10.0.0.3) 1000(1028) bytes of data. > 1008 bytes from 10.0.0.3: icmp_req=1 ttl=64 time=268 ms > 1008 bytes from 10.0.0.3: icmp_req=2 ttl=64 time=0.061 ms > 1008 bytes from 10.0.0.3: icmp_req=3 ttl=64 time=0.052 ms > 1008 bytes from 10.0.0.3: icmp_req=4 ttl=64 time=0.057 ms > ———————————————— > Here is the all log information on the pox side. > ———————————— > pox git:(dart) ./pox.py openflow.discovery openflow.spanning_tree > forwarding.l2_multi > POX 0.3.0 (dart) / Copyright 2011-2014 James McCauley, et al. > INFO:core:POX 0.3.0 (dart) is up. > INFO:openflow.of_01:[00-00-00-00-00-0c 1] connected > INFO:openflow.of_01:[00-00-00-00-00-0d 4] connected > INFO:openflow.of_01:[00-00-00-00-00-0b 2] connected > INFO:openflow.of_01:[00-00-00-00-00-0a 3] connected > INFO:openflow.discovery:link detected: 00-00-00-00-00-0c.3 -> > 00-00-00-00-00-0d.2 > INFO:openflow.discovery:link detected: 00-00-00-00-00-0c.2 -> > 00-00-00-00-00-0b.3 > INFO:openflow.discovery:link detected: 00-00-00-00-00-0d.3 -> > 00-00-00-00-00-0a.3 > INFO:openflow.discovery:link detected: 00-00-00-00-00-0d.2 -> > 00-00-00-00-00-0c.3 > INFO:openflow.spanning_tree:6 ports changed > INFO:openflow.discovery:link detected: 00-00-00-00-00-0b.3 -> > 00-00-00-00-00-0c.2 > INFO:openflow.spanning_tree:4 ports changed > INFO:openflow.discovery:link detected: 00-00-00-00-00-0b.2 -> > 00-00-00-00-00-0a.2 > INFO:openflow.spanning_tree:1 ports changed > INFO:openflow.discovery:link detected: 00-00-00-00-00-0a.3 -> > 00-00-00-00-00-0d.3 > INFO:openflow.spanning_tree:4 ports changed > INFO:openflow.discovery:link detected: 00-00-00-00-00-0a.2 -> > 00-00-00-00-00-0b.2 > ————————————————————— > > Using Ryu as the controller for the same topology > ——— ———— ————— > root@ubuntu:~# ping 10.0.0.3 -s 9999 > PING 10.0.0.3 (10.0.0.3) 9999(10027) bytes of data. > 10007 bytes from 10.0.0.3: icmp_req=21 ttl=64 time=1.36 ms > 10007 bytes from 10.0.0.3: icmp_req=22 ttl=64 time=0.183 ms > 10007 bytes from 10.0.0.3: icmp_req=23 ttl=64 time=0.118 ms > 10007 bytes from 10.0.0.3: icmp_req=24 ttl=64 time=0.142 ms > 10007 bytes from 10.0.0.3: icmp_req=25 ttl=64 time=0.259 ms > 10007 bytes from 10.0.0.3: icmp_req=26 ttl=64 time=0.150 ms > 10007 bytes from 10.0.0.3: icmp_req=27 ttl=64 time=0.122 ms > 10007 bytes from 10.0.0.3: icmp_req=28 ttl=64 time=0.109 ms > 10007 bytes from 10.0.0.3: icmp_req=29 ttl=64 time=0.265 ms > ————— ————————— > > >> On Oct 19, 2014, at 19:42, Murphy McCauley <murphy.mccau...@gmail.com> wrote: >> >> I don't know what limit you're running into. >> >> Can you be (much) more specific about what you're trying to do, what you >> think should be happening, what is happening instead, any relevant errors or >> log messages, etc.? >> >> -- Murphy >> >> On Oct 19, 2014, at 4:35 PM, Tim Huang <pds...@gmail.com> wrote: >> >>> Hi, >>> >>> I am modifying the pox code to perform some kind of load balancing on the >>> controller. However, I found that the maximum ping packet size that pox can >>> handle is around 1500 bytes which is too small for my test case, then I >>> tried other controllers like Ryu, Opendaylight, and they don’t have this >>> kind of limitation. Is it because of fragmentation or something else? any >>> clue for this? >> >