Skip to content

ABHAVTECH IPv6 MIGRATION — WEEK 3

REMAINING HUB SITES IPv6 DEPLOYMENT (CHENNAI, LONDON, FRANKFURT, NJ, DALLAS)

Project: ABV-IPV6-2025
Week: 3 of 44
Phase: Phase 1 — SD-WAN Underlay IPv6
Duration: 5 Days
Objective: Deploy IPv6 on remaining 5 hub sites, establish full 6-hub dual-stack mesh
Scope: Chennai (2 routers), London (2), Frankfurt (2), NJ (2), Dallas (2) = 10 × C8500-12X total


WEEK 3 OVERVIEW

WEEK 3 DELIVERABLES:
┌────────────────────────────────────────────────────────────────────┐
│                                                                    │
│  Day 1-2: Chennai Hub (CHN-HUB-01/02)                             │
│    ✅ Dual-stack MPLS, DIA circuits (Tata/Airtel)                 │
│    ✅ BFD sessions: Mumbai ↔ Chennai IPv6                         │
│    ✅ OMP IPv6 routes: 2 hubs × 2 protocols                       │
│                                                                    │
│  Day 3: London Hub (LON-HUB-01/02)                                │
│    ✅ First EMEA site with dual-stack                             │
│    ✅ Cross-region BFD: APAC ↔ EMEA (Mumbai/Chennai → London)     │
│    ✅ ExpressRoute IPv6 to Azure UK South                         │
│                                                                    │
│  Day 4: Frankfurt + New Jersey Hubs (Parallel)                    │
│    ✅ FRA-HUB-01/02: EMEA completion                              │
│    ✅ NJ-HUB-01/02: Americas region start                         │
│    ✅ Triple-region mesh validation                               │
│                                                                    │
│  Day 5: Dallas Hub + Full Mesh Validation                         │
│    ✅ DAL-HUB-01/02: Americas completion                          │
│    ✅ All 6 hubs dual-stack (12 routers total)                    │
│    ✅ 300+ BFD sessions (IPv4 + IPv6)                             │
│    ✅ Full mesh OMP IPv6 route exchange                           │
│                                                                    │
└────────────────────────────────────────────────────────────────────┘

DAY 1-2: CHENNAI HUB DEPLOYMENT

1.1 Chennai Hub Infrastructure

Current State (IPv4-Only)

CHENNAI HUB SD-WAN INFRASTRUCTURE:
┌────────────────────────────────────────────────────────────────────┐
│                                                                    │
│  DEVICE: CHN-HUB-01                                                │
│    Model:        Cisco Catalyst 8500-12X                           │
│    IOS-XE:       17.15.1                                           │
│    Role:         Primary SD-WAN hub (active)                       │
│    System IP:    10.252.2.1/32                                     │
│    Mgmt IP:      10.252.101.1/24                                   │
│    Site ID:      2                                                 │
│                                                                    │
│  WAN CIRCUITS:                                                     │
│    ├─ MPLS Primary:      TenGigE0/0/0 (Tata, 1 Gbps)              │
│    │    IPv4: 172.16.200.2/30                                      │
│    │                                                               │
│    ├─ DIA Primary:       GigE0/0/4 (Airtel, 500 Mbps)             │
│    │    IPv4: 203.0.115.2/29                                       │
│    │                                                               │
│    └─ ExpressRoute Pri:  TenGigE0/0/2.4002                        │
│         IPv4: 169.254.201.2/30                                     │
│         BGP Peer: 169.254.201.1 (ASN 12076)                        │
│                                                                    │
│  DEVICE: CHN-HUB-02                                                │
│    System IP:    10.252.2.2/32                                     │
│    Mgmt IP:      10.252.101.2/24                                   │
│    Site ID:      2 (same as CHN-HUB-01)                            │
│                                                                    │
└────────────────────────────────────────────────────────────────────┘

Target State (Dual-Stack)

TARGET IPv6 ADDRESSING (Chennai Hub):
┌────────────────────────────────────────────────────────────────────┐
│                                                                    │
│  CHN-HUB-01:                                                       │
│    System IP (IPv6):  2001:db8:abc2:8000::1/128                   │
│    Mgmt IP (IPv6):    2001:db8:abc2:1000::101/64                  │
│                                                                    │
│  WAN CIRCUITS (IPv6 assigned by carriers):                        │
│    ├─ MPLS Primary (Tata):                                        │
│    │    IPv6: 2001:db8:1234:200::2/127                            │
│    │                                                               │
│    ├─ DIA Primary (Airtel):                                        │
│    │    IPv6: 2001:db8:9abc:300::2/64                             │
│    │                                                               │
│    └─ ExpressRoute Primary:                                        │
│         IPv6: 2001:db8:cafe:11::2/126   (Microsoft assigns)       │
│                                                                    │
│  CHN-HUB-02: (Same pattern with ::2 suffix)                        │
│    System IP (IPv6): 2001:db8:abc2:8000::2/128                    │
│                                                                    │
└────────────────────────────────────────────────────────────────────┘

1.2 Chennai Hub Deployment (Automated via vManage)

vManage Template Variables (Chennai)

#!/usr/bin/env python3
"""
Deploy IPv6 to Chennai hubs using vManage API
Reuses templates created in Week 2 with Chennai-specific variables
"""

import requests
import json
import time

VMANAGE = "https://vmanage.abhavtech.com"
USERNAME = "admin"
PASSWORD = "<password>"

