Deploying the Cisco Routed PON Solution

Completing the implementation of the Cisco Routed PON Solution requires setting up the various components that make up the system. At a high level, the steps to configure the Cisco Routed PON Solution are as follows:

  1. Install the Cisco PON pluggable OLT.

  2. Install and configure the Cisco PON Manager.

  3. Install and configure the MongoDB database.

  4. Configure and activate the Cisco PON Controller.

Install and Configure the PON Manager

For steps to install the PON Manager, refer to PON Manager Installation in the Cisco Routed PON Installation Guide.

Install and Configure the MongoDB database

For steps to install the MongoDB database, refer to MongoDB Installation in the Cisco Routed PON Installation Guide.

Configuring the PON Controller

The PON Controller is installed on a Docker container on the router. The PON Controller installation package is stored either on the hard disk of the router or on a network server to which the router has access.

To configure the PON controller, follow the steps:

Install the PON Controller on Cisco IOS XR7 OS

For the Cisco Routers using the Cisco IOS XR7 framework, execute the following commands to install the software package:


Note


This section is applicable for the following routers:

  • N540X-16Z4G8Q2C-A, N540X-16Z4G8Q2C-D

  • N540-28Z4C-SYS-A, N540-28Z4C-SYS-D

  • N540-24Q8L2DD-SYS

  • NCS-57C1-48Q6D


  1. Execute the following command to confirm if the PON Controller package is present in the router:

    show install active summary | i pon

    Sample Output

    RP/0/RP0/CPU0:PON-Rtr1-CrLk#show install active summary | i pon
    Tue Feb 27 08:45:29.246 UTC
    xr-pon-ctlr                                                   24.1.1.40Iv1.0.1-1

    If the PON Controller isn’t present, the command won’t return any value.

  2. If the PON Controller isn’t present refer to the appropriate guide for steps to download and configure additional packages. The steps to configure an additional package might differ based on the router model.

Install the PON Controller on Cisco IOS XR OS

This section provides the steps to configure Cisco PON Controller software in the routers using the IOS XR framework.


Note


This section is applicable for the below routers:

  • N540-24Z8Q2C-SYS

  • N540-ACC-SYS

  • NCS-55A1-24Q6H-SS

  • NCS-55A2-MOD-S


  1. Execute the following command to confirm if the PON Controller package is present in the router:

    show install active | i pon

    Sample Output

    RP/0/RP0/CPU0:PON-Rtr5-Peyto#show install active | i pon
    Tue Feb 27 08:44:53.345 UTC
    ncs5500-pon-ctlr-1.0.0.0-r241140I
    ncs5500-pon-ctlr-1.0.0.0-r241140I

    If the PON Controller isn’t present, the command doesn’t return any values.

  2. If the PON Controller isn’t present refer to the appropriate guide for steps to download and configure additional packages. The steps to configure an additional package might differ based on the router model.

Activating the PON Controller

After installing up the PON Controller in the router, you need to activate it by connecting to MongoDB and applying additional configurations to the controller.

Before you begin:

  • Ensure that you have synchronized the XR clock with that of an NTP server.

    The steps to configure an NTP server might differ based on the router model. Refer to the appropriate guide for steps to configure an NTP server.

  • Ensure that Linux Networking is configured on the router as given below:
    linux networking
     vrf default
      address-family ipv4
       default-route software-forwarding
       source-hint default-route interface MgmtEth0/RP0/CPU0/0
      !
     !
    !

    The steps to configure Linux Networking might differ based on the router model. Refer to the appropriate guide for steps to configure an NTP server.

  • Ensure that the MongoDB server is reachable from your router by executing the following command:

    bash ping <IP address of the MongoDB server>

    Sample Output

    RP/0/RP0/CPU0:PON-Rtr5-Peyto#bash ping 192.0.2.0
    Tue Feb 27 09:17:53.046 UTC
    RP/0/RP0/CPU0:Feb 27 09:17:53.087 UTC: bash_cmd[66952]: %INFRA-INFRA_MSG-5-RUN_LOGIN : User lab logged into shell from con0/RP0/CPU0
    PING 192.0.2.0 (192.0.2.0) 56(84) bytes of data.
    64 bytes from 192.0.2.0: icmp_seq=1 ttl=64 time=0.820 ms
    64 bytes from 192.0.2.0: icmp_seq=2 ttl=64 time=0.769 ms
    64 bytes from 192.0.2.0: icmp_seq=3 ttl=64 time=0.703 ms

Edit the parameters in the PonCntlInit.json that is part of the PON Controller package establish connection with the MongoDB server. A sample PonCntlInit.json is included in the PON Controller package.

A sample PonCntlInit.json is given below:

{
    "CNTL": {
        "Auth": false,
        "CFG Version": "R4.0.0",
        "DHCPv4": false,
        "DHCPv6": false,
        "PPPoE": false,
        "UMT interface": "tibitvirt",
        "Maximum CPEs Allowed": 0,
        "Maximum CPE Time": 0
    },
    "DEBUG": {},
    "JSON": {
        "databaseDir": "/opt/cisco/poncntl/database/",
        "defaultDir": "/opt/cisco/poncntl/database/"
    },
    "Local Copy": {
        "CNTL-STATE": false,
        "OLT-STATE": false,
        "ONU-STATE": false
    },
    "Logging": {
        "Directory": "/var/log/tibit",
        "FileCount": 2,
        "FileSize": 5120000,
        "Tracebacks": false,
        "Timestamp": false,
        "Facility" : "user"
    },
    "MongoDB": {
        "auth_db": "cisco_users",
        "auth_enable": false,
        "ca_cert_path": "/etc/cisco/ca.pem",
        "compression": false,
        "write_concern": "default",
        "host": "192.0.2.0",                                <-- mongoDB server IP Address
        "name": "cisco_pon_controller",
        "password": "",
        "port": "27017",                                    <-- mongoDB port
        "tls_enable": false,                                <-- field to enable TLS based connection
        "username": "",
        "dns_srv": false,
        "db_uri": "",
        "replica_set_enable": false,
        "replica_set_name": "rs0",
        "replica_set_hosts":
            [
            "192.0.2.3:27017",                              <-- mongoDB replica set 1
            "192.0.2.4:27999",                              <-- mongoDB replica set 2
            "mongo02.example.com:17999"
            ],
        "validate_cfg": true
    },
    "databaseType": "MongoDB",
    "interface": "veth_pon_glb",
    "interface_namespace": ""
}
  1. Change the host IP address parameter to the IP address of your MongoDB server.

  2. (Optional) To enable secure connection between the PON Controller and the MongoDB server, change the value for tls_enable to true.

    If a secure connection is enabled, you’ll need to configure the username and password parameters as well.

  3. If you have configured a replica set for MongoDB, change the IP address for the MongoDB replica set.

  4. Copy and paste the PonCntlinit.json file to either the hard disk of the router or to your network folder.

    When copying the file to the hard disk of the router, it is stored in /misc/disk1 by default.

  5. Confugure Controller using CLI:

    • CLI

      Execute the cfg-file command to initiate the PON controller, the command is used to load the PON controller application on the router.

      Syntax

      cfg-file <tftp transfer protocol>/package_path/ or harddisk/package_path/ vrf <vrf-name> tls-pem <tftp transfer protocol>/pem_file_path/

      Parameter

      Decription

      tftp transfer protocol

      TFTP server IP address.

      package_path

      Location of the .json file.

      Note

       

      If a custom VRF is used for management connectivity, include the VRF name as part of the package path.

      Harddisk

      Harddisk of the router. If the .json file is located on the harddisk, provide the path to on the harddisk.

      vrf

      Specifies VPN routing and forwarding (VRF).

      vrf-name

      Name of a VRF used for MongoDB connectivity.

      tls-pem

      Specifies that TLS is used.

      pem_file_path

      Path of the .pem file. This can either be stored on the router harddisk or a TFTP server.

      Example:

      RP/0/RP0/CPU0:ios(config)#pon-ctlr cfg-file tftp://192.0.2.0/auto/tftp-users2/user2/PonCntlInit.json vrf default tls-pem tftp://192.0.2.0/auto/tftp-blr-users2/user/rootCA.pem
  6. Ensure that the main interface for the SFP is in active.

    For example, if the Cisco PON pluggable OLT is inserted in the port 0/0/0/5:
    RP/0/RP0/CPU0:ios(config)#interface TenGigE0/0/0/5
    RP/0/RP0/CPU0:ios(config-if)#no shutdown 
  7. Create a subinterface with ID 4090 on the port where the small form-factor pluggable is inserted. The subinterface is required to receive the control packets between the PON Controller and the Cisco PON pluggable OLT.

    interface TenGigE0/0/0/5.4090
    encapsulation dot1q 4090
    

    When the subinterface is created, the PON controller discovers the OLTs and ONUs in the network.

    RP/0/RP0/CPU0:ios#run
    Thu Oct 19 08:04:53.799 UTC
    [xr-vm_node0_RP0_CPU0:~]$docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    7909570b4803 cisco-poncntl.xr:R4.0.0 "/usr/bin/supervisor…" 26 hours ago Up 26 hours pon_ctlr
    [xr-vm_node0_RP0_CPU0:~]$docker logs pon_ctlr --tail 50
    2023-10-19 08:07:33.482 INFO PonCntl Total Controllers: 1 OLTs: 1 ONUs: 1
    RP/0/RP0/CPU0:ios(config-if)#no shutdown
  8. Run the lldp command to enable Link Layer Discovery Protocol (LLDP) for the OLT port. This helps in the discovery of the OLTs and ONUs in the PON Manager.

    RP/0/RP0/CPU0:ios(config)# lldp
  9. Confirm if the PON Controller, OLT, and ONU details are displayed in the PON Manager.


    Note


    If the Controller summary displays Status: as offline, then match the UTC clock on your router to that of the Cisco UCS server.


For more information on PON Controller, refer to PON Controller in the Cisco Routed PON Installation Guide.