Port-Based Mirroring
SUMMARY This section describes port-based mirroring in Juniper Cloud-Native Contrail® Networking™ Release 22.2 and later in a Kubernetes-orchestrated environment.
Overview: Port-Based Mirroring
Port mirroring sends network traffic from defined ports to a network analyzer where you can monitor and analyze the data. In Cloud-Native Contrail Networking, the following is supported:
- Mirroring configuration is primarily driven from the pod configuration for both the receiver and interface being mirrored. You don't need to configure the virtual machine interface (VMI) directly.
- Mirroring configuration involves creating a
mirrorDestination
resource and associating themirrorDestination
resource to the pod interface to be mirrored. MirrorDestination
identifies the mirrored traffic receiver pod and interface. WhenjuniperHeader
is enabled, receiver pod IP address and port are used. WhenjuniperHeader
is disabled, receiver pod MAC addressroutingInstance
is used to forward mirrored traffic.- A
mirrorDestination
can be associated with multiple VMIs to be mirrored. MirrorDestination
resource defines the mirrored traffic receiver such as, IP address, port used for receiving mirrored traffic, Juniper header configuration, dynamic or static next-hop, and so on.- A pod interface to be mirrored can be configured when creating the pod or by editing the pod.
Example: Configure Port-Based Mirroring
The following procedure is an example configuration that creates a
MirrorDestination
resource and specifies the
mirrorDestination
resource name, for example
mirrordestinationprofile1
, on the interface to be
mirrored.
Summary
SUMMARY This section describes configuration changes for port-based mirroring in Cloud-Native Contrail Networking Release 22.2.
From the analyzer pod annotations and labels, the VM and VMI are associated with
the pod to be used in the mirrorDestination
controller.
Analyzer VM Labels:
The VirtualMachine
resource corresponding to the pod will have
the label core.juniper.net/analyzer-pod
label.
apiVersion: core.contrail.juniper.net/v1alpha1 kind: VirtualMachine metadata: annotations: kube-manager.juniper.net/pod-cluster-name: contrail-k8s-kubemanager-ocp-kparmar-6mpccd kube-manager.juniper.net/pod-name: analyzerpod kube-manager.juniper.net/pod-namespace: multinode-ns labels: core.juniper.net/analyzer-pod: analyzerpod
Analyzer VMI Labels:
The VirtualMachineInterface
resource for the analyzer pod will
have the label core.juniper.net/analyzer-interface
.
apiVersion: core.contrail.juniper.net/v1alpha1 kind: VirtualMachineInterface metadata: annotations: index: 0/1 interface: eth0 kube-manager.juniper.net/pod-cluster-name: contrail-k8s-kubemanager-ocp-kparmar-6mpccd kube-manager.juniper.net/pod-name: analyzerpod kube-manager.juniper.net/pod-namespace: multinode-ns labels: core.juniper.net/analyzer-interface: ""
Source VMI Label indicating mirrorDestination
:
Source VirtualMachineInterface
corresponding to the pod
interface being mirrored will have label
core.juniper.net/mirror-destination
. And the annotations
will have the mirror configuration.
apiVersion: core.contrail.juniper.net/v1alpha1 kind: VirtualMachineInterface metadata: annotations: core.juniper.net/mirroring-configuration: '{"analyzer_name":"mirrordestinationprofile1","analyzer_ip_address":"10.128.0.200","analyzer_macaddress":"02:76:6c:25:f2:8c","ri":"default- domain:contrail-k8s-kubemanager-ocp-kparmar-6mpccd-contrail:default-podnetwork:default-podnetwork"}' labels: core.juniper.net/mirror-destination: mirrordestinationprofile1