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

Manage IOS XR interfaces through Linux

Want to summarize with AI?

Log in

Linux-managed interfaces allow standard Linux automation tools to configure and manage IOS XR interfaces, enabling IP address changes, MTU settings, and state management to propagate bidirectionally between Linux and IOS XR.


A Linux-managed interface is an IOS XR exposed XR interface (EXI) that is configured to accept management input from Linux rather than from the IOS XR configuration. Key characteristics include:

  • By default, all IOS XR interfaces are managed through IOS XR configuration (CLI or YANG models), with attributes such as IP address, MTU, and state inherited from the IOS XR configuration and interface state.

  • When an interface is set to Linux-managed mode, standard Linux automation tools on Linux servers can manage IOS XR interfaces directly, and configuration changes made from Linux propagate back to IOS XR.

  • Secondary IPv4 addresses cannot be managed from Linux; only primary addresses are supported in Linux-managed mode.

Linux-managed interface capabilities

Each network namespace in the Linux system contains a set of interfaces that map to IOS XR interfaces. When an interface is Linux-managed, you can:

  • Configure new IP addresses on the interface from Linux using the ip addr add command.

  • Configure a custom MTU using the ip link set mtu command, which propagates the change back to the IOS XR configuration.

  • Bring the interface up or down using ifconfig commands, with state changes reflected in IOS XR.


Configure an interface to be Linux-managed

Use this procedure to expose a router interface to Linux so that the interface is accessible for packet management, routing, and diagnostics from the IOS XR bash shell.

Procedure

  1. Check the available exposed-interfaces in the system.

    Example:

    Router(config)#linux networking exposed-interfaces interface ?
      
      Bundle-Ether     Aggregated Ethernet interface(s) | short name is BE
      FiftyGigE        FiftyGigabitEthernet/IEEE 802.3 interface(s) | short name is Fi
      FortyGigE        FortyGigabitEthernet/IEEE 802.3 interface(s) | short name is Fo
      FourHundredGigE  FourHundredGigabitEthernet/IEEE 802.3 interface(s) | short name is FH
      GigabitEthernet  GigabitEthernet/IEEE 802.3 interface(s) | short name is Gi
      HundredGigE      HundredGigabitEthernet/IEEE 802.3 interface(s) | short name is Hu
      Loopback         Loopback interface(s) | short name is Lo
      MgmtEth          Ethernet/IEEE 802.3 interface(s) | short name is Mg
      TenGigE          TenGigabitEthernet/IEEE 802.3 interface(s) | short name is Te
      TwentyFiveGigE   TwentyFiveGigabitEthernet/IEEE 802.3 interface(s) | short name is TF
      TwoHundredGigE   TwoHundredGigabitEthernet/IEEE 802.3 interface(s) | short name is TH
  2. Configure the interface to be managed by Linux.

    Example:

    The following example shows how to configure a HundredGigE interface to be managed by Linux:

    Router#configure
    Router(config)#linux networking exposed-interfaces interface HundredGigE 0/0/0/24 linux-managed
    Router(config-exi-if)#commit
  3. View the interface details and the VRF.

    Example:

    The following example shows the information for HundredGigE interface:

    Router#show run interface HundredGigE0/0/0/24
    interface HundredGigE0/0/0/24
    mtu 4110
    vrf blue
    ipv4 mtu 4096
    ipv4 address 10.1.1.10 255.255.255.0
    ipv6 mtu 4096
    ipv6 address fe80::7ae7:e8ff:fed3:20c0 link-local
    !
  4. Verify the configuration in XR.

    Example:

    The following example shows the configuration for HundredGigE interface:

    Router#show running-config linux networking
    linux networking
     exposed-interfaces
      interface HundredGigE0/0/0/24 linux-managed
      !
     !
    !
  5. Verify the configuration from Linux.

    Example:

    The following example shows the configuration for HundredGigE interface:

    Router#bash
    Router:Aug 1 17:40:02.873 UTC: bash_cmd[67805]: %INFRA-INFRA_MSG-5-RUN_LOGIN : User vagrant logged into shell from vty0
    
    [ios:~]$ip netns exec vrf-blue bash
    
    [ios:~]$ifconfig
    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:65536 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1
    RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
    to_xr Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
    UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:500
    RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
    
    [ios:~]$ifconfig -a
    Hu0_0_0_24 Link encap:Ethernet HWaddr 78:e7:e8:d3:20:c0
    BROADCAST MULTICAST MTU:1500 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:65536 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1
    RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
    to_xr Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
    UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:500
    RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

Configure a new IP address on a Linux-managed interface

