Application Hosting

A hosted application is a software as a service (SaaS) solution, and it can be run remotely using commands. Application hosting gives administrators a platform for leveraging their own tools and utilities.


Note


Application hosting supports only Docker application.


This module describes the Application Hosting feature and how to enable it.

Restrictions for Application Hosting

  • Application hosting is not virtual routing and forwarding aware (VRF-aware).

  • In releases prior to Cisco IOS XE Amsterdam 17.3.3, application hosting requires dedicated storage allocations, and is disabled on the bootflash.

    In Cisco IOS XE Amsterdam 17.3.3 and later releases, application hosting is enabled on the bootflash, however, only Cisco-signed applications are hosted.

  • The front-panel Universal Serial Bus (USB) stick is not supported.

    Cisco Catalyst 9300 Series Switches support only back-panel Cisco-certified USB.

  • Cisco Catalyst 9500-High Performance Series Switches and Cisco Catalyst 9600 Series Switches do not support front-panel USB for application hosting.

  • Cisco Catalyst 9500 and 9500-High Performance Series Switches and Cisco Catalyst 9600 Series Switches do not support AppGigabitEthernet interfaces.

  • Cisco Catalyst 9410R Switches do not support application-hosting in release prior to Cisco IOS XE Bengaluru 17.5.1.

    Configure the enable command on the AppGigabitEthernet interfaces to enable application hosting on Cisco Catalyst 9410R Switches. This restriction is applicable only to Cisco Catalyst 9400 Series Supervisor 1, 1XL, and 1XL-Y 25G Modules (C9400-SUP-1, C9400-SUP-1XL, and C9400-SUP-1XL-Y).

    You do not need to configure the enable command on Cisco Catalyst 9400 Series Supervisor 2 and 2XL Modules (C9400X-SUP-2 and C9400X-SUP-2XL).

  • Cisco Catalyst 9200CX Series Switches do not support the Management interface, AppGigabitEthernet interface, or VirtualPortGroup interface. Applications or scripts running in the Guest Shell will not be able to communicate with the external network.

Information About Application Hosting

This section provides information about Application Hosting.

Need for Application Hosting

The move to virtual environments has given rise to the need to build applications that are reusable, portable, and scalable. Application hosting gives administrators a platform for leveraging their own tools and utilities. An application, hosted on a network device, can serve a variety of purposes. This ranges from automation, configuration management monitoring, and integration with existing tool chains.


Note


In this document, container refers to Docker applications.


Cisco IOx Overview

Cisco IOx (IOs + linuX) is an end-to-end application framework that provides application-hosting capabilities for different application types on Cisco network platforms. The Cisco Guest Shell, a special container deployment, is one such application, that is useful in system deployment.

Cisco IOx facilitates the life cycle management of applications and data exchange by providing a set of services that helps developers to package prebuilt applications, and host them on a target device. IOx life cycle management includes distribution, deployment, hosting, starting, stopping (management), and monitoring of applications and data. IOx services also include application distribution and management tools that help users discover and deploy applications to the IOx framework.

Cisco IOx application hosting provides the following features:

  • Hides network heterogeneity.

  • Cisco IOx application programming interfaces (APIs) remotely manage the life cycle of applications hosted on a device.

  • Centralized application life cycle management.

  • Cloud-based developer experience.

Application Hosting Overview

The Cisco application-hosting framework is an IOx Python process that manages virtualized and container applications that run on devices.

Application hosting provides the following services:

  • Launches designated applications in containers.

  • Checks available resources (memory, CPU, and storage), and allocates and manages them.

  • Provides support for console logging.

  • Provides access to services through REST APIs.

  • Provides a CLI endpoint.

  • Provides an application-hosting infrastructure referred to as Cisco Application Framework (CAF).

  • Helps setup platform-specific networking (packet-path) through management interfaces.

    Data ports are supported on platforms that have AppGigabitEthernet port functionality.

The application-hosting container that is referred to as the virtualization environment is provided to run a guest application on the host operating system. The Cisco IOS-XE virtualization services provide manageability and networking models for running a guest application. The virtualization infrastructure allows an administrator to define a logical interface that specifies the connectivity between the host and the guest. Cisco IOx maps the logical interface into a Virtual Network Interface Card (vNIC) that the guest application uses.

Applications that are to be deployed in the containers are packaged as TAR files. The configuration that is specific to these applications is also packaged as part of the TAR files.

The management interface on the device connects the application-hosting network to the Cisco IOS management interface. The Layer 3 interface of the guest application receives the Layer 2-bridged traffic from the Cisco IOS management interface. The management interface connects to the container interface through the management bridge. The IP address of the application must be on the same subnet as the management interface IP address.


Note


On all Cisco Catalyst stack and stackwise virtual models (all software versions), Guest Shell and AppGigabitEthernet only operate on the active switch in the stack. Therefore, the configurations for the AppGigabitEthernet interface must be applied to the AppGigabitEthernet interface on each switch in the stack. If the configurations are not applied to all switches, the AppGigabitEthernet interface will not work after a switchover.


Application Hosting on Cisco Catalyst 9300 Series Switches

This section describes application-hosting on Cisco Catalyst 9300 Series Switches.

For application hosting, Cisco Catalyst 9300 Series Switches support the management interface and front-panel ports.

The USB 3.0 SSD is enabled on Cisco Catalyst 9300 Series Switches. The USB 3.0 SSD provides an extra 120 GB storage for application hosting. For more information, see the "Configuring USB 3.0 SSD" chapter in the Interfaces and Hardware Configuration Guide.

