Application Hosting Configuration Guide for Cisco 8000 Series Routers, Cisco IOS XR Releases

PDF

Application Hosting Configuration Guide for Cisco 8000 Series Routers, Cisco IOS XR Releases

Docker Application Management using IPv6 Address

Want to summarize with AI?

Log in

Explains how Docker applications are managed using IPv6 addressing schemes, including configuration and operational details.


A Docker application is a software workload hosted within a container that

  • is managed through virtual routing and forwarding (VRF) instances

  • enables seamless integration across network namespaces within the host system, and

  • supports both IPv4 and IPv6 management interfaces for enhanced accessibility.

Table 1. Feature History Table

Feature Name

Release Information

Description

Docker Application Management using IPv6 Address

Release 25.4.1

Introduced in this release on: Fixed Systems (8010 [ASIC: A100])(select variants only*)

*This feature is supported on:

  • 8011-32Y8L2H2FH

  • 8011-12G12X4Y-A/D

Docker Application Management using IPv6 Address

Release 25.1.1

Introduced in this release on: Fixed Systems (8700 [ASIC: K100], 8010 [ASIC: A100])(select variants only*)

*This feature is supported on:

  • 8712-MOD-M

  • 8011-4G24Y4H-I

Docker Application Management using IPv6 Address

Release 24.4.1

Introduced in this release on: Fixed Systems (8200 [ASIC: P100], 8700 [ASIC: P100])(select variants only*); Modular Systems (8800 [LC ASIC: P100])(select variants only*)

*This feature is now supported on:

  • 8212-48FH-M

  • 8711-32FH-M

  • 88-LC1-36EH

  • 88-LC1-12TH24FH-E

  • 88-LC1-52Y8H-EM

Docker Application Management using IPv6 Address

Release 7.11.1

In this release, you gain the ability to manage Docker applications within containers using IPv6 addresses via the router's management interface. Leveraging IPv6 addresses provides expanded addressing options, enhances network scalability, and enables better segmentation and isolation of applications within the network.

Prior to this update, only IPv4 addresses could be used to manage docker applications.

The Application Manager in IOS-XR software release 7.3.15 introduces application networking that enables traffic forwarding between VRF instances using a relay agent deployed inside an independent Docker container. The relay agent acts as a bridge, connecting two network namespaces within the host system and actively transferring traffic between them. Configuration permits forwarding between either a single pair or multiple pairs of ports according to network requirements.

A primary use case is managing Linux-based Docker applications running in the default VRF through a management interface located in a separate VRF. This allows application management to occur seamlessly across VRF boundaries.

Starting with IOS-XR software release 7.11.1, management capabilities are enhanced: Docker applications hosted within containers can now be managed using IPv6 addresses via the Cisco 8000 router's management interface. This update improves accessibility and control compared to earlier versions that only supported IPv4 address management.

Consider a scenario where you need to manage Docker applications in the default VRF from a distinct management VRF. With IPv6 integration, you can access applications through their IPv6 addresses for configuration and monitoring, leveraging the Cisco 8000 router management interface.

Restrictions and limitations

  • The Virtual Routing and Forwarding (VRF) is only supported for Docker apps with host networking.

  • Relay Agent Availability and Management: The relay agent container is designed to be highly available. It will be managed by the App Manager.

  • Relay Agent Creation: For each pair of forwarded ports, one relay agent container will be created.

  • Port Limitation per Application: The total effective number of ports for each application is limited to a maximum of 10.


Configure VRF forwarding for application manager

To manage a Docker application using the Application Manager through the Management Interface, follow these steps:

Procedure

1.

Configure the app manager.

The application manager is configured to access the docker application. Use the appmgr application application-name keyword to enable and specify configuration parameters for the VRF forwarding. A typical example would look like this

Example:

RP/0/RP0/CPU0:ios#appmgr
RP/0/RP0/CPU0:ios#application Testapp
Note

The VRF forwarding related run options like --vrf-forward and --vrf-forward-ip-range will not be passed to the Docker engine when the app container is run.

2.

Enable Basic Forwarding Between Two Ports.

To enable traffic forwarding between two ports in different VRFs, use the following configuration:

Example:

RP/0/RP0/CPU0:ios#activate type docker source swanagent docker-run-opts "--vrf-forward vrf-mgmt:5001 vrf-default:8001 --net=host -it"