CHENNAI_HUB_01_VARS = {
# System
    "//system/system-ip": "10.252.2.1",
    "//system/ipv6-system-ip": "2001:db8:abc2:8000::1/128",
    "//system/site-id": "2",
    "//system/host-name": "CHN-HUB-01",

# VPN 0 - MPLS Interface
    "//vpn-0-interface-mpls/if-name": "TenGigabitEthernet0/0/0",
    "//vpn-0-interface-mpls/mpls_ipv4": "172.16.200.2/30",
    "//vpn-0-interface-mpls/mpls_ipv6": "2001:db8:1234:200::2/127",

# VPN 0 - DIA Interface
    "//vpn-0-interface-dia/if-name": "GigabitEthernet0/0/4",
    "//vpn-0-interface-dia/dia_ipv4": "203.0.115.2/29",
    "//vpn-0-interface-dia/dia_ipv6": "2001:db8:9abc:300::2/64",

# VPN 0 - ExpressRoute Interface
    "//vpn-0-interface-er/if-name": "TenGigabitEthernet0/0/2.4002",
    "//vpn-0-interface-er/er_vlan": "4002",
    "//vpn-0-interface-er/er_primary_ipv4": "169.254.201.2/30",
    "//vpn-0-interface-er/er_primary_ipv6": "2001:db8:cafe:11::2/126",

# VPN 512 - Management
    "//vpn-512/mgmt_ipv4": "10.252.101.1/24",
    "//vpn-512/mgmt_ipv6": "2001:db8:abc2:1000::101/64",
    "//vpn-512/mgmt_gateway_ipv4": "10.252.101.254",
    "//vpn-512/mgmt_gateway_ipv6": "2001:db8:abc2:1000::1",
}

CHENNAI_HUB_02_VARS = {
# System
    "//system/system-ip": "10.252.2.2",
    "//system/ipv6-system-ip": "2001:db8:abc2:8000::2/128",
    "//system/site-id": "2",
    "//system/host-name": "CHN-HUB-02",

# WAN interfaces (slightly different IPs)
    "//vpn-0-interface-mpls/mpls_ipv4": "172.16.200.6/30",
    "//vpn-0-interface-mpls/mpls_ipv6": "2001:db8:1234:200::4/127",
    "//vpn-0-interface-dia/dia_ipv4": "203.0.115.3/29",
    "//vpn-0-interface-dia/dia_ipv6": "2001:db8:9abc:300::3/64",
    "//vpn-0-interface-er/er_primary_ipv4": "169.254.201.6/30",
    "//vpn-0-interface-er/er_primary_ipv6": "2001:db8:cafe:11::6/126",

# Management
    "//vpn-512/mgmt_ipv4": "10.252.101.2/24",
    "//vpn-512/mgmt_ipv6": "2001:db8:abc2:1000::102/64",
}

def vmanage_login():
    """Authenticate to vManage"""
    session = requests.session()
    url = f"{VMANAGE}/j_security_check"
    payload = {'j_username': USERNAME, 'j_password': PASSWORD}

    response = session.post(url, data=payload, verify=False)
    if response.status_code == 200:
        token = session.get(f"{VMANAGE}/dataservice/client/token", verify=False).text
        session.headers['X-XSRF-TOKEN'] = token
        return session
    else:
        raise Exception("vManage login failed")

def attach_template(session, device_id, hostname, variables):
    """Attach device template with variables"""
    template_id = "xxxx-xxxx-xxxx-xxxx"  # ABV-DeviceTemplate-Hub-C8500-IPv6

    payload = {
        "deviceTemplateList": [{
            "templateId": template_id,
            "device": [{
                "csv-deviceId": device_id,
                "csv-deviceIP": variables.get("//vpn-512/mgmt_ipv4", "").split('/')[0],
                "csv-host-name": hostname,
                **variables
            }]
        }],
        "isEdited": False,
        "isMasterEdited": False
    }

    url = f"{VMANAGE}/dataservice/template/device/config/attachfeature"
    response = session.post(url, json=payload, verify=False)

    if response.status_code == 200:
        action_id = response.json()['id']
        print(f"✅ Template attach initiated for {hostname}: {action_id}")
        return action_id
    else:
        print(f"❌ Template attach failed for {hostname}: {response.text}")
        return None

def wait_for_action(session, action_id, timeout=600):
    """Poll action status until complete"""
    url = f"{VMANAGE}/dataservice/device/action/status/{action_id}"
    start = time.time()

    while time.time() - start < timeout:
        response = session.get(url, verify=False)
        data = response.json()['data'][0]

        status = data.get('status')
        activity = data.get('currentActivity', 'N/A')

        if status == "done":
            print(f"  ✅ Complete in {int(time.time() - start)}s")
            return True
        elif status == "failure":
            print(f"  ❌ Failed: {data}")
            return False

        print(f"  Status: {status} ({activity})")
        time.sleep(15)

    print(f"  ❌ Timeout after {timeout}s")
    return False

if __name__ == "__main__":
    print("=== CHENNAI HUB IPv6 DEPLOYMENT ===")
    print("")

    session = vmanage_login()
    print("✅ Logged into vManage")
    print("")

# Deploy CHN-HUB-01
    print("Deploying CHN-HUB-01...")
    device_id_01 = "C8K-CHN-01-SERIAL"  # Actual chassis serial
    action_01 = attach_template(session, device_id_01, "CHN-HUB-01", CHENNAI_HUB_01_VARS)

    if action_01:
        success_01 = wait_for_action(session, action_01)

    print("")

# Deploy CHN-HUB-02
    print("Deploying CHN-HUB-02...")
    device_id_02 = "C8K-CHN-02-SERIAL"
    action_02 = attach_template(session, device_id_02, "CHN-HUB-02", CHENNAI_HUB_02_VARS)

    if action_02:
        success_02 = wait_for_action(session, action_02)

    print("")
    print("═══════════════════════════════════════════")
    if success_01 and success_02:
        print("✅ CHENNAI HUB IPv6 DEPLOYMENT COMPLETE")
    else:
        print("❌ Deployment failed — check vManage logs")
    print("═══════════════════════════════════════════")

Run Chennai deployment:

python3 deploy_chennai_ipv6.py

# Expected output:
# === CHENNAI HUB IPv6 DEPLOYMENT ===
#
# Logged into vManage
#
# Deploying CHN-HUB-01...
# Template attach initiated for CHN-HUB-01: 12345678-abcd-1234
# Status: in_progress (Pushing configuration...)
# Status: in_progress (Validating configuration...)
# Status: done (N/A)
# Complete in 52s
#
# Deploying CHN-HUB-02...
# Template attach initiated for CHN-HUB-02: 87654321-efgh-5678
# Status: in_progress (Pushing configuration...)
# Status: done (N/A)
# Complete in 48s
#
# ═══════════════════════════════════════════
# CHENNAI HUB IPv6 DEPLOYMENT COMPLETE
# ═══════════════════════════════════════════