The following two types of networking apps are supported:

  • Control plane: Apps that access the management interface.

  • Data plane: Apps that access the front-panel ports.

Application Hosting on Cisco Catalyst 9400 Series Switches

This section describes application-hosting on Cisco Catalyst 9400 Series Switches.

Cisco Catalyst 9400 Series Switches support the management interface and front-panel ports for application hosting. Applications can be hosted on C9400-SSD-240GB, C9400-SSD-480GB, and C9400-SSD-960GB solid state drives (SSDs).


Note


Cisco Catalyst 9410R switch does not support front-panel application-hosting.


These switches use the M2 SATA module for application hosting. For more information, see the "M2 SATA Module" chapter in the Interfaces and Hardware Configuration Guide.

On Cisco Catalyst 9400 Series Switches, applications can be hosted only on active supervisors. After a switchover, the AppGigbitEthernet interface on the newly active supervisor becomes active and can be used for application hosting.

Application Hosting on Front-Panel Trunk and VLAN Ports

Front-panel VLAN and trunk ports are supported for application hosting. Layer 2 traffic is delivered through these ports to software components that run outside of the Cisco IOS daemon.

For application hosting, you can configure the front-panel port as either a trunk interface or a VLAN-specific interface. When using as a trunk interface, the front-panel port is extended to work as a Layer 2 trunk port, and all the traffic received by the port is available to the application. When using the port as a VLAN interface, the application is connected to a specific VLAN network.


Note


When using a back-panel USB or an M2 SATA drive for application hosting, the storage medium should be formatted as an ext4 filesystem.


Supported Network Types

This section lists the types of networks supported on Cisco Catalyst 9300 Series Switches and Cisco Catalyst 9400 Series Switches.

Table 1. Supported Network Types

Network Type

Cisco Catalyst 9300 Series Switches and Cisco Catalyst 9400 Series Switches

Management Port

Supported

Front-panel trunk port

Supported

Front-panel VLAN port

Supported

Cisco IOS Network Address Translation (NAT)

Supported through the hardware data-port features applied on the front-panel data ports and on the AppGigabitEthernet port.

Cisco IOx NAT

Not supported

Virtual Network Interface Card

To manage the life cycle of an application container, the Layer 3 routing model that supports one container per internal logical interface is used. This means that a virtual Ethernet pair is created for each application, and one interface of this pair, called the Virtual Network Interface Card (vNIC) is part of the application container.

NIC is the standard Ethernet interface inside the container that connects to the platform data plane for the sending and receiving packets. Cisco IOx is responsible for assigning the IP address and unique MAC address for each vNIC in the container.

The vNICs inside a container are considered as standard Ethernet interfaces.

How to Configure Application Hosting

The following sections provide information about the various tasks that comprise the configuration of application hosting.

Enabling Cisco IOx

Perform this task to enable access to Cisco IOx, which provides a CLI-based user interface that you can use to manage, administer, monitor, and troubleshoot the apps on the host system, and to perform a variety of related activities.

SUMMARY STEPS

  1. enable
  2. configure terminal
  3. iox
  4. username name privilege level password {0 | 7 | user-password}encrypted-password
  5. end

DETAILED STEPS

  Command or Action Purpose

Step 1

enable

Example:

Device> enable

Enables privileged EXEC mode.

  • Enter your password if prompted.

Step 2

configure terminal

Example:

Device# configure terminal

Enters global configuration mode.

Step 3

iox

Example:

Device(config)# iox

Enables Cisco IOx.

Step 4

username name privilege level password {0 | 7 | user-password}encrypted-password

Example:

Device(config)# username cisco privilege 15 password 0 ciscoI 

Establishes a username-based authentication system and privilege level for the user.

  • The username privilege level must be configured as 15.

Step 5

end

Example:

Device(config)# end

Exits global configuration mode and returns to privileged EXEC configuration mode.

Configuring Application Hosting on Front-Panel VLAN Ports


Note


This task is applicable to Cisco IOS XE Amsterdam 17.1.1 and later releases.


In application-hosting trunk-configuration mode, all the allowed AppGigabitEthernet VLAN ports are connected to a container. Native and VLAN-tagged frames are transmitted and received by the container guest interface. Only one container guest interface can be mapped to the AppGigabitEthernet trunk port.

Concurrent configuration of both trunk and vlan-access ports are supported.

SUMMARY STEPS

  1. enable
  2. configure terminal
  3. interface AppGigabitEthernet number
  4. switchport trunk allowed vlan vlan-ID
  5. switchport mode trunk
  6. exit
  7. app-hosting appid name
  8. app-vnic AppGigabitEthernet trunk
  9. vlan vlan-ID guest-interface guest-interface-number
  10. guest-ipaddress ip-address netmask netmask
  11. end

DETAILED STEPS

  Command or Action Purpose

Step 1

enable

Example:

Device> enable

Enables privileged EXEC mode.

  • Enter your password if prompted.

Step 2

configure terminal

Example:

Device# configure terminal

Enters global configuration mode.

Step 3

interface AppGigabitEthernet number

Example:

Device(config)# interface AppGigabitEthernet 1/0/1

Configures the AppGigabitEthernet and enters interface configuration mode.

  • For stackable switches, the number argument is switch-number/0/1.

Step 4

