Supported Hardware
==================

Following is a list of hardware that people from the ONF community have tested
over time in lab trials.

Supported Switches
------------------

1G/10G models (with 40G uplinks)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- OCP Accepted™ EdgeCore AS5712-54X
- OCP Accepted™ EdgeCore AS5812-54X
- QCT QuantaMesh T3048-LY8
- Delta AG7648
- Inventec D6254 (verified by Inventec)

25G models (with 100G uplinks)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- QuantaMesh BMS T7032-IX1/IX1B (with 25G breakout cable)
- Inventec D7054Q28B (verified by Inventec)

40G models
^^^^^^^^^^

- OCP Accepted™ EdgeCore AS6712-32X

100G models
^^^^^^^^^^^

- OCP Accepted™ EdgeCore AS7712-32X
- QCT QuantaMesh BMS T7032-IX1/IX1B
- OCP Accepted™ Inventec D7032Q28B (verified by Inventec)

Commercially supported models
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Models listed here are not supported by ONF community. You should contact
switch vendor for commercial support.

- OCP Accepted™ EdgeCore AS5912-54X


Supported Servers
-----------------
ONOS can be run on any x86 servers, with the following notes on CPU and memory
allocation **per ONOS instance**:

- CPU (Recommended: **32 cores**)
    There are not much requirement on CPU.

    In practice, we avoid running other CPU intensive processes/containers/VMs
    on the same physical machine where ONOS runs.

- Memory (Recommended: **65G RAM**)
    The memory requirement highly depends on the deployment scale.
    In general, we suggest that each ONOS instance should get **at least 16G RAM**.

    For production deployment at scale, we will definitely need not only more
    memory but also some fine tuning on JVM garbage collection mechanism.
