Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

System Requirements for Baremetal Servers

Read this section to understand the system, resource, port, and licensing requirements for installing Juniper Cloud-Native Router on a baremetal server.

Minimum Host System Requirements for Bare Metal

Table 1 and Table 2 list the host system requirements for installing Cloud-Native Router on bare metal servers.

Table 1: Minimum Host System Requirements (DPDK) for Bare Metal
Component Value/Version Notes
CPU Intel x86 The tested CPU is Intel Xeon Gold 6212U 24-core @2.4 GHz
Host OS

RedHat Enterprise Linux

Version 8.4, 8.5, 8.6

Rocky Linux 8.6, 8.7, 8.8, 8.9, 9.3, 9.4
Ubuntu 22.04.4 LTS, 24.04
Kernel Version

RedHat Enterprise Linux (RHEL): 4.18.X

Rocky Linux: 4.18.X, 5.14.X

Ubuntu: 5.15.X, 6.X

 
NIC See Table 2.
IAVF driver 4.12.5 Version 4.13.3 or later adds support for Intel E830.
ICE_COMMS 1.3.46 Applicable for Intel E810 / 800 Series NICs
ICE 1.15.4 Applicable for Intel E810 / 800 Series NICs
i40e 2.26.8 i40e driver is used only with the Intel X710, XL710, XXV710, and X722 NICs.
OS Default DDP 1.3.36 Applicable for Intel E810 / 800 Series NICs
Wireless DDP 1.3.14 Applicable for Intel E810 / 800 Series NICs
Kubernetes (K8s) 1.22.x, 1.23.x, 1.25x, 1.28.x, 1.29.x, 1.34, 1.35 Cloud-Native Router supports an all-in-one or multinode Kubernetes cluster, with master and worker nodes running on virtual machines (VMs) or bare metal servers (BMS).
Calico 3.22.x  
Multus 3.8  
SR-IOV CNI v2.10  
Helm 3.9.x  
Container-RT containerd 1.6.x, 1.7.x, 2.20, 2.21 Other container runtimes may work but have not been tested with Cloud-Native Router.
Note:

The component versions listed in this table are expected to work with the Cloud-Native Router, but not every version or combination is tested in every release.

Table 2: Supported NICs (DPDK)
Controller Family NIC Firmware Driver COMMS DDP
Intel Ethernet 700 Series

Intel XL710

9.52 2.26.8
 

Intel X710-DA4 (4 x 10G)

9.52 2.26.8
 

Intel XXV710-DA2 (2 x 25G)

9.52 2.26.8
 

Intel X722

6.50 2.26.8
Intel Ethernet 800 Series

Intel E810 CPK

4.6 1.15.4
 

Intel E810 CVL

4.6 1.15.4 1.3.46
 

Intel E810-C (4 x 25G)

4.6 1.15.4 1.3.46
 

Intel E810-C (2 x 100G)

4.6 1.15.4 1.3.46
 

Intel E810-CQDA2

4.6 1.15.4 1.3.46
 

Intel E810-XXV

4.6 1.15.4 1.3.46
Nvidia Mellanox1

Mellanox ConnectX-6

26.43.1014 24.10-0.7.0.0
 

Mellanox ConnectX-7

28.43.1014 24.10-0.7.0.0

1When using Nvidia Mellanox NICs, ensure your interface names do not exceed 11 characters in length.

Resource Requirements for Bare Metal

Table 3 lists the resource requirements for installing Cloud-Native Router on bare metal servers.

Table 3: Resource Requirements for Bare Metal
Resource Value Usage Notes
Data plane forwarding cores 1 core (1P + 1S)  
Service/Control Cores 0  
UIO Driver VFIO-PCI To enable, follow the steps below:
cat /etc/modules-load.d/vfio.conf
vfio
vfio-pci
Hugepages 1G: 6 Gi | 2MB: 3 Gi

By default, the Cloud-Native Router vRouter uses 1G hugepages with a minimum allocation of 6 Gi. Starting with Cloud-Native Router Release 26.2, you can configure the vRouter to use 2MB hugepages with a minimum allocation of 3 Gi.

To configure the hugepage size, set the hugepage_sz parameter in the values.yaml file. For more information, see Configure Huge Pages.

For 1G hugepages, see Configure the Number of Huge Pages Available on a Node.

