Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

System Requirements for GCP Deployment

Read this section to understand the system, resource, port, and licensing requirements for installing Juniper Cloud-Native Router on Google Cloud Platform (GCP).

Minimum Host System Requirements for GCP Deployment

Table 1 lists the host system requirements for installing Cloud-Native Router on GCP.

Note:

The settings below are pre-configured when you deploy Cloud-Native Router via the Google Cloud Marketplace.

Table 1: Minimum Host System Requirements for GCP Deployment
Component Value/Version Notes
GCP Deployment VM-based  
Instance Type n2-standard-16  
CPU Intel x86 The tested CPU is Intel Cascade Lake
Host OS Rocky Linux 8.8 (Green Obsidian)  
Red Hat Enterprise Linux 10.x (Coughlan)  
Kernel Version

Rocky Linux 4.18.X

Red Hat Enterprise Linux (RHEL): 6.12.x

6.12.0-55.79.1.el10_0.x86_64 (amd64) (RHEL 10.x)
NIC VirtIO NIC, gVNIC

gVNIC provides higher bandwidth and lower latency than VirtIO NIC. gVNIC is supported starting with Cloud-Native Router Release 26.2. See Miscellaneous Requirements for GCP Deployment for gVNIC-specific configuration requirements.

Instance Type (gVNIC) n2-standard-16  
DPDK 24.11 LTS  
Kubernetes (K8s) 1.25.x, 1.36.x The tested versions are 1.25.5 (Rocky Linux 8.8), 1.36.2 (RHEL 10.x).

The K8s version for Google Cloud Marketplace Cloud-Native Router subscription is v1.27.5.

Calico 3.25.1  
Multus 4.0  
Helm 3.9.x  
Container-RT containerd 1.7.x, 2.2.x The tested versions are containerd 1.7.x (Rocky Linux 8.8), containerd 2.2.4 (RHEL 10.x).
Note:

The component versions listed in this table are expected to work with JCNR, but not every version or combination is tested in every release.

Resource Requirements for GCP Deployment

Table 2 lists the resource requirements for installing Cloud-Native Router on GCP.

Table 2: Resource Requirements for GCP Deployment
Resource Value Usage Notes
Data plane forwarding cores 1 core (1P + 1S)  
Service/Control Cores 0  
UIO Driver VFIO-PCI

To enable VFIO-PCI for VirtIO NIC deployments, follow the steps below:

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

Enable Unsafe IOMMU mode:

echo Y > /sys/module/vfio_iommu_type1/parameters/allow_unsafe_interrupts
echo Y > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode
Note:

On GCP instances with gVNIC, the VFIO driver is built into the kernel. You do not need to load the vfio or vfio-pci modules or enable unsafe IOMMU mode. These steps apply to VirtIO NIC deployments only.

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 GCP Deployment

Table 3 lists additional requirements for deploying Cloud-Native Router on GCP.

Table 3: Miscellaneous Requirements for GCP Deployment

Requirement

Example

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

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

Enable IP Forwarding for VMs in GCP.

Use one of these two methods to enable IP forwarding:
  1. Specify it as an option while creating the VM. For example:

    gcloud compute instances create instance-name --can-ip-forward
  2. For an exisiting VM, enable IP forwarding by updating the compute instance via a file. For example:

    gcloud compute instances export transit-jcnr01 --project jcnr-ci-admin --zone us-west1-a --destination=instance_file_1

    Edit the instance file to set the value canIpForward=true.

    Update the compute instance from the file:
    gcloud compute instances update-from-file transit-jcnr01 --project jcnr-ci-admin --zone us-west1-a --source=instance_file_1 --most-disruptive-allowed-action ALLOWED_ACTION

Enable Multi-IP subnet on Guest OS.

gcloud compute images create debian-9-multi-ip-subnet \
     --source-disk debian-9-disk \
     --source-disk-zone us-west1-a \
     --guest-os-features MULTI_IP_SUBNET 

Add firewall rules for loopback address for VPC.

Configure the VPC firewall rule to allow ingress traffic with source filters set to the subnet range to which Cloud-Native Router is attached, along with the IP ranges or addresses for the loopback addresses.

For example:

Navigate to Firewall policies on the GCP console and create a firewall rule with the following attributes:

  1. Name: Name of the firewall rule

  2. Network: Choose the VPC network

  3. Priority: 1000

  4. Direction: Ingress

  5. Action on Match: Allow

  6. Source filters: 10.2.0.0/24, 10.51.2.0/24, 10.51.1.0/24, 10.12.2.2/32, 10.13.3.3/32

  7. Protocols: all

  8. Enforcement: Enabled

where 10.2.0.0/24 is the subnet to which Cloud-Native Router is attached and 10.51.2.0/24, 10.51.1.0/24, 10.12.2.2/32, and 10.13.3.3/32 are loopback IP ranges.

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*
    where enp* and ens* refer to your Cloud-Native Router interfaces.
    Note: enp* indicates all interfaces starting with enp. For specific interface names, provided a comma-separated list.
  2. Restart the NetworkManager service:
    sudo systemctl restart NetworkManager
  3. 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
  4. Run the command sysctl -p /etc/sysctl.conf to load the new sysctl.conf values on the host.

Verify the core_pattern value is set on the host before deploying JCNR.

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 adequate send and receive buffer sizes.
sysctl -w net.core.rmem_default=67108864
sysctl -w net.core.rmem_max=67108864
sysctl -w net.core.wmem_default=67108864
sysctl -w net.core.wmem_max=6710886

Configure Cloud-Native Router for gVNIC.

Starting with Cloud-Native Router Release 26.2, gVNIC is supported as a high-performance NIC option on GCP. gVNIC requires the DPDK driver net_gve and the VFIO driver built into the GCP kernel. No module loading is required.

The following configuration values are recommended for gVNIC deployments. None of these values are mandatory. If not set, Cloud-Native Router uses defaults.

  1. MTU: The maximum supported MTU for gVNIC is 8896. The recommended MTU for gVNIC deployments is 8400. Set mtu: "8400" in the jcnr-vrouter section of values.yaml for gVNIC deployments.

  2. RX/TX descriptors: The recommended descriptor size is 2048 for gVNIC. To configure, set the following in dpdkCommandAdditionalArgs:

    --dpdk_rxd_sz 2048 --dpdk_txd_sz 2048

    The minimum required by gVNIC is 512 descriptors. Cloud-Native Router automatically adjusts the default value of 256 to the NIC minimum (512) before RX queue setup. If not set, the automatic adjustment ensures gVNIC starts correctly.

Note:

Here are additional restrictions:

  • Cloud-Native Router supports only IPv4 for GCP.

  • Cloud-Native Router deployment on GCP supports only N8-standard for VM deployments. The N16-standard is not supported.

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 4: 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

Download Options

To deploy Cloud-Native Router on GCP, you can either download the Helm charts from the Juniper Networks software download site (see Cloud-Native Router Software Download Packages) or subscribe via the Google Cloud Marketplace.

Note: Before deploying Cloud-Native Router on GCP via Helm charts downloaded from the Juniper Networks software download site, you must whitelist the enterprise-hub.juniper.net URL as the Cloud-Native Router image repository.

Cloud-Native Router Licensing

See Manage Cloud-Native Router Licenses.