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.