For 2MB hugepages, see Configure 2MB Hugepages for Low Memory Deployments.

Cloud-Native Router Controller cores .5  
Cloud-Native Router vRouter Agent cores .5  

Miscellaneous Requirements for Bare Metal

Table 4 lists additional requirements for installing Cloud-Native Router on bare metal servers.

Table 4: Miscellaneous Requirements for Bare Metal

Requirement

Example

Enable the host with SR-IOV and VT-d in the system's BIOS.

Depends on BIOS.

Enable VLAN driver at system boot.

Configure /etc/modules-load.d/vlan.conf as follows:

cat /etc/modules-load.d/vlan.conf
8021q

Reboot and verify by executing the command:

lsmod | grep 8021q

Enable VFIO-PCI driver at system boot.

Configure /etc/modules-load.d/vfio.conf as follows:

cat /etc/modules-load.d/vfio.conf
vfio
vfio-pci

Reboot and verify by executing the command:

lsmod | grep vfio

Set IOMMU and IOMMU-PT in GRUB.

Add the following line to /etc/default/grub.
GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0 default_hugepagesz=1G hugepagesz=1G hugepages=64 intel_iommu=on iommu=pt"

Update grub and reboot.

grub2-mkconfig -o /boot/grub2/grub.cfg 
reboot

Disable spoofcheck on VFs allocated to Cloud-Native Router.

Note:

Applicable for L2 deployments only.

ip link set <interfacename> vf 1 spoofcheck off.

Set trust on VFs allocated to Cloud-Native Router.

Note:

Applicable for L2 deployments only.

ip link set <interfacename> vf 1 trust on

Additional kernel modules need to be loaded on the host before deploying Cloud-Native Router in L3 mode. These modules are usually available in linux-modules-extra or kernel-modules-extra packages.

Note:

Applicable for L3 deployments only.

Create a /etc/modules-load.d/crpd.conf file and add the following kernel modules to it:

tun
ipip
ip_tunnel
ip6_tunnel
mpls_router
mpls_iptunnel
vrf
vxlan

(Optional) Enable kernel-based forwarding on the Linux host. This step is only required if you are using DHCP relay.

ip fou add port 6635 ipproto 137

Exclude Cloud-Native Router interfaces from NetworkManager control.

NetworkManager is a tool in some operating systems to make the management of network interfaces easier. NetworkManager may make the operation and configuration of the default interfaces easier. However, it can interfere with Kubernetes management and create problems.

To avoid NetworkManager from interfering with Cloud-Native Router interface configuration, exclude Cloud-Native Router interfaces from NetworkManager control. Here's an example on how to do this in some Linux distributions:

  1. Create the /etc/NetworkManager/conf.d/crpd.conf file and list the interfaces that you don't want NetworkManager to manage.

    For example:

    [keyfile]
    unmanaged-devices+=interface-name:enp*;interface-name:ens*;interface-name:__crpd;interface-name:__jcnr
    where enp*, ens*, __crpd, and __jcnr refer to your Cloud-Native Router interfaces.
    Note: enp* indicates all interfaces starting with enp. For specific interface names, provide a comma-separated list.
  2. Restart the NetworkManager service:
    sudo systemctl restart NetworkManager

Configure the IPv6 address policy.

  1. Edit the /etc/sysctl.conf file on the host and paste the following content in it:

    net.ipv6.conf.default.addr_gen_mode=0
    net.ipv6.conf.all.addr_gen_mode=0
    net.ipv6.conf.default.autoconf=0
    net.ipv6.conf.all.autoconf=0
  2. Run the command sysctl -p /etc/sysctl.conf to load the new sysctl.conf values on the host.

Create the bond interface manually.

Note:

Applicable for L3 deployments only.

ifconfig ens2f0 down
ifconfig ens2f1 down
ip link add bond0 type bond mode 802.3ad
ip link set ens2f0 master bond0
ip link set ens2f1 master bond0
ifconfig ens2f0 up ; ifconfig ens2f1 up; ifconfig bond0 up

Verify the core_pattern value is set on the host before deploying Cloud-Native Router.

sysctl kernel.core_pattern
kernel.core_pattern = |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h %e

You can update the core_pattern in /etc/sysctl.conf. For example:

kernel.core_pattern=/var/crash/core_%e_%p_%i_%s_%h_%t.gz