1.3 Mumbai ↔ Chennai IPv6 Validation

Test 1.3.1: BFD Sessions Between Hubs

# On Mumbai hub
ssh admin@10.252.100.1

MUM-HUB-01# show sdwan bfd sessions | include 2001:db8:abc2:8000
# Expected: IPv6 BFD sessions to Chennai (system IPs ::1 and ::2)

                                                      SOURCE  REMOTE  TX                                     
SYSTEM  SITE   STATE  SRC COLOR  DST COLOR  SRC IP          DST IP  ENCAP  DETECT MULTIPLIER  RX              
IP      ID            (TLOC)     (TLOC)                                                     INTERVAL(msec)  
───────────────────────────────────────────────────────────────────────────────────────────────────────────
2001:db8:abc2:8000::1  2  up  mpls  mpls  2001:db8:1234:100::2  2001:db8:1234:200::2  ipsec  7  1000  1000
2001:db8:abc2:8000::2  2  up  mpls  mpls  2001:db8:1234:100::2  2001:db8:1234:200::4  ipsec  7  1000  1000
2001:db8:abc2:8000::1  2  up  dia   dia   2001:db8:5678:200::2  2001:db8:9abc:300::2  ipsec  7  1000  1000
2001:db8:abc2:8000::2  2  up  dia   dia   2001:db8:5678:200::2  2001:db8:9abc:300::3  ipsec  7  1000  1000

# Analysis: 4 IPv6 BFD sessions (2 routers × 2 colors)

Test 1.3.2: OMP IPv6 Route Exchange

MUM-HUB-01# show sdwan omp routes vpn 1 ipv6 | include abc2

0  1  2001:db8:abc2:2000::/52  O  10.252.31.11  10.252.2.1  0  mpls  ipsec  (Chennai prefix)

# Verify on Chennai hub
ssh admin@10.252.101.1

CHN-HUB-01# show sdwan omp routes vpn 1 ipv6 | include abc1

0  1  2001:db8:abc1:2000::/52  O  10.252.31.11  10.252.1.1  0  mpls  ipsec  (Mumbai prefix)

# Analysis: Bi-directional OMP IPv6 route exchange working

Test 1.3.3: Data Plane Connectivity

# Mumbai → Chennai ping (IPv6)
ssh admin@10.252.100.1 "ping vpn 1 2001:db8:abc2:2000::1 count 10"

# Expected output:
Type escape sequence to abort.
Sending 10, 100-byte ICMP Echos to 2001:db8:abc2:2000::1, timeout is 2 seconds:
!!!!!!!!!!
Success rate is 100 percent (10/10), round-trip min/avg/max = 8/10/14 ms

# Analysis:
# - 100% success (10/10)
# - Latency ~10ms (expected for same-region APAC)
# - Path via MPLS (primary color preference 200)

1.4 Chennai Deployment Summary

DAY 1-2 ACCOMPLISHMENTS:
┌────────────────────────────────────────────────────────────────────┐
│                                                                    │
│  ✅ Chennai Hub IPv6 Deployment Complete                          │
│     - 2 × C8500-12X routers (CHN-HUB-01, CHN-HUB-02)              │
│     - Dual-stack WAN circuits (MPLS Tata, DIA Airtel, ER)         │
│     - System IPs: 2001:db8:abc2:8000::1/2                         │
│                                                                    │
│  📊 APAC REGION STATUS (2 sites deployed):                        │
│     - Total hubs: 4 routers (MUM-HUB-01/02, CHN-HUB-01/02)        │
│     - BFD sessions: 120 (60 IPv4 + 60 IPv6)                       │
│     - OMP IPv6 routes: 2 prefixes (Mumbai, Chennai)               │
│     - Average latency MUM↔CHN: 10ms (MPLS)                        │
│                                                                    │
└────────────────────────────────────────────────────────────────────┘

DAY 3: LONDON HUB DEPLOYMENT

3.1 London Hub Infrastructure

Target State (Dual-Stack)

LONDON HUB IPv6 ADDRESSING:
┌────────────────────────────────────────────────────────────────────┐
│                                                                    │
│  LON-HUB-01:                                                       │
│    System IP (IPv6):  2001:db8:abcb:8000::1/128                   │
│    Mgmt IP (IPv6):    2001:db8:abcb:1000::101/64                  │
│                                                                    │
│  WAN CIRCUITS:                                                     │
│    ├─ MPLS Primary (BT):                                          │
│    │    IPv4: 172.16.160.2/30                                      │
│    │    IPv6: 2001:db8:5678:400::2/127                            │
│    │                                                               │
│    ├─ DIA Primary (Virgin Media):                                 │
│    │    IPv4: 203.0.120.2/29                                       │
│    │    IPv6: 2001:db8:def0:500::2/64                             │
│    │                                                               │
│    └─ ExpressRoute Primary (Azure UK South):                      │
│         IPv4: 169.254.210.2/30                                     │
│         IPv6: 2001:db8:cafe:21::2/126                             │
│                                                                    │
│  LON-HUB-02:                                                       │
│    System IP (IPv6): 2001:db8:abcb:8000::2/128                    │
│                                                                    │
└────────────────────────────────────────────────────────────────────┘

3.2 London Hub Deployment (CLI Method)

Direct CLI Configuration (Faster for Single Site)

! SSH to LON-HUB-01
ssh admin@10.252.116.1

! ═══════════════════════════════════════════════════════════════════
! SYSTEM CONFIGURATION
! ═══════════════════════════════════════════════════════════════════

LON-HUB-01# configure terminal

! Enable IPv6
LON-HUB-01(config)# ipv6 unicast-routing
LON-HUB-01(config)# ipv6 cef

! IPv6 system loopback
LON-HUB-01(config)# interface Loopback65528
LON-HUB-01(config-if)# vrf forwarding 65528
LON-HUB-01(config-if)# ipv6 address 2001:db8:abcb:8000::1/128
LON-HUB-01(config-if)# exit

! ═══════════════════════════════════════════════════════════════════
! WAN INTERFACES
! ═══════════════════════════════════════════════════════════════════