switchport trunk allowed vlan vlan-ID

Example:

Device(config-if)# switchport trunk allowed vlan 10-12,20

Configures the list of VLANs allowed on the trunk.

Step 5

switchport mode trunk

Example:

Device(config-if)# switchport mode trunk

Sets the interface into permanent trunking mode and negotiates to convert the neighboring link into a trunk link.

Step 6

exit

Example:

Device(config-if)# exit

Exits interface configuration mode and returns to global configuration mode.

Step 7

app-hosting appid name

Example:

Device(config)# app-hosting appid iox_app

Configures an application and enters application-hosting configuration mode.

Step 8

app-vnic AppGigabitEthernet trunk

Example:

Device(config-app-hosting)# app-vnic AppGigabitEthernet trunk 

Configures a trunk port as the front-panel port for an application, and enters application-hosting trunk-configuration mode.

Step 9

vlan vlan-ID guest-interface guest-interface-number

Example:

Device(config-config-app-hosting-trunk)# vlan 10
guest-interface 2

Configures a VLAN guest interface and enters application-hosting VLAN-access IP configuration mode.

  • Multiple VLAN-to-guest interface mapping is supported.

Step 10

guest-ipaddress ip-address netmask netmask

Example:

Device(config-config-app-hosting-vlan-access-ip)# guest-ipaddress 192.168.0.2
netmask 255.255.255.0

(Optional) Configures a static IP address.

Step 11

end

Example:

Device(config-config-app-hosting-vlan-access-ip)# end

Exits application-hosting VLAN-access IP configuration mode and returns to privileged EXEC mode.

Configuring Application Hosting on Front-Panel Trunk Ports

In application-hosting trunk-configuration mode, all the allowed AppGigabitEthernet VLAN ports are connected to a container. Native and VLAN-tagged frames are transmitted and received by the container guest interface. Only one container guest interface can be mapped to the AppGigabitEthernet trunk port.

In Cisco IOS XE Gibraltar 16.2.1, you can configure an app-ID in either application-hosting trunk configuration mode or application-hosting VLAN-access configuration mode; but not in both modes.

In Cisco IOS XE Amsterdam 17.1.1 and later releases, concurrent configuration of both trunk and vlan-access ports is supported.

SUMMARY STEPS

  1. enable
  2. configure terminal
  3. interface AppGigabitEthernet number
  4. switchport trunk allowed vlan vlan-ID
  5. switchport mode trunk
  6. exit
  7. app-hosting appid name
  8. app-vnic AppGigabitEthernet trunk
  9. guest-interface guest-interface-number
  10. end

DETAILED STEPS

  Command or Action Purpose

Step 1

enable

Example:

Device> enable

Enables privileged EXEC mode.

  • Enter your password if prompted.

Step 2

configure terminal

Example:

Device# configure terminal

Enters global configuration mode.

Step 3

interface AppGigabitEthernet number

Example:

Device(config)# interface AppGigabitEthernet 1/0/1

Configures the AppGigabitEthernet and enters interface configuration mode.

  • For stackable switches, the number argument is switch-number/0/1.

Step 4

switchport trunk allowed vlan vlan-ID

Example:

Device(config-if)# switchport trunk allowed vlan 10-12,20

Configures the list of VLANs allowed on the trunk.

Step 5

switchport mode trunk

Example:

Device(config-if)# switchport mode trunk

Sets the interface into permanent trunking mode and negotiates to convert the neighboring link into a trunk link.

Step 6

exit

Example:

Device(config-if)# exit

Exits interface configuration mode and returns to global configuration mode.

Step 7

app-hosting appid name

Example:

Device(config)# app-hosting appid iox_app

Configures an application and enters application-hosting configuration mode.

Step 8

app-vnic AppGigabitEthernet trunk

Example:

Device(config-app-hosting)# app-vnic AppGigabitEthernet trunk

Configures a trunk port as the front-panel port for an application, and enters application-hosting trunk-configuration mode.

Step 9

guest-interface guest-interface-number

Example:

Device(config-config-app-hosting-trunk)# guest-interface 2

Configures an application’s interface that is connected to the AppGigabitEthernet interface trunk.

Step 10

end

Example:

Deviceconfig-config-app-hosting-trunk)# end

Exits application-hosting trunk-configuration mode and returns to privileged EXEC mode.

Starting an Application in Configuration Mode

The start command in application-hosting configuration mode is equivalent to the app-hosting activate appid and app-hosting start appid commands.

The no start command in application-hosting configuration mode is equivalent to the app-hosting stop appid and app-hosting deactivate appid commands.


Note


If the start command is configured before an application is installed, and then the install command is configured, Cisco IOx automatically performs internal activate and start actions. This allows the application to be automatically started by configuring the install command.


SUMMARY STEPS

  1. enable
  2. configure terminal
  3. app-hosting appid application-name
  4. start
  5. end

DETAILED STEPS

  Command or Action Purpose

Step 1

enable

Example:

Device> enable

Enables privileged EXEC mode.

  • Enter your password if prompted.

Step 2

configure terminal

Example:

Device# configure terminal

Enters global configuration mode.

Step 3

app-hosting appid application-name

Example:

Device(config)# app-hosting appid iox_app

Configures an application and enters application-hosting configuration mode.

Step 4

start

Example:

Device(config-app-hosting)# start

(Optional) Starts and runs an application.

  • Use the no start command to stop the application.

Step 5

end

Example:

