CloudEOS & vEOS Router Setup Guide
CloudEOS & vEOS Router Setup Guide
Arista Networks
[Link]
© Copyright 2023 Arista Networks, Inc. The information contained herein is subject to change
without notice. Arista Networks and the Arista logo are trademarks of Arista Networks, Inc., in the
United States and other countries. Other product or service names may be trademarks or service
marks of others.
Contents
Contents
Chapter 1: Overview................................................................................1
iii
6.2.5 Setting Up the Host and Launching PCI Pass-through.......................................... 65
Chapter 8: Upgrade/Downgrade...........................................................79
8.1 CloudEOS Upgrade/Downgrade...........................................................................................79
8.2 Appliance Upgrade............................................................................................................... 79
iv
Contents
v
15.1 Adding ECMP................................................................................................................... 187
vi
Chapter 1
Overview
Arista CloudEOS Router is supported on Amazon Web Service (AWS), Microsoft Azure and Google
Cloud Platform, and on-premises deployment.
CloudEOS Router
Arista CloudEOS Router is a new platform release of EOS that is supported on Amazon Web Service
(AWS), Microsoft Azure and other public clouds. It is also supported on customer equipment running
Linux and VMware hypervisors. By bringing advanced network telemetry and secure IPSec VPN
connectivity in a software-only package, CloudEOS Router provides a consistent, secure and universal
approach to hybrid cloud networking for any virtualized cloud deployment. Use cases for CloudEOS
Router include Secure Multi Cloud Connectivity, Interconnecting VPCs/VNets in the Public Cloud,
Multi-site VPN aggregation and Network Function Virtualization.
Note: Arista CloudEOS Router is a new product with additional capabilities. User can now
upgrade to CloudEOS router following the information provided in the chapter Upgrade/
Downgrade. CloudEOS Router can be used interchangeably in this guide.
1
2
Chapter 2
License Management
This section describes the procedure for managing CloudEOS license files.
Licensing Information
---------------------
License TC created: no
Number of throttled interfaces: 0
Licensing Information
---------------------
License TC created: yes
Number of throttled interfaces: 1
3
Interfaces throttled:
Ethernet1: 80 Mbps"
2.1.2 Troubleshooting
The following $curl command is used to verify the if an AWS / Azure instance is an PAYG instance.
This command is executed under Bash mode.
• PAYG support for AWS
• PAYG support for Azure
• PAYG support for GCP
4
License Management
Note: If you are using your own DNS server and/or DHCP server, please make sure that the
above commands work properly by setting up the proper DNS resolution/routes.
The following Cloud EOS commands helps in licensing to bypass the DNS/network connectivity issues
in case of issues due to custom DHCP/DNS setup:
where <default_vpc_router> is the second address in the primary IP range for the subnet in which
Ethernet1 resides. For example, default_vpc_router is [Link] in [Link]/24 subnet belonging to
Ethernet1 in the google cloud.
However, note that, other features which needs access to the cloud provider web APIs like CloudHA,
may still have issues with your own DNS/DHCP setup unless carefully planned. If you are using your
own DNS/DHCP servers, please see details at [Link]
5
2.2 Bring-Your-Own-License (BYOL) in Cloud and On-Prem
License files for CloudEOS and vEOS
CloudEOS and vEOS license files are available to unlock performance limitations and enable IPSec.
License files may also be imported via http. The following example illustrates the structure of the
licence files import.
http:some-url/[Link]
switch#show license
Customer name: Arista Test Customer
System Serial number: 6FF552005130CB93A1048182A0FE585C
System MAC address: 5254.0062.ab2e
Domain name: Unknown
Platform: CloudEOS-KVM
License feature: IPSec
License parameter: None
Count: 1
Start: 2018-01-31 00:43:31
Expiration: 2026-12-30 16:00:00
Active: yes
switch#license update
6
License Management
For example, with a license file such as the one below, customer can continue to use vEOS without
any limitations for ten days beyond expiry date.
{
"LicenseFileVersion": "1.0",
"CustomerName": "Arista Test Customer",
"LicenseSerialNumber": "ARISTA-TEST-DAYSPAST1",
"Signature": {
"SigningCertPEM": "-----BEGIN CERTIFICATE-----7brkfssZDr
RIatxKEkv6Oc
\nh4kXO2mvvMJxQDf7VvGXEC3fSRURLwPz//6JMx942iOKsES8ZT9nT2q9MxJXfInn
\n3EcKGmPWKQR4n2qH
fmq6sfk2eFBUYIrZBm9RUbVbyLZLCOv2KxJ7FFZ9LV1jp5An\nAyHLJUMQqqw/kvUUvUq1bI/
PtEOlNc9Ndt
/3yeh+HByzIw8/f+gjKkUjQpVncuqS\nkFotBPNNj/LjbQD40R/tJ0z/8sPXCGJuo4mE9s/
MwnWmkAHxpZyC
ccMBlNp3LkJk\nFHcsVb36Vclv5XWDe5AxU+0sQjEB4LGP7nYo8wjjvSZIpYXRiAmDRGuAGi/
W/W3F\n6hEQ
661JK4KPJvoQsMqYaO/TkZPIXEAdgEDkmj0=\n-----END CERTIFICATE-----\n",
"Hash": "f076d2cac1eac2a8261915e0b2ce4cb547e9c9
8bda070d001140daf3c3bd3694",
"Signature": "304502201ca6fab964d8a3aade43d306232fcf
52b9503fc22f4552
d58fb5a95e1b9e13e6022100dff97ad4f37389b55887f0ec06c9ef29d55a7
5e668e4da654deaf8037633a9bd"
},
"Features": {
"vEOS": [
{
"Count": 1,
"Value": "",
"Valid": {
"NotBefore": "2000-01-01T0
0:00:00Z",
"NotAfter": "2001-01-01T0
0:00:00Z"
},
"BehaviorModifier": {
"DaysAllowedPastExpiration": 10
}
}
]
},
"BindingInfo": {
"SystemMAC": "",
"DomainAddress": "",
"SerialNumber": "2BC6A772072B04BED43DCCF8777F036F"
}
}
--
7
Use the show license files command to display all information related to the active licenses
installed. For example purposes, the licenses below are non-functional.
8
License Management
9
Expiration: 2017-10-09 17:00:00
Active: expired
10
Chapter 3
11
about AWS CloudFormation stacks and using stack templates, refer to the AWS documentation (see
[Link]
Complete these steps to launch CloudEOS Router instances using AWS CloudFormation.
1. Log in to the Amazon Management Console.
2. Choose Services > CloudFormation.
The CloudFormation page appears showing the current stacks available to use.
4. Select a nic template for upload, and then click on the Next button.
Note: Templates can be found in the docs directory. Press Select to choose the desired
AMI.
The page refreshes showing the options for specifying the details for the stack.
12
Using CloudEOS Router on the AWS Platform
5. Enter the Stack Name, Subnet IP Block for each interface, VPC ID, KeyPair Name, UserData in
base64 format, AMI ID. (To convert UserData from text to base64 format, use a base64 command
on MacOS or Linux machine.)
# base64
%EOS-STARTUP-CONFIG-START%
hostname myhost
%EOS-STARTUP-CONFIG-END%
<Press CTRL+D>
JUVPUy1TVEFSVFVQLUNPTkZJRy1TVEFSVCUKaG9zdG5hbWUgbXlob3N0CiVFT1MtU
1RBUlRVUC1DT05GSUctRU5EJQo=
13
8. Wait for the stack creation to complete. Resources created as part of the stack creation process
can be viewed in the Resource tab.
9. Click on the CloudEOS Router instance ID to view the status of CloudEOS Router instance. The
instance ID is shown in the Physical ID column of the Resources tab.
14
Using CloudEOS Router on the AWS Platform
Recommended Usage
AWS cannot auto-assign a public IPv4 address if an EC2 instance is launched or started from
the stopped state with multiple network interfaces attached to it. In such cases, the user cannot
connect to the instance over IPv4 unless an Elastic IP address is assigned to the primary network
interface (eth0). If the user does not want to associate an Elastic IP address with the CloudEOS
Router instance, then it is recommended to attach any additional interface only when the instance
is in running state and never to stop and start your instance from thereon. The user may reboot
the instance either from AWS console or from within CloudEOS Router using the CLI or bash
commands because the instance reboot does not cause the public IPv4 address to be released
as opposed to instance stop. To associate Elastic IP address to your instance or primary network
interface, refer to [Link]
[Link]
Launching CloudEOS Router instances using the EC2 AWS Marketplace gives the ability to create
and configure CloudEOS Router instances in the VPCs of your AWS deployment. This method utilizes
Amazon Machine Images (AMIs) to configure the operating system of the instance. Obtain the AMI
needed for the instance from the AWS Marketplace. This task involves creating an EC2 key pair,
selecting the AMI to configure the operating system of the instance, selecting the instance type, and if
needed, configuring advanced details (options) for the instance.
Available Options
During this configuration procedure, choose to configure some options to take advantage of certain
features. These optional configuration items are:
• Assigning an IAM role to the instance
To enable AWS services on the instance (for example, AWS CloudWatch logs) assign an IAM role
to the instance during this procedure. Assign an IAM role to the instance by:
• Selecting an existing IAM role.
• Creating a new IAM role (an option is provided as part of the procedure to create a new IAM
role).
15
Refer to the following AWS documentation for details about creating EC2 key pairs and creating
IAM roles:
• Creating EC2 key pairs ([Link]
[Link]).
• Creating an IAM role ([Link]
[Link]).
• Using instance user-data to configure the instance
CloudEOS supports the use of CloudEOS Router instance user-data to configure CloudEOS Router
instances at launch. This involves uploading instance user-data to the instance by way of the
Advanced Details dialog. There is an option of copying and pasting a configuration into the dialog or
attaching a configuration file.
For details on composing user data for CloudEOS Router, see Using User-data for Configuration of
Entities and CloudEOS and vEOS Router Instances.
Complete the following steps to launch a CloudEOS Router instances.
1. Log in to the Amazon Management Console.
2. Create an EC2 key pair and download the .pem file that contains the private key. (The .pem file
may download automatically.)
To create an EC2 pair, go to [Link]
[Link].
3. Go to the EC2 Dashboard.
16
Using CloudEOS Router on the AWS Platform
7. A screen appears showing the user highlights, pricing details and instance types available. Press
the Continue button to advance.
17
8. Click in the left pane.
The Choose an Instance Type page appears.
9. Select an instance type that meets the requirements for the CloudEOS Router instance.
10. Click on the Next: Configure Instance Details button (lower right part of the page).
The Configure Instance Details page appears.
18
Using CloudEOS Router on the AWS Platform
11. (Optional) Create a new IAM role or select an existing IAM role. (This is required to enable AWS
services on the instance, for example, AWS CloudWatch logs.)
12. (Optional) To configure advanced details for the instance, scroll down to the bottom of the page and
click on the Advanced Details button.
The Advanced Details dialog appears. You use the dialog to upload user-data to configure the
instance.
Do one of the following to configure the instance using user-data:
• Choose the Text option, and then copy-and-paste startup-config in the text box.
• Attach the configuration as a file by clicking on the file, and then choose the configuration file
to be uploaded.
For details on composing user data for CloudEOS Router, see Using User-data for Configuration of
Entities and CloudEOS and vEOS Router Instances.
13. From the Configure Instance Details page, click the Review and Launch button.
The Review Instance Launch page appears.
19
14. Click on the Launch button.
A dialog appears for selecting a key pair.
15. Using the Select a key pair menu, select the key pair created earlier in the procedure. In this
example, the key pair is named "systest."
16. Select the acknowledgment (near the bottom of the dialog), and then click on the Launch
Instances button.
The Launch Status page appears showing the status of the instance. The deployment takes a few
minutes to complete.
17. Click on the blue link to the instance to view details about the instance. (The link is in the "Your
instances are now launching" box near the top of the page.)
The page shows the details for the instance.
20
Using CloudEOS Router on the AWS Platform
18. Make sure the Instance State shows running. Wait for the status to update to running.
19. (Optional) To use the existing subnet and security group for the instance, record the subnet and
security group. This information is required when configuring the network interfaces to be attached
to the instance.
20. (Optional) Click on the Connect button near the top of the page.
The Connect to Your Instance dialog appears.
21. Connect to the instance using the public or private IP address of the instance. The correct syntax is:
ssh -i <[Link]> ec2-user@[Link]
Example:
Complete the networking tasks for the CloudEOS Router instances in the gateway topology (see
Network Configuration Tasks for CloudEOS and vEOS Router Instances).
• Configuring the AWS CloudWatch Logs Agent
21
The AWS CloudWatch Logs Agent is the mechanism that publishes CloudEOS Router logs to AWS
CloudWatch. Configuring the AWS CloudWatch Logs Agent ensures that the CloudEOS Router logs
published to AWS CloudWatch conform to the selected requirements. The AWS CloudWatch Logs
Agent is packaged with the [Link] CloudEOS extension, which is installed and enabled by
default when the CloudEOS Router instances launch through the AWS Marketplace.
Refer to the “AWS CloudWatch Quick Start Guide” to make sure that the CloudEOS Router instance
has the right credentials for logging in to AWS.
Note: To manually install or uninstall the [Link] CloudEOS extension, see https://
[Link]/AristaCommunity/s/article/packaging-and-installing-eos-extensions.
To obtain the [Link] CloudEOS extension, contact Arista TAC if required.
Where to find CloudEOS Router logs
The location where CloudEOS Router logs are published to depends on the AWS CloudWatch Logs
configuration. By default, the logs are located under CloudWatch, "log group, name CloudEOS logs.
Modifying AWS log configuration
Modify the AWS log configuration by:
• Editing configuration files under the /mnt/flash/awslogs/ directory.
• Passing instance user-data. Make sure to use the correct start and end markers, which are:
%AWSLOGS-CONFIG-START%
#configuration here
%AWSLOGS-CONFIG-END%
%AWS-PROXY-START%
#configuration here
%AWS-PROXY-END%
Note: Restart awslogs using sudo systemctl restart awslogs under bash. The
reconfiguration does not take effect until awslogs restarts.
CloudEOS Router log filenames
By default, the hostname of the CloudEOS Router instance is the filename of all CloudEOS Router
logs for that instance.
22
Using CloudEOS Router on the AWS Platform
4. Do the following:
a. Enter a description for the network interface.
b. Select the subnet for the network interface. (This can be the existing subnet for the CloudEOS
Router instance or a different subnet.)
c. Type the names of the security groups for the network interface. (Specify the existing security
groups for the CloudEOS Router instance, or different security groups.)
5. Select the Yes, Create button.
The new network interface is added to the list of interfaces on the page.
6. Repeat steps 3 through 5 to create additional interfaces as needed.
7. For each network interface created, complete steps a and b:
23
a. Select the interface, then choose Actions > Change Source/Dest Check.
The Change Source/Dest Check dialog appears showing the selected name of the network
interface.
Attaching the new network interfaces to CloudEOS Router instances is the second networking
configuration task. This task involves selecting the new network interfaces created in the previous
procedure and then attaching the interfaces to CloudEOS Router instances.
Complete these steps to attach the new network interfaces to CloudEOS Router instances.
1. Go to the EC2 Dashboard.
2. Open the INSTANCES menu on the left side of the page, then click Instances.
The page lists all of the current network interfaces.
3. Select the CloudEOS Router instance to attach a newly created network interface.
4. Choose Actions > Networking > Attach Network Interface.
The Attach Network Interface dialog appears.
24
Using CloudEOS Router on the AWS Platform
5. Using the Network Interface menu, select the new network interface created to attach to the
instance.
6. Click the Attach button.
7. Use the show interfaces command on the CloudEOS Router instance to view the new network
interfaces created.
Example
To take advantage of the advanced services provided by CloudEOS, configure the route table of the
AWS Router so that traffic is forwarded from the AWS Router to CloudEOS Router instances. This
task involves logging into the AWS Router and modifying route table entries for the CloudEOS Router
instances to which you want traffic forwarded.
Complete these steps to configure the route table of the AWS router.
1. Log in to the AWS Router.
2. Select the network interface that is attached to a CloudEOS Router instance.
3. Obtain the Subnet ID and the route table ID that corresponds to the subnet in which the CloudEOS
Router instance resides.
Example:
Subnet ID (subnet-1c68b744).
Route table ID (rtb-934cf9f7).
25
4. Edit the route table entry so that it points to the corresponding interface of the CloudEOS Router in
that subnet.
Example
To reach any subnet other than [Link]/24, enter the Target to be the network interface ID of the
locally connected interface of the CloudEOS Router.
5. (Optional) Repeat steps 2 through 4 to modify route table entries for additional CloudEOS Router
instances.
Configure the AWS CloudWatch Logs Agent (see Configuring the AWS CloudWatch Logs Agent).
Configuring the Agent ensures that the CloudEOS Router logs publish to AWS.
26
Using CloudEOS Router on the AWS Platform
%EOS-STARTUP-CONFIG-START%
! EOS startup config
hostname my-veos
username admin nopassword
27
username admin sshkey file flash:[Link]
%EOS-STARTUP-CONFIG-END%
%AWS-CONFIG-START%
[plugins]
cwlogs = cwlogs
[default]
region = us-east-1
%AWS-CONFIG-END%
%AWSLOGS-CONFIG-START%
[general]
state_file = /var/awslogs/state/agent-state
[/var/log/messages]
datetime_format = %b %d %H:%M:%S
file = /var/log/messages
buffer_duration = 5000
log_group_name = veoslogs
log_stream_name = {hostname}
initial_position = start_of_file
%AWSLOGS-CONFIG-END%
%AWS-PROXY-START%
HTTP_PROXY=[Link]
HTTPS_PROXY=[Link]
NO_PROXY=[Link]
%AWS-PROXY-END%
28
Chapter 4
29
2. In the search bar, type "Arista" and press enter.
30
Using the CloudEOS Router on Microsoft Azure
31
Figure 5: Configuring the VNet
7. Configure the subnets and press "OK".
32
Using the CloudEOS Router on Microsoft Azure
Figure 7: Verification
9. Read the Terms and Conditions, then press "Purchase".
33
3. Download the template and parameters files from the GitHub repository. [Link]
azure-quickstart-templates
4. Open <prefix>-[Link]:. Locate the ./single_line_json.sh
user_data.txt script.
5. Copy and paste the generated output into the customData value field of the JSON parameters file.
6. Use the script as in the following example:
#!/usr/bin/bash
cat $1 | python -c 'import json, sys; print( [Link]( [Link]
d() ) )'
7. Use the template and parameters JSON files to launch a CloudEOS Router instance in Azure using
the Azure CLI 2.0.
Note: You must use the same location as the storage account where the VHD image is
uploaded.
Note: If you are using a newer version of the Azure CLI 2.0, you may encounter a
parameter file parsing bug. To fix this, remove the @ symbol before the parameters
filename.
3. Locate the IP address and DNS name found on the Overview page.
34
Using the CloudEOS Router on Microsoft Azure
NOTE: If either of these fields is not populated, your instance still deploys. Refresh the page after a
couple of minutes.
4. Secure Shell (SSH) to your Virtual Machine (VM) using the IP address or Domain Name Server
(DNS) name found in the previous step, using the credentials you gave when you initially setup the
VM.
NOTE: It may take between 5-10 minutes for the instance to become reachable after the
deployment starts. Refer to the section Troubleshooting Instance for additional information.
35
Custom-data can be used to pass in configuration for multiple entities. Currently, only the EOS
configuration is supported in Azure. This configuration must be separated by start and end markers.
Use: %FORCE_USER_DATA
% will forcibly apply the Arista
startup configs in the user
custom data under the %EOS-
STARTUP-CONFIG-START
% and %EOS-STARTUP-
CONFIG-END% ) even when
it is not a first time boot of the
instance.
%EOS-STARTUP-CONFIG-START%
! EOS startup config
username admin nopassword
username admin sshkey file flash:[Link]
%EOS-STARTUP-CONFIG-END%
#!/usr/bin/bash
cat $1 | python -c 'import json, sys; print( [Link]( [Link]
d() ) )'
36
Using the CloudEOS Router on Microsoft Azure
./single_line_json.sh user_data.txt
Copy and paste the generated output into the customData value field of the JSON parameters file.
37
Figure 12: Status of the VM
4. Check the boot diagnostics for any error messages or warnings.
4.5 Resources
Additional resources.
• How To Deploy Resources - [Link]
resource-group-template-deploy-cli
38
Chapter 5
5.1 Overview
Arista CloudEOS
Arista CloudEOS is a cloud-grade and feature-rich virtual router for Google cloud. This software-only
release of EOS software is supported on public clouds, as well as on customer premises equipment
running Linux and VMware hypervisors. By bringing advanced network telemetry and secure IPSec
VPN connectivity in a software-only package, CloudEOS provides a consistent, secure and universal
approach to hybrid cloud networking for any virtualized cloud deployment.
This release of CloudEOS is available as a software subscription in Google Cloud Launcher following
a BYOL and PAYG license model. For BYOL instance, a CloudEOS license activation key must be
obtained separately from Arista, which unlocks the platform from a default performance limit of 10
Mbps, and enable the use of IPsec encrypted VPNs. For PAYG instance, the license will be installed
by the system automatically so customers can start using all features including IPsec and uncapped
throughput. For more information about licensing, please refer to Chatper 2 - License Management.
39
2. Fill out the relevant fields in the deployment screen, then select Deploy.
40
Arista CloudEOS on Google Cloud Platform (GCP)
Update zones, name and other details as needed. Also add user name with public SSH key for that
user. You can also change the machine type depending upon the performance requirements of the
VM and also add more than one NIC if needed.
Note: When adding a SSH public key make sure you paste the key without any extra
spaces and newlines. For example, the public key looks similar to this.
41
3. After deployment, you will find the information about your CloudEOS instance in the post
deployment screen.
42
Arista CloudEOS on Google Cloud Platform (GCP)
43
4. Log into the instance using the credentials you entered during the deployment:
44
Arista CloudEOS on Google Cloud Platform (GCP)
• EOS configuration for all interfaces is passed in during the deployment. The configuration takes
effect as the new instances attach to the router.
Use: %FORCE_USER_DATA
% will forcibly apply the Arista
startup configs in the user
custom data under the %EOS-
STARTUP-CONFIG-START
% and %EOS-STARTUP-
CONFIG-END% ) even when
it is not a first time boot of the
instance.
45
46
Chapter 6
This chapter describes the system requirements, installation, and configuration procedures for router
on hypervisor.
Server
A server can be either a hardware or software entity.
A hardware server is the physical computer that executes the virtual machine manager or hypervisor
and all the virtual machines, also known as the host machine.
A software server is the hypervisor or virtual machine manager that hosts and manages the virtual
machines. It is also sometimes referred to as the host.
47
Supported Topologies
The following scenarios are described in the Hypervisor Chapter
• Launching ESXi using vSphere Web Client
• Launching on KVM with Linux bridge
• Launching on KVM with SR-IOV
• Launching on KVM with PCI-Passthrough
This chapter includes the following sections:
• VMware ESXi Hypervisor
• KVM
48
Using the Router on KVM and ESXi
49
5. Verify the template details.
50
Using the Router on KVM and ESXi
51
9. Under the Recent Tasks tab at the bottom of the page, the progress of deployment displays. Once
the deployment is complete, power-on the machine.
52
Using the Router on KVM and ESXi
53
4. Reboot the ESXi host for the configuration to take effect.
5. After reboot, the NIC reflects the changes. For SR-IOV, new virtual function devices (VF) is created.
54
Using the Router on KVM and ESXi
6. Edit the VM and select Add other device, then select PIC Device to create the New PIC Device
for the VM.
7. Select the New PIC Device to use the SR-IOV VF or PIC Passthrough device.
55
6.2 KVM
This section describes the system requirements, installation and configuration procedures for
CloudEOS.
Server
A server can be either a hardware or software entity.
A hardware server is the physical computer that executes the virtual machine manager or hypervisor
and all the virtual machines. This is also known as the host machine.
A software server is the hypervisor or virtual machine manager that hosts and manages the virtual
machines. It is also sometimes referred to as the host. In this document specifically, the software
server is comprised of RedHat Linux with virtualization support (KVM).
56
Using the Router on KVM and ESXi
• Libvirt is installed by executing virsh list which should return without errors. Python 2.7+ is
required to run the installation script vSphere 6.0.
Virtual Machine
Minimum requirements:
• 2 vCPUs
• 4GB Memory
• 8G Free disk space
Maximum capacities
• 16 vCPUs
• 8 network interfaces
Supported Images
Define a new VM
Define a domain from an XML file, by using the virsh define <[Link] >
command. This defines the domain, but it does not start the domain.
The definition file has vm-name, CPU, memory, network connectivity, and a path to the image. The
parameters can be found at [Link] There is a sample CloudEOS file in
the example below.
Undefine the Inactive Domain
Undefine the configuration for the inactive domain by using the virsh undefine <vm-name> and
specifying its domain name.
Start VM
Start a previously defined or inactive domain by using the virsh start <vm-name> command.
Stop VM
Terminate a domain immediately by using the virsh destroy <vm-name> command
Managing Networks
The XML definition format for networks is defined at [Link] These
commands are similar to the VM, but with a prefix 'net-' :
The virsh net-define <[Link]> command.
The virsh net-undefine network-name command removes an inactive virtual network from the
libvirt configuration.
The virsh start network-name command manually starts a virtual network that is not running.
The virsh destroy network-name command shuts down a running virtual network.
57
6.2.3 Launching vEOS in LinuxBridge Mode
Use the script [Link] usage python [Link] <bridge- name>
Cut and paste the following XML template into a file ([Link]) and customize the elements that are in
bold below.
• virsh define <veos define file say [Link]>
• virsh start <veos-name>
• virsh console <veos-name>
<domain type='kvm'>
<!-- veos name, cpu and memory settings -->
<name>kvs1-veos1</name>
<memory unit='MiB'>4096</memory>
<currentMemory unit='MiB'>4096</currentMemory>
<vcpu placement='static'>2</vcpu>
<resource>
<partition>/machine</partition>
</resource>
<cpu mode='host-model'/>
<os>
<type arch='x86_64'>hvm</type>
<boot dev='cdrom'/>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='directsync'/>
<source file='/path_to_file/CloudEOS.qcow2'/>
<target dev='hda' bus='ide'/>
<alias name='ide0-0-0'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/path_to_file/[Link]'/>
<target dev='hdc' bus='ide'/>
<readonly/>
<alias name='ide0-1-0'/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk>
<controller type='usb' index='0'>
<alias name='usb0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2
'/>
</controller>
<controller type='pci' index='0' model='pci-root'>
<alias name='pci0'/>
</controller>
<controller type='ide' index='0'>
<alias name='ide0'/>
58
Using the Router on KVM and ESXi
Example Deployment
VIRTIO & Linux Bridging Deployment
vEOS can employ para-virtualized network I/O interfaces, which in Linux KVM is also known as Virtio .
Each NIC is connected to a unique underlying Linux layer-2 bridge in the hypervisor which in-turn
provides access to an uplink.
In this example,
59
• Ethernet1 connects to the physical Ethernet port that connects to the WAN through a LinuxBridge.
The Router is configured with a WAN IP address on this port.
• Ethernet2 connects to the physical ethernet port that connects to the LAN through a LinuxBridge.
• Server IP address in the diagram is assumed to be configured on the LAN LinuxBridge device.
Note: Arista recommends using Ethernet1 for WAN and Ethernet2 for LAN. However, any vEOS port
can be used.
Figure 14: Linux Bridge and Virtio-based Deployment
6.2.4 Setting Up the Host for Single Root I/O Virtualization (SR-IOV)
Single Root I/O Virtualization (SR-IOV) allows a single PCIe physical device under a single root port to
appear to be multiple physical devices to the hypervisor.
60
Using the Router on KVM and ESXi
The following tasks are required to set up the host for SR-IOV.
1. Verify the IOMMU Support.
Use the virt-host-validate Linux command to check IOMMU (input/output memory
management unit) support. If it does not "PASS" for IOMMU, check the BIOS setting and kernel
settings.
The example below is what should be displayed.
[arista@solution]$ virt-host-validate
QEMU: Checking for device assignment IOMMU support : PASS
QEMU: Checking if IOMMU is enabled by kernel : PASS
61
The maximum number of supported virtual functions depends on the type of card. To activate the VFs
use [arista@localhost]$ /sys/class/net/<Device_Name>/device/sriov_numvfs or the
method shown in the example below, it shows that the PF identifier 82:00.0 supports a total of 63 VFs.
Example
[arista@localhost]$ cat/sys/bus/pci/devices/0000\:82\:00.0/sriov_totalvf
s 63
To activate the seven VFs per PFs and make them persistent after reboot, add the line options igb
max_vfs=7 in [Link] and the [Link] files in /etc/modprobe.d
Use the rmmod ixgbe and modprobe ixgbe Linux commands to unload and reload the module.
5. Verify the VFs are detected.
Verify the VFs are detected by using the lspci | grep Ethernet Linux command. For the two
identifiers 82:00.0 and 82:00.1, 14 VFs are detected.
62
Using the Router on KVM and ESXi
pci_0000_82_10_1
pci_0000_82_10_2
pci_0000_82_10_3
pci_0000_82_10_4
pci_0000_82_10_5
pci_0000_82_10_6
pci_0000_82_10_7
pci_0000_82_11_0
pci_0000_82_11_1
pci_0000_82_11_2
pci_0000_82_11_3
pci_0000_82_11_4
pci_0000_82_11_5
63
</interface>
9. Start the VM. Verify there is an added interface on the VM. Using the command ethtool -i et9
to verify that the driver for the added interface is ixgbevf .
Launching SR-IOV
vEOS can also use PCIE SRI-OV I/O interfaces. Each SRI-OV NIC is passed-through to the VM such
that network I/O does not hit the hypervisor. In this model, the hypervisor and multiple VMs can share
the same NIC card.
64
Using the Router on KVM and ESXi
65
In this example, 82:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network
Connection is the physical function and 82:00.0 is the device identification code.
In this example, the domain is 0 (Hex domain=0x0), the bus is 130 (Hex bus=0x82), the slot is 0 (Hex
slot=0x0), and function is 0 (Hex function=0x0).
With the domain, bus, slot, and function information, construct the device entry and add it into the VMs
XML configuration.
<devices>
...
<hostdev mode='subsystem' type='pci' managed='yes'>
66
Using the Router on KVM and ESXi
<source>
<address domain='0x0000' bus='0x82' slot='0x00' function='0x0'/>
</source>
</hostdev>
switch#bash
switch#bash
bash-4.3# ethtool -i et1
driver: ixgbe
version: 4.2.1-k
firmware-version: 0x18b30001
bus-info: 0000:00:03.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no
Example Deployment
vEOS can use passthrough I/O interfaces where the network I/O does not hit the hypervisor. In this
model, the VM owns the entire network card, thus fully bypassing the hypervisor.
Setting up SR-IOV is initially more involved. Arista recommends starting out with LinuxBridge.
• SR-IOV has the following advantages over LinuxBridge Higher Performance ~ 2x
• Better latency and jitter characteristics
• vEOS directly receives physical port state indications from the virtual device.
Figure 16: Linux PCI Passthrough-based Deployment
67
68
Chapter 7
7.1 Overview
The Appliance is used to host CloudEOS Router virtual machines. The appliance uses KVM
Hypervisor and has two 2x10G SFP+ NIC cards for data traffic, and two 1G ports for management
traffic. The CloudEOS VM instance is specified with resources such as number of CPU cores,
memory and interfaces depending upon the customer network deployment model as well as desired
performance. The CloudEOS launcher script dca-200- [Link] is used to quickly launch
new CloudEOS instances with the right resources and setup the network interfaces.
• Hardware
• Interfaces
7.1.1 Hardware
7.1.2 Interfaces
The below figure shows all the interfaces on the appliance.
69
[Link] Management Interfaces
As shown in the above figure, the appliance has 4 physical 1G ports --- eno1/2/3/4. eno1 and eno2
are aggregated to a bonded interface device0 in 802.3ad mode. So they need to be connected to
one or more network devices supporting Link Aggregation Control Protocol (LACP). Bonded interface
device0 is connected to a Linux bridge named devicebr internally. CloudEOS launcher script will
setup CloudEOS Router with connecting their management interfaces to devicebr. eno3 and eno4
are aggregated to bonded interface cluster0 and cluster0 is connected to Linux bridge clusterbr in the
same way. However, they are not used for CloudEOS Router setup.
As shown in the above figure, the appliance has 4 physical 10G ports --- 10GB1/2/3/4 those are
configured in SR-IOV mode. Each port is partitioned into 32 SR-IOV Virtual Functions to provide a total
of 128 virtual interfaces for CloudEOS and instances on the appliance. You may optionally configure
a VLAN to be used for each virtual interface. The VLAN configuration allows separation of broadcast
domain for traffic in and out of each physical port. The VLAN tag handling is done by SRIOV NIC and
it is transparent to the CloudEOS Router. Please note that for performance reasons, the CloudEOS
launcher script creates CloudEOS Router with all of its CPU cores and memory from the same NUMA
node. Therefore, all required CPU resources for a CloudEOS Router need to be available on one
socket. If required, resources for launching a new CloudEOS Router are split across two sockets,
CloudEOS and launcher will not be able to launch the CloudEOS Router. In such scenario, user may
need to reconfigure the existing VMs and/or reduce resource requirements of the new VM to fit within a
NUMA node.
70
Using the CloudEOS Router on Arista Appliance
• Web access to iDRAC [Link] or IP of iDRAC using Google Chrome or any other web
browser.
• Use the terminals connected to VGA and other peripherals if DHCP addresses of management
interfaces are not known.
3. Login to the appliance using username:root (password:arista). Change appliance username/
password appropriately as needed, by referring to Chapter 3 - Accessing CloudVision Appliance
in Arista CloudVision Appliance Quick Start Guide.
71
[-c CORES] [-r [REMOVE [REMOVE ...]]] [-
q]
optional arguments:
-h, --help show this help message and exit
-n VMNAME, --name VMNAME
Name of the VEOS VM
-m IMAGE, --image IMAGE
Qcow2 image name to use for launching the VM
-d, --debug Print detailed debug info
-i [INTERFACE [INTERFACE ...]], --interface [INTERFACE [INTERFACE ...]]
Interfaces and optional vlans/mac. The interfaces
must
be listed in guest interfaces order. The
interfase can
be specified either in PCI address format (using
lspci
command) Or 10GB1/2/3/4. For example: '-i
10GB1,vlan=10 10GB2 10GB3,vlan=40' or '-i
3b:10.2,vlan=50 3b:10.3,vlan=10 af:10.2 af:10.3'
-s MEMORY, --memory MEMORY
Memory in Gbytes to assign to VM. Default is 4 Gb
-c CORES, --cores CORES
Number of Cores to assign to VM. Default is 4
cores
-r [REMOVE [REMOVE ...]], --remove [REMOVE [REMOVE ...]]
Remove VMs
-q, --query Query info about configured VMs
Example
Below is an example of commands used to launch a VMs with core count of 4 (default), 4GB memory
(default), and with 4 ethernet interfaces.
72
Using the CloudEOS Router on Arista Appliance
• Interfaces MUST be specified in VM interface order (the physical 10GB port eth1, eth2.. in VM) in
either 10GBx or PCI address format. In the above example we used both 10GBx format as well as
PCI address format to specify 4 interfaces. The interfaces are configured on different VLANs
• Launcher script will print out the guest interface mapping to host 10GB interfaces.
If an error occurs while creating a new VM using launcher, then refer to the Troubleshooting section of
the chapter for more information.
The [Link] script is used to remove the running VMs. The example below shows
how to remove two existing VMs.
Router# ./[Link] -q
Extracting info for existing VMs: ['veos-router1', 'veos-router2']
Total count is: 20, reserved for hypervisor: 2, Total Available: 18
Used CPU count is 8, Free cores 10
VM veos-router1 :
interfaces:
et1 --> 10GB2 PCI address: 3b:10.0 vlan 50 mac 52:54:00:d4:f4:46
et2 --> 10GB1 PCI address: 3b:10.1 vlan 10 mac 52:54:00:d8:a9:50
et3 --> 10GB3 PCI address: af:10.1 vlan 100 mac 52:54:00:0c:0a:15
et4 --> 10GB4 PCI address: af:10.0 vlan 200 mac 52:54:00:20:4a:67
CPU Core Mapping:
0 --> 2
1 --> 4
2 --> 6
3 --> 8
VM veos-router2 :
interfaces:
et1 --> 10GB4 PCI address: af:10.2 vlan 50 mac 52:54:00:bb:ab:f1
et2 --> 10GB3 PCI address: af:10.3 vlan 10 mac 52:54:00:58:f7:2b
CPU Core Mapping:
0 --> 10
1 --> 12
2 --> 14
3 --> 16
Available free cores: 3 5 7 9 11 13 15 17 18 19
73
7.5 Troubleshooting
• PCI Addresses for Virtual Functions
• CloudEOS Launcher Debugging Functionalities
• Appliance Setup Debugging
Command to get PCI bus information for all ethernet physical and virtual functions:
74
Using the CloudEOS Router on Arista Appliance
Command for VFs and Parent interface mapping (used for output above):
75
<pci-express>
<link validity='cap' port='0' speed='5' width='8'/>
<link validity='sta' speed='5' width='8'/>
</pci-express>
</capability>
</device>
Above error message points out the specified interface is already used by other VM. User can use a
query command [Link] -q to list all the interfaces used by the existing VMs and
start using available interfaces to create new VMs. Refer to Launching/Removing/Query CloudEOS
Router section of the chapter for more query command information.
The above example shows when user tries to create a VM with 4 cores (by default), an error message
points out there’s not enough CPU cores available on any NUMA. It also prints out current free cores
on each NUMA node (core 18 on node0 and core 19 on node1). User may choose to reduce the
number of cores for new instance or reprovision existing VMs to fit new VM in.
76
Using the CloudEOS Router on Arista Appliance
Note: /data/imaging/[Link] will bring host interfaces down and up again, which
may impact running VMs traffic on the host.
/data/imaging/[Link] creates 4 VMs and sends traffic among them to test NICs
are setup properly for creating new VMs and sending traffic.
Below output from the script means appliance NICs are in good stage:
77
• -10G-SRL
• -10G-LR
• -10G-AOC
• -10G-CR
7.7 Limitations
• There can be a maximum 32 virtual interfaces (virtual functions) on a physical interface.
• The optimization for NUMA may reduce the VMs that can be hosted on the appliance. You may
need to reprovision existing VMs to leverage all the resources in case of resource fragmentation.
• DCA-200-vEOS starts supporting CVA upgrade from 2.1.2 to afterward releases.
78
Chapter 8
Upgrade/Downgrade
• CloudEOS and vEOS Upgrade/Downgrade
• Appliance Upgrade
79
80
Chapter 9
81
Figure 17: Cloud high availability network topology with router instances
In the diagram above, a virtual network is a collection of resources that are in the same cloud region.
Within this virtual network, the resources, including routers, deploy into two cloud high availability
zones (Availability Zones for AWS and Fault Domain for Azure) for fault tolerance reasons.
Note: For ease of discussion, we will use availability zone 1 and 2 to reference the high
availability design in different clouds going forward.
Within each availability zone, the hosts/VMs interfaces are connected to their corresponding subnets
when the network is operating normally. Each subnet associates to a route table within the cloud
infrastructure. Static routes are configured in the cloud route tables so the traffic from the hosts/VMs
are routed to Routers in the corresponding availability zone as gateway or next-hop to reach certain
destinations. For example, configure a default route ([Link]/0) in the cloud route table with the next-
hop as Router's cloud interface ID or IP (varies depending on the cloud). The routing policy or protocol,
such as BGP, on the Routers, are user configurable based on user's network design.
The two Routers in the diagram above are configured with the Cloud HA feature as HA peers. The
Cloud HA on the routers would establish a BFD peering session between the two devices through
ethernet or tunnel interfaces.
82
Cloud High Availability
When BFD connectivity loss is detected by the active router, the existing routes in the backup route
table in the cloud would be updated through cloud-specific API to use the active router as the next-
hop. For example, if vEOS 2 detected BFD connectivity loss with its peer, vEOS 2 would update
the routes in Route Table 1 so traffic from hosts in Subnet 1 and Subnet 2 for vEOS 1 would be
forwarded to next-hop ID or IP owned by vEOS 2. Traffic from the hosts in availability zone 1 would
first be forwarded to the corresponding subnet gateways in the cloud. After that, the subnet gateways
in the cloud would forward the traffic toward the new next-hop interface ID or IP that exist on vEOS 2.
When vEOS 2 received the traffic, it would forward the traffic on according to its routing table.
What about traffic going toward the hosts in availability zone 1 while connectivity to vEOS 1 is down?
When connectivity to vEOS 1 is down, hosts behind Subnet 1 and Subnet 2 become unreachable to
the other part of the network (routes being withdrawn by routing protocols like BGP). Since Subnet 1
and Subnet 2 are not directly connected to vEOS 2, a routing strategy for the two subnets as "backup"
on vEOS 2 is to be considered as part of your network design. A typical design would be to use static
routes for the subnets connected to the peer router and point them toward the cloud subnet gateways
of the active router (for example, static route for peer subnet [Link]/24 would be configured on the
active router as ip route10.1.1.0/24 [Link] 255 where [Link] is the gateway/next-hop for one of
the ethernet interfaces) with a high administrative distance value (least preferred). The static routes
would be redistributed or advertised when the original routes with better administrative distance are
withdrawn or removed by dynamic routing protocol (such as BGP).
When BFD peering session is restored to UP state upon recovery, each active router would restore its
locally controlled route table entries (per user configuration) to point to itself as primary gateway again.
switch(config)#
switch(config)#cloud proxy test
switch(config-cloud-proxy-test)#
The following example con#gures the cloud proxy IP, port, username, and password for HTTP.
switch(config)#
switch(config)#cloud proxy test
switch(config-cloud-proxy-test)#http [Link] 1234 username test password
7 075E731F1A
switch(config-cloud-proxy-test)#
83
To have access to the cloud services, the CloudEOS and Router must be provided with credentials.
Additionally, a proxy may be configured for the connection to the cloud services to go through.
AWS Specific Cloud
Complete the following tasks to configure AWS Specific Cloud services.
• Configure Credentials
• Access to AWS Specific Cloud API Server
• If CloudEOS is associated with a public IP address, no special configuration is required.
• If CloudEOS is not associated with an public IP address, either use AWS Private Link or Proxy
configuration
Configure Credentials
In the AWS Specific Cloud configuration, a region must be specified. It is recommended to authorize
the CloudEOS Router by assigning it an IAM role, but an explicit credential can also be specified.
• IAM Role Configuration - No credentials. See Cloud Provider Helpful Tips for additional information.
• Explicit Credential Configuration
AWS Specific Cloud IAM Role Configuration
The IAM role should be configured on the AWS Specific as shown below. This is the recommended
configuration.
• "Trust Relationships" has "[Link]" as trusted entities.
• "Policy" with "Permissions" for the network related EC2 actions.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:AssociateRouteTable",
"ec2:CreateRoute",
"ec2:CreateRouteTable",
"ec2:DeleteRoute",
"ec2:DeleteRouteTable",
"ec2:DescribeRouteTables",
"ec2:DescribeVpcs",
"ec2:ReplaceRoute",
"ec2:DisassociateRouteTable",
"ec2:ReplaceRouteTableAssociation",
"ec2:DescribeNetworkInterfaces",
"ec2:DescribeInstances",
"ec2:DescribeSubnets"
],
"Resource": "*"
}
]
}
This is applicable only when running in AWS cloud environment and configures various aspects of
Cloud HA feature to interact with AWS web services.
Note: The access-key-id and secret access-key commands are either both configured or both are
omitted. If omitted, the Cloud HA Agent will try to use AWS IAM role for security tokens to access
and control AWS route tables. Verify the IAM role for the CloudEOS router Virtual Machine( VM ) is
configured properly on the AWS cloud. Refer to AWS documentation to configure IAM role.
switch(config)#
84
Cloud High Availability
Configure the backup-gateway, primary-gateway, Route Table ID(rtb) and local interface for AWS.
The Route Table ID specifies for AWS the backup-gateway and primary gateway, then the destination
selects the individual route within the route table to control. The local-cloud-interface then points to
the interface ID eni-867caa86 (from AWS perspective) of the router that the traffic should be directed.
switch(config)#cloud high-availability
switch(config-cloud-ha)#peer veos2
switch(config-cloud-ha-peer-veos2)#aws
switch(config-cloud-ha-peer-veos2-aws)#backup-gateway rtb-40b72d24
[Link]/0 local-cloud-interface eni-867caa86
switch(config-cloud-ha-peer-veos2-aws)#primary-gateway rtb-2843124c
[Link]/0 local-cloud-interface eni-867caa86
Azure
There are two authorization models that can be used in Azure: SDK Auth Credentials and Active
Directory Credentials. SDK Auth Credentials are the recommended authorization model.
• SDK Auth Credentials
To generate SDK Auth Credentials, use the sdk authentication credential-file
flash:startup-config command in the config-cloud-azure configuration mode.
85
To configure the BFD link between the HA pair of CloudEOS and Routers that is used to detect peer
failure, the peer IP address and local BFD source interface must be provided. The following example
configures Tunnel 2 as a single hop for the source interface for BFD.
switch(config)#cloud high-availability
switch(config-cloud-ha)#peer veos2
switch(config-cloud-ha-peer-veos2)#bfd source-interface tunnel 2 single-
hop
switch(config-cloud-ha-peer-veos2)#recovery wait-time 90
switch(config)#cloud high-availability
switch(config-cloud-ha)#no shutdown
86
Cloud High Availability
switch(config-cloud-ha)#peer veos2
switch(config-cloud-ha-peer-veos2)#
switch(config)#
switch(config)#cloud provider aws
switch(config-cloud-aws)#access-key 0 ATPAILIL5E982IPT7P3R
switch(config-cloud-aws)#secret access-key 0 M0RRUtAA8I8wYxJB8
switch(config-cloud-aws)#region us-west-1
switch(config-cloud-aws)#proxy test
Configure the backup-gateway, primary-gateway, Route Table ID(rtb) and local interface for AWS.
The Route Table ID specifies for AWS the backup-gateway and primary gateway, then the destination
selects the individual route within the route table to control. The local-cloud-interface then points to
the interface ID eni-867caa86 (from AWS perspective) of the router that the traffic should be directed.
AWS
switch(config)#cloud high-availability
switch(config-cloud-ha)#peer veos2
switch(config-cloud-ha-peer-veos2)#aws
switch(config-cloud-ha-peer-veos2-aws)#backup-gateway rtb-40b72d24
[Link]/0 local-cloud-interface eni-867caa86
switch(config-cloud-ha-peer-veos2-aws)#primary-gateway rtb-2843124c
[Link]/0 local-cloud-interface eni-867caa86
87
The following example places the router into the config-cloud-azure configuration mode and sets
the active directory credentials.
Configure the backup-gateway, primary-gateway, Route Table ID (rtb), resource-group and next-
hop for Azure
The resource group specified is the one which contains the route table referenced beneath it. The
nextHopIp is the IP of the Router interface that traffic should be directed.
Azure
switch(config)#cloud high-availability
switch(config-cloud-ha)#peer veos2
switch(config-cloud-ha-peer-veos2)#azure
switch(config-cloud-ha-peer-veos2-azure)#backup-gateway Subnet-2-vEOS-
RouteTable [Link]/0 [Link] resource-group my_resource_group_64f86970
ffe24ab
{
"type": "service_account",
"project_id": "project-id",
"private_key_id": "key-id",
"private_key": "-----BEGIN PRIVATE KEY-----\nprivate-key\n-----END
PRIVATE KEY-----\n",
"client_email": "service-account-email",
"client_id": "client-id",
"auth_uri": "[Link]
"token_uri": "[Link]
"auth_provider_x509_cert_url": "[Link]
erts",
"client_x509_cert_url": "[Link]
x509/service-account-email"
}
For Default Credentials or Service Account authorization model, the role associated with the
CloudEOS instance/service account must have the following permissions:
• [Link]
• [Link]
• [Link]
88
Cloud High Availability
• [Link]
• [Link]
• [Link]
• [Link]
Example
• Cloud HA GCP configuration example.
cloudEos(config)#
cloudEos(config)#cloud provider gcp
cloudEos(config-cloud-gcp)#project gcp-project-name
cloudEos(config-cloud-gcp)#service-account file flash:.gcp_se
rvice_account.json
cloudEos(config-cloud-gcp)#proxy test
Specify a destination prefix for Cloud HA routes on GCP to select the individual routes that we wish
to control. Since route table is not present in GCP, you can specify an optional tag for each route to
simulate the route table.
Example
cloudEos(config)#cloud high-availability
cloudEos(config-cloud-ha)#peer veos2
cloudEos(config-cloud-ha-peer-veos2)#gcp
cloudEos(config-cloud-ha-peer-veos2-gcp)#backup-gateway [Link]/0 tag
tag2
cloudEos(config-cloud-ha-peer-veos2-gcp)#primary-gateway [Link]/0 tag
tag1
Limitations
• For Cloud HA on AWS/Azure, pre-create the HA routes before configuring these routes on a
CloudEOS instance. For GCP, the HA routes are created automatically by Cloud HA, and thus no
need to pre-create any HA routes to avoid route conflicts.
• For GCP, though the HA routes are automatically created by Cloud HA, they do not get deleted
automatically from GCP when removed from the Cloud HA configuration from CloudEOS instance.
Hence, you need to delete these routes from GCP manually.
• Cloud HA on GCP allows adding routes only in the VPC network corresponding to the first interface
(nic0) of the CloudEOS instance.
• Since routes in GCP are added at a per VPC level, specify the tags used to simulate route tables
when adding a Cloud HA route using the primary-gateway / backup-gateway command. Use
the same tag to apply manually on the Cloud HA routes to a subset of the instances in the VPC
network.
89
Show Commands
• show cloud high-availability routes
• show cloud provider gcp
cloudEos#config
cloudEos(config)#cloud provider gcp
cloudEos(config-cloud-gcp)#
• The exit command returns to the global configuration mode.
cloudEos(config-cloud-gcp)#exit
cloudEos(config)#
[Link].2 project
The project command specifies the GCP project name. The no project command removes the
configuration from the CloudEOS running-config.
Command Mode
Global Cloud Provider GCP Configuration
Command Syntax
project name
no project name
Parameter
• name Specifies the selected GCP project name.
Example
• These commands configures the GCP project.
90
Cloud High Availability
[Link].3 service-account
The service-account specifies the service account file when using the Service Account
authorization model. The no service-account command removes the configuration from the
CloudEOS running-config.
Command Mode
Global Cloud Provider GCP Configuration
Command Syntax
service-account file sa-file
no service-account file sa-file
Parameter
• sa-file Specifies the path to the service account file.
Examples
• These commands configures the Service Account file used.
[Link].4 primary-gateway
The primary-gateway command in the cloud-ha submode adds a primary high availability route for
GCP. The no primary-gateway command removes the route configuration from the CloudEOS
running-config.
Command Mode
Cloud HA GCP Configuration Submode
Command Syntax
primary-gateway dest-prefix [tag rt-tag]
no primary-gateway dest-prefix [tag rt-tag]
Parameter
• dest-prefix Specifies the destination IP prefix.
• rt-tag Specifies the route tag.
Examples
• These commands configures a primary high availability route.
cloudEos(config)#cloud high-availability
cloudEos(config-cloud-ha)#peer veos2
cloudEos(config-cloud-ha-peer-veos2)#gcp
cloudEos(config-cloud-ha-peer-veos2-azure)#primary-gateway [Link]/16
tag tag1
91
• The no primary-gateway command removes the primary high availability route configuration.
cloudEos(config)#cloud high-availability
cloudEos(config-cloud-ha)#peer veos2
cloudEos(config-cloud-ha-peer-veos2)#gcp
cloudEos(config-cloud-ha-peer-veos2-azure)#no primary-gateway
[Link]/16 tag tag1
[Link].5 backup-gateway
The backup-gateway command in the cloud-ha submode adds a backup high availability route for
GCP. The no backup-gateway command removes the route configuration from the CloudEOS
running-config.
Command Mode
Cloud HA GCP Configuration Submode
Command Syntax
backup-gateway dest-prefix [tag rt-tag]
no backup-gateway dest-prefix [tag rt-tag]
Parameter
• dest-prefix Specifies the destination IP prefix.
• rt-tag Specifies the route tag.
Examples
• These commands configures a backup high availability route.
cloudEos(config)#cloud high-availability
cloudEos(config-cloud-ha)#peer veos2
cloudEos(config-cloud-ha-peer-veos2)#gcp
cloudEos(config-cloud-ha-peer-veos2-azure)#backup-gateway [Link]/16
tag tag2
• The no primary-gateway command removes the backup high availability route configuration.
cloudEos(config)#cloud high-availability
cloudEos(config-cloud-ha)#peer veos2
cloudEos(config-cloud-ha-peer-veos2)#gcp
cloudEos(config-cloud-ha-peer-veos2-azure)#no backup-gateway
[Link]/16 tag tag2
92
Cloud High Availability
• The show cloud high-availability routes command displays high availability routes
information.
93
backup-gateway rtb-17b32973 [Link]/0 local-cloud-interface
eni-1589e714
backup-gateway rtb-54503330 [Link]/0 local-cloud-interface
eni-56cf1957
primary-gateway rtb-a4be24c0 [Link]/0 local-cloud-interface
eni-26cb1d27
primary-gateway rtb-40b72d24 [Link]/0 local-cloud-interface
eni-56cf1957
primary-gateway rtb-63b02a07 [Link]/0 local-cloud-interface
eni-1589e714
peer address [Link]
recovery wait-time 5
bfd source-interface Ethernet1
!
cloud high-availability
no shutdown
!
peer veos2
azure
backup-gateway Subnet-2-vEOS-RouteTable [Link]/0 [Link] resource-
group CloudHaAzure
backup-gateway Subnet-2-vEOS-RouteTable [Link]/16 [Link] resource-
group CloudHaAzure
backup-gateway Subnet-3-vEOS-RouteTable [Link]/16 [Link] resource-
group CloudHaAzure
backup-gateway Subnet-3-vEOS-RouteTable [Link]/0 [Link] resource-
group CloudHaAzure
primary-gateway Subnet-1-vEOS-RouteTable [Link]/16 [Link] resource-
group CloudHaAzure
primary-gateway Subnet-1-vEOS-RouteTable [Link]/0 [Link] resource-
group CloudHaAzure
94
Cloud High Availability
• CloudEOS - 2
95
• The Cloud HA feature completely validates all the provided cloud configuration to make sure it is
consistent and has all required permissions. However, the administrator should not change the
provider's network configuration afterwards to avoid any issues during fail-over.
• When there are BFD connectivity issues between the two CloudEOS peers, each instance will
take over the other's traffic. This cross traffic forwarding on provider's network should not have any
adverse affect and still work as active-active even though both of the instance will report as fail-
over. After the network connectivity is resolved, the traffic pattern reverts to the normal active-active
mode.
• The user can adjust the BFD specific parameters for the session used by Cloud HA feature using
normal BFD commands such as multiplier, tx/rx intervals, etc. The Cloud HA fail-over and traffic
takeover time is directly correlated with BFD failure detection time. However, when using an overly
aggressive BFD, the failover time may incur higher overhead as well may result in greater instability
during traffic bursts. Arista recommends using the use default BFD interval which is currently 300
msec with a multiplier of 3.
• The bfd source-interface used in Cloud HA configuration should not belong and/or routable via the
route-tables controlled by the CloudEOS router instance itself to avoid traffic looping issues.
• If the Cloud HA is in an invalid configuration state due to erroneous/mismatched configuration in
the provider's cloud, the administrator has to force update the Cloud HA configuration (for example,
by shut/no shut under Cloud HA mode) after updating the provider's cloud configuration. In other
words, by itself, the Cloud HA feature will not retry the back-end configuration check if it is found to
be invalid at the time of configuration.
96
Cloud High Availability
• cloud proxy
Interface
• http
• https
• proxy
Show Commands
EXEC
• show cloud high-availability
• show cloud high-availability routes
• show cloud provider aws
• show cloud provider azure
• show cloud proxy
Command Mode
Cloud Provider AWS Configuration
Command Syntax
access-key-id Password_Type
no access-key-id Password_Type
Parameters
Password_Type
• 0 access-key-id The password is a clear-text string. Equivalent to no parameter.
• 7 encrypted_key The password is an encrypted string.
• Text
Example
The following example configures the AWS access key to encrypted.
97
switch(config-cloud-aws)#access-key 0 565656 test
Example
The following example removes the AWS access key and returns the to Global configuration mode.
Example
The following example returns the to Global configuration mode.
Command Mode
Cloud Provider Azure Configuration
Command Syntax
active-directory credential email subscription-id ID
no active-directory credential email subscription-id
Parameters
• ID Defines the active directory subscription ID.
Example
The following example places the cloud provider for Azure into the configuration mode.
Example
98
Cloud High Availability
Command Mode
Global Cloud High Availability Peer Configuration Submode
Command Syntax
azure
Example
The following example configures the peer related information for Azure.
switch(config)#cloud high-availability
switch(config-cloud-ha)#peer p
switch(config-cloud-ha-peer-veos2)#azure
switch(config-cloud-ha-peer-veos2-azure)#
Example
The following example returns the CloudEOS to the cloud-ha configuration mode.
switch(config-cloud-ha-peer-veos2-azure)#exit
switch(config-cloud-ha-peer-veos2)#
switch(config)#cloud high-availability
switch(config-cloud-ha)#peer veos2
switch(config-cloud-ha-peer-veos2)#azure
switch(config-cloud-ha-peer-veos2-azure)#backup-gateway Rt1 [Link]/10
[Link] resource-group test
99
Example
The following example removes the backup-gateway parameters for the Azure high availability peered
cloud.
switch(config)#cloud high-availability
switch(config-cloud-ha)#peer veos2
switch(config-cloud-ha-peer-veos2)#bfd source-interface ethernet 1
Example
The following example configures Tunnel 2 as a single hop the source interface for BFD.
switch(config)#cloud high-availability
switch(config-cloud-ha)#peer veos2
switch(config-cloud-ha-peer-veos2)#bfd source-interface tunnel 2 single-
hop
Example
The following example removes the BFD configuration.
100
Cloud High Availability
switch(config)#cloud high-availability
switch(config-cloud-ha)#shutdown
Command Mode
Global Configuration
Command Syntax
cloud provider aws
Example
The following example places the cloud provider for AWS into the configuration mode.
switch#config
switch(config)#cloud provider aws
switch(config-cloud-aws)#
Example
The following example returns to the global configuration mode.
switch(config-cloud-aws)#exit
101
switch(config)#
Command Mode
Global Configuration
Command Syntax
cloud provider azure
Example
The following example places the cloud provider for Azure into the configuration mode.
switch(config)#
switch(config)#cloud proxy test
switch(config-cloud-proxy-test)#
Example
This command disables the cloud proxy named "test" and returns to global configuration mode.
102
Cloud High Availability
The http command in the cloud-proxy configuration submode configures the IP, port, username, and
password parameters. The no http command removes the configured cloud proxy information for
HTTP from the running-config and returns the CloudEOS and to the global configuration mode.
Command mode
Global Cloud Proxy Configuration
Command Syntax
http [proxy_IP_port] [username] [password]
no http [proxy_IP_port] [username] [password]
Parameters
• proxy_IP_port Port number to be used for the HTTP server. Options include:
• proxy-ip IP address used for the HTTPs proxy. Dotted decimal location.
• proxy_port HTTPS proxy port. Value ranges from 1 to 65535.
• username Name string.
• password Password string.
• 0 cleartext-passwd Indicates the cleartext password is in clear text. Equivalent to the no
parameter case.
• 7 encrypted_passwd Indicates encrypted password is md5 encrypted.
Example
The following example configures the cloud proxy IP, port and username and password for HTTP.
Example
The following example removes the configured cloud proxy information for HTTP from the running-
config.
103
• proxy-ip IP address used for the HTTPs proxy. Dotted decimal location.
• proxy_port HTTPS proxy port. Value ranges from 1 to 65535.
• username Name string.
• password Password string.
• 0 cleartext-passwd Indicates the cleartext password is in clear text. Equivalent to the no
parameter case.
• 7 encrypted_passwd Indicates encrypted password is md5 encrypted.
Example
The following example configures the cloud proxy IP and port for HTTPS.
switch(config)#
switch(config)#cloud proxy test
switch(config-cloud-proxy-test)#https [Link] 8888
Example
The following example removes the configured cloud proxy HTTPS information from the running-
config.
switch(config-cloud-ha)#peer veos2
switch(config-cloud-ha-peer-veos2)#
Example
The following example configures the peer IP address as [Link].
switch(config)#cloud high-availability
switch(config-cloud-ha)#peer veos2
104
Cloud High Availability
switch(config-cloud-ha-peer-veos2)#peer [Link]
Example
The following example removes the peer IP address from the running-config.
switch(config)#cloud high-availability
switch(config-cloud-ha)#peer veos2
switch(config-cloud-ha-peer-veos2)#no peer [Link]
Command Mode
Cloud HA Azure Configuration Submode
Command Syntax
primary-gateway [Azure Rt_Info] resource-group [Name]
no primary-gateway [Azure Rt_Info]
Parameters
• Azure Rt_Info
• azure-rt-name The azure route name.
• dest-ip-address/mask The destination IP address.
• local-ip-address The local IP address.
• resource-group
• Name Azure resource group name.
Example
The following example configures the parameters for the Azure high availability peered cloud.
switch(config)#cloud high-availability
switch(config-cloud-ha)#peer veos2
switch(config-cloud-ha-peer-veos2)#azure
switch(config-cloud-ha-peer-veos2-azure)#primary-gateway Rt1 [Link]/10
[Link] resource-group test
Example
The following example removes the primary-gateway parameters for the Azure high availability peered
cloud.
105
The proxy command configures the cloud provider aws proxy. The no proxy command removes
the configuration from the running-config. The exit command returns the CloudEOS to global
configuration mode.
Note: Supported on AWS platform only.
Command Mode
Global Cloud AWS Configuration
Command Syntax
proxy <proxy_name>
no proxy <proxy_name>
Parameters
• proxy_name Proxy name to configure.
Example
The following example configures the Azure cloud proxy named "test".
switch(config)#cloud ha
switch(config-cloud-ha)#p1
switch(config-cloud-ha-p1)#recovery wait-time 90
106
Cloud High Availability
switch(config-cloud-ha-peer1)#recovery wait-time 90
Example
The following example removes the configured the wait time.
Example
The following example configures the wait time to the default of 30 seconds.
Command Mode
Global Cloud Provider AWS Configuration
Command Syntax
region aws-region
no region aws-region
Parameters
• aws-region Specifies the selected region.
Example
The following example configures the cloud provider AWS region.
Example
The following example removes the cloud provider AWS region.
107
switch(config-cloud-aws)#no region us-west-1
switch(config-cloud-aws)#
Command Mode
Global Cloud Provider AWS configuration
Command Syntax
secret access-key password_type
no secret access-key password_type
Parameters
• 0 access-key-id The password is a clear-text string. Equivalent to no parameter.
• 7 encrypted_key The password is an encrypted string.
• Text
Example
The following example configures the AWS secret access key.
Example
The following example removes the secret access key from the CloudEOS running-config.
Example
The following example returns to Global configuration mode.
108
Cloud High Availability
Example
This command displays details and status of the cloud high-availability configuration.
109
Region : us-west-1
Access key ID :
Access secret key :
Proxy : test
Example
The following example displays the primary and backup gateway information for the AWS cloud
provider.
110
Cloud High Availability
111
112
Chapter 10
DPDK Mode
This chapter will focus on new DPDK based CloudEOS, while highlighting the changes from the
existing kernel based CloudEOS, as needed.
The Arista CloudEOS Router is a cloud-grade, feature-rich, multi-cloud and multi-hypervisor virtual
router that empowers enterprises and cloud providers to build consistent, highly secure and scalable
multi-cloud networks.
The CloudEOS Router can run in two modes : DPDK (high performance) and kernel, each with its own
set of supported features. From CloudEOS-Router-4.23.0FX new installations of CloudEOS router
from the hypervisor image or on public cloud by default run in high performance DPDK mode. Going
forward all the new features and development will be in the DPDK mode.
Both flavors of CloudEOS perform all the packet forwarding operations in software, but use different
software components for the same. DPDK based CloudEOS which use DPDK to perform packet
forwarding operations is much more efficient. Note, that while DPDK mode has more number of
features than the kernel mode, there are certain features that are available only in the kernel mode like
Zone Based Segmentation (ZSS) and sflow.
Note: We publish both 64 bit and 32 bit mode we recommend users to use 64 bit mode.
Customers who upgrade from 32 bit to 64 bit mode need to be aware that the 64bit mode
requires 30 percent more memory than 32 bit mode. In general, 64 bit mode can scale better
and has higher datapath performance. The public cloud images are only available in 64 bit
mode.
This chapter includes the following sections:
• Platform Compatibilitys
• Hardware Resource Requirements
• Switching to DPDK Mode
113
• CloudEOS and vEOS-DPDK Mode Verification
• vEOS vCPU Core Allocation
• Monitoring Datapath CPU utilization in DPDK Mode
• General Troubleshooting
114
DPDK Mode
switch#conf t
switch(config)#bash sudo su -
Arista Networks EOS shell
-bash-4.3# cat /mnt/flash/veos-config
# Use 'MODE' to set the forwarding plane for vEOS. If 'MODE' is set
multiple times
# the last configuration takes effect.
# 'MODE=linux' runs vEOS with linux forwarding plane
MODE=linux
# 'MODE=sfe' runs vEOS with DPDK forwarding plane
#MODE=sfe
Now, please use a text editor to modify this file by commenting out MODE=linux and un-commenting
MODE=sfe. After modification verify the changes and then save the file. The file should look like as
shown.
115
To check if CloudEOS is running in DPDK mode, verify if the “sfe” agent is running using the following
command.
A system in DPDK mode uses 100% of CPU cycles for each datapath vCPU. This is normal and
expected. To ensure that packet forwarding tasks, which are CPU intensive, do not starve control
plane and management operations, EOS dedicates CPU cores for control/management functions.
Linux “top” command followed by typing “1” when “top” is running is used to get detailed CPU
utilization. The below output shows “top” results for a CloudEOS with 2 cores. Depending on the
version either “Sfe” or “bessd” will show using the 100% of the datapath core.
vEOS-CLI(config)#bash top -n 1
Tasks: 236 total, 1 running, 235 sleeping, 0 stopped, 0 zombie
%Cpu0 : 1.6 us, 0.7 sy, 0.0 ni, 95.1 id, 0.0 wa, 2.6 hi, 0.0 si,
0.0 st
%Cpu1 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si,
0.0 st
KiB Mem: 8122156 total, 4642632 used, 3479524 free, 255624 buffers
KiB Swap: 0 total, 0 used, 0 free, 1857744 cached
116
DPDK Mode
In addition to this, a syslog message is logged if the CPU utilization is over 80% for 60 seconds, all the
while doing useful packet processing.
Note: That these features are for capacity planning and are intended to be used _after_ high
CPU alarms are turned off in the hypervisor. Sfe/DPDK runs at 100 % always, and if the alarms
are turned off, then this is the way to distinguish between CPU usage due to useful packet
processing task and idle spin.
117
In case of errors, another log file would be generated by the system and can be accessed by using the
following command.
In addition to the aforementioned log file(s), syslog and EOS show-tech are also a valuable source of
troubleshooting information.
118
Chapter 11
IPsec Support
The CloudEOS Router provides robust support for the use of IPsec to establish and maintain IPsec
tunnels for secure or encrypted communications between virtual router peer instances as well as
virtual peer instances to non-virtual routers.
The CloudEOS Router supports the use of IPsec to:
• Secure the communications between CloudEOS Router instances.
• Secure the communications between CloudEOS Router instances and third party virtual router
instances.
Note: For the latest information on the types of virtual routers that can share IPsec tunnels with
CloudEOS Router, see the CloudEOS Router Release Notes.
• Supported Tunnel Types
The CloudEOS Router supports the use of two basic types of IPsec tunnels. The tunnel types are
determined based on the encapsulation mode.
• Requirements when Behind a NAT
The CloudEOS Router supports the use of NAT-Traversal to communicate with the remote peer
virtual router. To ensure that the tunnel configuration between the CloudEOS Router and peer
router is successful, make sure that CloudEOS Router tunnel configuration meets the requirements
for using NAT.
Note: NAT-Traversal for IPsec is not supported for DCS-7020SRG.
119
VTI IPsec
• In VTI encapsulation mode, the application payload is directly encapsulated and encrypted by the
IPsec header.
• Select this encapsulation type by specifying tunnel mode ipsec for the tunnel interface to which
the IPsec profile is applied. This ensures that the packets forwarded on the interface are encrypted.
• When using VTI encapsulation mode, set the IPsec mode to tunnel. The transport option under
the IPsec mode has no effect.
If the IPsec session is established without the feature enabled, complete the following tasks:
• Under the IPsec profile for the tunnel use the flow parallelization encapsulation udp
command to enable the feature.
• Shutdown the tunnel on the tunnel interface.
• Bring the tunnel back up on the tunnel interface. After it is up, this enables the feature.
11.3.1 Topology
Use the CloudEOS Router to establish and maintain IPsec tunnels between peer CloudEOS Router
instances in different topologies of varying complexity.
The diagram below represents a basic IPsec tunnel configuration in which CloudEOS Router instances
are using an IPsec tunnel.
120
IPsec Support
The CloudEOS Router establishes and maintains IPsec tunnels for secure or encrypted
communications between CloudEOS Router instances and third party devices peer router instances.
The basic process for establishing secure communications using IPsec involves the following tasks:
• Creating IKE Policy for establishing IKE with the peer.
• Specifying the encryption, integrity protocols for the Security Association (SA) Policy.
• Apply IKE and SA policies to a given profile.
• Apply the profile to a tunnel interface.
switch(config)#ip security
2. To use IKE version 1, complete the following before completing the default IKE version the steps
below.
switch(config)#ip security
switch(config-ipsec)#ike policy ike-peerRtr
switch(config-ipsec-ike)#version 1
3. Create an IKE Policy to be used to communicate with the peer to establish IKE. You have the
option of configuring multiple IKE policies.
The default IKE Policy values are:
• Encryption- AES256
• Integrity - SHA256
• DH group - Group 14
• IKE lifetime - 8 hours
121
switch(config-ipsec-ike)#integrity sha256
switch(config-ipsec-ike)#dh-group 24
switch(config-ipsec-ike)#version 2
4. If the router is behind a NAT, configure the local-id with the local public IP address. The public IP
corresponds to the underlying interface over which the IKE communications are done with the peer.
switch(config-ipsec)#profile default
switch(config-ipsec-profile)#ike-policy ikedefault
switch(config-ipsec-profile)#sa-policy sadefault
switch(config-ipsec-profile)#shared-key arista
switch(config-ipsec)#profile vrouter
switch(config-ipsec-profile)#ike-policy ike-vrouter
switch(config-ipsec-profile)#sa-policy sa-vrouter
switch(config-ipsec-profile)#dpd 10 50 clear
switch(config-ipsec-profile)#connection add
switch(config-ipsec-profile)#mode transport
7. Configure the WAN interface to be the underlying interface for the tunnel. You must specify an L3
address for the tunnel. If you do not, the Router cannot route packets using the tunnel.
switch(config)#interface Et1
switch(config-if-Et1)#no switchport
switch(config-if-Et1)#ip address [Link]/24
switch(config-if-Et1)#mtu 1500
8. Apply the IPsec profile to a new tunnel interface. You create the new tunnel interface as part of this
step. You can choose to configure the tunnel as a GRE-over-IPsec tunnel, or a VTI IPsec tunnel.
(GRE-over-IPsec):In this example, the new tunnel interface is Tunnel0. The new tunnel interface is
configured to use IPsec, and the tunnel mode is set to GRE. The other end of the tunnel also needs
to be configured as a GRE-over-IPsec tunnel.
switch(config)#interface tunnel0
switch(config-if-Tu0)#ip address [Link]/24
switch(config-if-Tu0)#tunnel mode gre
switch(config-if-Tu0)#mtu 1394
switch(config-if-Tu0)#tunnel source [Link]
switch(config-if-Tu0)#tunnel destination [Link]
122
IPsec Support
(VTI IPsec): To configure a VTI IPsec tunnel, you need to set the tunnel mode to tunnel mode
ipsec. The other tunnel element settings are the same as the settings for GRE-over-IPsec.
switch(config)#interface tunnel0
switch(config-if-Tu0)#ip address [Link]/24
switch(config-if-Tu0)#tunnel mode ipsec
switch(config-if-Tu0)#mtu 1394
switch(config-if-Tu0)#tunnel source [Link]
switch(config-if-Tu0)#tunnel destination [Link]
switch(config-if-Tu0)#tunnel ipsec profile vrouter
Optional Steps
To move the tunnel interface to a different VRF, complete step 9. To achieve high throughput,
complete step 10.
9. Create the GRE-over-IPsec tunnel interface in a VRF using the vrf forwarding command.
If a VRF is needed, create one then create and configure the GRE tunnel interface. If tunnels in
different VRFs need to share the IPsec connection, configure the same tunnel source, destination,
IPsec profile, and a unique tunnel key for each tunnel.
Note: If tunnels in different VRFs need to share the IPsec connection, specify the same
source, destination, and IPsec profile.
switch(config-ipsec)#profile vrouter
switch(config-ipsec-profile)#ike-policy ike-vrouter
switch(config-ipsec-profile)#sa-policy sa-vrouter
switch(config-ipsec-profile)#dpd 10 50 clear
switch(config-ipsec-profile)#connection start
switch(config-ipsec-profile)#mode transport
switch(config-ipsec-profile)#flow parallelization encapsulation udp
123
Example: (Applying IPsec profile to tunnel interface)
switch(config)#interface tunnel0
switch(config-if-Tu0)#tunnel ipsec profile vrouter
Note: Repeat step 9 on the other end of the tunnel. The IPsec flow parallelization feature
must be enabled on both end of the tunnel.
ip security
ike policy ikebranch1
integrity sha256
dh-group 15
!
sa policy sabranch1
sa lifetime 2
pfs dh-group 14
!
profile hq
mode tunnel
ike-policy ikebranch1
sa-policy sabranch1
connection add
shared-key keyAristaHq
dpd 10 50 clear
!
interface Tunnel1
mtu 1404
ip address [Link]/24
tunnel mode gre
tunnel source [Link]
tunnel destination [Link]
tunnel ipsec profile hq
!
interface Ethernet1
no switchport
ip address [Link]/24
!
ip security
ike policy ikebranch1
integrity sha256
dh-group 15
!
ike policy ikebranch2
dh-group 15
version 1
local-id [Link]
!
ike policy ikedefault
!
sa policy sabranch1
124
IPsec Support
sa lifetime 2
pfs dh-group 14
!
profile hq
mode tunnel
ike-policy ikebranch1
sa-policy sabranch1
connection start
shared-key keyAristaHq
dpd 10 50 clear
!
interface Tunnel1
mtu 1404
ip address [Link]/24
tunnel mode gre
tunnel source [Link]
tunnel destination [Link]
tunnel ipsec profile hq
!
interface Ethernet2
no switchport
ip address [Link]/24
!
ip security
ike policy ikebranch1
integrity sha256
dh-group 15
!
sa policy sabranch1
sa lifetime 2
pfs dh-group 14
!
profile hq
mode tunnel
ike-policy ikebranch1
sa-policy sabranch1
connection add
shared-key keyAristaHq
dpd 10 50 clear
!
interface Ethernet1
no switchport
ip address [Link]/24
!
interface Management1
ip address dhcp
!
interface Tunnel1
mtu 1404
ip address [Link]/24
tunnel mode ipsec
tunnel source [Link]
tunnel destination [Link]
tunnel ipsec profile hq
125
!
ip security
ike policy ikebranch1
integrity sha256
dh-group 15
!
ike policy ikebranch2
dh-group 15
version 1
local-id [Link]
!
ike policy ikedefault
!
sa policy sabranch1
sa lifetime 2
pfs dh-group 14
!
profile hq
mode tunnel
ike-policy ikebranch1
sa-policy sabranch1
connection start
shared-key keyAristaHq
dpd 10 50 clear
!
interface Ethernet2
no switchport
ip address [Link]/24
!
interface Management1 ip address dhcp
!
interface Tunnel1
mtu 1404
ip address [Link]/24
tunnel mode ipsec
tunnel source [Link]
tunnel destination [Link]
tunnel ipsec profile hq
!
126
IPsec Support
11.4.1 Topology
Use the CloudEOS Router to establish and maintain IPsec tunnels between CloudEOS Router
instances and third party router instances in different topologies of varying complexity.
The following diagram represents a basic IPsec tunnel configuration in where a CloudEOS Router
instance and a third party router instance is connected using an IPsec tunnel.
127
• CloudEOS and vEOS Routers and CSR
• CloudEOS and vEOS and AWS Specific Cloud
switch(config)#ip security
switch(config-ipsec)#ike policy ike-peerRtr
switch(config-ipsec-ike)#version 1
switch(config)#ip security
2. Create an IKE Policy used to communicate with the peer to establish IKE Phase 1. There is an
option of configuring multiple IKE policies.
The default IKE Policy values are:
• Encryption - AES256
• Integrity - SHA256
• DH group - Group 14
• IKE lifetime - 8 hours
128
IPsec Support
In this example, AES256 is used for encryption, SHA 256 is used for integrity, and Perfect Forward
Secrecy is enabled (the DH group is 14).
switch(config-ipsec)#profile default
switch(config-ipsec-profile)#ike-policy ikedefault
switch(config-ipsec-profile)#sa-policy sadefault
switch(config-ipsec-profile)#shared-key arista
switch(config-ipsec)#profile peer-Rtr
switch(config-ipsec-profile)#ike-policy ike-peerRtr
switch(config-ipsec-profile)#sa-policy sa-peerRtr
switch(config-ipsec-profile)#dpd 10 50 clear
switch(config-ipsec-profile)#connection add
switch(config-ipsec-profile)#mode transport
6. Configure the WAN interface to be the underlying interface for the tunnel. Specify an L3 address for
the tunnel. If the L3 address is not specified, the CloudEOS Router cannot route packets using the
tunnel.
switch(config)#interface Et1
switch(config-if-Et1)#no switchport
switch(config-if-Et1)#ip address [Link]/24
switch(config-if-Et1)#mtu 1500
7. Apply the IPsec profile to a new tunnel interface. Create the new tunnel interface as part of this
step.
In this example, the new tunnel interface is Tunnel0. The new tunnel interface is configured to use
IPsec, and the tunnel mode is set to GRE. Configure the other end of the tunnel also as a GRE-
over-IPsec tunnel.
switch(config)#interface tunnel0
switch(config-if-Tu0)#ip address [Link]/24
switch(config-if-Tu0)#tunnel mode gre
switch(config-if-Tu0)#mtu 1400
switch(config-if-Tu0)#tunnel source [Link]
switch(config-if-Tu0)#tunnel destination [Link]
switch(config-if-Tu0)#tunnel ipsec profile vrouter
8. Create the GRE-over-IPsec tunnel interface in a VRF using the vrf forwarding command.
Create the VRF, if needed, then create and configure the GRE tunnel interface. Make sure to
specify the tunnel key that is unique across all tunnels.
129
Note: If tunnels in different VRFs need to share the IPsec connection, specify the same
source, destination, and ipsec profile.
130
IPsec Support
[Link].2 CloudEOS and Palo Alto Firewall VM Pairing (VTI IPsec Tunnel)
The following example shows a VTI IPsec tunnel between a CloudEOS Router instance and a third
party Palo Alto firewall VM router instance.
ip security
ike policy ikebranch1
integrity sha256
dh-group 15
!
sa policy sabranch1
sa lifetime 2
pfs dh-group 14
131
!
profile hq
ike-policy ikebranch1
sa-policy sabranch1
connection add
shared-key keyAristaHq
dpd 10 50 clear
!
interface Ethernet1
no switchport
ip address [Link]/24
!
interface Management1
ip address dhcp
!
interface Tunnel1
mtu 1404
ip address [Link]/24
tunnel mode ipsec
tunnel source [Link]
tunnel destination [Link]
tunnel ipsec profile hq
!
"ike": {
"crypto-profiles": {
"ike-crypto-profiles": [
{
"@name": "veos12-IKE-Phase1",
"hash": {
"member": "sha512"
},
"dh-group": {
"member": "group20"
},
"encryption": {
"member": "aes-256-cbc"
},
"lifetime": {
"hours": "8"
}
}
]
"ipsec-crypto-profiles": [
{
"@name": "veos12-IPSEC-Phase2",
"esp": {
"authentication": {
"member": "sha256"
},
"encryption": {
"member": "aes-256-cbc"
}
},
"lifetime": {
"hours": "2"
},
"dh-group": "group20"
132
IPsec Support
"gateway": {
"entry": {
"@name": "veos12-IKE-Gateway",
"authentication": {
"pre-shared-key": {
"key": "-AQ==ocHnGzxJ4JVLomPyHuZNlg84S7I=BCiu0
HIvFeFOSQOx/gmhNQ=="
}
},
"protocol": {
"ikev1": {
"dpd": {
"enable": "yes",
"interval": "100",
"retry": "100"
},
"ike-crypto-profile": "veos12-IKE-Phase1"
},
"ikev2": {
"dpd": {
"enable": "yes"
},
"ike-crypto-profile": "veos12-IKE-Phase1"
},
"version": "ikev2-preferred"
}
"tunnel": {
"ipsec": {
"entry": {
"@name": "veos12-IPSEC-Tunnel",
"auto-key": {
"ike-gateway": {
"entry": {
"@name": "veos12-IKE-Gateway"
}
},
"ipsec-crypto-profile": "veos12-IPSEC-Phase2"
},
"tunnel-monitor": {
"enable": "yes",
"destination-ip": "[Link]",
"tunnel-monitor-profile": "Test"
},
"tunnel-interface": "tunnel.1",
"disabled": "no"
}
}
}
}
133
Complete the following steps to configure a CloudEOS Router instance to share a VTI IPsec tunnel.
To use IKE version 1, complete the section below, then continue with the steps below. To use IKE
version 2, which is the default version, start with Step 1 below.
switch(config)#ip security
switch(config-ipsec)#ike policy ike-peerRtr
switch(config-ipsec-ike)#version 1
switch(config)#ip security
2. Create an IKE Policy to communicate with the peer to establish IKE Phase 1 options. There is the
option of configuring multiple IKE policies.
The default IKE Policy values are:
• Encryption - AES256
• Integrity - SHA256
• DH group - Group 14
• IKE lifetime - 8 hours
switch(config)#ip security
switch(config-ipsec)#ike policy ike-vrouter-PA
switch(config-ipsec)#integrity sha512
switch(config-ipsec)#encryption aes256
switch(config-ipsec)#dh-group 20
3. If the router is behind a NAT, configure the local-id with the local public IP address.
switch(config-ipsec)#profile vrouter-PA
switch(config-ipsec-profile)#ike-policy ike-vrouter-PA
switch(config-ipsec-profile)#sa-policy sa-vrouter-PA
switch(config-ipsec-profile)#connection start
switch(config-ipsec-profile)#shared-key Arista1234
switch(config-ipsec-profile)#dpd 10 30 clear
134
IPsec Support
6. Create a tunnel interface for the VTI tunnel. When tunnel mode is set to IPsec, configure a tunnel
key on the vEOS Router instance to ensure that traffic can be forwarded through the tunnel.
switch(config)#interface Tunnel1
switch(config-if-Tu1)#mtu 1400
switch(config-if-Tu1)#ip address [Link]/24
switch(config-if-Tu1)#tunnel mode ipsec
switch(config-if-Tu1)#tunnel source [Link]
switch(config-if-Tu1)#tunnel destination [Link]
switch(config-if-Tu1)#tunnel ipsec profile vrouter-PA
Configure the VTI IPsec tunnel on the peer router (see Palo Alto Firewall VM Configuration).
interface: Tunnel0
Crypto map tag: Tunnel0-head-0, local addr [Link]
135
#pkts encaps: 1, #pkts encrypt: 1, #pkts digest: 1f
#pkts decaps: 1, #pkts decrypt: 1, #pkts verify: 1
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 0, #recv errors 0
inbound ah sas:
outbound ah sas:
Interface: Tunnel0
Profile: vrouter-ikev1-isakmp-profile
Uptime: 00:20:23
Session status: UP-ACTIVE
136
IPsec Support
137
Cisco Trust Security SGT is disabled
Initiator of SA : Yes
The example below shows the use of the show ip security connection detail command to view the
details for a specified IPsec tunnel.
The example below shows the use of the show ip sec applied-profile command to view all profiles
currently in use by established tunnels.
138
IPsec Support
switch(config)#interface Tunnel0
switch(config-if)#ip address [Link] [Link]
switch(config-if)#tunnel source [Link]
switch(config-if)#tunnel destination [Link]
switch(config-if)#tunnel mode ipsec ipv4
switch(config-if)#tunnel protection ipsec profile vrouter-ikev1-ipsec-
profile
Note: Make sure you use the correct procedure based on the version of IKE you need to use.
switch(config)#interface Tunnel0
switch(config-if)#tunnel protection ipsec profile vrouter-ikev2-ipsec-
profile shared
switch(config-if)#exit
switch(config)#ip security
switch(config-ipsec)#ike policy ike-peerRtr
switch(config-ipsec-ike)#version 1
switch#config terminal
139
2. Configure a pre-shared key for the vEOS Router and CSR to authenticate each other. Create a
keyring to hold the keys.
switch(config)#interface GigabitEthernet2
switch(config-if)#ip address [Link] [Link]
switch(config-if)#mtu 9001
switch(config-if)#negotiation auto
8. Apply the IPsec profile to a tunnel interface. The example creates a tunnel interface (Tunnel0) and
configures the tunnel interface to use IPsec.
switch(config-if)#exit
switch(config)#interface Tunnel0
switch(config-if)#ip address [Link] [Link]
switch(config-if)#tunnel source [Link]
switch(config-if)#tunnel destination [Link]
switch(config-if)#tunnel protection ipsec profile vrouter-ikev1-ipsec-
profile
switch(config-if)#exit
140
IPsec Support
switch#configure terminal
2. Create a pre-shared key for CSR and the CloudEOS Router to authenticate each other. Create a
keyring to hold the keys. Specify the peer CloudEOS Router under which the keys and matching IP
address of peer are configured.
141
switch(ipsec-profile)#set security-association idle-time 3600
switch(ipsec-profile)#set security-association dummy seconds 3600
switch(ipsec-profile)#set transform-set vrouter-tset
switch(ipsec-profile)#set ikev2-profile vrouter-ikev2-profile
switch(ipsec-profile)#exit
8. Configure the interface to use as the underlying interface for the tunnel. To be able to route
packets, the tunnel is given an L3 IP address.
switch(config)#interface GigabitEthernet2
switch(config-if)#ip address [Link] [Link]
switch(config-if)#negotiation auto
9. Apply the IPsec profile to a tunnel interface. The example creates a tunnel interface (Tunnel0) and
configures the tunnel interface to use IPsec.
switch(config-if)#exit
switch(config)#interface Tunnel0
switch(config-if)#ip address [Link] [Link]
switch(config-if)#tunnel path-mtu-discovery
switch(config-if)#tunnel source [Link]
switch(config-if)#tunnel destination [Link]
switch(config-if)#tunnel protection ipsec profile vrouter-ikev2-ipsec-
profile
switch(config-if)#exit
ip security
ike policy ikebranch1 encryption aes256 dh-group 15
!
sa policy sabranch1 sa lifetime 2
pfs dh-group 14
!
profile hq
ike-policy ikebranch1 sa-policy sabranch1 connection add
shared-key keyAristaHq dpd 10 50 clear
!
interface Tunnel1
ip address [Link]/24 tunnel mode gre tunnel source [Link]
tunnel destination [Link] tunnel ipsec profile hq
interface Ethernet1 no switchport
ip address [Link]/24
ip security
ike policy ikebranch1
encryption aes256
dh-group 15
!
142
IPsec Support
sa policy sabranch1
sa lifetime 2
pfs dh-group 14
!
profile hq
ike-policy ikebranch1
sa-policy sabranch1
connection add
shared-key keyAristaHq
dpd 10 50 clear
!
interface Tunnel1
ip address [Link]/24
tunnel mode ipsec
tunnel source [Link]
tunnel destination [Link]
tunnel key 100
tunnel ipsec profile hq
interface Ethernet1
no switchport
ip address [Link]/24
143
interface: Tunnel0
Crypto map tag: Tunnel0-head-0, local addr [Link]
inbound ah sas:
outbound ah sas:
144
IPsec Support
Example
Interface: Tunnel0
Profile: vrouter-ikev1-isakmp-profile
Uptime: 00:20:23
Session status: UP-ACTIVE
Peer: [Link] port 500 fvrf: (none) ivrf: (none)
Phase1_id: [Link]
Desc: (none)
Session ID: 0
IKEv1 SA: local [Link]/500 remote [Link]/500 Active
Capabilities:(none) connid:1332 lifetime:07:39:35
IPSEC FLOW: permit 47 host [Link] host [Link]
Active SAs: 2, origin: crypto map
Inbound: #pkts dec'ed 42 drop 0 life (KB/Sec)
4607997/2375
Outbound: #pkts enc'ed 44 drop 0 life (KB/Sec)
4607995/2375
145
CE id: 1351, Session-id: 6
Status Description: Negotiation done
Local spi: 9FA0B7B1F7746E69 Remote spi:
4B1652D32691E8AF
Local id: [Link]
Remote id: [Link]
Local req msg id: 4 Remote req msg id: 8
Local next msg id: 4 Remote next msg id: 8
Local req queued: 4 Remote req queued: 8
Local window: 5 Remote window: 1
DPD configured for 0 seconds, retry 0
Fragmentation not configured.
Extended Authentication not configured.
NAT-T is not detected
Cisco Trust Security SGT is disabled
Initiator of SA : Yes
[Link] IPsec Between the CloudEOS Router and AWS Specific Cloud Configuration
Describes the steps and the running configuration for setting up an IPsec connection between the
CloudEOS Router and the AWS Specific Cloud. The AWS Specific Cloud only supports IKE1 and not
IKE2.
The following configurations are for the minimum requirement of AES128, SHA1, and DH Group 2.
These can be modified to take advantage of AES256, SHA256, or other DH groups such as 5, 14-17,
and 24.
ip security
ike policy AWS-IKE1
integrity sha1
version 1
local-id [Link]
!
ike policy ikedefault
encryption aes256
!
sa policy AWS-SA1
esp encryption aes128
esp integrity sha1
pfs dh-group 14
!
profile AWS-profile
ike-policy AWS-IKE1
sa-policy AWS-SA1
connection start
sharded-key LwYbARmDJmpFGAOrAbPGk2uQiWwvbmfU
!
profile default
ike-policy
sa-policy AWS-SA1
146
IPsec Support
shared-key arista
!
interface Tunnel1
ip address [Link]/30
tunnel mode ipsec
tunnel source [Link]
tunnel destination [Link]
tunnel ipsec profile AWS-profile
147
The IPsec Dead Peer Detection (DPD) is enabled on the AWS Specific Cloud endpoint. Configure
the DPD on your endpoint as follows:
• DPD interval: 10
• DPD Retries: 3
The IPsec Encapsulating Security Payload (ESP) inserts additional headers to transmit the packets.
These headers require additional space, which reduces the amount of space available to transmit
application data. The following configuration is recommended on the customer gateway to limit the
impact of this behavior:
• TCP MSS Adjustment: 1379 bytes
• Clear Don't fragment Bit: enabled
• Fragmentation: Before encryption
3. Tunnel Interface Configuration
Configure the customer gateway with a tunnel interface that associates with the IPsec tunnel. All
traffic transmitted to the tunnel interface is encrypted and transmitted to the virtual private gateway.
The customer gate and the virtual private gateway each have two addresses that relate to this
IPsec tunnel. Each one contains an outside address, where the encrypted traffic is exchanged.
Both gateways also contain an inside address associated with the tunnel interface. The customer
gateway outside IP address is provided upon creation of the customer gateway. To change the IP
address of the customer gateway, create a new customer gateway. The customer gateway inside
IP address must be configured on the interface tunnel.
Outside IP Addresses:
• Customer Gateway: [Link]
• Virtual Private Gateway: [Link]
The customer gateway IP address is the IP address of the firewall that the CloudEOS instance
in the DC with NAT behind.
The virtual private gateway IP address is the external IP address of the AWS Specific Cloud.
Inside IP Addresses
• Customer Gateway: [Link]/30
• Virtual Private Gateway: [Link]/30
The virtual private gateway IP address is the tunnel IP address of the AWS Specific Cloud.
4. Static Routing Configuration
The router traffic between the internal network and the VPC an AWS Specific Cloud, add a static
router to the CloudEOS Router.
Next Hop: [Link]
Any subnet that requires a route to DC must have a route pointing to the AWS Specific Cloud tunnel
IP address.
For traffic destined to the Internet Network, add static routes on the VGW.
148
IPsec Support
The following steps are to create an IPsec Azure Virtual Network Gateway.
1. Create a Resource Group.
2. Create the Virtual Network.
3. Create Virtual Network Gateway.
4. Configure Local Network Gateway.
5. Create Site-to-site Connections.
For more information on creating an IPsec Azure Virtual Network Gateway, refer to:https://
[Link]/en-us/azure/vpn-gateway/vpn-gateway-howto-site-to-site-resource-manager-portal
149
2. Click on the Create button.
150
IPsec Support
6. Finally if the deployment passes the validation, you see this screen.
151
[Link] Creating an Virtual Network Gateway
1. After creating the virtual network, a virtual network gateway(AnetVGW) is created. The Virtual
Network Gateway must have a public IP address. By default BGP is disabled on the Virtual Network
Gateway. In this example below the BGP enabled to demonstrate the BGP session over the IPsec
connection.
152
IPsec Support
5. This page provides you information about the resources and other information related to the
deployment.
153
[Link] Configuring the Local Network Gateway
1. At a customer site an on-prem router (referred as Local Network Gateway) is connected to the
Azure Virtual Network Gateway. The public IP address of the On-prem router along with the BGP
peering address and ASN is configured in the Local Network Gateway.
2.
154
IPsec Support
2.
155
11.5.2 Configuring CloudEOS IPsec
This section describes the CloudEOS configuration instance. The following are the default
cryptographic parameters used in Azure Virtual Network Gateway configuration.
IKE - Ikev2/AES256/SHA256/DH-Group2
IPsec - ESP/AES256/SHA256
CloudEOS(config-ipsec-ike)#ip security
CloudEOS(config-ipsec)#ike policy ikeAzure
CloudEOS(config-ipsec-ike)#encryption aes256
CloudEOS(config-ipsec-ike)#integrity sha256
CloudEOS(config-ipsec-ike)#version 2
CloudEOS(config-ipsec-ike)#dh-group 2
CloudEOS(config-ipsec-ike)#ex
CloudEOS(config-ipsec)#
CloudEOS(config-ipsec)#profile profAzure
CloudEOS(config-ipsec-profile)#ike-policy ikeAzure
CloudEOS(config-ipsec-profile)#sa-policy saAzure
CloudEOS(config-ipsec-profile)#connection start
CloudEOS(config-ipsec-profile)#shared-key arista
CloudEOS(config-ipsec-profile)#ex
CloudEOS(config-ipsec)#
156
IPsec Support
CloudEOS(config)#interface Tunnel 1
CloudEOS(config-if-Tu1)#ip address [Link]/24
CloudEOS(config-if-Tu1)#tunnel mode ipsec
CloudEOS(config-if-Tu1)#tunnel source [Link]
CloudEOS(config-if-Tu1)#tunnel destination [Link]
CloudEOS(config-if-Tu1)#tunnel ipsec profile profAzure
! IPSec adds an overhead of up to 82 bytes. Example: A GRE tunnel with an
MTU=1476 should be changed to 1394 when using IPSec.
CloudEOS(config-if-Tu1)#ex
CloudEOS(config)#show
0 pkts 0 pkts
CloudEOS#ip security
ike policy ikeAzure
encryption aes256
dh-group 2
local-id [Link]
157
BGP address and the IP address on the tunnel interface are same, but, this is not a configuration
limitations both the IP addresses can be different.
158
IPsec Support
switch(config)#ip security
2. Create an IKE Policy used to communicate with the peer to establish IKE Phase 1.
There is an option of configuring multiple IKE policies.
The default IKE Policy values are:
• Encryption - AES256
• Integrity - SHA256
• DH group - Group 14
• IKE lifetime - 8 hours
159
Detection is enabled and configured to delete the connection when the peer is down for more than
50 seconds. The peer (peer-Rtr) is set to be the responder.
switch(config-ipsec)#profile default
switch(config-ipsec-profile)#ike-policy ikedefault
switch(config-ipsec-profile)#sa-policy sadefault
switch(config-ipsec-profile)#shared-key arista
switch(config-ipsec)#profile peer-Rtr
switch(config-ipsec-profile)#ike-policy ike-peerRtr
switch(config-ipsec-profile)#sa-policy sa-peerRtr
switch(config-ipsec-profile)#dpd 10 50 clear
switch(config-ipsec-profile)#connection add
switch(config-ipsec-profile)#mode tunnel
6. Configure the WAN interface to be the underlying interface for the tunnel. Specify an L3 address
for the tunnel. If the L3 address is not specified, the vEOS Router cannot route packets using the
tunnel.
switch(config)#interface Et1
switch(config-if-Et1)#no switchport
switch(config-if-Et1)#ip address [Link]/24
switch(config-if-Et1)#mtu 1500
7. Create the IPsec interface.
160
IPsec Support
ip security
ike policy ikepolicyME <<<Creating a policy for IKE-Phase I Cipher
parameters>>>
integrity sha1
encryption aes256
local-id [Link] <<<Associating the IKE policy with the WAN
interface
Public IP>>>>
!
sa policy sapolicyME <<<Creating a policy for IKE-Phase II Cipher
parameters>>>
esp encryption aes256gcm128
esp integrity sha1
sa lifetime 2 hours <<<If not provided, default lifetime of 8 hours
will
be used>>>
pfs dh-group 14
!
13. Associate the IKE Cipher suite policies to an IPsec profile.
profile profileME
ike-policy ikepolicyME <<<IKE-Phase I cipher suite policy>>>
sa-policy sapolicyME <<<IKE-Phase II cipher suite policy>>>
shared-key 7 0311551F070126404B041C <<<Pre-shared key configured at
both
ends>>>
dpd 10 50 clear <<<Keep alive timer, max. duration & action after max.
Duration expires>>>
!
14. Apply (associate) the IPsec profile parameters to the IPsec tunnel interface.
161
16. Assign an MTU value to the IPsec tunnel interface. As the original IP frame will be encapsulated
in IPsec header, we will need to account for that and assign an MTU value to the IPsec tunnel
interface.
ip security
ike policy ikepolicyME
integrity sha1
encryption aes256
local-id [Link]
!
sa policy sapolicyME
esp encryption aes256gcm128
esp integrity sha1
sa lifetime 2 hours
pfs dh-group 14
!
profile profileME
ike-policy ikepolicyME
sa-policy sapolicyME
shared-key 7 0311551F070126404B041C
dpd 10 50 clear
!
interface Tunnel 100
mtu 1400
ip address [Link]/31
tunnel mode ipsec
tunnel source interface Ethernet1
tunnel destination [Link]
tunnel ipsec profile profileME
!
!
ip route [Link]/32 [Link]
162
Chapter 12
Creating a Subinterface
To create a subinterface on an Ethernet or port channel interface:
Step 1: Bring up the parent interface and ensure that it is configured as a routed port.
switch(config)#interface Ethernet1/1
switch(config-if-Et1/1)#no switchport
switch(config-if-Et1/1)#no shutdown
Step 2: Configure a VLAN on the subinterface. The encapsulation dot1q vlan command is also used
for VLAN translation, but in this context it associates a VLAN with the subinterface.
switch(config-if-Et1/1)#interface Ethernet1/1.1
switch(config-if-Et1/1.1)#encapsulation dot1q vlan 100
Step 3: Configure an IP address on the subinterface (optional) and ensure that it is up.
163
164
Chapter 13
Syntax
// Source port
switch(config)#monitor session <name> source <interface> [ rx | tx |
both ] [ ip access-group <access-list-name>
// GREENSPAN destination
switch(config)#monitor session <name> destination tunnel mode gre source
<ipAddress> destination <ipAddress> ttl <ttlValue> dscp <dscpValue>
// Port destination
switch(config)#monitor session <name> destination <interface>
Example
Example
• The show monitor session command displays the session information.
Session r1
------------------------
Source Ports:
Destination Ports:
165
status source dest TTL DSCP
proto VRF fwd-drop
Gre1 : active [Link] [Link] 128 0
0x88be default no
next hop interfaces: Et5
• The show platform sfe mirroring command displays the platform specific SFE mirroring
information.
166
Chapter 14
In the above example there are 5 paths, 1 MPLS path and are four paths through ISPs: ISP1, ISP1-
ISP3, ISP2-ISP3, ISP2-ISP1. Different ISP have different costs, bandwidth, WAN characteristics,
SLAs, and so on. This is ideal for users wanting to use various SPs in a cost effective manner without
sacrificing application performance. The traditional enterprises use MPLS VPNs which provides a very
good WAN characteristics such as (latency, etc), but, at a very high costs. Internet has been gaining
adoption as an alternative WAN to MPLS that offers much higher bandwidth at lower costs. Also,
MPLS VPNs are not available in all geographies. While ISPs are more readily available and at a lower
cost, however, maintaining application performance for traffic across sites is a big problem because
ISPs don’t offer a good SLAs. The traditional routing solutions do not address the requirements to
optimize routing across WAN SP networks.
14.1 Overview
167
This section describes the functional overview of the Dynamic Path Selection feature. The below figure
shows three routers in different sites interconnected through two SPs. In this example, Site 1 is a hub
site and is connected to both Site 2 and Site 3. There are two paths between site1 to site 2 and two
paths from site 1 to site 3.
Note, that the routers are connected to two SPs in the above diagram. All customer prefixes are on the
overlay network and if the VTEP IP r1addr and r2addr addresses are accessible through SP networks
then the VXLAN overlay would work similar to the datacenter network. However the VTEP IP address
is an internal IP address and is not routable over SP networks. While it is possible to make the VTEP
IP address routable over MPS network (unlike ISP), since we want to dynamically load balance across
SP networks we will not advertise the VTEP IP address over MPLS.
168
Dynamic Path Selection
However, the WAN interfaces have SP routable IP address. For example, r1w1 IP address is routable
on WAN1 and r1w2 IP address is routable on WAN2. The forwarding engine will replace the VTEP
address on the packet based on the path selected before sending it to SP network.
In the above figure there are five paths between the two sites:
• MPLS - Ip11, ip21
• Internet Ip12 - ip22
• Internet Ip12 - ip23
• Internet Ip13 - ip22
169
• Internet Ip13 - ip23
Currently peer VTEP reachability needs to be configured statically, but, in future this is exchanged
through BGP. BGP runs on the same loopback interface used as VXLAN source VREP interface in
underlay.
The router tracks if the configured paths are available using routing updates, interface state and so on,
and programs the available paths for forwarding.
The outer IP header uses the WAN IP addresses on local and peer WAN interfaces of the path. IP
header is followed by a UDP header where the destination port is set to be 4793 by default or to be
the port number configured by user in CLI. When IPsec is enabled, destination port is set to be 4500.
A path telemetry header is inserted in between of UDP/ESP header and the inner IP packet for path
characteristics measurement purpose.
170
Dynamic Path Selection
14.2 Configuration
This section describes the commands to configure and verify the Dynamic Path Selection feature.
For example, in the above figure there are two paths from Router1 to Router2
1. MPLS path - [Link] -- [Link]
2. 4 Internet paths
• [Link] -- [Link]
• [Link] -- [Link]
• [Link] -- [Link]
• [Link] -- [Link]
However, some of the paths are crossing ISPs, for example, [Link] -- [Link] is going from router1
through ISP1, ISP2 to router2. In some customer scenarios ISP2 could be an LTE SP and could be
purely as a backup in case ISP1 fails. In this case the paths [Link] -- [Link] and [Link] -- [Link]
should not be used.
Path-group similar to nexthop-group is used to group the paths in order to
• Restrict paths - define which paths are valid among the available paths like the LTE backup SP
discussed before
• Apply specific policies to path group. Eg apply encryption for all Internet paths
Path group commands are configured under “router path-selection” as shown below. The commands
are explained in the subsections.
router path-selection
path-group <group-name>
local interface <intf-name>
## more local interface commands
## that belong to the same path-group, eg Internet
peer static router-ip <ip-address>
ipv4 address <ip-addr1>
## more IP addresses through which the router can be reached
The router-IP is the same as the VTEP-IP. local is used to configure the local WAN IP address or
interface part of the path-group. Peer is used to configure the remote VTEP reachability statically.
Each combination of peer and local IP address is a potential path. If routing resolves the remote IP
through a local interface then that local-remote IP pair becomes a real path that is used for forwarding.
171
In the topology in the above figure two groups are defined.
1. mpls-group
2. Internet-group
Further if paths need to be restricted through the Internet, the Internet groups can be divided into
more groups. For example, the customer can define ISP1 and ISP2-ISP3 as separate groups create 2
Internet paths instead of 4.
Syntax
router path-selection path-group <name>
name: name of the path group
Example
switch(config)#router path-selection
switch(config-dynamic-path-selection)#
switch(config-dynamic-path-selection)#path-group mpls
Syntax
path-group <name> local interface <intf-name>
local interface: is used to configure the local WAN interface part of the path-group. The IP addresses
assigned to the WAN interface is used as WAN IP. Multiple interfaces can be specified. For example, if
there are two ISP connections.
Example
In the above deployment: ether1 is part of MPLS path-group.
switch(config-dynamic-path-selection)#path-group mpls
switch(config-path-group-mpls)#local interface ether1
Syntax
path-group <name> peer static router-ip <ip-address> ipv4 address <ip-addr1> ipv4 address <ip-
addr2> ## more IP addresses through which the router can be reached
peer static is used to configure the remote VTEP reachability statically via routable IP addresses over
the SP network. The router-IP is the VTEP IP address. In the case of Internet, the routable IP address
is a public IP address. In the case of MPLS it is Enterprise specific private IP address that the MPLS
provider knows how to reach. Typically customer edge routers (CEs) are configured to exchange
subnets by running eBGP to the SP’s PE router.
Example
172
Dynamic Path Selection
In the above deployment for the MPLS path group Router2’s router IP [Link] is reachable via
Router2’s MPLS IP address [Link]
switch(config-dynamic-path-selection)#path-group mpls
switch(config-path-group-mpls)#peer static router-ip [Link]
switch(config-peer-router-ip-[Link]-mpls)#ipv4 address [Link]
For the Internet path group Router2’s router IP [Link] is reachable via
two IP addresses only via ISP1 [Link] and another through ISP2 [Link]
switch(config-dynamic-path-selection)#path-group internet
switch(config-path-group-internet)#peer static router-ip [Link]
switch(config-peer-router-ip-[Link]-internet)#ipv4 address [Link]
switch(config-peer-router-ip-[Link]-internet)#ipv4 address [Link]
It is important to note that once local and remote IP addresses are specified for a path-group then all
combinations of local and remote IP address is a potential path for load balancing.
Example
Consider the following configuration that corresponds to the topology in the above figure :
switch(config)#router path-selection
switch(config-dynamic-path-selection)#path-group mpls
switch(config-path-group-mpls)#local interface et1
switch(config-path-group-mpls)#peer static router-ip [Link]
switch(config-peer-router-ip-[Link]-mpls)#ipv4 address [Link]
switch(config-peer-router-ip-[Link]-mpls)#path-group internet
switch(config-path-group-internet)#local interface et2
switch(config-path-group-internet)#local interface et3
switch(config-path-group-internet)#peer static router-ip [Link]
switch(config-peer-router-ip-[Link]-internet)#ipv4 address [Link]
switch(config-peer-router-ip-[Link]-internet)#ipv4 address [Link]
However if ISP2 is a LTE and the customer does not want paths to cross
over from ISP1 to LTE then the configuration should be
switch(config)#router path-selection
switch(config-dynamic-path-selection)#path-group mpls
switch(config-path-group-mpls)#local interface et1
switch(config-path-group-mpls)#peer static router-ip [Link]
switch(config-peer-router-ip-[Link]-mpls)#ipv4 address [Link]
switch(config-peer-router-ip-[Link]-mpls)#path-group internet
switch(config-path-group-internet)#local interface et2
switch(config-path-group-internet)#peer static router-ip [Link]
switch(config-peer-router-ip-[Link]-internet)#ipv4 address [Link]
switch(config-peer-router-ip-[Link]-internet)#path-group lte
switch(config-path-group-lte)#local interface et3
switch(config-path-group-lte)#peer static router-ip [Link]
switch(config-peer-router-ip-[Link]-lte)#ipv4 address [Link]
173
LTE path [Link] -- [Link].
Syntax
interface Ethernet100 no switchport ip address [Link]/24
Example
switch(config)#interface loopback 0
switch(config-if-Lo0)#ip address [Link]/32
switch(config-if-Lo0)#interface vxlan1
switch(config-if-Vx1)#vxlan source-interface loopback 0
switch(config-if-Vx1)#vxlan udp-port 4789
switch(config-if-Vx1)#vxlan vrf vrf1 vni 100
BGP runs on the same loopback IP as VXLAN source interface IP. In the above example BGP runs on
ips [Link], [Link], and [Link] on each peer.
For underlay routing add the remote peer routes via DPS interface and statically add an ARP entry for
remote peer. In future versions of EOS the underlay routing also be handled by BGP.
Example
174
Dynamic Path Selection
Syntax
path-group <name> ipsec profile <ipsec-profile-name> Applying IPsec profile will cause all the paths
in the path group to be encrypted based on the algorithms and authentication mechanisms as per the
profile.
Syntax
router path-selection load-balance policy <name> latency <milliseconds> jitter <milliseconds> loss-rate
<0.00-100.00 percentage> path-group <group-name> [ priority <number>] path-group <group-name>
The commands are explained in the following subsections.
Syntax
router path-selection load-balance policy <name> path-group <group-name> path-group <group-
name>
When multiple path-groups are specified flows are load balanced across all the paths in the specified
path-groups.
Example
For example, configuring load balancing for best effort traffic across 1 MPLS path and 4 Internet paths.
switch(config)#router path-selection
switch(config-dynamic-path-selection)#load-balance policy best-effort
switch(config-load-balance-policy-best-effort)#path-group mpls
switch(config-load-balance-policy-best-effort)#path-group internet
Syntax
router path-selection load-balance policy <name> latency <milliseconds> jitter <milliseconds> loss-rate
<0.00-100.00 percentage>
Latency, jitter and loss-rate constraints can be specified for path selection. There can be more than
one path that meets the constraints in which case the flows are load balanced across all the selected
paths. All constraints need to be met. If none of the paths meet the constraints, then the path with the
lowest loss rate is chosen as the best path.
Example
For example, configuring load balancing for voice traffic with preference for paths with latency less
than 50ms, loss at 1%.
175
switch(config-load-balance-policy-voice)#path-group mpls
switch(config-load-balance-policy-voice)#path-group internet
switch(config-load-balance-policy-voice)#latency 50
switch(config-load-balance-policy-voice)#loss-rate 1
In this case, the traffic is load balanced across all the paths that meet the constraints. If none matches
then the traffic is sent to the best path.
Syntax
router path-selection load-balance policy <name> path-group <group-name> [ priority <number>] path-
group <group-name>
Preference can be specified for path-groups. Flows are load balanced based on path group priority.
The lower the number the higher the priority is given to the path group. If not specified, default policy
is 1 (highest). If multiple path groups in the same load-balance profile have same priority traffic will be
load balanced among them. If no paths in a path-group are available then paths from the next lower
priority is considered. Paths may not be available because of the following reasons:
1. Interface is down
2. Route is not resolved
3. Path keepalives have failed
4. Specified constraints for the load balancing policy is not met
Example
For example, configuring load balancing for voice traffic with MPLS path preference and Internet as
backup.
When MPLS path is down then all the existing flows are forwarded through Internet paths. When
MPLS path is up again, all the new flows are forwarded through MPLS paths.
Syntax
application traffic recognition application ipv4 http-8080 { protocol <proto> [ destination-port
{ <port_num> | <port-range> } ] } protocol tcp destination-port 8080 protocol tcp destination-port 8000
application ipv4 app2-service protocol tcp destination-port 8001-8080
Applications is specified either with custom signatures specified using the application configuration
as shown above or can be imported from a DPI engine. Application configuration might have to be
extended to address the path-selection use case.
Syntax
Applications can be grouped and other attributes like the traffic class can be specified using
application-profile as below.
application traffic recognition application-profile <app-xyz> application <app-name-1> application <app-
name-2>
176
Dynamic Path Selection
Example
Traffic-class is used for QoS in the datapath for path selection, queuing, rate limiting, and for other
QoS configuration. This example is for “platinum” application profile for all critical traffic like voice.
Syntax
router path-selection policy <dps-policy-name> <rule key> application-profile <profile-name> load-
balance <load balance policy name> <rule key> application-profile <profile-name> load-balance <load
balance policy name>
Sequence numbers are required since a flow can potentially match multiple application profiles. Also,
we have “set load-balance” as a sub-mode so we can add other actions for “match application-profile”.
Example
switch(config)#router path-selection
switch(config-dynamic-path-selection)#policy dynamic
switch(config-policy-dynamic)#10 application-profile voice
switch(config-policy-rule-key-10-dynamic)#load-balance voice
switch(config-policy-rule-key-10-dynamic)#20 application-profile best
switch(config-policy-rule-key-20-dynamic)#load-balance best
Syntax
router path-selection vrf <vrf-name> path-selection-policy <policy-name>
VRF “all” can be specified to apply policy on all VRFs. In case both “all” and per VRF policy is
specified, only the per VRF policy is applied.
The policy (classification and load balancing) needs to be applied to the datapath once it is determined
that traffic is going from site to site. This is done to avoid the classification overhead for LAN to LAN
traffic. When policy is applied on a VRF it is actually applied on the egress direction on the hidden SVI
interface for the VTI (VXLAN tunnel interface). If there is no VTI configured then this policy is ignored.
When policy is applied on a VRF it is actually applied on the egress direction on the hidden SVI
interface for the VTI (VXLAN tunnel interface) as shown below. If there is no VTI configured then this
policy is ignored.
177
Example
switch(config)#router path-selection
switch(config-dynamic-path-selection)#vrf red
switch(config-vrf-red)#path-selection-policy production
switch(config-vrf-red)#
Syntax
router path-selection encapsulation path-telemetry udp port <number>
Example
switch(config)#router path-selection
switch(config-dynamic-path-selection)#encapsulation path-telemetry udp
port 4794
Note: That applications like Voice, Skype-Voice, SCP, FTP in the example below is defined
under “application traffic recognition” but is not shown below.
178
Dynamic Path Selection
Example 1
Example 2
Site-1
switch(config)#router path-selection
switch(config-dynamic-path-selection)#path-group 1
switch(config-path-group-1)#local interface ethernet 5
!
switch(config-path-group-1)#peer static router-ip [Link]
switch(config-peer-router-ip-[Link]-1)#ipv4 address
[Link]
!
179
switch(config-peer-router-ip-[Link]-1)#load-balance
policy policy-1
switch(config-load-balance-policy-policy-1)#path-group 1
!
switch(config-load-balance-policy-policy-1)#policy policy-1
switch(config-policy-policy-1)#default-match
switch(config-policy-default-rule-policy-1)#load-balance
policy-1
!
switch(config-policy-default-rule-policy-1)#vrf default
switch(config-vrf-default)#path-selection-policy policy-1
!
switch(config-dynamic-path-selection)#vrf et1
switch(config-vrf-et1)#path-selection-policy policy-1
!
switch(config-vrf-et1)#vrf instance et1
switch(config-vrf-et1)#interface ethernet 1
switch(config-if-Et1)#description LAN-interface
switch(config-if-Et1)#no switchport
switch(config-if-Et1)#ip address [Link]/24
!
switch(config)#vrf instance et1
switch(config-vrf-et1)#interface ethernet 1
switch(config-if-Et1)#description LAN-interface
switch(config-if-Et1)#no switchport
switch(config-if-Et1)#ip address [Link]/24
!
switch(config-if-Et1)#interface ethernet 5
switch(config-if-Et5)#description WAN-Interface
switch(config-if-Et5)#no switchport
switch(config-if-Et5)#ip address [Link]/24
!
switch(config-if-Et5)#interface ethernet 100
switch(config-if-Et100)#no switchport
switch(config-if-Et100)#ip address [Link]/24
!
switch(config-if-Et100)#interface loopback 1
switch(config-if-Lo1)#ip address [Link]/32
!
switch(config-if-Lo1)#interface vxlan 1
switch(config-if-Vx1)#vxlan source-interface loopback 1
switch(config-if-Vx1)#vxlan udp-port 4789
switch(config-if-Vx1)#vxlan vrf et1 vni 5
!
switch(config-if-Vx1)#ip route [Link]/32 ethernet 100
!
switch(config)#arp [Link] 22:22:22:22:22:22 arpa
!
switch(config)#ip routing
switch(config)#ip routing vrf et1
!
switch(config)#router bgp 32
switch(config-router-bgp)#neighbor [Link] remote-as 501
switch(config-router-bgp)#neighbor [Link] maximum-routes
12000
switch(config-router-bgp)#neighbor [Link] remote-as 43
switch(config-router-bgp)#neighbor [Link] update-source
loopback 1
switch(config-router-bgp)#neighbor [Link] ebgp-multihop
switch(config-router-bgp)#neighbor [Link] send-community
extended
switch(config-router-bgp)#neighbor [Link] maximum-routes
12000
switch(config-router-bgp)#redistribute static
180
Dynamic Path Selection
!
switch(config-router-bgp)#address-family evpn
switch(config-router-bgp-af)#neighbor [Link] activate
!
switch(config-router-bgp-af)#exit
switch(config-router-bgp)#address-family ipv4
switch(config-router-bgp-af)#no neighbor [Link] activate
switch(config-router-bgp-af)#exit
!
switch(config)#router bgp 32
switch(config-router-bgp)#vrf et1
switch(config-router-bgp-vrf-et1)#rd [Link]:0
switch(config-router-bgp-vrf-et1)#route-target import evpn
[Link]:0
switch(config-router-bgp-vrf-et1)#route-target export evpn
[Link]:0
switch(config-router-bgp-vrf-et1)#router-id [Link]
switch(config-router-bgp-vrf-et1)#network [Link]/24
switch(config-router-bgp-vrf-et1)#network [Link]/24
switch(config-router-bgp-vrf-et1)#exit
switch(config-router-bgp)#exit
switch(config)#
----------------------------------------------------------------------
-----------
Site-2
switch(config)#router path-selection
switch(config-dynamic-path-selection)#path-group 1
switch(config-path-group-1)#local interface ethernet 1
!
switch(config-path-group-1)#peer static router-ip [Link]
switch(config-peer-router-ip-[Link]-1)#ipv4 address
[Link]
!
switch(config-peer-router-ip-[Link]-1)#load-balance
policy policy-1
switch(config-load-balance-policy-policy-1)#path-group 1
!
switch(config-load-balance-policy-policy-1)#policy policy-1
switch(config-policy-policy-1)#default-match
switch(config-policy-default-rule-policy-1)#load-balance
policy-1
!
switch(config-policy-default-rule-policy-1)#vrf default
switch(config-vrf-default)#path-selection-policy policy-1
!
switch(config-dynamic-path-selection)#vrf et5
switch(config-vrf-et5)#path-selection-policy policy-1
!
switch(config-vrf-et5)#vrf instance et5
switch(config-vrf-et5)#interface ethernet 1
switch(config-if-Et1)#description WAN-Interface
switch(config-if-Et1)#no switchport
switch(config-if-Et1)#ip address [Link]/24
!
switch(config)#vrf instance et5
switch(config-vrf-et5)#interface ethernet 5
switch(config-if-Et5)#description LAN-interface
switch(config-if-Et5)#no switchport
switch(config-if-Et5)#ip address [Link]/24
!
switch(config-if-Et5)#interface ethernet 100
switch(config-if-Et100)#no switchport
181
switch(config-if-Et100)#ip address [Link]/24
!
switch(config-if-Et100)#interface loopback 1
switch(config-if-Lo1)#ip address [Link]/32
!
switch(config-if-Lo1)#interface vxlan 1
switch(config-if-Vx1)#vxlan source-interface loopback 1
switch(config-if-Vx1)#vxlan udp-port 4789
switch(config-if-Vx1)#vxlan vrf et5 vni 5
!
switch(config-if-Vx1)#ip route [Link]/32 ethernet 100
!
switch(config)#arp [Link] 11:11:11:11:11:11 arpa
!
switch(config)#ip routing
switch(config)#ip routing vrf et5
!
switch(config)#router bgp 43
switch(config-router-bgp)#maximum-paths 16
switch(config-router-bgp)#neighbor [Link] remote-as 701
switch(config-router-bgp)#neighbor [Link] maximum-routes
12000
switch(config-router-bgp)#neighbor [Link] remote-as 32
switch(config-router-bgp)#neighbor [Link] update-source
loopback 1
switch(config-router-bgp)#neighbor [Link] ebgp-multihop
switch(config-router-bgp)#neighbor [Link] send-community
extended
switch(config-router-bgp)#neighbor [Link] maximum-routes
12000
!
switch(config-router-bgp)#address-family evpn
switch(config-router-bgp-af)#neighbor [Link] activate
switch(config-router-bgp-af)#exit
!
switch(config-router-bgp)#address-family ipv4
switch(config-router-bgp-af)#no neighbor [Link] activate
switch(config-router-bgp-af)#exit
!
switch(config)#router bgp 40
switch(config-router-bgp)#vrf et5
switch(config-router-bgp-vrf-et5)#rd [Link]:0
switch(config-router-bgp-vrf-et5)#route-target import evpn
[Link]:0
switch(config-router-bgp-vrf-et5)#route-target export evpn
[Link]:0
switch(config-router-bgp-vrf-et5)#router-id [Link]
switch(config-router-bgp-vrf-et5)#network [Link]/24
switch(config-router-bgp-vrf-et5)#network [Link]/24
switch(config-router-bgp-vrf-et5)#exit
switch(config-router-bgp)#exit
switch(config)#
182
Dynamic Path Selection
• The show monitor telemetry path counters displays the input output bytes and packets
and flow information.
183
OutPktsDrop: 0
Both path characteristics and path counters show results can be filtered by path name, destination IP,
source IP, remote IP and traffic class. And both of them have detail version output and brief version
output, default version is brief version as shown.
• The show ip security connection path name command displays IPsec path connections
based on the path name.
• Theshow ip security connection path peer command displays the IPsec path
connections based on the remote router IP.
184
Dynamic Path Selection
• The show path-selection load-balance counters detail command displays for every
( application profile, overlay VRF and remote IP ), per path group flow count, out bytes, out packets
and the throughput of path group.
transit1
path1 0 0.00 1321 17
Syntax
Clear load balancing and application counters:
185
clear path-selection counters Clear path telemetry counters:
clear monitor telemetry path counters
14.5 Troubleshooting
In order for DPS to work, the following needs to be working.
1. Verify the paths are in the “Estab” or “Estab IPSec” state using “show path-selection paths”
command. If the path is not in established state.
• ARP Pending - Make sure the next-hop to the path destination IP is available.
• Route Pending - Make sure a route to the path destination IP is available through the local
interface for the path.
• IPSec Pending - Check IPSec connection with “show ip security connection” or other IPSec
related commands between the path’s local interface and the path’s destination.
2. If the paths are in Estab state, verify the paths are active and available using “show monitor
telemetry path characteristics”
•If a path is inactive, make sure IP connectivity is working between the path’s source IP/interface
and destination IP. Ping the path destination with the path source IP could be one of the ways
to verify this. And also, to check the configuration and make sure that the paths are configured
symmetrically on both sites.
• Check and make sure there are DPS communications between the source and destination IPs
using TCP dump on et100.
3. Paths are active but ping between loopbacks of the two sites is not working. Loopbacks should be
reachable through overlay.
•Check your interface VXLAN1 configuration.
•Check and make sure you have applied a policy with default match to your “vrf default”
configuration in DPS.
4. Site-to-Site loopback IPs are reachable but data traffic is not going through.
• Check your EVPN configuration. Make sure the remote routes are in your VRF route table of
your sites.
• Make sure your DPS configuration has proper policy, application profile, default match and load-
balance profile
14.6 Limitations
1. DPS currently supports VNI number from 1 to 255 only.
2. The same interface cannot be configured as a local interface in different DPS path groups.
3. DPS WAN interfaces/local interfaces configured in path groups should be in default VRF.
4. DPS does not work with port translation currently.
186
Chapter 15
ECMP
Equal-cost multi-path routing (ECMP) is a routing plan of action where next-hop packet forwarding
to a single destination takes place over multiple "best paths" which tie for top place in routing metric
calculations. Use multi-path routing in conjunction with most routing protocols, because it is a per-hop
decision limited to a single router.
• Adding ECMP
veos#configure terminal
veos(config)#router bgp 65112
veos(config-router-bgp)#maximum-paths 16
4. When ECMP starts, and there are multiple routes, display output may be similar to the following
example.
VRF: default
Codes: C - connected, S - static, K - kernel,
O - OSPF, IA - OSPF inter area, E1 - OSPF external type 1,
E2 - OSPF external type 2, N1 - OSPF NSSA external type 1,
N2 - OSPF NSSA external type2, B I - iBGP, B E - eBGP,
R - RIP, I L1 - IS-IS level 1, I L2 - IS-IS level 2,
O3 - OSPFv3, A B - BGP Aggregate, A O - OSPF Summary,
NG - Nexthop Group Static Route, V - VXLAN Control Service,
DH - DHCP client installed default route, M - Martian
187
5. To determine the route that the interface traffic takes to specific addresses, issue the bash ip
route get <address> command to determine which link the traffic uses. In the following
example, traffic to [Link] takes Tunnel1, while traffic to [Link] takes Tunnel3.
For additional information regarding ECMP, refer to the current release notes.
188
Chapter 16
Auto VPN
AutoVPN is a feature that facilitates the easy setup and configuration of an enterprise WAN network,
which could encompass multiple branches, transit hubs, data centers, and cloud deployments. It offers
the following capabilities:
• Automatic endpoint discovery
• Secure IPsec key exchange and key rotation between endpoints without requiring a full mesh
configuration.
• Dynamic adaptation to WAN IP changes.
Pre-configuration Requirements
Since many of the Caravan features are currently unavailable in the standard CloudEOS release
image, users must activate specific toggles on the CloudEOS router to enable these features behind
the scenes.
• Please ensure that the routing model used is multi-agent by configuring it using the following
command: service routing protocols model multi-agent. This will require a reboot to
take effect.
• Below are the steps to enable the right set of toggles:
1. Create a file under /mnt/flash and name it toggle_override
2. If this file already exists, you can directly modify it.
Note: The same toggle needs to be enabled on both the edges and the Pathfinder.
3. Add the below mentioned lines in the file to enable the required features and save the file (a
reboot will be needed for the features to be enabled).
Avt=1
BgpDps=1
SfeDpi=1
DpsPathMtu=1
ClassificationDpi=1
Stun=1
IpsecKeyController=1
DpsPatSupport=1
BgpLsProducerDps=1
BgpLsConsumerDps=1
ArBgpAddPathSendCapLinkState=1
SrTeDpsPolicy=1
Security Considerations
In typical deployments, there might be a Firewall (FW) situated in the path between an edge device
and the Pathfinder or another edge device. To ensure that DPS/Auto-VPN connections can be
established successfully, certain ports need to be opened in the FW's security settings. These ports
facilitate the necessary communication for the DPS/Auto-VPN functionality.
189
To enable DPS/Auto-VPN connections through the Firewall, the following ports should be opened:
• IKE: Port 500 (UDP)
• IPsec: Port 4500 (UDP)
• STUN: Port 3478 (UDP)
• ESP: Protocol 50
• If no encryption: Port 4793
switch(config)#interface loopback 0
switch(config-if-Lo0)#
switch(config-if-Lo0)#ip address [Link]/32
2. To configure interface VXLAN 1, use the command interface vxlan. This command will set the
switch to the interface VXLAN mode for VXLAN 1.
switch(config)#interface vxlan 1
switch(config-if-Vx1)#vxlan source-interface loopback 0
switch(config-if-Vx1)#vxlan udp-port 4789
switch(config-if-Vx1)#vxlan vrf default vni 101
3. To configure STUN, utilize the stun command. This command will set the switch to the STUN
mode.
switch(config)#stun
switch(config-stun)#server
switch(config-stun-server)#local-interface ethernet 1
switch(config-stun-server)#router path-selection
switch(config-dynamic-path-selection)#peer dynamic source stun
switch(config-dynamic-path-selection)#path-group internet
switch(config-path-group-internet-0)#local interface ethernet 1
switch(config-internet-interface-Ethernet1)#
4. The ipsec command is available for IPsecurity configuration, but it is important to note that it is
optional. IPsec is not required for DPS/AutoVPN to function correctly.
switch(config)#ip security
switch(config-ipsec)#ike policy ikepolicyCDApp
switch(config-ipsec-ike)#local-id [Link]
switch(config-ipsec-ike)#sa policy sapolicyCDApp
switch(config-ipsec-sa)#profile profileCDApp
switch(config-ipsec-profile)#ike-policy ikepolicyCDApp
switch(config-ipsec-profile)#sa sapolicyCDApp
switch(config-ipsec-profile)#connection start
switch(config-ipsec-profile)#shared-key 7 <pre-shared key in clear text
shown by the running config>
switch(config-ipsec-profile)#dpd 10 50 clear
switch(config-ipsec-profile)#mode transport
switch(config-ipsec-profile)#router path-selection
switch(config-dynamic-path-selection)#path-group internet
switch(config-path-group-internet-0)#ipsec profile profileCDApp
autovpn-transit1(config-path-group-internet-0)#
5. Create a DPS1 interface using the interface dps command.
switch(config)#interface dps 1
190
Auto VPN
switch(config-if-Dp1)#
6. Configure the Load Balance policies and the DPS policies as shown in the below example.
switch(config)#router path-selection
switch(config-dynamic-path-selection)#load-balance policy dps-lb-policy
-default
switch(config-load-balance-policy-dps-lb-policy-default)#path-group
internet
---------------------------------------------------------------------
---------------------------
switch(config)#router path-selection
switch(config-dynamic-path-selection)#policy dps-policy-default
switch(config-policy-dps-policy-default)#default-match
switch(config-policy-default-rule-dps-policy-default)#load-balance dps-
lb-policy-default
switch(config-policy-default-rule-dps-policy-default)#vrf default
switch(config-vrf-default)#path-selection-policy dps-policy-default
switch(config-vrf-default)#
7. To configure BGP (Border Gateway Protocol), use the router bgp command. The BGP
configuration is essential for distributing IPsec keys, DPS information, and route updates using BGP
path attributes and extended communities.
daemon TerminAttr
exec /usr/bin/TerminAttr -cvaddr=[Link]
[Link] -cvcompression=gzip -taillogs -cvauth=token-secure,/tmp/
token-secure -smashexcludes=ale,flexCounter,hardware,kni,pulse,st
191
rata,flowtracking/hardware -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/
cell/2/agent -disableaaa
no shutdown
Note: Please refer the EOS guide [Link] for more information
about the commands.
switch(config)#interface loopback 0
switch(config-if-Lo0)#
switch(config-if-Lo0)#ip address [Link]/32
2. To configure interface VXLAN 1, use the command interface vxlan. This command will set the
switch to the interface VXLAN mode for VXLAN 1.
switch(config)#interface vxlan 1
switch(config-if-Vx1)#vxlan source-interface loopback 0
switch(config-if-Vx1)#vxlan udp-port 4789
switch(config-if-Vx1)#vxlan vrf default vni 101
3. To configure STUN, use the stun command. This command will set the switch to the STUN mode.
switch(config)#stun
switch(config-stun)#client
switch(config-stun-client)#server-profile profile1
switch(config-stun-server-profile)#ip address [Link]
switch(config-stun-server-profile)#router path-selection
switch(config-dynamic-path-selection)#path-group internet
switch(config-path-group-internet-0)#local interface ethernet 1
switch(config-internet-interface-Ethernet1)#stun server-profile
profile1
switch(config-internet-interface-Ethernet1)#peer static router-ip
[Link]
switch(config-peer-router-ip-[Link]-internet)#ipv4 address
[Link]
switch(config-peer-router-ip-[Link]-internet)#
4. To configure dynamic DPS, use the command peer dynamic.
switch(config)#router path-selection
switch(config-dynamic-path-selection)#path-group internet
switch(config-path-group-internet-0)#peer dynamic
switch(config-peer-dynamic-internet)#
5. The ipsec command is available for IPsecurity configuration.
switch(config)#ip security
switch(config-ipsec)#ike policy ikepolicyCDApp
switch(config-ipsec-ike)#local-id [Link]
switch(config-ipsec-ike)#sa policy sapolicyCDApp
switch(config-ipsec-sa)#profile profileCDApp
switch(config-ipsec-profile)#ike-policy ikepolicyCDApp
switch(config-ipsec-profile)#sa-policy sapolicyCDApp
switch(config-ipsec-profile)#connection start
switch(config-ipsec-profile)#shared-key 7
switch(config-ipsec-profile)#dpd 10 50 clear
switch(config-ipsec-profile)#mode transport
192
Auto VPN
switch(config-ipsec-profile)#key controller
switch(config-ipsec-profile)#profile profileCDApp
switch(config-ipsec-profile)#router path-selection
switch(config-dynamic-path-selection)#path-group internet
switch(config-path-group-internet-0)#ipsec profile profileCDApp
autovpn-transit1(config-path-group-internet-0)#
6. Create a DPS1 interface using the interface dps command.
switch(config)#interface dps 1
switch(config-if-Dp1)#
7. Configure the Load Balance policies and the DPS policies as shown in the below example.
Note: It is assumed that BGP neighborship configuration has already been done at the
Pathfinder.
9. To configure Terminattr, follow these steps.
daemon TerminAttr
exec /usr/bin/TerminAttr -cvaddr=[Link]
[Link] -cvcompression=gzip -taillogs -cvauth=token-secure,/tmp/
193
token-secure -smashexcludes=ale,flexCounter,hardware,kni,pulse,st
rata,flowtracking/hardware -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/
cell/2/agent -disableaaa
no shutdown
!
Note: Please refer the EOS guide [Link] for more information
about the commands.
The Telemetry state comes up and the Route state become IPsec established after the IPsec
profile is applied to Router path selection
As soon as the load-balance and DPS policies are created and applied to a path-group (Internet)
that also exists at the edge, the DPS/IPsec dynamic tunnels (Auto-VPN) come up
Note: It is assumed that BGP neighborship configuration has already been done at the
edges.
194
Auto VPN
Refreshed
----- ------------------------ --------------------- -------------
-------- ------------
dps 00000001c0c0650100000000 [Link]:4500 [Link]:4500
0:00:01 ago
• DPS Verification Commands
• DPS status when no IPsec profile is configured:
195
1. To configure loopback0, utilize the command interface Loopback. This command will set the
switch to the interface loopback mode.
switch(config)#interface loopback 0
switch(config-if-Lo0)#
switch(config-if-Lo0)#ip address [Link]/32
2. To configure interface VXLAN 1, use the command interface vxlan. This command will set the
switch to the interface VXLAN mode for VXLAN 1.
switch(config)#interface vxlan 1
switch(config-if-Vx1)#vxlan source-interface loopback 0
switch(config-if-Vx1)#vxlan udp-port 4789
switch(config-if-Vx1)#vxlan vrf default vni 101
3. To configure STUN, use the stun command. This command will set the switch to the STUN mode.
switch(config)#stun
switch(config-stun)#client
switch(config-stun-client)#server-profile profile1
switch(config-stun-server-profile)#ip address [Link]
switch(config-stun-server-profile)#router path-selection
switch(config-dynamic-path-selection)#path-group internet
switch(config-path-group-internet-0)#local interface ethernet 1
switch(config-internet-interface-Ethernet1)#stun server-profile
profile1
switch(config-internet-interface-Ethernet1)#peer static router-ip
[Link]
switch(config-peer-router-ip-[Link]-internet)#ipv4 address
[Link]
switch(config-peer-router-ip-[Link]-internet)#
4. To configure dynamic DPS, use the command peer dynamic.
switch(config)#router path-selection
switch(config-dynamic-path-selection)#path-group internet
switch(config-path-group-internet-0)#peer dynamic
switch(config-peer-dynamic-internet)#
5. The ipsec command is available for IPsecurity configuration.
switch(config)#ip security
switch(config-ipsec)#ike policy ikepolicyCDApp
switch(config-ipsec-ike)#local-id [Link]
switch(config-ipsec-ike)#sa policy sapolicyCDApp
switch(config-ipsec-sa)#profile profileCDApp
switch(config-ipsec-profile)#ike-policy ikepolicyCDApp
switch(config-ipsec-profile)#sa-policy sapolicyCDApp
switch(config-ipsec-profile)#connection start
switch(config-ipsec-profile)#shared-key 7
switch(config-ipsec-profile)#dpd 10 50 clear
switch(config-ipsec-profile)#mode transport
switch(config-ipsec-profile)#key controller
switch(config-ipsec-profile)#profile profileCDApp
switch(config-ipsec-profile)#router path-selection
switch(config-dynamic-path-selection)#path-group internet
switch(config-path-group-internet-0)#ipsec profile profileCDApp
autovpn-transit1(config-path-group-internet-0)#
6. Create a DPS1 interface using the interface dps command.
switch(config)#interface dps 1
switch(config-if-Dp1)#
196
Auto VPN
7. Configure the Load Balance policies and the DPS policies as shown in the below example.
Note: It is assumed that BGP neighborship configuration has already been done at the
Pathfinder.
9. To configure Terminattr, follow these steps.
daemon TerminAttr
exec /usr/bin/TerminAttr -cvaddr=[Link]
[Link] -cvcompression=gzip -taillogs -cvauth=token-secure,/tmp/
token-secure -smashexcludes=ale,flexCounter,hardware,kni,pulse,st
rata,flowtracking/hardware -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/
cell/2/agent -disableaaa
no shutdown
!
Note: Please refer the EOS guide [Link] for more information
about the commands.
197
At the Transit Node(AT1)
• DPS Verification Commands
The commands in bold above (path2) provides the details of the AutoVPN (DPS+IPsec dynamic
tunnel) path between the transit router and the edge node (AE2).
• IPsec Verification Command
198
Auto VPN
The commands in bold above (path2) provides the details of the AutoVPN (aka DPS+IPsec
dynamic tunnel) path b/w the transit router and the edge node (AE2)
• IPsec Verification Command
switch(config)#interface loopback 0
switch(config-if-Lo0)#
switch(config-if-Lo0)#ip address [Link]/32
2. To configure interface VXLAN 1, use the command interface vxlan. This command will set the
switch to the interface VXLAN mode for VXLAN 1.
switch(config)#interface vxlan 1
switch(config-if-Vx1)#vxlan source-interface loopback 0
switch(config-if-Vx1)#vxlan udp-port 4789
switch(config-if-Vx1)#vxlan vrf default vni 101
3. To configure STUN, use the stun command. This command will set the switch to the STUN mode.
switch(config)#stun
switch(config-stun)#client
switch(config-stun-client)#server-profile profile1
switch(config-stun-server-profile)#ip address [Link]
switch(config-stun-server-profile)#router path-selection
switch(config-dynamic-path-selection)#path-group internet
switch(config-path-group-internet-0)#local interface ethernet 1
switch(config-internet-interface-Ethernet1)#stun server-profile
profile1
switch(config-internet-interface-Ethernet1)#peer static router-ip
[Link]
switch(config-peer-router-ip-[Link]-internet)#ipv4 address
[Link]
switch(config-peer-router-ip-[Link]-internet)#
4. To configure dynamic DPS, use the command peer dynamic.
switch(config)#router path-selection
switch(config-dynamic-path-selection)#path-group internet
switch(config-path-group-internet-0)#peer dynamic
switch(config-peer-dynamic-internet)#
5. The ipsec command is available for IPsecurity configuration.
switch(config)#ip security
switch(config-ipsec)#ike policy ikepolicyCDApp
switch(config-ipsec-ike)#local-id [Link]
switch(config-ipsec-ike)#sa policy sapolicyCDApp
switch(config-ipsec-sa)#profile profileCDApp
199
switch(config-ipsec-profile)#ike-policy ikepolicyCDApp
switch(config-ipsec-profile)#sa-policy sapolicyCDApp
switch(config-ipsec-profile)#connection start
switch(config-ipsec-profile)#shared-key 7
switch(config-ipsec-profile)#dpd 10 50 clear
switch(config-ipsec-profile)#mode transport
switch(config-ipsec-profile)#key controller
switch(config-ipsec-profile)#profile profileCDApp
switch(config-ipsec-profile)#router path-selection
switch(config-dynamic-path-selection)#path-group internet
switch(config-path-group-internet-0)#ipsec profile profileCDApp
autovpn-transit1(config-path-group-internet-0)#
6. Create a DPS1 interface using the interface dps command.
switch(config)#interface dps 1
switch(config-if-Dp1)#
7. Configure the Load Balance policies and the DPS policies as shown in the below example.
Note: It is assumed that BGP neighborship configuration has already been done at the
Pathfinder.
200
Auto VPN
daemon TerminAttr
exec /usr/bin/TerminAttr -cvaddr=[Link]
[Link] -cvcompression=gzip -taillogs -cvauth=token-secure,/tmp/
token-secure -smashexcludes=ale,flexCounter,hardware,kni,pulse,st
rata,flowtracking/hardware -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/
cell/2/agent -disableaaa
no shutdown
!
Note: Please refer the EOS guide [Link] for more information
about the commands.
16.1.7 Verification Commands between the Edge AE3 and Pathfinder as well as
other Transit Nodes
The following verification commands are used between the Edge AE3 and Pathfinder as well as other
Transit Nodes.
At the Pathfinder
• The show stun server bindings command is used to verify the STUN configuration.
Theshow stun server bindings command shows the IP/Port bindings for both the edge
nodes (AE2, AE3) and the transit node.
201
• IPsec Verification Command
Refreshed
----- ------------------------ --------------------- -------------
-------- ------------
dps 00000001c0c0670100000000 [Link]:4500 [Link]
6:4500 0:01:51 ago
• DPS Verification Commands
The highlighted commands (path2 and path3) furnish information about the AutoVPN (DPS+IPsec
dynamic tunnel) route connecting the transit router to the respective edge node (AE3), as well as
between the two edge nodes (AE2 and AE3).
The Path1 is the static DPS tunnel between the edge (AE3) and the Pathfinder
202
Auto VPN
daemon TerminAttr
exec /usr/bin/TerminAttr -cvaddr=[Link]
[Link] -cvcompression=gzip -taillogs -cvauth=token-secure,/tmp/
token-secure -smashexcludes=ale,flexCounter,hardware,kni,pulse,st
rata,flowtracking/hardware -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/
cell/2/agent -disableaaa
no shutdown
!
203
router path-selection
peer dynamic source stun
!
path-group Internet
local interface Ethernet1
ipsec profile profileCDApp
!
load-balance policy dps-lb-policy-default
path-group Internet
!
policy dps-policy-default
default-match
load-balance dps-lb-policy-default
!
vrf default
path-selection-policy dps-policy-default
!
ip security
ike policy ikepolicyCDApp
local-id [Link]
!
sa policy sapolicyCDApp
!
profile profileCDApp
ike-policy ikepolicyCDApp
sa-policy sapolicyCDApp
connection start
shared-key 7 <pre-shared key in clear text>
dpd 10 50 clear
mode transport
!
interface Loopback0
ip address [Link]/32
!
interface Vxlan1
vxlan source-interface Loopback0
vxlan udp-port 4789
vxlan vrf default vni 101
!
interface Dps1
!
router bgp 65000
router-id [Link]
maximum-paths 16
neighbor autovpnEdges peer group
neighbor autovpnEdges remote-as 65000
neighbor autovpnEdges update-source Loopback0
neighbor autovpnEdges route-reflector-client
neighbor autovpnEdges send-community extended
neighbor autovpnEdges maximum-routes 12000
neighbor [Link] peer group autovpnEdges
neighbor [Link] remote-as 65000
neighbor [Link] peer group autovpnEdges
neighbor [Link] remote-as 65000
neighbor [Link] peer group autovpnEdges
neighbor [Link] remote-as 65000
!
address-family ipv4
no neighbor autovpnEdges activate
!
address-family path-selection
neighbor autovpnEdges activate
204
Auto VPN
stun
server
local-interface Ethernet1
!
2. Add the Pathfinder1 as BGP neighbor.
address-family ipv4
no neighbor autovpnEdges activate
!
address-family path-selection
neighbor PATHFINDERS activate
neighbor PATHFINDERS additional-paths receive
neighbor PATHFINDERS additional-paths send any
!
3. Add the same BGP configuration as above on Pathfinder 1 to complete the BGP neighborship
between the two Pathfinders.
4. Create Static DPS connection between the two Pathfinders. A Static DPS connection is created
between the two pathfinders for exchanging BGP address families.
router path-selection
path-group Internet
peer static router-ip [Link] <<<Lo0 IP address of the
Pathfinder 1>>>
ipv4 address [Link]
!
Note: Add the same configuration (while changing the IP to that of PF2 Lo) as above on
Pathfinder 1 as well.
5. Add configuration on all the edges nodes to add PF2 as the second pathfinder.
a. DPS configuration and STUN profile.
router path-selection
path-group Internet
local interface Ethernet1
stun server-profile profile1 profile2 <<< profile2 is
the STUN server profile for PF2 >>>
!
peer static router-ip [Link]
ipv4 address 54.x.y.z <<< public IP
address for the Pathfinder >>>
peer static router-ip [Link]
ipv4 address 35.x.y.z
!
205
b. BGP configuration.
stun
client
server-profile profile1
ip address 54.x.y.z
server-profile profile2 <<< adding the stun server
profile for the 2nd Pathfinder >>>
ip address 35.x.y.z
!
206
Auto VPN
207
16.3.1 stun
The stun command activates the STUN configuration mode for the switch.
The no stun and default stun commands restore the default setting by deleting the
corresponding stun command from running-config.
Command Mode
Global Configuration
Command Syntax
stun
no stun
default stun
Parameters
• client: Configure STUN client
• server: Configure STUN server
Example
The stun command activates the STUN configuration mode for the switch.
switch(config)#stun
switch(config-stun)#
208