! MPLS Interface (BT)
LON-HUB-01(config)# interface TenGigabitEthernet0/0/0
LON-HUB-01(config-if)# description MPLS-WAN-PRIMARY-BT-DUAL-STACK
LON-HUB-01(config-if)# ip address 172.16.160.2 255.255.255.252
LON-HUB-01(config-if)# ipv6 address 2001:db8:5678:400::2/127
LON-HUB-01(config-if)# ipv6 enable
LON-HUB-01(config-if)# tunnel-interface
LON-HUB-01(config-tunnel-if)# encapsulation ipsec preference 200
LON-HUB-01(config-tunnel-if)# color mpls
LON-HUB-01(config-tunnel-if)# hello-interval 1000
LON-HUB-01(config-tunnel-if)# hello-tolerance 7
LON-HUB-01(config-tunnel-if)# ipv6-bfd
LON-HUB-01(config-tunnel-if)# ipv6-hello-interval 1000
LON-HUB-01(config-tunnel-if)# ipv6-hello-tolerance 7
LON-HUB-01(config-tunnel-if)# exit
LON-HUB-01(config-if)# exit

! DIA Interface (Virgin Media)
LON-HUB-01(config)# interface GigabitEthernet0/0/4
LON-HUB-01(config-if)# description DIA-WAN-PRIMARY-VIRGINMEDIA-DUAL-STACK
LON-HUB-01(config-if)# ip address 203.0.120.2 255.255.255.248
LON-HUB-01(config-if)# ipv6 address 2001:db8:def0:500::2/64
LON-HUB-01(config-if)# ipv6 enable
LON-HUB-01(config-if)# tunnel-interface
LON-HUB-01(config-tunnel-if)# encapsulation ipsec preference 100
LON-HUB-01(config-tunnel-if)# color dia
LON-HUB-01(config-tunnel-if)# hello-interval 1000
LON-HUB-01(config-tunnel-if)# hello-tolerance 7
LON-HUB-01(config-tunnel-if)# ipv6-bfd
LON-HUB-01(config-tunnel-if)# ipv6-hello-interval 1000
LON-HUB-01(config-tunnel-if)# ipv6-hello-tolerance 7
LON-HUB-01(config-tunnel-if)# exit
LON-HUB-01(config-if)# exit

! ExpressRoute Interface (Azure UK South)
LON-HUB-01(config)# interface TenGigabitEthernet0/0/2.4016
LON-HUB-01(config-subif)# description EXPRESSROUTE-PRIMARY-AZURE-UK-DUAL-STACK
LON-HUB-01(config-subif)# encapsulation dot1Q 4016
LON-HUB-01(config-subif)# ip address 169.254.210.2 255.255.255.252
LON-HUB-01(config-subif)# ipv6 address 2001:db8:cafe:21::2/126
LON-HUB-01(config-subif)# ipv6 enable
LON-HUB-01(config-subif)# tunnel-interface
LON-HUB-01(config-tunnel-if)# encapsulation ipsec preference 150
LON-HUB-01(config-tunnel-if)# color azure-expressroute
LON-HUB-01(config-tunnel-if)# restrict
LON-HUB-01(config-tunnel-if)# max-control-connections 0
LON-HUB-01(config-tunnel-if)# exit
LON-HUB-01(config-subif)# exit

! Commit all changes
LON-HUB-01(config)# commit
Commit complete.

LON-HUB-01(config)# end

Verify London Hub Control Connections

LON-HUB-01# show sdwan control connections

! Expected: vBond + vSmart connections via both IPv4 and IPv6
Peer   Peer  Peer        Site  Domain Peer  Priv  Priv                           LOCAL   REMOTE
Type   Prot  System IP   ID    ID     Priv  IP    Port  Public IP       Public Port  Color   Color   State      Uptime
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
vbond  dtls  10.252.31.13 0    1      10.252.31.13 12346 203.0.120.13   12346        mpls    default  up        0:00:05:12
vbond  dtls  2001:db8:abcd:1000::13 0 1 ... 12346 [2001:db8:def0:500::13] 12346 mpls  default up 0:00:01:45

vsmart dtls  10.252.31.11  0   1  10.252.31.11  23456  203.0.120.11  23456  mpls   default  up  0:00:05:10
vsmart dtls  2001:db8:abcd:1000::11 0 1 ... 23456 [...] 23456 mpls default up 0:00:01:43

! Analysis: Dual-stack control plane active ✅

3.3 Cross-Region BFD Validation (APAC ↔ EMEA)

Test 3.3.1: Mumbai → London IPv6 BFD

# On Mumbai hub
ssh admin@10.252.100.1

MUM-HUB-01# show sdwan bfd sessions | include 2001:db8:abcb:8000

2001:db8:abcb:8000::1  16  up  mpls  mpls  2001:db8:1234:100::2  2001:db8:5678:400::2  ipsec  7  1000  1000
2001:db8:abcb:8000::2  16  up  mpls  mpls  2001:db8:1234:100::2  2001:db8:5678:400::4  ipsec  7  1000  1000

# Analysis: BFD sessions to London established via MPLS
# Site ID 16 = London

Test 3.3.2: Cross-Region Latency

# Mumbai → London ping (IPv6)
ssh admin@10.252.100.1 "ping vpn 1 2001:db8:abcb:2000::1 count 20"

# Expected output:
Type escape sequence to abort.
Sending 20, 100-byte ICMP Echos to 2001:db8:abcb:2000::1, timeout is 2 seconds:
!!!!!!!!!!!!!!!!!!!!
Success rate is 100 percent (20/20), round-trip min/avg/max = 118/125/142 ms

# Analysis:
# - 100% success (20/20)
# - Average latency ~125ms (expected for Mumbai ↔ London MPLS)
# - Max jitter 24ms (142-118) — acceptable

Test 3.3.3: OMP Routes (3 Hubs Now)

# On London hub
LON-HUB-01# show sdwan omp routes vpn 1 ipv6

CODE:
C   - Connected             I   - Static installed
O   - OMP                   R   - Static redistributed

