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
- OCP Accepted™ EdgeCore AS5812-54T
- 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.