Device(config-app-hosting)# end

Exits application-hosting configuration mode and returns to privileged EXEC mode.

Lifecycle of an Application

The following EXEC commands take you through an application's lifecycle.


Note


If any configuration changes are made after an application is installed, the application in the running state will not reflect these changes. The application must be explicitly stopped and deactivated, and then activated and started again for the configuration changes to take effect.


SUMMARY STEPS

  1. enable
  2. app-hosting install appid application-name package package-path
  3. app-hosting activate appid application-name
  4. app-hosting start appid application-name
  5. app-hosting stop appid application-name
  6. app-hosting deactivate appid application-name
  7. app-hosting uninstall appid application-name

DETAILED STEPS

  Command or Action Purpose

Step 1

enable

Example:

Device> enable

Enables privileged EXEC mode.

  • Enter your password if prompted.

Step 2

app-hosting install appid application-name package package-path

Example:

Device# app-hosting install appid iox_app package usbflash1:my_iox_app.tar

Installs an application from the specified location.

  • An application can be installed from a local storage location such as, flash, bootflash, usbflash0, usbflash1, and harddisk.

Step 3

app-hosting activate appid application-name

Example:

Device# app-hosting activate appid iox_app

Activates the application.

  • This command validates all the application resource requests, and if all the resources are available, the application is activated; if not, the activation fails.

Step 4

app-hosting start appid application-name

Example:

Device# app-hosting start appid iox_app

Starts the application.

  • Application start-up scripts are activated.

Step 5

app-hosting stop appid application-name

Example:

Device# app-hosting stop appid iox_app

(Optional) Stops the application.

Step 6

app-hosting deactivate appid application-name

Example:

Device# app-hosting deactivate appid iox_app

(Optional) Deactivates all the resources allocated for the application.

Step 7

app-hosting uninstall appid application-name

Example:

Device# app-hosting uninstall appid iox_app

(Optional) Uninstalls the application.

  • Uninstalls all the packaging and images stored. All the changes and updates to the application are also removed.

Configuring Docker Run Time Options

You can add a maximum of 30 lines of run time options. The system generates a concatenated string from line 1 though line 30. A string can have more than one Docker run time option.

When a run time option is changed, stop, deactivate, activate, and start the application for the new run time options to take effect.

SUMMARY STEPS

  1. enable
  2. configure terminal
  3. app-hosting appid application-name
  4. app-resource docker
  5. run-opts options
  6. end

DETAILED STEPS

  Command or Action Purpose

Step 1

enable

Example:

Device> enable

Enables privileged EXEC mode.

  • Enter your password if prompted.

Step 2

configure terminal

Example:

Device# configure terminal

Enters global configuration mode.

Step 3

app-hosting appid application-name

Example:

Device(config)# app-hosting appid iox_app

Configures an application and enters application-hosting configuration mode.

Step 4

app-resource docker

Example:

Device(config-app-hosting)# app-resource docker

Enters application-hosting docker-configuration mode to specify application resource updates.

Step 5

run-opts options

Example:

Device(config-app-hosting-docker)# run-opts 1 "-v $(APP_DATA):/data"

Specifies the Docker run time options.

Step 6

end

Example:

Device(config-app-hosting-docker)# end

Exits application-hosting docker-configuration mode and returns to privileged EXEC mode.

Configuring a Static IP Address in a Container

When configuring a static IP address in a container, the following guidelines apply:

  • Only the last configured default gateway configuration is used.

  • Only the last configured name server configuration is used.

You can configure the IP address of a container through Cisco IOS CLIs.

SUMMARY STEPS

  1. enable
  2. configure terminal
  3. app-hosting appid name
  4. name-server# ip-address
  5. app-vnic management guest-interface interface-number
  6. guest-ipaddress ip-address netmask netmask
  7. exit
  8. app-default-gateway ip-address guest-interface network-interface
  9. end

DETAILED STEPS

  Command or Action Purpose

Step 1

enable

Example:

Device> enable

Enables privileged EXEC mode.

  • Enter your password if prompted.

Step 2

configure terminal

Example:

Device# configure terminal

Enters global configuration mode.

Step 3

app-hosting appid name

Example:

Device(config)# app-hosting appid iox_app

Configures an application and enters application-hosting configuration mode.

Step 4

name-server# ip-address

Example:

Device(config-app-hosting)# name-server0 10.2.2.2

Configures the Domain Name System (DNS) server.

Step 5

app-vnic management guest-interface interface-number

Example:

Device(config-app-hosting)# app-vnic management guest-interface 0

Configures the management gateway of the virtual network interface and guest interface, and enters application-hosting management-gateway configuration mode.

Step 6

guest-ipaddress ip-address netmask netmask

Example:

Device(config-app-hosting-mgmt-gateway)# guest-ipaddress 172.19.0.24
netmask 255.255.255.0

Configures the management guest interface details.

Step 7

exit

Example:

Device(config-app-hosting-mgmt-gateway)# exit

Exits application-hosting management-gateway configuration mode and returns to application-hosting configuration mode.

Step 8

app-default-gateway ip-address guest-interface network-interface

Example:

Device(config-app-hosting)# app-default-gateway 172.19.0.23
guest-interface 0

Configures the default management gateway.

Step 9

end

Example:

Device(config-app-hosting)# end

Exits application-hosting configuration mode and returns to privileged EXEC mode.

Configuring Application Hosting on the Management Port