TENANT  VPN    PREFIX              PROTOCOL    FROM PEER        TLOC IP      TLOC COLOR       ENCAP  
───────────────────────────────────────────────────────────────────────────────────────────────────
0       1      2001:db8:abc1:2000::/52  O  10.252.31.11     10.252.1.1  mpls            ipsec  (Mumbai)
0       1      2001:db8:abc2:2000::/52  O  10.252.31.11     10.252.2.1  mpls            ipsec  (Chennai)
0       1      2001:db8:abcb:2000::/52  C  0.0.0.0          10.252.16.1 mpls            ipsec  (London local)

# Analysis: London sees both APAC hubs' IPv6 prefixes via OMP

DAY 4: FRANKFURT + NEW JERSEY HUBS (PARALLEL DEPLOYMENT)

4.1 Parallel Deployment Strategy

PARALLEL DEPLOYMENT APPROACH:
┌────────────────────────────────────────────────────────────────────┐
│                                                                    │
│  TEAM A: Frankfurt Deployment (EMEA completion)                   │
│    Engineer 1: FRA-HUB-01 configuration                           │
│    Engineer 2: FRA-HUB-02 configuration                           │
│    Timeline:   4 hours (Day 4 morning)                            │
│                                                                    │
│  TEAM B: New Jersey Deployment (Americas region start)            │
│    Engineer 3: NJ-HUB-01 configuration                            │
│    Engineer 4: NJ-HUB-02 configuration                            │
│    Timeline:   4 hours (Day 4 morning, parallel with Team A)      │
│                                                                    │
│  AFTERNOON: Cross-validation (all 4 sites)                        │
│    - BFD mesh: 10 hubs × 9 peers = 90 BFD sessions per hub        │
│    - OMP routes: 5 prefixes (MUM, CHN, LON, FRA, NJ)              │
│    - Latency matrix: All hub pairs tested                         │
│                                                                    │
└────────────────────────────────────────────────────────────────────┘

4.2 Frankfurt Hub Deployment

Frankfurt IPv6 Addressing

FRANKFURT HUB:
┌────────────────────────────────────────────────────────────────────┐
│  FRA-HUB-01:                                                       │
│    System IP (IPv6):  2001:db8:abcc:8000::1/128                   │
│    Mgmt IP (IPv6):    2001:db8:abcc:1000::101/64                  │
│                                                                    │
│  WAN CIRCUITS:                                                     │
│    MPLS (Deutsche Telekom): IPv6 2001:db8:6789:600::2/127         │
│    DIA (Vodafone):          IPv6 2001:db8:1111:700::2/64          │
│    ExpressRoute (Azure DE): IPv6 2001:db8:cafe:31::2/126          │
│                                                                    │
│  FRA-HUB-02:                                                       │
│    System IP (IPv6): 2001:db8:abcc:8000::2/128                    │
└────────────────────────────────────────────────────────────────────┘

Automated Deployment (vManage API)

# Use same Python script as Chennai, with Frankfurt variables
python3 deploy_frankfurt_ipv6.py

# Variables for FRA-HUB-01:
FRANKFURT_HUB_01_VARS = {
    "//system/system-ip": "10.252.17.1",
    "//system/ipv6-system-ip": "2001:db8:abcc:8000::1/128",
    "//system/site-id": "17",
    "//system/host-name": "FRA-HUB-01",
# ... (WAN interfaces with Frankfurt-specific IPs)
}

# Expected deployment time: 45-60 minutes for both routers

4.3 New Jersey Hub Deployment

New Jersey IPv6 Addressing

NEW JERSEY HUB:
┌────────────────────────────────────────────────────────────────────┐
│  NJ-HUB-01:                                                        │
│    System IP (IPv6):  2001:db8:abcd:8000::1/128                   │
│    Mgmt IP (IPv6):    2001:db8:abcd:1000::101/64                  │
│                                                                    │
│  WAN CIRCUITS:                                                     │
│    MPLS (AT&T):         IPv6 2001:db8:7890:800::2/127             │
│    DIA (Verizon):       IPv6 2001:db8:2222:900::2/64              │
│    ExpressRoute (Azure East US): IPv6 2001:db8:cafe:41::2/126     │
│                                                                    │
│  NJ-HUB-02:                                                        │
│    System IP (IPv6): 2001:db8:abcd:8000::2/128                    │
└────────────────────────────────────────────────────────────────────┘

Deployment Script

python3 deploy_newjersey_ipv6.py

# Variables for NJ-HUB-01:
NJ_HUB_01_VARS = {
    "//system/system-ip": "10.252.32.1",
    "//system/ipv6-system-ip": "2001:db8:abcd:8000::1/128",
    "//system/site-id": "32",
    "//system/host-name": "NJ-HUB-01",
# ... (WAN interfaces with NJ-specific IPs)
}

4.4 Triple-Region Mesh Validation

Test 4.4.1: BFD Session Count Per Hub

#!/bin/bash
# bfd_mesh_validation.sh

echo "=== BFD MESH VALIDATION (5 HUBS DEPLOYED) ==="
echo ""

HUBS=(
  "10.252.100.1:MUM-HUB-01"
  "10.252.101.1:CHN-HUB-01"
  "10.252.116.1:LON-HUB-01"
  "10.252.117.1:FRA-HUB-01"
  "10.252.132.1:NJ-HUB-01"
)

for hub in "${HUBS[@]}"; do
  IP="${hub%%:*}"
  NAME="${hub##*:}"

  echo "[$NAME]"

# IPv4 BFD sessions
  IPV4=$(ssh admin@$IP "show sdwan bfd sessions | grep -c '10\.'" 2>/dev/null)
  echo "  IPv4 BFD sessions: $IPV4"

# IPv6 BFD sessions
  IPV6=$(ssh admin@$IP "show sdwan bfd sessions | grep -c '2001:'" 2>/dev/null)
  echo "  IPv6 BFD sessions: $IPV6"

# Expected: Each hub has BFD to 4 other hubs × 2 routers/hub × 2 colors = 16 IPv6 sessions minimum
  if [[ $IPV6 -ge 16 ]]; then
    echo "  ✅ IPv6 BFD mesh complete"
  else
    echo "  ⚠️  IPv6 BFD sessions low (expected ≥16)"
  fi

  echo ""
done

Run validation:

chmod +x bfd_mesh_validation.sh
./bfd_mesh_validation.sh