Use this procedure to configure a new IP address on a Linux-managed interface from the Linux shell. Changes made from Linux are propagated automatically to the IOS XR configuration for the interface.

Before you begin

Before you begin, configure the interface as Linux-managed. For details, see Configure an interface to be Linux-managed.

Procedure

  1. Configure the IP address on the interface from the Linux shell.

    Example:

    [ios:~]$ip addr add 10.1.1.10/24 dev Hu0_0_0_24
    [ios:~]$Router:Aug 1 17:41:11.546 UTC: xlncd[253]: %MGBL-CONFIG-6-DB_COMMIT : Configuration
    committed by user 'system'. Use 'show configuration commit changes 1000000021' to view the changes.

    The system log confirms that the IP address change has been committed to the IOS XR configuration automatically.

  2. Verify that the new IP address is configured on the interface.

    Example:

    [ios:~]$ifconfig Hu0_0_0_24
    Hu0_0_0_24  Link encap:Ethernet  HWaddr 78:e7:e8:d3:20:c0
                inet addr:10.1.1.10  Bcast:0.0.0.0  Mask:255.255.255.0
                BROADCAST MULTICAST  MTU:1500  Metric:1

    The IP address 10.1.1.10 appears on the interface, confirming that the configuration was applied successfully.

The new IP address is configured on the Linux-managed interface and the change is automatically committed to the IOS XR configuration.


Configure custom MTU setting

Use this procedure to set a custom maximum transmission unit (MTU) on a Linux-managed interface and confirm that the updated MTU is reflected in both the Linux interface configuration and the IOS XR running configuration.

Procedure

  1. Configure the MTU setting.

    Example:

    [ios:~]$ifconfig Hu0_0_0_24 up
    
    [ios:~]$Router:Aug 1 17:41:54.824 UTC: ifmgr[266]: %PKT_INFRA-LINK-3-UPDOWN : Interface
    HundredGigE0/0/0/24, changed state to Down
    Router:Aug 1 17:41:54.824 UTC: ifmgr[266]: %PKT_INFRA-LINEPROTO-5-UPDOWN : Line protocol on
    Interface HundredGigE0/0/0/24, changed state to Down
    Router:Aug 1 17:41:56.448 UTC: xlncd[253]: %MGBL-CONFIG-6-DB_COMMIT : Configuration committed by
    user 'system'. Use 'show configuration commit changes 1000000022' to view the changes.
    Router:Aug 1 17:41:56.471 UTC: ifmgr[266]: %PKT_INFRA-LINK-3-UPDOWN : Interface
    HundredGigE0/0/0/24, changed state to Up
    Router:Aug 1 17:41:56.484 UTC: ifmgr[266]: %PKT_INFRA-LINEPROTO-5-UPDOWN : Line protocol on
    Interface HundredGigE0/0/0/24, changed state to Up
    Router:Aug 1 17:41:58.493 UTC: xlncd[253]: %MGBL-CONFIG-6-DB_COMMIT : Configuration committed by
    user 'system'. Use 'show configuration commit changes 1000000023' to view the changes.
    
    [ios:~]$
    [ios:~]$ip link set dev Hu0_0_0_24 mtu 4096
    [ios:~]$
    [ios:~]$Router:Aug 1 17:42:46.830 UTC: xlncd[253]: %MGBL-CONFIG-6-DB_COMMIT : Configuration
    committed by user 'system'. Use 'show configuration commit changes 1000000024' to view the changes.
  2. Verify that the MTU setting has been updated in Linux.

    Example:

    [ios:~]$ifconfig
    Hu0_0_0_24 Link encap:Ethernet HWaddr 78:e7:e8:d3:20:c0
    inet addr:10.1.1.10 Bcast:0.0.0.0 Mask:255.255.255.0
    inet6 addr: fe80::7ae7:e8ff:fed3:20c0/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:4096 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:0 (0.0 B) TX bytes:648 (648.0 B)
    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:65536 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1
    RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
    to_xr Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
    UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:500
    RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
  3. Check the effect on the IOS XR configuration with the change in MTU setting on this interface.

    Example:

    Router#show running-config int HundredGigE0/0/0/24
    interface HundredGigE0/0/0/24
     mtu 4110
      vrf blue
      ipv4 mtu 4096
      ipv4 address 10.1.1.10 255.255.255.0
      ipv6 mtu 4096
      ipv6 address fe80::7ae7:e8ff:fed3:20c0 link-local
      !
     !
    !
    Router#
    Router#show ip int br | i HundredGigE0/0/0/24
    HundredGigE0/0/0/24 10.1.1.10 Up Up blue

    The output indicates that the interface acts as a regular Linux interface, and IOS XR configuration receives inputs from Linux.