SUMMARY STEPS

  1. enable
  2. configure terminal
  3. interface gigabitethernet0/0
  4. vrf forwarding vrf-name
  5. ip address ip-address mask
  6. exit
  7. app-hosting appid name
  8. app-vnic management guest-interface network-interface
  9. end

DETAILED STEPS

  Command or Action Purpose

Step 1

enable

Example:

Device> enable

Enables privileged EXEC mode.

  • Enter your password if prompted.

Step 2

configure terminal

Example:

Device# configure terminal

Enters global configuration mode.

Step 3

interface gigabitethernet0/0

Example:

Device(config)# interface gigabitethernet0/0

Configures an interface and enters interface configuration mode.

  • On Cisco Catalyst 9000 Series Switches, the management interface is GigabitEthernet0/0.

Step 4

vrf forwarding vrf-name

Example:

Device(config-if)# vrf forwarding Mgmt-vrf

Associates a Virtual Routing and Forwarding (VRF) instance or a virtual network with an interface or subinterface.

  • Mgmt-vrf is automatically set for the management interface on the Cisco Catalyst 9000 Series Switch.

Step 5

ip address ip-address mask

Example:

Device(config-if)# ip address 198.51.100.1 255.255.255.254

Configures an IP address for the interface.

Step 6

exit

Example:

Device(config-if)# exit

Exits interface configuration mode and returns to global configuration mode.

Step 7

app-hosting appid name

Example:

Device(config)# app-hosting appid iox_app

Configures an application and enters application-hosting configuration mode.

Step 8

app-vnic management guest-interface network-interface

Example:

Device(config-app-hosting)# app-vnic management guest-interface 1

Connects the guest interface to the management port, and enters application-hosting management-gateway configuration mode.

  • The management keyword specifies the Cisco IOS management GigabitEthernet0/0 interface that is connected to the container.

  • The guest-interface network-interface keyword-argument pair specifies the container's internal Ethernet interface number that is connected to the Cisco IOS management interface. The example provided here uses guest-interface 1 for the container's Ethernet 1 interface.

Step 9

end

Example:

Device(config-app-hosting-mgmt-gateway)# end

Exits application-hosting management-gateway configuration mode and returns to privileged EXEC mode.

Manually Configuring the IP Address for an Application

You can set up the IP address of a container using the following methods:

  • Log into the container, and configure the ifconfig Linux command.

    1. Log in to the application by using the following command:
      app-hosting connect appid APPID {session | console}
    2. Based on the application's Linux support, use the standard Linux interface configuration commands:

      - ifconfig dev IFADDR/subnet-mask-length

      Or

      - ip address {add|change|replace} IFADDR dev IFNAME [ LIFETIME ] [ CONFFLAG-LIST ]
  • Enable the Dynamic Host Configuration Protocol (DHCP) in the container, and configure the DHCP server and relay agent in the Cisco IOS configuration.

    • Cisco IOx provides a DHCP client to run within the application container that is used for an application DHCP interface.

Overriding App Resource Configuration

For resource changes to take effect, you must first stop and deactivate an app using the app-hosting stop and app-hosting deactivate commands, and then restart the app using the app-hosting activate and app-hosting start commands.

If you are using the start command in application-hosting configuration mode, configure the no start and start commands.

You can use these commands to reset both resources and the app-hosting appid iox_app configuration.

SUMMARY STEPS

  1. enable
  2. configure terminal
  3. app-hosting appid name
  4. app-resource profile name
  5. cpu unit
  6. memory memory
  7. vcpu number
  8. end

DETAILED STEPS

  Command or Action Purpose

Step 1

enable

Example:

Device> enable

Enables privileged EXEC mode.

  • Enter your password if prompted.

Step 2

configure terminal

Example:

Device# configure terminal

Enters global configuration mode.

Step 3

app-hosting appid name

Example:

Device(config)# app-hosting appid iox_app

Enables application hosting and enters application-hosting configuration mode.

Step 4

app-resource profile name

Example:

Device(config-app-hosting)# app-resource profile custom

Configures the custom application resource profile, and enters custom application resource profile configuration mode.

  • Only the custom profile name is supported.

Step 5

cpu unit

Example:

Device(config-app-resource-profile-custom)# cpu 7400 

Changes the default CPU allocation for the application.

  • Resource values are application specific, and any adjustment to these values must ensure that the application can run reliably with the changes.

Step 6

memory memory

Example:

Device(config-app-resource-profile-custom)# memory 2048

Changes the default memory allocation.

Step 7

vcpu number

Example:

Device(config-app-resource-profile-custom)# vcpu 2

Changes the virtual CPU (vCPU) allocation for the application.

Step 8

end

Example:

Device(config-app-resource-profile-custom)# end

Exits custom application resource profile configuration mode and returns to privileged EXEC mode.

Verifying the Application-Hosting Configuration

Use these show commands to verify the configuration. These commands can be used in any order.

SUMMARY STEPS

  1. enable
  2. show iox-service
  3. show app-hosting detail
  4. show app-hosting device
  5. show app-hosting list
  6. show interfaces trunk
  7. show controller ethernet-controller AppGigabitEthernet interface-number

DETAILED STEPS


Step 1

enable

Enables privileged EXEC mode.

  • Enter your password if prompted.

Example:

Device> enable

Step 2

show iox-service

Displays the status of all the Cisco IOx services.

Example:

Device# show iox-service