# Expected output:
# === BFD MESH VALIDATION (5 HUBS DEPLOYED) ===
#
# [MUM-HUB-01]
# IPv4 BFD sessions: 24
# IPv6 BFD sessions: 24
# IPv6 BFD mesh complete
#
# [CHN-HUB-01]
# IPv4 BFD sessions: 24
# IPv6 BFD sessions: 24
# IPv6 BFD mesh complete
#
# [LON-HUB-01]
# IPv4 BFD sessions: 24
# IPv6 BFD sessions: 24
# IPv6 BFD mesh complete
#
# [FRA-HUB-01]
# IPv4 BFD sessions: 24
# IPv6 BFD sessions: 24
# IPv6 BFD mesh complete
#
# [NJ-HUB-01]
# IPv4 BFD sessions: 24
# IPv6 BFD sessions: 24
# IPv6 BFD mesh complete

Test 4.4.2: Cross-Region Latency Matrix

#!/bin/bash
# latency_matrix.sh

echo "=== CROSS-REGION LATENCY MATRIX (IPv6) ==="
echo ""

declare -A HUBS
HUBS[MUM]="10.252.100.1:2001:db8:abc1:2000::1"
HUBS[CHN]="10.252.101.1:2001:db8:abc2:2000::1"
HUBS[LON]="10.252.116.1:2001:db8:abcb:2000::1"
HUBS[FRA]="10.252.117.1:2001:db8:abcc:2000::1"
HUBS[NJ]="10.252.132.1:2001:db8:abcd:2000::1"

printf "%-10s" "Source→Dest"
for dst in MUM CHN LON FRA NJ; do
  printf "%-12s" "$dst"
done
echo ""
echo "──────────────────────────────────────────────────────────────"

for src in MUM CHN LON FRA NJ; do
  printf "%-10s" "$src"

  SRC_IP="${HUBS[$src]%%:*}"

  for dst in MUM CHN LON FRA NJ; do
    if [[ "$src" == "$dst" ]]; then
      printf "%-12s" "—"
    else
      DST_IPV6="${HUBS[$dst]##*:}"

# Ping and extract avg latency
      LATENCY=$(ssh admin@$SRC_IP "ping vpn 1 $DST_IPV6 count 5 | grep 'round-trip' | awk -F'/' '{print \$5}'" 2>/dev/null)

      if [[ -n "$LATENCY" ]]; then
        printf "%-12s" "${LATENCY}ms"
      else
        printf "%-12s" "FAIL"
      fi
    fi
  done
  echo ""
done

echo ""
echo "Legend: Average RTT in milliseconds (5 pings via IPv6)"

Run latency matrix:

chmod +x latency_matrix.sh
./latency_matrix.sh

# Expected output:
# === CROSS-REGION LATENCY MATRIX (IPv6) ===
#
# Source→Dest MUM CHN LON FRA NJ
# ──────────────────────────────────────────────────────────────
# MUM — 10ms 125ms 142ms 195ms
# CHN 10ms — 128ms 145ms 198ms
# LON 125ms 128ms — 18ms 78ms
# FRA 142ms 145ms 18ms — 85ms
# NJ 195ms 198ms 78ms 85ms —
#
# Legend: Average RTT in milliseconds (5 pings via IPv6)
#
# Analysis:
# - APAC intra-region (MUM↔CHN): ~10ms
# - EMEA intra-region (LON↔FRA): ~18ms
# - APAC↔EMEA: ~125-145ms
# - APAC↔Americas: ~195-200ms
# - EMEA↔Americas: ~75-85ms

DAY 5: DALLAS HUB + FULL MESH VALIDATION

5.1 Dallas Hub Deployment

Dallas IPv6 Addressing

DALLAS HUB:
┌────────────────────────────────────────────────────────────────────┐
│  DAL-HUB-01:                                                       │
│    System IP (IPv6):  2001:db8:abce:8000::1/128                   │
│    Mgmt IP (IPv6):    2001:db8:abce:1000::101/64                  │
│                                                                    │
│  WAN CIRCUITS:                                                     │
│    MPLS (AT&T):         IPv6 2001:db8:8901:A00::2/127             │
│    DIA (Spectrum):      IPv6 2001:db8:3333:B00::2/64              │
│    ExpressRoute (Azure South Central): IPv6 2001:db8:cafe:51::2/126 │
│                                                                    │
│  DAL-HUB-02:                                                       │
│    System IP (IPv6): 2001:db8:abce:8000::2/128                    │
└────────────────────────────────────────────────────────────────────┘

Deployment (CLI or vManage)

# Option 1: vManage API
python3 deploy_dallas_ipv6.py

# Option 2: Direct CLI (same as London method)
# Time: ~30 minutes for both routers

5.2 Complete 6-Hub Mesh Validation

Test 5.2.1: Full BFD Mesh

#!/bin/bash
# full_mesh_bfd.sh

echo "=== FULL 6-HUB BFD MESH VALIDATION ==="
echo ""

HUBS=(
  "10.252.100.1:MUM-HUB-01"
  "10.252.101.1:CHN-HUB-01"
  "10.252.116.1:LON-HUB-01"
  "10.252.117.1:FRA-HUB-01"
  "10.252.132.1:NJ-HUB-01"
  "10.252.133.1:DAL-HUB-01"
)

TOTAL_PASS=0
TOTAL_FAIL=0

for hub in "${HUBS[@]}"; do
  IP="${hub%%:*}"
  NAME="${hub##*:}"

  echo "[$NAME]"

# Total BFD sessions (IPv4 + IPv6)
  TOTAL=$(ssh admin@$IP "show sdwan bfd sessions | grep -c up" 2>/dev/null)

# IPv6 BFD sessions
  IPV6=$(ssh admin@$IP "show sdwan bfd sessions | grep '2001:' | grep -c up" 2>/dev/null)

  echo "  Total BFD sessions: $TOTAL"
  echo "  IPv6 BFD sessions:  $IPV6"

# Expected: 5 other hubs × 2 routers/hub × 2 colors × 2 protocols = 40 BFD sessions per hub
# (Actually less because same-site hubs don't BFD to each other, but ≥30 is reasonable)
  if [[ $TOTAL -ge 60 ]] && [[ $IPV6 -ge 30 ]]; then
    echo "  ✅ BFD mesh complete"
    ((TOTAL_PASS++))
  else
    echo "  ❌ BFD mesh incomplete (total: $TOTAL, IPv6: $IPV6)"
    ((TOTAL_FAIL++))
  fi

  echo ""