This command enables traffic on port 5000 at all addresses in vrf-mgmt to be forwarded to the destination veth device in vrf-default on port 8000.

To enable VRF forwarding between multiple ports, follow the steps below:

  1. Enable Forwarding Between a Range of Ports: To enable traffic forwarding between port ranges in different VRFs, use the following configuration:
    RP/0/RP0/CPU0:ios#--vrf-forward vrf-mgmt:5000-5002 vrf-default:8000-8002

    This command enables traffic on ports 5000, 5001, and 5002 at all addresses in vrf-mgmt to be forwarded to the destination veth device in vrf-default on ports 8000, 8001, and 8002 respectively.

  2. Enable Forwarding Between Multiple VRF Pairs or Port Ranges: To enable traffic forwarding between multiple VRF pairs, use multiple --vrf-forward command.
    RP/0/RP0/CPU0:ios#--vrf-forward vrf-mgmt:5000 vrf-default:8000 --vrf-forward vrf-mgmt:5003-5004 vrf-default:8003-8004
    RP/0/RP0/CPU0:ios#--vrf-forward vrf-mgmt1:5000 vrf-default:8000 --vrf-forward vrf-mgmt2:5000 vrf-default:8001

    You can provide any number of --vrf-forward options, but the total number of port pairs involved should not exceed 10.

3.

Verify the VRF forwarding.

  1. Use the show appmgr application name keyword to verify the VRF forwarding.

    Example:

    RP/0/RP0/CPU0:ios#show appmgr application name swan info detail 
    Thu Oct 26 11:59:32.798 UTC
    Application: swan
      Type: Docker
      Source: swanagent
      Config State: Activated
      Docker Information:
        Container ID: f230a2396b85f6b3eeb01a8a4450a47e5bd8499fe5cfdb141c2d0fba905b63ec
        Container name: swan
        Labels: com.azure.dev.image.build.buildnumber=2.3.2-dev-ricabrah-partho-xr-dev.1+28,
          com.azure.dev.image.build.definitionname=swanagentXR,com.azure.dev.image.build.
          repository.uri=https://1Wan@dev.azure.com/1Wan/SWAN/_git/swanagentXR,com.azure.dev.
          image.system.teamfoundationcollectionuri=https://dev.azure.com/1Wan/,com.azure.dev.
          image.build.builduri=vstfs:///Build/Build/8518,com.azure.dev.image.build.repository.
          name=swanagentXR,com.azure.dev.image.build.sourcebranchname=partho-xr-dev,
          com.azure.dev.image.build.sourceversion=0ebd43521870844688660c131b0921ea7e2dcb27,com.azure.
          dev.image.system.teamproject=SWAN,image.base.ref.name=mcr.microsoft.com
          /mirror/docker/library/alpine:3.15
        Image: swancr.azurecr.io/swanagentxr-iosxr:2.4.0-0ebd435
        Command: "./agentxr"
        Created at: 2023-10-26 11:58:45 +0000 UTC
        Running for: 48 seconds ago
        Status: Up 47 seconds
        Size: 0B (virtual 29.3MB)
        Ports: 
        Mounts: /var/lib/docker/appmgr/config/swanagent/hostname,/var/lib/docker/appmgr/config/swanagent,/var/lib/docker/ems/grpc.sock,/var/run/netns
        Networks: host
        LocalVolumes: 0
        Vrf Relays:
          Vrf Relay: vrf_relay.swan.6a98f0ed060bffa
            Source VRF: vrf-management
            Source Port: 11111
            Destination VRF: vrf-default
            Destination Port: 10000
            IP Address Range: 172.16.0.0/12
            Status: Up 45 seconds
  1. Use the show running-config appmgr keyword to check the running configuration.

    Example:

    RP/0/RP0/CPU0:ios#show running-config appmgr 
    Thu Oct 26 12:04:06.063 UTC
    appmgr
     application swan
      activate type docker source swanagent docker-run-opts "--vrf-forward vrf-management:11111 vrf-default:10000 -it --restart always --cap-add=SYS_ADMIN --net=host --log-opt max-size=20m --log-opt max-file=3 -e HOSTNAME=$HOSTNAME -v /var/run/netns:/var/run/netns -v {app_install_root}/config/swanagent:/root/config -v {app_install_root}/config/swanagent/hostname:/etc/hostname -v /var/lib/docker/ems/grpc.sock:/root/grpc.sock"
     !
    !