IOx Infrastructure Summary:
---------------------------
IOx service (CAF)         : Not Running
IOx service (HA)          : Not Running 
IOx service (IOxman)      : Not Running
IOx service (Sec storage) : Not Running 
Libvirtd                  : Running
Dockerd                   : Not Running
Application DB Sync Info  : Not available

Step 3

show app-hosting detail

Displays detailed information about the application.

Example:

Device# show app-hosting detail

State                     : Running
Author                    : Cisco Systems, Inc
Application
 Type                     : vm 
 App id                   : Wireshark
 Name                     : Wireshark
 Version                  : 3.4
 Activated Profile Name   : custom
 Description              : Ubuntu based Wireshark
Resource Reservation 
 Memory                   : 1900 MB
 Disk                     : 10 MB 
 CPU                      : 4000 units
 VCPU                     : 2
Attached devices
Type          Name         Alias
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––--
Serial/shell
Serial/aux
Serial/Syslog              serial2
Serial/Trace               serial3
Network Interfaces
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
eth0:
 MAC address              : 52:54:dd:80:bd:59
 IPv4 address
eth1:
 MAC address              : 52:54:dd:c7:7c:aa
 IPv4 address

Step 4

show app-hosting device

Displays information about the USB device.

Example:

Device# show app-hosting device

USB port Device name Available 
1 Front_USB_1 true


app-hosting appid testvm
app-vnic management guest-interface 0
app-device usb-port 1

Step 5

show app-hosting list

Displays the list of applications and their status.

Example:

Device# show app-hosting list

App id              State
–––––––––––––––––––––––––––––––––––––––--
Wireshark           Running 

Step 6

show interfaces trunk

Displays trunk interface information.

Example:

Device# show interfaces trunk

Port Mode Encapsulation Status Native vlan 
Gi3/0/1 on 802.1q trunking 1
Ap3/0/1 on 802.1q trunking 1

Port Vlans allowed on trunk
Gi3/0/1 1-4094
Ap3/0/1 1-4094

Port Vlans allowed and active in management domain
Gi3/0/1 1,8,10,100
Ap3/0/1 1,8,10,100

Port Vlans in spanning tree forwarding state and not pruned
Gi3/0/1 1,8,10,100
Ap3/0/1 1,8,10,100

Device# show runnning-config interface AppGigabitEthernet 3/0/1

Building configuration...

Current configuration : 64 bytes
!
interface AppGigabitEthernet3/0/1
switchport mode trunk
end

Step 7

show controller ethernet-controller AppGigabitEthernet interface-number

Displays the send and receive statistics for the AppGigabitEthernet interface that is read from the hardware.

Example:

Device# show controller ethernet-controller AppGigabitEthernet 1/0/1

Transmit                  AppGigabitEthernet1/0/1 		Receive                 
            0 Total bytes              	            0 Total bytes              
            0 Unicast frames           	            0 Unicast frames           
            0 Unicast bytes            	            0 Unicast bytes            
            0 Multicast frames         	            0 Multicast frames         
            0 Multicast bytes          	            0 Multicast bytes          
            0 Broadcast frames         	            0 Broadcast frames         
            0 Broadcast bytes          	            0 Broadcast bytes          
            0 System FCS error frames  	            0 IpgViolation frames      
            0 MacUnderrun frames       	            0 MacOverrun frames        
            0 Pause frames             	            0 Pause frames             
            0 Cos 0 Pause frames       	            0 Cos 0 Pause frames       
            0 Cos 1 Pause frames       	            0 Cos 1 Pause frames       
            0 Cos 2 Pause frames       	            0 Cos 2 Pause frames       
            0 Cos 3 Pause frames       	            0 Cos 3 Pause frames       
            0 Cos 4 Pause frames       	            0 Cos 4 Pause frames       
            0 Cos 5 Pause frames       	            0 Cos 5 Pause frames       
            0 Cos 6 Pause frames       	            0 Cos 6 Pause frames       
            0 Cos 7 Pause frames       	            0 Cos 7 Pause frames       
            0 Oam frames               	            0 OamProcessed frames      
            0 Oam frames               	            0 OamDropped frames        
            0 Minimum size frames      	            0 Minimum size frames      
            0 65 to 127 byte frames    	            0 65 to 127 byte frames    
            0 128 to 255 byte frames   	            0 128 to 255 byte frames   
            0 256 to 511 byte frames   	            0 256 to 511 byte frames   
            0 512 to 1023 byte frames  	            0 512 to 1023 byte frames  
            0 1024 to 1518 byte frames 	            0 1024 to 1518 byte frames 
            0 1519 to 2047 byte frames 	            0 1519 to 2047 byte frames 
            0 2048 to 4095 byte frames 	            0 2048 to 4095 byte frames 
            0 4096 to 8191 byte frames 	            0 4096 to 8191 byte frames 
            0 8192 to 16383 byte frames	            0 8192 to 16383 byte frames
            0 16384 to 32767 byte frame	            0 16384 to 32767 byte frame
            0 > 32768 byte frames      	            0 > 32768 byte frames      
            0 Late collision frames    	            0 SymbolErr frames         
            0 Excess Defer frames      	            0 Collision fragments      
            0 Good (1 coll) frames     	            0 ValidUnderSize frames    
            0 Good (>1 coll) frames    	            0 InvalidOverSize frames   
            0 Deferred frames          	            0 ValidOverSize frames     
            0 Gold frames dropped      	            0 FcsErr frames            
            0 Gold frames truncated    
            0 Gold frames successful   
            0 1 collision frames       
            0 2 collision frames       
            0 3 collision frames       
            0 4 collision frames       
            0 5 collision frames       
            0 6 collision frames       
            0 7 collision frames       
            0 8 collision frames       
            0 9 collision frames       
            0 10 collision frames      
            0 11 collision frames      
            0 12 collision frames      
            0 13 collision frames      
            0 14 collision frames      
            0 15 collision frames      
            0 Excess collision frame


Configuration Examples for Application Hosting

The following are the various examples pertaining to the configuration of the Application Hosting feature.

Example: Enabling Cisco IOx

This example shows how to enable Cisco IOx.

Device> enable
Device# configure terminal
Device(config)# iox
Device(config)# username cisco privilege 15 password 0 ciscoI
Device(config)# end

Example: Configuring Application Hosting on Front-Panel VLAN Ports


Note


This section is applicable to Cisco IOS XE Amsterdam 17.1.1 and later releases.


This example shows how to configure application hosting on front-panel VLAN ports.

Device# configure terminal
Device(config)# interface AppGigabitEthernet 1/0/1
Device(config-if)# switchport trunk allowed vlan 10-12,20
Device(config-if)# switchport mode trunk
Device(config-if)# exit
Device(config)# app-hosting appid iox_app
Device(config-app-hosting)# app-vnic AppGigabitEthernet trunk 
Device(config-config-app-hosting-trunk)# vlan 10 guest-interface 2
Device(config-config-app-hosting-vlan-access-ip)# guest-ipaddress 192.168.0.1 
netmask 255.255.255.0
Device(config-config-app-hosting-vlan access-ip)# end

Example: Configuring Application Hosting on Front-Panel Trunk Ports

This example shows how to configure application hosting on front-panel trunk ports.

Device# configure terminal
Device(config)# interface AppGigabitEthernet 3/0/1
Device(config-if)# switchport trunk allowed vlan 10-12,20
Device(config-if)# switchport mode trunk
Device(config-if)# exit
Device(config)# app-hosting appid iox_app
Device(config-app-hosting)# app-vnic AppGigabitEthernet trunk 
Device(config-config-app-hosting-trunk)# guest-interface 2
Device(config-config-app-hosting-trunk)# end

Example: Starting an Application

This example shows how to start an application.

Device> enable
Device# configure terminal 
Device(config)# app-hosting appid iox_app
Device(config-app-hosting)# start 
Device(config-app-hosting)# end

Example: Lifecycle for an Application

This example shows how to install and uninstall an application:

Device> enable
Device# app-hosting install appid iox_app package usbflash1:my_iox_app.tar.tar
Device# app-hosting activate appid iox_app
Device# app-hosting start appid iox_app
Device# app-hosting stop appid iox_app
Device# app-hosting deactivate appid iox_app
Device# app-hosting uninstall appid iox_app

Example: Configuring Docker Run Time Options

This example shows how to configure Docker run time options.

Device> enable
Device# configure terminal
Device(config)# app-hosting appid iox_app
Device(config-app-hosting)# app-resource docker
Device(config-app-hosting-docker)# run-opts 1 "-v $(APP_DATA):/data"
Device(config-app-hosting-docker)# run-opts 3 "--entrypoint '/bin/sleep 1000000'"
Device(config-app-hosting-docker)# end

Example: Configuring a Static IP Address in a Container

This example shows how to configure a static IP address in a container.

Device> enable
Device# configure terminal
Device(config)# app-hosting appid iox_app
Device(config-app-hosting)# name-server0 10.2.2.2
Device(config-app-hosting)# app-vnic management guest-interface 0
Device(config-app-hosting-mgmt-gateway)# guest-ipaddress 172.19.0.24 netmask 255.255.255.0
Device(config-app-hosting-mgmt-gateway)# exit
Device(config-app-hosting)# app-default-gateway 172.19.0.23 guest-interface 0
Device(config-app-hosting)# end

Example: Configuring Application Hosting on the Management Port

This example shows how to manually configure the IP address for an application.

Device# configure terminal
Device(config)# interface gigabitethernet 0/0
Device(config-if)# vrf forwarding Mgmt-vrf
Device(config-if)# ip address 198.51.100.1 255.255.255.254
Device(config-if)# exit
Device(config)# app-hosting appid iox_app
Device(config-app-hosting)# app-vnic management guest-interface 1
Device(config-app-hosting-mgmt-gateway)# end

Example: Overriding App Resource Configuration

This example shows how to override an app resource configuration.

Device# configure terminal
Device(config)# app-hosting appid iox_app
Device(config-app-hosting)# app-resource profile custom
Device(config-app-resource-profile-custom)# cpu 7400 
Device(config-app-resource-profile-custom)# memory 2048
Device(config-app-resource-profile-custom)# vcpu 2
Device(config-app-resource-profile-custom)# end

Additional References

Related Documents

Related Topic Document Title

Programmability commands

Programmability Command Reference

DevNet

https://developer.cisco.com/docs/app-hosting/

USB3.0 SSD on Cisco Catalyst 9300 Series Switches

Configuring USB 3.0 SSD

M2 SATA on Cisco Catalyst 9400 Series Switches

M2 SATA Module

Technical Assistance

Description Link

The Cisco Support website provides extensive online resources, including documentation and tools for troubleshooting and resolving technical issues with Cisco products and technologies.