done

echo "═══════════════════════════════════════════"
echo "SUMMARY: $TOTAL_PASS/6 hubs passed BFD validation"
if [[ $TOTAL_FAIL -eq 0 ]]; then
  echo "✅ ALL HUBS HAVE COMPLETE BFD MESH"
else
  echo "❌ $TOTAL_FAIL hubs have incomplete mesh"
fi

Test 5.2.2: OMP Route Count

# On each hub, verify OMP has 6 IPv6 prefixes (all hub sites)

for hub in 10.252.100.1 10.252.101.1 10.252.116.1 10.252.117.1 10.252.132.1 10.252.133.1; do
  echo "Hub: $hub"
  ssh admin@$hub "show sdwan omp routes vpn 1 ipv6 | grep -c 'O '" 2>/dev/null
  echo ""
done

# Expected output per hub: 6 (or 5 if local route not counted)
# All 6 hub prefixes present

Test 5.2.3: Data Plane — Full Mesh Ping

#!/bin/bash
# full_mesh_ping.sh

echo "=== FULL 6-HUB DATA PLANE VALIDATION (IPv6) ==="
echo ""

declare -A HUBS
HUBS[MUM-HUB-01]="10.252.100.1:2001:db8:abc1:2000::1"
HUBS[CHN-HUB-01]="10.252.101.1:2001:db8:abc2:2000::1"
HUBS[LON-HUB-01]="10.252.116.1:2001:db8:abcb:2000::1"
HUBS[FRA-HUB-01]="10.252.117.1:2001:db8:abcc:2000::1"
HUBS[NJ-HUB-01]="10.252.132.1:2001:db8:abcd:2000::1"
HUBS[DAL-HUB-01]="10.252.133.1:2001:db8:abce:2000::1"

TOTAL_TESTS=0
PASS_TESTS=0
FAIL_TESTS=0

for src_name in "${!HUBS[@]}"; do
  SRC_IP="${HUBS[$src_name]%%:*}"

  for dst_name in "${!HUBS[@]}"; do
    if [[ "$src_name" == "$dst_name" ]]; then
      continue  # Skip self-ping
    fi

    DST_IPV6="${HUBS[$dst_name]##*:}"

    ((TOTAL_TESTS++))

# Ping 3 times
    RESULT=$(ssh admin@$SRC_IP "ping vpn 1 $DST_IPV6 count 3 | tail -1" 2>/dev/null)

    if [[ "$RESULT" == *"3 received"* ]] || [[ "$RESULT" == *"0% packet loss"* ]]; then
      ((PASS_TESTS++))
      echo "✅ $src_name$dst_name"
    else
      ((FAIL_TESTS++))
      echo "❌ $src_name$dst_name (FAILED)"
    fi
  done
done

echo ""
echo "═══════════════════════════════════════════"
echo "FULL MESH PING RESULTS:"
echo "  Total tests:  $TOTAL_TESTS"
echo "  Passed:       $PASS_TESTS"
echo "  Failed:       $FAIL_TESTS"
echo ""

if [[ $FAIL_TESTS -eq 0 ]]; then
  echo "✅ ALL DATA PLANE PATHS OPERATIONAL"
else
  echo "❌ $FAIL_TESTS failed paths — investigate"
fi

Run full mesh validation:

chmod +x full_mesh_ping.sh
./full_mesh_ping.sh

# Expected output:
# === FULL 6-HUB DATA PLANE VALIDATION (IPv6) ===
#
# MUM-HUB-01 → CHN-HUB-01
# MUM-HUB-01 → LON-HUB-01
# MUM-HUB-01 → FRA-HUB-01
# MUM-HUB-01 → NJ-HUB-01
# MUM-HUB-01 → DAL-HUB-01
# CHN-HUB-01 → MUM-HUB-01
# ... (30 total pairs)
#
# ═══════════════════════════════════════════
# FULL MESH PING RESULTS:
# Total tests: 30
# Passed: 30
# Failed: 0
#
# ALL DATA PLANE PATHS OPERATIONAL

5.3 Week 3 Final Metrics

Comprehensive Status Report

#!/bin/bash
# week3_final_report.sh

echo "═══════════════════════════════════════════════════════════════"
echo "          WEEK 3 COMPLETION REPORT — ALL HUBS IPv6"
echo "═══════════════════════════════════════════════════════════════"
echo ""

# ═══════════════════════════════════════════════════════════════════
# DEPLOYMENT STATUS
# ═══════════════════════════════════════════════════════════════════

echo "DEPLOYMENT STATUS:"
echo "  ✅ Mumbai Hub (MUM-HUB-01/02)      — Week 2"
echo "  ✅ Chennai Hub (CHN-HUB-01/02)     — Week 3 Day 1-2"
echo "  ✅ London Hub (LON-HUB-01/02)      — Week 3 Day 3"
echo "  ✅ Frankfurt Hub (FRA-HUB-01/02)   — Week 3 Day 4"
echo "  ✅ New Jersey Hub (NJ-HUB-01/02)   — Week 3 Day 4"
echo "  ✅ Dallas Hub (DAL-HUB-01/02)      — Week 3 Day 5"
echo ""
echo "  Total hubs deployed:  6 sites (12 × C8500-12X routers)"
echo ""

# ═══════════════════════════════════════════════════════════════════
# BFD STATISTICS
# ═══════════════════════════════════════════════════════════════════

echo "BFD SESSION STATISTICS:"

TOTAL_BFD_IPV4=0
TOTAL_BFD_IPV6=0

for hub in 10.252.100.1 10.252.101.1 10.252.116.1 10.252.117.1 10.252.132.1 10.252.133.1; do
  IPV4=$(ssh admin@$hub "show sdwan bfd sessions | grep '10\.' | grep -c up" 2>/dev/null)
  IPV6=$(ssh admin@$hub "show sdwan bfd sessions | grep '2001:' | grep -c up" 2>/dev/null)

  TOTAL_BFD_IPV4=$((TOTAL_BFD_IPV4 + IPV4))
  TOTAL_BFD_IPV6=$((TOTAL_BFD_IPV6 + IPV6))
done

echo "  IPv4 BFD sessions (total across 6 hubs): $TOTAL_BFD_IPV4"
echo "  IPv6 BFD sessions (total across 6 hubs): $TOTAL_BFD_IPV6"
echo "  Combined total:                           $((TOTAL_BFD_IPV4 + TOTAL_BFD_IPV6))"
echo ""

# ═══════════════════════════════════════════════════════════════════
# OMP ROUTE STATISTICS
# ═══════════════════════════════════════════════════════════════════

echo "OMP ROUTE DISTRIBUTION:"

OMP_IPV4=$(ssh admin@10.252.100.1 "show sdwan omp routes vpn 1 | grep -c 'O '" 2>/dev/null)
OMP_IPV6=$(ssh admin@10.252.100.1 "show sdwan omp routes vpn 1 ipv6 | grep -c 'O '" 2>/dev/null)

echo "  IPv4 routes (VPN 1):  $OMP_IPV4 prefixes"
echo "  IPv6 routes (VPN 1):  $OMP_IPV6 prefixes"
echo "  Expected IPv6:        6 prefixes (all hub sites) ✅"
echo ""

# ═══════════════════════════════════════════════════════════════════
# LATENCY BASELINES
# ═══════════════════════════════════════════════════════════════════

echo "LATENCY BASELINES (IPv6, average RTT):"
echo "  Mumbai ↔ Chennai:     ~10ms   (APAC intra-region)"
echo "  Mumbai ↔ London:      ~125ms  (APAC ↔ EMEA)"
echo "  Mumbai ↔ New Jersey:  ~195ms  (APAC ↔ Americas)"
echo "  London ↔ Frankfurt:   ~18ms   (EMEA intra-region)"
echo "  London ↔ New Jersey:  ~78ms   (EMEA ↔ Americas)"
echo "  New Jersey ↔ Dallas:  ~25ms   (Americas intra-region)"
echo ""

# ═══════════════════════════════════════════════════════════════════
# NEXT PHASE READINESS
# ═══════════════════════════════════════════════════════════════════

echo "READINESS FOR WEEK 4-8 (BRANCH SITES):"
echo "  ✅ All hub sites have dual-stack underlay"
echo "  ✅ Full mesh BFD operational (IPv4 + IPv6)"
echo "  ✅ OMP distributing IPv6 routes globally"
echo "  ✅ Latency baselines established"
echo "  ✅ Zero IPv4 impact (all existing services maintained)"
echo ""

echo "═══════════════════════════════════════════════════════════════"
echo "                   ✅ WEEK 3 COMPLETE"
echo "═══════════════════════════════════════════════════════════════"
echo ""
echo "NEXT: Week 4-8 — Branch Site Deployment (13 sites)"
echo "      Target: ISR 4331 (large branches) + ISR 1100 (small branches)"

Run final report:

chmod +x week3_final_report.sh
./week3_final_report.sh

# Expected output:
# ═══════════════════════════════════════════════════════════════
# WEEK 3 COMPLETION REPORT — ALL HUBS IPv6
# ═══════════════════════════════════════════════════════════════
#
# DEPLOYMENT STATUS:
# Mumbai Hub (MUM-HUB-01/02) — Week 2
# Chennai Hub (CHN-HUB-01/02) — Week 3 Day 1-2
# London Hub (LON-HUB-01/02) — Week 3 Day 3
# Frankfurt Hub (FRA-HUB-01/02) — Week 3 Day 4
# New Jersey Hub (NJ-HUB-01/02) — Week 3 Day 4
# Dallas Hub (DAL-HUB-01/02) — Week 3 Day 5
#
# Total hubs deployed: 6 sites (12 × C8500-12X routers)
#
# BFD SESSION STATISTICS:
# IPv4 BFD sessions (total across 6 hubs): 180
# IPv6 BFD sessions (total across 6 hubs): 180
# Combined total: 360
#
# OMP ROUTE DISTRIBUTION:
# IPv4 routes (VPN 1): 6 prefixes
# IPv6 routes (VPN 1): 6 prefixes
# Expected IPv6: 6 prefixes (all hub sites)
#
# LATENCY BASELINES (IPv6, average RTT):
# Mumbai ↔ Chennai: ~10ms (APAC intra-region)
# Mumbai ↔ London: ~125ms (APAC ↔ EMEA)
# Mumbai ↔ New Jersey: ~195ms (APAC ↔ Americas)
# London ↔ Frankfurt: ~18ms (EMEA intra-region)
# London ↔ New Jersey: ~78ms (EMEA ↔ Americas)
# New Jersey ↔ Dallas: ~25ms (Americas intra-region)
#
# READINESS FOR WEEK 4-8 (BRANCH SITES):
# All hub sites have dual-stack underlay
# Full mesh BFD operational (IPv4 + IPv6)
# OMP distributing IPv6 routes globally
# Latency baselines established
# Zero IPv4 impact (all existing services maintained)
#
# ═══════════════════════════════════════════════════════════════
# WEEK 3 COMPLETE
# ═══════════════════════════════════════════════════════════════
#
# NEXT: Week 4-8 — Branch Site Deployment (13 sites)
# Target: ISR 4331 (large branches) + ISR 1100 (small branches)

WEEK 3 COMPLETE

Summary: - All 6 hub sites dual-stack operational (Mumbai, Chennai, London, Frankfurt, NJ, Dallas) - 12 × C8500-12X routers with IPv6 underlay - 360 BFD sessions (180 IPv4 + 180 IPv6) - 6 IPv6 prefixes distributed via OMP - Full mesh connectivity validated (30/30 hub pairs reachable) - Latency baselines established for all regions - Zero IPv4 impact — all existing services maintained

Next Guide: Week 4-8 — Branch Site Deployment (13 sites: Bangalore, Delhi, Noida, Hyderabad, Pune, Ahmedabad, Kolkata, Jaipur, Surat, Nagpur, Chandigarh, Coimbatore, Lucknow)


© 2025 Abhavtech - IPv6 Migration Week 3 Guide Version 1.0 | Last Updated: January 2025