Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IVS seems to fail with multiple switches in Mininet #42

Open
lantz opened this issue Aug 2, 2013 · 2 comments
Open

IVS seems to fail with multiple switches in Mininet #42

lantz opened this issue Aug 2, 2013 · 2 comments

Comments

@lantz
Copy link

lantz commented Aug 2, 2013

I accepted Rich Lane's pull request to integrate IVS support into Mininet, but I am having trouble getting IVS to work correctly with reasonable numbers of switches.

For example, with this configuration,

sudo mn --switch ivs --controller ref --topo linear,20

This is a topology consisting of a string of 20 switches, each of which has a single host connected to it.

I wait for all of the hosts to connect to the controller, but pingall still fails. It's puzzling since the control traffic looks OK - I'm seeing a PACKET_IN and a PACKET_OUT for the ARP request, but it doesn't seem to be reaching the destination hosts.

If I use static ARP, then I see the PACKET_IN and PACKET_OUT (which is flooded because of the learning switch algorithm) for the ICMP request, but I think I am not seeing the reply, so it may not be reaching the destination host.

I am testing this on Ubuntu 12.04 with the Linux ubuntu1 3.2.0-31-generic #50-Ubuntu SMP Fri Sep 7 16:16:45 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux kernel

With smaller numbers of switches, it works fine:

$ sudo mn --switch ivs --topo linear,10 --controller ref --test pingall
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 
*** Adding switches:
s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 
*** Adding links:
(h1, s1) (h2, s2) (h3, s3) (h4, s4) (h5, s5) (h6, s6) (h7, s7) (h8, s8) (h9, s9) (h10, s10) (s1, s2) (s2, s3) (s3, s4) (s4, s5) (s5, s6) (s6, s7) (s7, s8) (s8, s9) (s9, s10) 
*** Configuring hosts
h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 
*** Starting controller
*** Starting 10 switches
s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 
*** Ping: testing ping reachability
h1 -> h2 h3 h4 h5 h6 h7 h8 h9 h10 
h2 -> h1 h3 h4 h5 h6 h7 h8 h9 h10 
h3 -> h1 h2 h4 h5 h6 h7 h8 h9 h10 
h4 -> h1 h2 h3 h5 h6 h7 h8 h9 h10 
h5 -> h1 h2 h3 h4 h6 h7 h8 h9 h10 
h6 -> h1 h2 h3 h4 h5 h7 h8 h9 h10 
h7 -> h1 h2 h3 h4 h5 h6 h8 h9 h10 
h8 -> h1 h2 h3 h4 h5 h6 h7 h9 h10 
h9 -> h1 h2 h3 h4 h5 h6 h7 h8 h10 
h10 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 
*** Results: 0% dropped (90/90 received)
*** Stopping 10 switches
s1 ..s2 ...s3 ...s4 ...s5 ...s6 ...s7 ...s8 ...s9 ...s10 ..
*** Stopping 10 hosts
h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 
*** Stopping 1 controllers
c0 
*** Done
completed in 7.619 seconds

Open vSwitch and the OpenFlow reference switch also work fine. (Note there is currently a race condition with --pingall since it can fail if all the switches don't connect - that's why I also ran the test manually and made sure that all of the switches had connected.)

@rlane
Copy link
Contributor

rlane commented Aug 5, 2013

This seems to be a race condition during switch startup. It works reliably up to 16 switches but starts failing at 17. If I put a time.sleep(0.05) in the IVSSwitch start method I've gotten up to 32 switches with no failures.

I noticed that the netlink messages the switch uses to find about new ports aren't arriving on the broken IVS instances. Raising the rx buffer size didn't help. I'll keep investigating.

@rlane
Copy link
Contributor

rlane commented Aug 6, 2013

Using --innamespace is another workaround.

rlane added a commit to rlane/ivs that referenced this issue Apr 22, 2014
* submodules/switchlight-common 2318ad4...6b1204b (4):
  > Merge into master from pull request floodlight#43: arpa: look for ARP flag in the packet-in metadata instead of the reason (floodlight/switchlight-common#43)
  > Merge into master from pull request floodlight#42: icmpa: support multiple pktin-reasons (floodlight/switchlight-common#42)
  > Add ARP Response Agent.
  > Merge into master from pull request floodlight#41: Update switchlight-common and fix module utests (floodlight/switchlight-common#41)
poolakiran pushed a commit to poolakiran/ivs that referenced this issue Nov 26, 2014
rlane added a commit to rlane/ivs that referenced this issue Dec 17, 2014
* submodules/bigcode 3a17679...73f6383 (2):
  > Merge into master from pull request floodlight#42: add build_udp_header api signature (floodlight/bigcode#42)
  > Merge into master from pull request floodlight#39: Udp header api (floodlight/bigcode#39)
rlane added a commit to rlane/ivs that referenced this issue Feb 28, 2015
* submodules/infra ab2a04f...ed664b3 (1):
  > Merge into master from pull request floodlight#42: Fix AIM_BITMAP_ITER. (floodlight/infra#42)
poolakiran pushed a commit to poolakiran/ivs that referenced this issue Mar 31, 2016
* submodules/switchlight-common b1d2588...e585348 (3):
  > Merge into master from pull request floodlight#42: add queue priority for agents sending packets directly out a port (https://github.com/bigswitch/switchlight-common/pull/42)
  > Merge into master from pull request floodlight#41: arpa: add arp_vlan_reply table (https://github.com/bigswitch/switchlight-common/pull/41)
  > Merge into master from pull request floodlight#40: PAN-1348: pass icmp echo replies to the controller (https://github.com/bigswitch/switchlight-common/pull/40)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants