Skip to content

BGP Configuration Model Comparison: Nokia vs OpenConfig

This document provides a detailed comparison between Nokia SROS and OpenConfig BGP configuration models for network configuration management.

Overview

Aspect Nokia SROS 25.7 OpenConfig
Model Type Vendor-specific configuration Vendor-neutral configuration
Primary Model nokia-conf-router-bgp.yang openconfig-bgp.yang
Architecture Submodule of main Nokia config tree Standalone modular configuration
Intent Nokia SROS command translation Abstract vendor-neutral intent

Model Structure Comparison

Nokia BGP Configuration Model

nokia-conf-router-bgp (submodule)
├── belongs-to: nokia-conf
├── router/
│   └── bgp/
│       ├── admin-state          # Enable/disable BGP
│       ├── router-id            # BGP router ID
│       ├── autonomous-system    # Local AS number
│       ├── neighbor/            # Neighbor configuration
│       ├── group/               # Peer group configuration
│       ├── policy-options/      # BGP policies
│       ├── family/              # Address family config
│       └── timers/              # BGP timers

OpenConfig BGP Configuration Model

openconfig-bgp
├── bgp/
│   ├── global/                  # Global BGP configuration
│   │   ├── config/
│   │   │   ├── as               # Local AS
│   │   │   └── router-id        # BGP router ID
│   │   ├── afi-safis/           # Address family config
│   │   └── graceful-restart/    # GR configuration
│   ├── neighbors/               # Neighbor configuration
│   │   └── neighbor[]/
│   │       ├── config/
│   │       ├── timers/
│   │       └── afi-safis/
│   └── peer-groups/             # Peer group configuration
│       └── peer-group[]/

Configuration Categories Comparison

1. Global BGP Configuration

Nokia SROS

// Path: /configure/router/bgp
container bgp {
    leaf admin-state {
        type types-sros:admin-state;
        default "disable";
    }
    leaf autonomous-system {
        type types-bgp:as-number;
        mandatory true;
    }
    leaf router-id {
        type types-sros:ipv4-unicast-address;
    }
    container confederation {
        leaf as-number;
        leaf-list member-as;
    }
}

OpenConfig

// Path: /bgp/global/config
container config {
    leaf as {
        type inet:as-number;
        mandatory true;
    }
    leaf router-id {
        type yang:dotted-quad;
    }
}
container confederation {
    container config {
        leaf identifier;
        leaf-list member-as;
    }
}

Key Differences: - Nokia: Explicit admin-state control (enable/disable) - OpenConfig: Implicit enablement through configuration presence - Nokia: More granular administrative controls - OpenConfig: Simplified intent-based configuration

2. Neighbor Configuration

Nokia SROS

container neighbor {
    list neighbor {
        key "ip-address";
        leaf ip-address {
            type types-sros:ipv4-unicast-address;
        }
        leaf admin-state {
            type types-sros:admin-state;
            default "enable";
        }
        leaf peer-as {
            type types-bgp:as-number;
            mandatory true;
        }
        container authentication {
            leaf key-chain;
            leaf key;
        }
        container local-as {
            leaf as-number;
            leaf prepend;
            leaf no-prepend-global-as;
        }
    }
}

OpenConfig

container neighbors {
    list neighbor {
        key "neighbor-address";
        leaf neighbor-address {
            type inet:ip-address;
        }
        container config {
            leaf neighbor-address;
            leaf peer-as;
            leaf auth-password;
            leaf description;
            leaf local-as;
        }
        container timers {
            container config {
                leaf connect-retry;
                leaf hold-time;
                leaf keepalive-interval;
            }
        }
    }
}

Key Differences: - Nokia: More granular authentication options - OpenConfig: Simplified password-based auth - Nokia: Advanced local-AS manipulation - OpenConfig: Basic local-AS override - Nokia: Explicit administrative control per neighbor - OpenConfig: Configuration-driven neighbor state

3. Address Family Configuration

Nokia SROS

container family {
    list family {
        key "afi safi";
        leaf afi {
            type types-bgp:afi;
        }
        leaf safi {
            type types-bgp:safi;
        }
        leaf admin-state {
            type types-sros:admin-state;
            default "enable";
        }
        container unicast {
            leaf add-paths;
            leaf advertise-inactive;
            leaf remove-private-as;
        }
    }
}

OpenConfig

container afi-safis {
    list afi-safi {
        key "afi-safi-name";
        leaf afi-safi-name {
            type identityref {
                base oc-bgp-types:AFI_SAFI_TYPE;
            }
        }
        container config {
            leaf afi-safi-name;
            leaf enabled;
        }
        container add-paths {
            container config {
                leaf receive;
                leaf send-max;
            }
        }
    }
}

4. BGP Policies

Nokia SROS

container policy-options {
    container begin-policy {
        leaf name;
        container entry {
            list entry {
                key "entry-id";
                leaf entry-id;
                container from {
                    leaf protocol;
                    leaf prefix-list;
                    leaf neighbor;
                }
                container action {
                    leaf accept;
                    leaf reject;
                    container metric;
                    container local-preference;
                }
            }
        }
    }
}

OpenConfig

// Policies defined in separate openconfig-routing-policy model
container apply-policy {
    container config {
        leaf-list import-policy;
        leaf-list export-policy;
        leaf default-import-policy;
        leaf default-export-policy;
    }
}

Key Differences: - Nokia: Embedded policy configuration within BGP - OpenConfig: Separate routing policy model (modular approach) - Nokia: More granular policy action options - OpenConfig: Policy reference-based approach

Configuration Workflows

1. Basic BGP Setup

Nokia SROS Configuration Flow

# 1. Enable BGP globally
/configure router bgp admin-state enable

# 2. Set AS and router-id  
/configure router bgp autonomous-system 65001
/configure router bgp router-id 192.168.1.1

# 3. Configure neighbor
/configure router bgp neighbor 192.168.1.2 peer-as 65002
/configure router bgp neighbor 192.168.1.2 admin-state enable

# 4. Enable address family
/configure router bgp neighbor 192.168.1.2 family ipv4 unicast admin-state enable

OpenConfig Configuration Intent

{
  "bgp": {
    "global": {
      "config": {
        "as": 65001,
        "router-id": "192.168.1.1"
      }
    },
    "neighbors": {
      "neighbor": [
        {
          "neighbor-address": "192.168.1.2",
          "config": {
            "neighbor-address": "192.168.1.2", 
            "peer-as": 65002
          },
          "afi-safis": {
            "afi-safi": [
              {
                "afi-safi-name": "ipv4-unicast",
                "config": {
                  "afi-safi-name": "ipv4-unicast",
                  "enabled": true
                }
              }
            ]
          }
        }
      ]
    }
  }
}

2. Advanced BGP Configuration

Nokia SROS: Route Reflection

// Nokia: Explicit route-reflector configuration
container route-reflector {
    leaf cluster-id;
    leaf client {
        type boolean;
        default false;
    }
}

OpenConfig: Route Reflection

// OpenConfig: Route reflector as part of neighbor config
container route-reflector {
    container config {
        leaf route-reflector-cluster-id;
        leaf route-reflector-client;
    }
}

Configuration Management Patterns

1. Administrative Control

Capability Nokia OpenConfig Notes
Global enable/disable ✅ admin-state ⚠️ Implicit Nokia explicit control
Per-neighbor control ✅ admin-state ⚠️ Config presence Nokia granular control
Per-AFI control ✅ admin-state ✅ enabled flag Both support AFI control
Graceful changes ✅ Shutdown commands ✅ Config transactions Different approaches

2. Configuration Validation

Capability Nokia OpenConfig Notes
Syntax validation ✅ YANG + Nokia rules ✅ YANG + OC rules Both have validation
Semantic validation ✅ Nokia-specific ✅ Cross-vendor Different rule sets
Dependency checking ✅ Nokia constraints ✅ OC constraints Model-specific
Commit verification ✅ Nokia commit tests ✅ Dry-run support Implementation varies

3. Configuration Templates

Nokia SROS Template Example

grouping bgp-neighbor-template {
    leaf admin-state {
        type types-sros:admin-state;
        default "enable";
    }
    leaf description;
    leaf peer-as {
        type types-bgp:as-number;
    }
    container timers {
        leaf connect-retry;
        leaf keepalive;
        leaf hold-time;
    }
    // Nokia-specific neighbor options
}

OpenConfig Template Example

grouping bgp-neighbor-base {
    container config {
        leaf peer-as;
        leaf local-as;
        leaf description;
        leaf auth-password;
    }
    container timers {
        container config {
            leaf connect-retry;
            leaf hold-time;
            leaf keepalive-interval;
        }
    }
}

Configuration Deployment

Nokia SROS Deployment

  • Method: NETCONF, Nokia NSP, CLI scripts
  • Validation: Nokia commit validation
  • Rollback: Nokia checkpoint system
  • Atomic: Nokia transaction support

OpenConfig Deployment

  • Method: gNMI, NETCONF, vendor translators
  • Validation: YANG validation + vendor translation
  • Rollback: Vendor-specific rollback mechanisms
  • Atomic: Depends on vendor implementation

Migration Strategies

From Nokia-Specific to OpenConfig

# Example mapping function
def nokia_to_openconfig_neighbor(nokia_config):
    return {
        "neighbor-address": nokia_config["ip-address"],
        "config": {
            "neighbor-address": nokia_config["ip-address"],
            "peer-as": nokia_config["peer-as"],
            "description": nokia_config.get("description", ""),
            # Map Nokia admin-state to OpenConfig enabled
            "enabled": nokia_config.get("admin-state") == "enable"
        }
    }

Configuration Abstraction Layer

# Universal BGP configuration intent
bgp_intent:
  global:
    asn: 65001
    router_id: "192.168.1.1"
  neighbors:
    - address: "192.168.1.2"
      remote_asn: 65002
      description: "Peer router"
      enabled: true
      address_families:
        - "ipv4-unicast"
        - "ipv6-unicast"

# Translates to Nokia or OpenConfig as needed

Advantages and Trade-offs

Nokia Configuration Models

Advantages: - ✅ Full feature coverage: Access to all Nokia SROS BGP features - ✅ Explicit control: Granular administrative state management - ✅ Integrated policies: Embedded policy configuration - ✅ Nokia optimization: Optimized for Nokia workflows

Trade-offs: - ❌ Vendor lock-in: Nokia-specific configuration patterns - ❌ Complexity: More configuration options can increase complexity - ❌ Learning curve: Nokia-specific configuration knowledge required

OpenConfig Configuration Models

Advantages: - ✅ Vendor neutrality: Same config works across vendors - ✅ Simplicity: Intent-based, simplified configuration - ✅ Standardization: Industry-standard configuration patterns - ✅ Tool ecosystem: Broader tooling and automation support

Trade-offs: - ❌ Feature gaps: May not cover all vendor-specific features - ❌ Translation complexity: Requires vendor-specific translation layers - ❌ Implementation variance: Vendor differences in OpenConfig support

Recommendations

Use Nokia Configuration Models When:

  • Single Nokia environment with deep feature requirements
  • Need for granular administrative control
  • Nokia-specific BGP features are required
  • Existing Nokia expertise and tooling

Use OpenConfig Configuration Models When:

  • Multi-vendor network environment
  • Standardized network automation required
  • Intent-based configuration preferred
  • Leveraging OpenConfig ecosystem tools

Conclusion

Configuration approach choice depends on: - Environment complexity: Single vs multi-vendor - Feature requirements: Standard vs vendor-specific - Operational model: Direct vs abstracted configuration - Team expertise: Vendor-specific vs standardized knowledge

Both models serve different configuration management philosophies: - Nokia models: Deep, vendor-specific configuration control - OpenConfig models: Simplified, standardized configuration intent