To receive security and technical information about your products, you can subscribe to various services, such as the Product Alert Tool (accessed from Field Notices), the Cisco Technical Services Newsletter, and Really Simple Syndication (RSS) Feeds.

Access to most tools on the Cisco Support website requires a Cisco.com user ID and password.

http://www.cisco.com/support

Feature Information for Application Hosting

The following table provides release information about the feature or features described in this module. This table lists only the software release that introduced support for a given feature in a given software release train. Unless noted otherwise, subsequent releases of that software release train also support that feature.

Use Cisco Feature Navigator to find information about platform support and Cisco software image support. To access Cisco Feature Navigator, go to www.cisco.com/go/cfn. An account on Cisco.com is not required.
Table 2. Feature Information for Application Hosting

Feature Name

Release

Feature Information

Application Hosting

Cisco IOS XE Gibraltar 16.12.1

Cisco IOS XE Amsterdam 17.1.1

Cisco IOS XE Amsterdam 17.2.1

Cisco IOS XE Bengaluru 17.5.1

Cisco IOS XE Cupertino 17.7.1

A hosted application is a software as a service (SaaS) solution, and users can execute and operate this solution entirely from the cloud. This module describes the Application Hosting feature and how to enable it.

  • In Cisco IOS XE Gibraltar 16.12.1, this feature was implemented on Cisco Catalyst 9300 Series Switches.

  • In Cisco IOS XE Amsterdam 17.1.1, this feature was implemented on Cisco Catalyst 9400 Series Switches.

  • In Cisco IOS XE Amsterdam 17.2.1, this feature was implemented on Cisco Catalyst 9500-High Performance Series Switches, and Cisco Catalyst 9600 Series Switches.

  • In Cisco IOS XE Bengaluru 17.5.1, this feature was implemented on Cisco Catalyst 9410 Series Switches.

  • In Cisco IOS XE Cupertino 17.7.1, this feature was implemented on Cisco Catalyst 9500X Series Switches.

Application Hosting: Autotransfer and Auto-Install of Apps from Internal Flash to SSD

Cisco IOS XE Bengaluru 17.6.1

When IOx is restarted and a different media is selected, all applications must be migrated to the new media, and containers must be restored to the same state as before the change.

In Cisco IOS XE Bengaluru 17.6.1, this feature was introduced on the following platforms:

  • Cisco Catalyst 9200 Series Switches

  • Cisco Catalyst 9300 and 9300L Series Switches

  • Cisco Catalyst 9400 Series Switches

Application Hosting: Front-Panel Network Port Access

Cisco IOS XE Gibraltar 16.12.1

Cisco IOS XE Amsterdam 17.1.1

Introduces datapath connectivity between the Application Hosting container and the front-panel network ports. Also enables ZTP functionality on the front-panel network.

  • In Cisco IOS XE Gibraltar 16.12.1, this feature was implemented on Cisco Catalyst 9300 Series Switches.

  • In Cisco IOS XE Amsterdam 17.1.1, this feature was implemented on Cisco Catalyst 9400 Series Switches.

Application Hosting: Front-Panel USB Port Access

Cisco IOS XE Gibraltar 16.12.1

Cisco IOS XE Amsterdam 17.1.1

Introduces datapath connectivity between the Application Hosting container and the front-panel USB port.

  • In Cisco IOS XE Gibraltar 16.12.1, this feature was implemented on Cisco Catalyst 9300 Series Switches.

  • In Cisco IOS XE Amsterdam 17.1.1, this feature was implemented on Cisco Catalyst 9400 Series Switches.

Application Hosting: ThousandEyes Integration

Cisco IOS XE Amsterdam 17.3.3

Cisco IOS XE Bengaluru 17.5.1

Cisco IOS XE Bengaluru 17.6.1

ThousandEyes is a cloud-ready, enterprise network-monitoring tool that provides an end-to-end view across networks and services.

  • In Cisco IOS XE Amsterdam 17.3.3, this feature was implemented on Cisco Catalyst 9300 and 9300L Series Switches.

  • In Cisco IOS XE Bengaluru 17.5.1, this feature was implemented on Cisco Catalyst 9400 Series Switches.

  • In Cisco IOS XE Bengaluru 17.6.1, this feature was implemented on Cisco Catalyst 9300X Series Switches.

Note

 

The ThousandEyes Integration feature is not supported in Cisco IOS XE Bengaluru 17.4.x release.

ThousandEyes BrowserBot

Cisco IOS XE Bengaluru 17.6.1

ThousandEyes add-on agent mode is supported. Add-on mode provides a BrowserBot for transaction scripting test.

In Cisco IOS XE Bengaluru 17.6.1, this feature was introduced on the following platforms:

  • Cisco Catalyst 9300, 9300L, and 9300X Series Switches

  • Cisco Catalyst 9400 Series Switches

Native Docker Container: Application Auto-Restart

Cisco IOS XE Amsterdam 17.2.1

Cisco IOS XE Bengaluru 17.5.1

The Application Auto-Restart feature helps applications deployed on platforms to retain the last configured operational state in the event of a system switchover or restart. This feature is enabled by default, and cannot be disabled by users.

  • In Cisco IOS XE Amsterdam 17.2.1, this feature was implemented on Cisco Catalyst 9300 Series Switches.

  • In Cisco IOS XE Bengaluru 17.5.1, this feature was implemented on Cisco Catalyst 9410 Series Switches.