Needed to support TestON-based Segment Routing tests. All instances
started with internal ID = 0 (one PI/P4Runtime server procees is
executed for each simple_switch_grpc instance, i.e, there's no need to
use different internal IDs to distinguish between switch instances).
Log/conf files and bm-* commands are now based on switch name.
Change-Id: I34d3079d6dff5933ceb4d95f04863426af24eb81
- Better handling of BMv2 crashes in bmv2.py (with watchdog and logging)
- bm-* commands for easy access to BMv2 log, CLI, etc
Change-Id: I1c79acda641171566d8e1162442c7f377bb273fe
Just a small change to make sure the gRPC port of simple_switch_grpc
is actually opened after startup, before ONOS gets the netcfg to try
to connect to the switch. Otherwise ONOS will receive a TCP RST from
the still closed port and the connection fails, rendering the switch
devices unavailable. Also included a timeout for port opening.
Change-Id: I1338a4ba24a14be57717f636e684c91c4cb12a7c
With options to delay pushing the netcfg for each device and generating
the full netcfg JSON for bmv2-demo.
Change-Id: I046a93a8c639f4bb4cf76cbd61b826473760bfb1
- Support devices with different pipeconfs (as in the HW testbed)
- Run UDP servers in Mininet hosts
- Wait before pushing config to ONOS
Change-Id: Ic400e0ac0949375a27aa9721b32dc57d5065fb1c
+ support fort device-specific default pipeconf
+ improvements to P4runtime and gRPC protocol stuff
Change-Id: I8986fce3959df564454ea3d31859860f61eabcae
- Starts BMv2 with empty.p4 as when running with --no-p4 the switch
crashes
- Automatically send a netcfg JSON to ONOS for each device
- Makefile to build all P4 programs (needed for empty.p4)
Change-Id: Ib872641751c543aac6c752610b1ce88a1a00d0d2
E.g. $ sudo -E python attmpls.py --cluster-size 3
Also, added option (--netcfg) to auto set netcfg at Mininet startup, and
added command to bring onos instances up/down to Mininet CLI.
Change-Id: Id02917fd5181af496b7d954da0ef3d5f2cbb970d
A set of mininet based HA tests based on onos.py
Currently includes the following tests:
- a control network partitioning test
- A dynamic cluster scaling test
Change-Id: I9a8e1019dcc51666fee1d933afd66ff390592525
multicluster.py creates two ONOS "clusters" (1 node by
default, though larger are possible), each of which
is responsible for a separate segment of the data network.
Change-Id: I233c9884b565bd6a28fa1a05e990e86207c88347
Previously we were only passing the first ONOSCluster
into MininetFacade, but lo and behold it supports as
many networks as you like! So we pass them all in the
case where we have multiple ONOSClusters.
Change-Id: If848886b958aa47d3e4834c44adc98fffd90453c
Since --custom files are execed, subsequently importing them
actually creates duplicate classes. This wouldn't be a problem
except that we depend on isinstance(). As a workaround, we allow
the class name to match if isinstance() fails, assuming it will
be a class that is compatible with ONOSCluster or ONOSNode.
Example: env PYTHONPATH=. mn --custom onos.py,mytest.py
where mytest.py imports onos
Change-Id: Ib4cda82fbdd612420de1e113ab768e2f137d5213
With multiple ONOS clusters, we want to make sure that the
forwarded port numbers don't collide. We add a portOffset
which is automatically incremented appropriately as more
ONOSClusters are created. It can also be specified explicitly.
Change-Id: I62977c3d4141668d9f541067db1a20ec0035489b
This should fix the problem seen in VirtualBox where you
may have some random interface which is host-only which needs
to have port forwarding set up on it.
Change-Id: Iacdbb129d52529783bdab1c3d768131f6eaf0364
Most notably:
- Added support for onos.py's ONOSCluster controller (it works with
"mn --custom onos.py,bmv2.py --switch onosbmv2 ...")
- Randomly select an open port for the Thrift RPC server
Change-Id: Ifa974741dc4a3693777f01866b1f6203d0e7e75e
Madan suggested that this might help vs. the pipelined
startup we were doing before, so let's try it.
We will unpack/install all nodes before we start up,
so that we can start the whole cluster at about the same
instant.
Note that this is probably closer to what we'd see in hardware.
The disadvantage is that we don't get a "clean" environment
with each invocation of start().
Change-Id: I0a45984f50e1ef25a7d8a836e46978fdbdff0bd0
We were using eth0 by default before, but this doesn't work if
your default interface isn't eth0.
Fixes port forwarding on Ubuntu 16.04.
Change-Id: I55baed7fd8952a9f6cab364e20e31a0632ddda6d
The arp CLI command sends gratuitous ARPs from all hosts - this
makes it easier for ONOS to discover hosts.
Previously checkLog returned None, None if the log file didn't
exist; now we return an empty list, to avoid breaking when we
take the len() of errors or warnings (which was happening before)
and to avoid having to check for None, None, which didn't seem to
add a lot of value to justify its complexity.
Change-Id: I84847fcf70525c82ac037d8a84cf40d21ab2a106
We check for:
- process exits
- log ERRORs
- log WARNings
- low memory
Also added a "status" CLI command to check for exits
and errors.
Change-Id: I6e65fe49619e338f1827fc616ca52a82de7ba470
We really don't need the OCx variables, but for now at
least we are unsetting the ones that are incorrect and
calling onos-gen-partitions with the explicit IP
addresses.
Change-Id: I8bd3d69bee4857e00070288b586255455c9c8adf