Blue: standard fabric operation

Orange: vSG LAN connectivity (cross-connect)

Magenta: vSG WAN connectivity (default route)

Green: vRouter integration

Light Blue: Multicast

Red: Link validation


{

    "ports" : {

    "of:0000000000000001/5" : { // connects to node 1

        "interfaces" : [

            {

                "ips" : [ "10.0.1.254/24" ] // subnet of node 1

            },

            {

                "vlan" : "69" // cross-connect s-tag 69 to Fujitsu OLT

            },

            {

                "vlan" : "222" // cross-connect s-tag 222 to PMC OLT

            }

        ]

    },

    "of:0000000000000001/7" : { // connect to node 3

        "interfaces" : [

            {

                "ips" : [ "10.0.1.254/24" ] // subnet of node 3

            }

        ]

    },

    "of:0000000000000001/65" : { // connect to Fujitsu OLT

        "interfaces" : [

            {

                "name" : "fujitsu-olt", // unused

                "vlan" : "69" // cross-connect s-tag 69  to vSG

            }

        ]

    },

    "of:0000000000000001/73" : { // connect to PMC OLT

        "interfaces" : [

            {

                "name" : "pmc-olt", // unused

                "vlan" : "222" // cross-connect s-tag 222 to vSG

            }

        ]

    },

    "of:0000000000000002/5" : { // connect to node 2

        "interfaces" : [

            {

                "ips" : [ "10.0.2.254/24" ] // subnet of node 2

            }

        ]

    },

    "of:0000000000000002/32" : { // connect to Internet router

        "interfaces" : [

            {

                "name" : "external-quagga", // Internet router interface name

                "ips" : [ "10.231.254.202/30", "10.231.254.223/32" ], // Quagga IP addresses

                "mac" : "00:16:3e:56:2b:48" // Quagga WAN MAC

            }

        ],

        "pimInterface" : { // PIM configuration

            "interfaceName" : "external-quagga", // port that faces the Internet router

            "enabled" : true,

            "helloInterval" : 1,

            "holdTime" : 3,

            "propagationDelay" : 500,

            "overrideInterval" : 2500

         }

    }

    },

    "devices" : {

        "of:0000000000000001" : { // fabric leaf 1

            "segmentrouting" : {

                "name" : "Leaf-R1",

                "nodeSid" : 101, // segment router SID

                "routerIp" : "10.0.1.254", // segment router IP (default gateway of compute nodes)

                "routerMac" : "00:00:00:00:01:80", // segment router MAC

                "isEdgeRouter" : true, // true if this is a leaf router

                "adjacencySids" : [] // unused 

            }

        },

        "of:0000000000000002" : { // fabric leaf 2 DPID

            "segmentrouting" : {

                "name" : "Leaf-R2",

                "nodeSid" : 102,

                "routerIp" : "10.0.2.254",

                "routerMac" : "00:00:00:00:02:80",

                "isEdgeRouter" : true,

                "adjacencySids" : []

            }

        },

        "of:0000000000000191" : { // fabric spine 1 DPID

            "segmentrouting" : {

                "name" : "Spine-R1",

                "nodeSid" : 103,

                "routerIp" : "192.168.0.11",

                "routerMac" : "00:00:01:00:11:80",

                "isEdgeRouter" : false,

                "adjacencySids" : []

            }

        },

        "of:0000000000000192" : { // fabric spine 2 DPID

            "segmentrouting" : {

                "name" : "Spine-R2",

                "nodeSid" : 104,

                "routerIp" : "192.168.0.22",

                "routerMac" : "00:00:01:00:22:80",

                "isEdgeRouter" : false,

                "adjacencySids" : []

            }

        }

    },

    "hosts" : {

        "00:02:c9:1e:b1:20/-1" : { // node 1

            "basic": {

                "ips": ["10.0.1.1"], // node 1 IP

                "location": "of:0000000000000001/5" // node 1 location

            }

        },

        "02:42:cf:8d:c0:82/-1" : { // vSG1

            "basic": {

                "ips": ["A.A.A.A"], // vSG1 public IP address

                "location": "of:0000000000000001/5"

            }

        },

        "02:42:cf:8d:c0:83/-1" : { // vSG2

            "basic": {

                "ips": ["B.B.B.B"], // vSG2 public IP address

                "location": "of:0000000000000001/5"

            }

        },

        "00:02:c9:1e:b4:e0/-1" : { // node 2

            "basic": {

                "ips": ["10.0.1.2"],

                "location": "of:0000000000000001/7"

            }

        },

        "74:44:01:74:61:92/-1" : { // vSG3

            "basic": {

                "ips": ["C.C.C.C"], // vSG3 public IP address

                "location": "of:0000000000000001/30"

            }

        },

        "00:02:c9:1e:b4:60/-1" : { // node 2

            "basic": {

                "ips": ["10.0.2.1"], // node 2 IP

                "location": "of:0000000000000002/5"

            }

        }

    },

    "links" : { // list of expected links

        "of:0000000000000001/1-of:0000000000000191/1" : {

            "basic" : {}

        },

        "of:0000000000000001/3-of:0000000000000192/1" : {

            "basic" : {}

        },

        "of:0000000000000002/1-of:0000000000000191/3" : {

            "basic" : {}

        },

        "of:0000000000000002/3-of:0000000000000192/3" : {

            "basic" : {}

        },

        "of:0000000000000191/1-of:0000000000000001/1" : {

            "basic" : {}

        },

        "of:0000000000000192/1-of:0000000000000001/3" : {

            "basic" : {}

        },

        "of:0000000000000191/3-of:0000000000000002/1" : {

            "basic" : {}

        },

        "of:0000000000000192/3-of:0000000000000002/3" : {

            "basic" : {}

        }

    },

    "apps" : {

        "org.onosproject.core" : {

            "core" : {

                "linkDiscoveryMode" : "STRICT" // enable strict link validation

            },

  "multicast": { // The VLAN we expect to see on the multicast ingress and egress

                "ingressVlan": "None",

                "egressVlan": "None"

            } 

        },

        "org.onosproject.segmentrouting" : {

            "segmentrouting" : {

                "vRouterMacs" : [

                    "a4:23:05:34:56:78" // vRouter LAN MAC (vSG’s default gateway)

                ],

                "vRouterId" : "of:0000000000000002", // vRouter DPID (0/0 is replaced by this)

                 "suppressSubnet" : [ // Do not push subnet rules for these ports

                    "of:0000000000000002/31", "of:0000000000000002/32"

                ],

                "suppressHost" : [ // Do not push host rules for these ports

                    "of:0000000000000001/65", "of:0000000000000001/73",

                    "of:0000000000000002/31", "of:0000000000000002/32"

                ]

            }

        },

        "org.onosproject.router" : {

            "router" : {

                "controlPlaneConnectPoint" : "of:0000000000000002/31", // location of Quagga

                "ospfEnabled" : "true", // enable OSPF

                "pimEnabled" : "true", // enable PIM

                "interfaces" : [ "external-quagga" ] // VR only handles peers on these ports

            }

        }

    }

}