Set MACAddressPolicy (Ubuntu only).

On all nodes running DPDK on a Ubuntu OS, set MACAddressPolicy to none and reboot. For example:

sudo sed -i 's/MACAddressPolicy=.*/MACAddressPolicy=none/'  /usr/lib/systemd/network/99-default.link
sudo reboot
Set adequate send and receive buffer sizes.
  1. Edit the /etc/sysctl.conf file on the host and paste the following content in it:

    net.core.rmem_default=67108864
    net.core.rmem_max=67108864
    net.core.wmem_default=67108864
    net.core.wmem_max=6710886
  2. Run the command sysctl -p /etc/sysctl.conf to load the new sysctl.conf values on the host.

Port Requirements

Juniper Cloud-Native Router listens on certain TCP and UDP ports. This section lists the port requirements for the cloud-native router.

Table 5: Cloud-Native Router Listening Ports
Protocol Port Description
TCP 8085 vRouter introspect—Used to gain internal statistical information about vRouter
TCP 8070 Telemetry Information—Used to see telemetry data from the Cloud-Native Router vRouter
TCP 8072 Telemetry Information—Used to see telemetry data from Cloud-Native Router control plane
TCP 8075, 8076 Telemetry Information—Used for gNMI requests
TCP 9091 vRouter agent REST server—Used for communication between the vRouter agent and the CNI. Default port is 9091. Configure agentRestServerPort in values.yaml to use a different port if 9091 is already in use on the host.
TCP 9092 vRouter DPDK health check—Cloud-Native Router checks to ensure the vRouter DPDK is running. Default port is 9092. Configure dpdkHealthCheckPort in values.yaml to use a different port if 9092 is already in use on the host.
TCP 50052 gRPC port—Cloud-Native Router listens on both IPv4 and IPv6
TCP 8081 Cloud-Native Router Deployer Port
TCP 24 cRPD SSH
TCP 830 cRPD NETCONF
TCP 666 rpd
TCP 1883 Mosquito mqtt—Publish/subscribe messaging utility
TCP 9500 agentd on cRPD
TCP 21883 na-mqttd

TCP

50053

Default gNMI port that listens to the client subscription request

TCP 51051 jsd on cRPD
UDP 50055 Syslog-NG

Interface Naming for Mellanox NICs

When deploying Mellanox NICs on a Baremetal server, a conflict can arise between how the server and Cloud-Native Router use interface names on those NICs. This might prevent your cluster from coming up.

Prior to installing Cloud-Native Router, either disable predictable interface naming or rename the Cloud-Native Router interfaces. The Cloud-Native Router interfaces are the interfaces that you want Cloud-Native Router to control.

Option 1: Disable predictable interface naming

  1. Before you start, ensure you have console access to the node.

  2. Edit /etc/default/grub and append net.ifnames=0 to GRUB_CMDLINE_LINUX_DEFAULT.

  3. Update grub.

  4. Reboot the node.

  5. Log back into the node. You might have to do this through the console if the network interfaces don't come back up.

  6. List the interfaces and take note of the names of the non-Cloud-Native Router and Cloud-Native Router interfaces.

  7. For all the non-Cloud-Native Router interfaces, update NetworkManager (or your network renderer) with the new interface names and restart NetworkManager.

  8. Repeat on all the nodes where you're installing the Cloud-Native Router vRouter.

Note:

Remember to update the fabric interfaces in your Cloud-Native Router installation helm chart with the new names of the Cloud-Native Router interfaces (or use subnets).

Option 2: Rename the Cloud-Native Router interfaces

  1. Create a /etc/udev/rules.d/00-persistent-net.rules file to contain the rules.

  2. Add the following line to the file:

    where <mac_address> is the MAC address of the interface you're renaming and <new_ifname> is the new name you want to assign to the interface (for example, jcnr-eth1).

  3. Add a corresponding line for each interface you're renaming. (You're renaming all the interfaces that Cloud-Native Router controls.)

  4. Reboot the node.

  5. Repeat on all the nodes where you're installing the Cloud-Native Router vRouter.

Note:

Remember to update the fabric interfaces in your Cloud-Native Router installation helm chart with the new names of the Cloud-Native Router interfaces (or use subnets).

Cloud-Native Router Licensing

See Manage Cloud-Native Router Licenses.