---
title: Editing a secondary network
---

# Editing a secondary network {#edit-additional-network}

To update network settings or change network parameters for a secondary network in OpenShift Container Platform, you can modify the configuration for an existing secondary network. Edit the `NetworkAttachmentDefinition` custom resource to apply your changes.

## Modifying a NetworkAttachmentDefinition custom resource {#nw-multus-edit-network_edit-additional-network}

To update network settings or change network parameters for a secondary network in OpenShift Container Platform, you can modify the `NetworkAttachmentDefinition` custom resource. Edit the Cluster Network Operator CR to apply your changes.

**Prerequisites**

- You have configured a secondary network for your cluster.
- Install the OpenShift CLI (`oc`).
- Log in as a user with `cluster-admin` privileges.

**Procedure**

1. Edit the Cluster Network Operator (CNO) CR in your default text editor by running the following command:

   ```terminal
   $ oc edit networks.operator.openshift.io cluster
   ```
2. In the `additionalNetworks` collection, update the secondary network with your changes.
3. Save your changes and quit the text editor to commit your changes.
4. Optional: Confirm that the CNO updated the `NetworkAttachmentDefinition` object by running the following command. Replace `<network_name>` with the name of the secondary network to display. There might be a delay before the CNO updates the `NetworkAttachmentDefinition` object to reflect your changes.

   ```terminal
   $ oc get network-attachment-definitions <network_name> -o yaml
   ```

   For example, the following console output displays a `NetworkAttachmentDefinition` object that is named `net1`:

   ```terminal
   $ oc get network-attachment-definitions net1 -o go-template='{{printf "%s\n" .spec.config}}'
   { "cniVersion": "0.3.1", "type": "macvlan",
   "master": "ens5",
   "mode": "bridge",
   "ipam":       {"type":"static","routes":[{"dst":"0.0.0.0/0","gw":"10.128.2.1"}],"addresses":[{"address":"10.128.2.100/23","gateway":"10.128.2.1"}],"dns":{"nameservers":["172.30.0.10"],"domain":"us-west-2.compute.internal","search":["us-west-2.compute.internal"]}} }
   ```

## Using an OVN-Kubernetes localnet topology to map VLANs to a secondary interface {#nw-multus-edit-network-additional-vlans_edit-additional-network}

You can use OVN-Kubernetes localnet topology in a `NetworkAttachmentDefinition` (NAD) to map a specific VLAN ID from the physical network to the secondary interface of a pod.

To provide multiple VLANs for cluster workloads in OpenShift Container Platform, define additional VLANs in the `NetworkAttachmentDefinition` custom resource (CR). Configuring trunk ports ensures that the physical network associates correctly with your virtual infrastructure for reliable traffic management.

The example in the procedure demonstrates the following configurations:

- Physical switch ports connect to OpenShift Container Platform nodes by using VLAN trunking. The trunk carries tagged traffic for the VLANs you define in NADs.
- The `br-ex` acts as the OVS bridge that connects virtual workloads to the physical workloads.
- Multiple NADs with specific VLAN tags get created by using the `localnet` topology. This configuration defines specific VLAN IDs for traffic isolation.
- Pods or virtual machines (VMs) attach to the NAD CRs for the purposes of improved network connectivity.

**Prerequisites**

- You installed the OpenShift CLI (`oc`).
- You logged in as a user with `cluster-admin` privileges.
- You installed the NMState Operator.
- You configured the `br-ex` bridge interface during cluster installation.

**Procedure**

1. Create an `NetworkAttachmentDefinition` CR for each VLAN, such as `nad-cvlan100.yaml`. OVN-Kubernetes uses the NAD files to tag and untag Ethernet frames for pods or VMs.

   ```yaml {title="Example configuration"}
   apiVersion: k8s.cni.cncf.io/v1
   kind: NetworkAttachmentDefinition
   metadata:
     name: vlan-100
     namespace: default
   spec:
     config: |-
       {
         "cniVersion": "0.4.0",
         "name": "localnet-vlan-100",
         "type": "ovn-k8s-cni-overlay",
         "physicalNetworkName": "physnet",
         "topology": "localnet",
         "vlanID": 100,
         "mtu": 1500,
         "netAttachDefName": "default/vlan-100"
       }
   # ...
   ```
2. Attach pods or VMs to the VLANs by referencing the NAD in the configuration for the pod or VM:

   ```yaml {title="Example pod configuration"}
   apiVersion: v1
   kind: Pod
   metadata:
     annotations:
       k8s.v1.cni.cncf.io/networks: vlan-100
   # ...
   ```

   ```yaml {title="Example VM configuration"}
   apiVersion: kubevirt.io/v1
   kind: VirtualMachine
   spec:
       template:
           spec:
           networks:
           - multus:
               networkName: vlan-100
               name: secondary-vlan
   # ...
   ```
