MCAST-VPN Family¶
The BGP Multicast VPN(BGP MCAST-VPN) Multiprotocol extension can be used for MVPN auto-discovery, advertising MVPN to Inclusive P-Multicast Service Interface (I-PMSI) tunnel binding, advertising (C-S,C-G) to Selective PMSI (S-PMSI) tunnel binding, VPN customer multicast routing information exchange among Provider Edge routers (PEs), choosing a single forwarder PE, and for procedures in support of co-locating a Customer Rendezvous Point (C-RP) on a PE.
Configuration¶
This section shows a way to enable MCAST-VPN family in BGP speaker and peer configuration.
BGP Speaker¶
To enable MCAST-VPN support in BGP plugin, first configure BGP speaker instance:
URL: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/protocols
Method: POST
Content-Type: application/xml
Request Body:
<protocol xmlns="http://openconfig.net/yang/network-instance">
<name>bgp-example</name>
<identifier xmlns:x="http://openconfig.net/yang/policy-types">x:BGP</identifier>
<bgp xmlns="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions">
<global>
<config>
<router-id>192.0.2.2</router-id>
<as>65000</as>
</config>
<afi-safis>
<afi-safi>
<afi-safi-name>IPV4-MCAST-VPN</afi-safi-name>
</afi-safi>
<afi-safi>
<afi-safi-name>IPV6-MCAST-VPN</afi-safi-name>
</afi-safi>
</afi-safis>
</global>
</bgp>
</protocol>
Content-Type: application/json
Request Body:
{
"protocol": [
{
"identifier": "openconfig-policy-types:BGP",
"name": "bgp-example",
"bgp-openconfig-extensions:bgp": {
"global": {
"config": {
"router-id": "192.0.2.2",
"as": 65000
},
"afi-safis": {
"afi-safi": [
{
"afi-safi-name": "IPV4-MCAST-VPN"
},
{
"afi-safi-name": "IPV6-MCAST-VPN"
}
]
}
}
}
}
]
}
BGP Peer¶
Here is an example for BGP peer configuration with enabled IPV4 MCAST-VPN family.
URL: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types:BGP,bgp-example/bgp-openconfig-extensions:bgp/neighbors
Method: POST
Content-Type: application/xml
Request Body:
<neighbor xmlns="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions">
<neighbor-address>192.0.2.1</neighbor-address>
<afi-safis>
<afi-safi>
<afi-safi-name>IPV4-MCAST-VPN</afi-safi-name>
</afi-safi>
</afi-safis>
</neighbor>
Content-Type: application/json
Request Body:
{
"neighbor": [
{
"neighbor-address": "192.0.2.1",
"afi-safis": {
"afi-safi": [
{
"afi-safi-name": "IPV4-MCAST-VPN"
}
]
}
}
]
}
Ipv4 MCAST-VPN Route API¶
Following tree illustrates the BGP MCAST-VPN route structure.
:(mvpn-routes-ipv4-case)
+--ro mvpn-routes-ipv4
+--ro mvpn-route* [route-key path-id]
+--ro (mvpn-choice)
+--:(intra-as-i-pmsi-a-d-case)
| +--ro intra-as-i-pmsi-a-d
+--:(inter-as-i-pmsi-a-d-case)
| +--ro inter-as-i-pmsi-a-d
| +--ro source-as inet:as-number
+--:(s-pmsi-a-d-case)
| +--ro s-pmsi-a-d
| +--ro multicast-source inet:ip-address
| +--ro (multicast-group)?
| +--:(c-g-address-case)
| | +--ro c-g-address? inet:ip-address
| +--:(ldp-mp-opaque-value-case)
| +--ro ldp-mp-opaque-value
| +--ro opaque-type uint8
| +--ro opaque-extended-type? uint16
| +--ro opaque yang:hex-string
+--:(leaf-a-d-case)
| +--ro leaf-a-d
| +--ro (leaf-a-d-route-key)
| +--:(inter-as-i-pmsi-a-d-case)
| | +--ro inter-as-i-pmsi-a-d
| | +--ro source-as inet:as-number
| +--:(s-pmsi-a-d-case)
| +--ro s-pmsi-a-d
| +--ro multicast-source inet:ip-address
| +--ro (multicast-group)?
| +--:(c-g-address-case)
| | +--ro c-g-address? inet:ip-address
| +--:(ldp-mp-opaque-value-case)
| +--ro ldp-mp-opaque-value
| +--ro opaque-type uint8
| +--ro opaque-extended-type? uint16
| +--ro opaque yang:hex-string
+--:(source-active-a-d-case)
| +--ro source-active-a-d
| +--ro multicast-source inet:ip-address
| +--ro multicast-group inet:ip-address
+--:(shared-tree-join-case)
| +--ro shared-tree-join
| +--ro c-multicast
| +--ro multicast-source inet:ip-address
| +--ro source-as inet:as-number
| +--ro (multicast-group)?
| +--:(c-g-address-case)
| | +--ro c-g-address? inet:ip-address
| +--:(ldp-mp-opaque-value-case)
| +--ro ldp-mp-opaque-value
| +--ro opaque-type uint8
| +--ro opaque-extended-type? uint16
| +--ro opaque yang:hex-string
+--:(source-tree-join-case)
+--ro source-tree-join
+--ro c-multicast
+--ro multicast-source inet:ip-address
+--ro source-as inet:as-number
+--ro (multicast-group)?
+--:(c-g-address-case)
| +--ro c-g-address? inet:ip-address
+--:(ldp-mp-opaque-value-case)
+--ro ldp-mp-opaque-value
+--ro opaque-type uint8
+--ro opaque-extended-type? uint16
+--ro opaque yang:hex-string
...
Ipv6 MCAST-VPN Route API¶
Following tree illustrates the BGP MCAST-VPN route structure.
:(mvpn-routes-ipv6-case)
+--ro mvpn-routes-ipv6
+--ro mvpn-route* [route-key path-id]
+--ro (mvpn-choice)
+--:(intra-as-i-pmsi-a-d-case)
| +--ro intra-as-i-pmsi-a-d
+--:(inter-as-i-pmsi-a-d-case)
| +--ro inter-as-i-pmsi-a-d
| +--ro source-as inet:as-number
+--:(s-pmsi-a-d-case)
| +--ro s-pmsi-a-d
| +--ro multicast-source inet:ip-address
| +--ro (multicast-group)?
| +--:(c-g-address-case)
| | +--ro c-g-address? inet:ip-address
| +--:(ldp-mp-opaque-value-case)
| +--ro ldp-mp-opaque-value
| +--ro opaque-type uint8
| +--ro opaque-extended-type? uint16
| +--ro opaque yang:hex-string
+--:(leaf-a-d-case)
| +--ro leaf-a-d
| +--ro (leaf-a-d-route-key)
| +--:(inter-as-i-pmsi-a-d-case)
| | +--ro inter-as-i-pmsi-a-d
| | +--ro source-as inet:as-number
| +--:(s-pmsi-a-d-case)
| +--ro s-pmsi-a-d
| +--ro multicast-source inet:ip-address
| +--ro (multicast-group)?
| +--:(c-g-address-case)
| | +--ro c-g-address? inet:ip-address
| +--:(ldp-mp-opaque-value-case)
| +--ro ldp-mp-opaque-value
| +--ro opaque-type uint8
| +--ro opaque-extended-type? uint16
| +--ro opaque yang:hex-string
+--:(source-active-a-d-case)
| +--ro source-active-a-d
| +--ro multicast-source inet:ip-address
| +--ro multicast-group inet:ip-address
+--:(shared-tree-join-case)
| +--ro shared-tree-join
| +--ro c-multicast
| +--ro multicast-source inet:ip-address
| +--ro source-as inet:as-number
| +--ro (multicast-group)?
| +--:(c-g-address-case)
| | +--ro c-g-address? inet:ip-address
| +--:(ldp-mp-opaque-value-case)
| +--ro ldp-mp-opaque-value
| +--ro opaque-type uint8
| +--ro opaque-extended-type? uint16
| +--ro opaque yang:hex-string
+--:(source-tree-join-case)
+--ro source-tree-join
+--ro c-multicast
+--ro multicast-source inet:ip-address
+--ro source-as inet:as-number
+--ro (multicast-group)?
+--:(c-g-address-case)
| +--ro c-g-address? inet:ip-address
+--:(ldp-mp-opaque-value-case)
+--ro ldp-mp-opaque-value
+--ro opaque-type uint8
+--ro opaque-extended-type? uint16
+--ro opaque yang:hex-string
...
Usage¶
The Ipv4 Multicast VPN table in an instance of the speaker’s Loc-RIB can be verified via REST:
URL: /rests/data/bgp-rib:bgp-rib/rib=bgp-example/loc-rib/tables=bgp-types:ipv4-address-family,bgp-mvpn:mcast-vpn-subsequent-address-family/bgp-mvpn-ipv4:mvpn-routes?content=nonconfig
Method: GET
Response Body:
<mvpn-routes xmlns="urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4">
<mvpn-route>
<route-key>flow1</route-key>
<path-id>0</path-id>
<intra-as-i-pmsi-a-d>
<route-distinguisher>172.16.0.44:101</route-distinguisher>
<orig-route-ip>192.168.100.1</orig-route-ip>
</intra-as-i-pmsi-a-d>
<attributes>
<ipv4-next-hop>
<global>199.20.166.41</global>
</ipv4-next-hop>
<as-path/>
<origin>
<value>igp</value>
</origin>
</attributes>
</mvpn-route>
</mvpn-routes>
Response Body:
{
"bgp:mvpn:ipv4:mvpn-routes": {
"mvpn-route": {
"route-key": "flow1",
"path-id": 0,
"intra-as-i-pmsi-a-d": {
"route-distinguisher": "172.16.0.44:101",
"orig-route-ip": "192.168.100.1"
},
"attributes": {
"origin": {
"value": "igp"
},
"ipv4-next-hop": {
"global": "199.20.166.41"
}
}
}
}
}
The Ipv6 Multicast VPN table in an instance of the speaker’s Loc-RIB can be verified via REST:
URL: /rests/data/bgp-rib:bgp-rib/rib=bgp-example/loc-rib/tables=bgp-types:ipv4-address-family,bgp-mvpn:mcast-vpn-subsequent-address-family/bgp-mvpn-ipv6:mvpn-routes?content=nonconfig
Method: GET
Response Body:
<mvpn-routes xmlns="urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv6">
<mvpn-route>
<route-key>flow1</route-key>
<path-id>0</path-id>
<intra-as-i-pmsi-a-d>
<route-distinguisher>172.16.0.44:101</route-distinguisher>
<orig-route-ip>192.168.100.1</orig-route-ip>
</intra-as-i-pmsi-a-d>
<attributes>
<ipv6-next-hop>
<global>2001:db8:1::6</global>
</ipv6-next-hop>
<as-path/>
<origin>
<value>igp</value>
</origin>
</attributes>
</mvpn-route>
</mvpn-routes>
Response Body:
{
"bgp:mvpn:ipv6:mvpn-routes": {
"mvpn-route": {
"route-key": "flow1",
"path-id": 0,
"intra-as-i-pmsi-a-d": {
"route-distinguisher": "172.16.0.44:101",
"orig-route-ip": "192.168.100.1"
},
"attributes": {
"origin": {
"value": "igp"
},
"ipv6-next-hop": {
"global": "2001:db8:1::6"
}
}
}
}
}
Programming¶
These examples show how to originate and remove MCAST-VPN routes via programmable RIB. There are seven different types of MCAST-VPN routes, and multiples extended communities. Routes can be used for variety of use-cases supported by BGP/MPLS MCAST-VPN. Make sure the Application Peer is configured first.
URL: /rests/data/bgp-rib:application-rib/10.25.1.9/tables=bgp-types:ipv4-address-family,bgp-mvpn:mcast-vpn-subsequent-address-family/bgp-mvpn-ipv4:mvpn-routes
Method: POST
Content-Type: application/xml
Request Body:
1<mvpn-route xmlns="urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4">
2 <route-key>mvpn</route-key>
3 <path-id>0</path-id>
4 <intra-as-i-pmsi-a-d>
5 <route-distinguisher>172.16.0.44:101</route-distinguisher>
6 <orig-route-ip>192.168.100.1</orig-route-ip>
7 </intra-as-i-pmsi-a-d>
8 ....
9 <attributes>
10 <ipv4-next-hop>
11 <global>199.20.166.41</global>
12 </ipv4-next-hop>
13 <as-path/>
14 <origin>
15 <value>igp</value>
16 </origin>
17 <extended-communities>
18 ....
19 </extended-communities>
20 </attributes>
21</mvpn-route>
@line 4: One of the MCAST-VPN route must be set here.
@line 15: In some cases, specific extended community presence is required.
Content-Type: application/json
Request Body:
1{
2 "mvpn-route": {
3 "route-key": "mvpn",
4 "path-id": 0,
5 "intra-as-i-pmsi-a-d": {
6 "route-distinguisher": "172.16.0.44:101",
7 "orig-route-ip": "192.168.100.1"
8 },
9 "attributes": {
10 "origin": {
11 "value": "igp"
12 },
13 "ipv4-next-hop": {
14 "global": "199.20.166.41"
15 },
16 "extended-communities": "..."
17 }
18 }
19}
@line 5: One of the MCAST-VPN route must be set here.
@line 16: In some cases, specific extended community presence is required.
MVPN Routes:
Intra-AS I-PMSI A-D
<intra-as-i-pmsi-a-d>
<route-distinguisher>0:5:3</route-distinguisher>
<orig-route-ip>10.10.10.10</orig-route-ip>
</intra-as-i-pmsi-a-d>
{
"intra-as-i-pmsi-a-d" : {
"route-distinguisher": "1.2.3.4:258",
"orig-route-ip": "10.10.10.10"
}
}
Inter-AS I-PMSI A-D
<inter-as-i-pmsi-a-d>
<route-distinguisher>1.2.3.4:258</route-distinguisher>
<source-as>64496</source-as>
</inter-as-i-pmsi-a-d>
{
"inter-as-i-pmsi-a-d" : {
"route-distinguisher": "1.2.3.4:258",
"source-as": 64496
}
}
S-PMSI A-D
<s-pmsi-a-d>
<route-distinguisher>1.2.3.4:258</route-distinguisher>
<multicast-source>10.0.0.10</multicast-source>
<c-g-address>12.0.0.12</c-g-address>
<orig-route-ip>1.0.0.1</orig-route-ip>
</s-pmsi-a-d>
{
"s-pmsi-a-d" : {
"route-distinguisher": "1.2.3.4:258",
"multicast-source": "10.0.0.10",
"c-g-address": "12.0.0.12",
"orig-route-ip": "1.0.0.1"
}
}
<s-pmsi-a-d>
<route-distinguisher>1.2.3.4:258</route-distinguisher>
<multicast-source>10.0.0.10</multicast-source>
<ldp-mp-opaque-value>
<opaque-type>1</opaque-type>
<opaque-extended-type>0</opaque-extended-type>
<opaque>das75das48bvxc</opaque>
</ldp-mp-opaque-value>
<orig-route-ip>1.0.0.1</orig-route-ip>
</s-pmsi-a-d>
{
"s-pmsi-a-d" : {
"route-distinguisher": "1.2.3.4:258",
"multicast-source": "10.0.0.10",
"ldp-mp-opaque-value": {
"opaque-type": 1,
"opaque-extended-type": 0,
"opaque": "das75das48bvxc"
},
"orig-route-ip": "1.0.0.1"
}
}
Leaf A-D
<leaf-a-d>
<inter-as-i-pmsi-a-d>
<route-distinguisher>1.2.3.4:258</route-distinguisher>
<source-as>1</source-as>
</inter-as-i-pmsi-a-d>
<orig-route-ip>1.0.0.1</orig-route-ip>
</leaf-a-d>
{
"leaf-a-d" : {
"inter-as-i-pmsi-a-d": {
"route-distinguisher": "1.2.3.4:258",
"source-as": "1"
},
"orig-route-ip": "1.0.0.1"
}
}
<leaf-a-d>
<s-pmsi-a-d>
<route-distinguisher>1.2.3.4:258</route-distinguisher>
<multicast-source>10.0.0.10</multicast-source>
<ldp-mp-opaque-value>
<opaque-type>1</opaque-type>
<opaque-extended-type>0</opaque-extended-type>
<opaque>das75das48bvxc</opaque>
</ldp-mp-opaque-value>
<orig-route-ip>1.0.0.1</orig-route-ip>
</s-pmsi-a-d>
<orig-route-ip>1.0.0.1</orig-route-ip>
</leaf-a-d>
{
"leaf-a-d" : {
"s-pmsi-a-d": {
"route-distinguisher": "1.2.3.4:258",
"multicast-source": "10.0.0.10",
"ldp-mp-opaque-value": {
"opaque-type": 1,
"opaque-extended-type": 0,
"opaque": "das75das48bvxc"
},
"orig-route-ip": "1.0.0.1"
},
"orig-route-ip": "1.0.0.1"
}
}
Source Active A-D
<source-active-a-d>
<route-distinguisher>1.2.3.4:258</route-distinguisher>
<multicast-source>1.0.0.1</multicast-source>
<multicast-group>2.0.0.2</multicast-group>
</source-active-a-d>
{
"source-active-a-d" : {
"route-distinguisher": "1.2.3.4:258",
"multicast-source": "1.0.0.1",
"multicast-group": "2.0.0.2"
}
}
Shared Tree Join
<shared-tree-join>
<c-multicast>
<route-distinguisher>1.2.3.4:258</route-distinguisher>
<source-as>64415</source-as>
<multicast-source>1.0.0.1</multicast-source>
<c-g-address>2.0.0.2</c-g-address>
</c-multicast>
</shared-tree-join>
{
"shared-tree-join" : {
"c-multicast": {
"route-distinguisher": "1.2.3.4:258",
"source-as": 64415,
"multicast-source": "1.0.0.1",
"c-g-address": "2.0.0.2"
}
}
}
<shared-tree-join>
<c-multicast>
<route-distinguisher>1.2.3.4:258</route-distinguisher>
<source-as>64415</source-as>
<multicast-source>1.0.0.1</multicast-source>
<ldp-mp-opaque-value>
<opaque-type>1</opaque-type>
<opaque-extended-type>0</opaque-extended-type>
<opaque>das75das48bvxc</opaque>
</ldp-mp-opaque-value>
</c-multicast>
</shared-tree-join>
{
"shared-tree-join" : {
"c-multicast": {
"route-distinguisher": "1.2.3.4:258",
"source-as": 64415,
"multicast-source": "1.0.0.1",
"ldp-mp-opaque-value": {
"opaque-type": 1,
"opaque-extended-type": 0,
"opaque": "das75das48bvxc"
}
}
}
}
Source Tree Join
<source-tree-join>
<c-multicast>
<route-distinguisher>1.2.3.4:258</route-distinguisher>
<source-as>64415</source-as>
<multicast-source>1.0.0.1</multicast-source>
<c-g-address>2.0.0.2</c-g-address>
</c-multicast>
</source-tree-join>
{
"source-tree-join" : {
"c-multicast": {
"route-distinguisher": "1.2.3.4:258",
"source-as": 64415,
"multicast-source": "1.0.0.1",
"c-g-address": "2.0.0.2"
}
}
}
<source-tree-join>
<c-multicast>
<route-distinguisher>1.2.3.4:258</route-distinguisher>
<source-as>64415</source-as>
<multicast-source>1.0.0.1</multicast-source>
<ldp-mp-opaque-value>
<opaque-type>1</opaque-type>
<opaque-extended-type>0</opaque-extended-type>
<opaque>das75das48bvxc</opaque>
</ldp-mp-opaque-value>
</c-multicast>
</source-tree-join>
{
"source-tree-join" : {
"c-multicast": {
"route-distinguisher": "1.2.3.4:258",
"source-as": 64415,
"multicast-source": "1.0.0.1",
"ldp-mp-opaque-value": {
"opaque-type": 1,
"opaque-extended-type": 0,
"opaque": "das75das48bvxc"
}
}
}
}
Attributes:
PSMI Attribute¶
P-Multicast Service Interface Tunnel (PMSI) attribute:
RSVP-TE P2MP LSP
<pmsi-tunnel> <leaf-information-required>true</leaf-information-required> <mpls-label>20024</mpls-label> <rsvp-te-p2mp-lsp> <p2mp-id>1111111111</p2mp-id> <tunnel-id>11111</tunnel-id> <extended-tunnel-id>10.10.10.10</extended-tunnel-id> </rsvp-te-p2mp-lsp> </pmsi-tunnel>
{ "pmsi-tunnel": { "leaf-information-required": true, "mpls-label": 20024, "rsvp-te-p2mp-lsp": { "p2mp-id": 1111111111, "tunnel-id": 11111, "extended-tunnel-id": "10.10.10.10" } } }
mLDP P2MP LSP
<pmsi-tunnel> <leaf-information-required>true</leaf-information-required> <mpls-label>20024</mpls-label> <mldp-p2mp-lsp> <address-family xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp-types">x:ipv4-address-family</address-family> <root-node-address>10.10.10.10</root-node-address> <opaque-value> <opaque-type>255</opaque-type> <opaque-extended-type>11111</opaque-extended-type> <opaque>aa:aa:aa</opaque> </opaque-value> </mldp-p2mp-lsp> </pmsi-tunnel>
{ "pmsi-tunnel": { "leaf-information-required": true, "mpls-label": 20024, "mldp-p2mp-lsp": { "address-family": "x:ipv4-address-family", "root-node-address": "10.10.10.10", "opaque-value": { "opaque-type": 255, "opaque-extended-type": 11111, "opaque": "aa:aa:aa" } } } }
PIM-SSM Tree
<pmsi-tunnel> <leaf-information-required>true</leaf-information-required> <mpls-label>20024</mpls-label> <pim-ssm-tree> <p-address>11.12.13.14</p-address> <p-multicast-group>10.10.10.10</p-multicast-group> </pim-ssm-tree> </pmsi-tunnel>
{ "pmsi-tunnel": { "leaf-information-required": true, "mpls-label": 20024, "pim-ssm-tree": { "p-address": "11.12.13.14", "p-multicast-group": "10.10.10.10" } } }
PIM-SM Tree
<pmsi-tunnel> <leaf-information-required>true</leaf-information-required> <mpls-label>20024</mpls-label> <pim-sm-tree> <p-address>1.0.0.1</p-address> <p-multicast-group>10.10.10.10</p-multicast-group> </pim-sm-tree> </pmsi-tunnel>
{ "pmsi-tunnel": { "leaf-information-required": true, "mpls-label": 20024, "pim-sm-tree": { "p-address": "1.0.0.1", "p-multicast-group": "10.10.10.10" } } }
BIDIR-PIM Tree
<pmsi-tunnel> <leaf-information-required>true</leaf-information-required> <mpls-label>20024</mpls-label> <bidir-pim-tree> <p-address>1.0.0.1</p-address> <p-multicast-group>10.10.10.10</p-multicast-group> </bidir-pim-tree> </pmsi-tunnel>
{ "pmsi-tunnel": { "leaf-information-required": true, "mpls-label": 20024, "bidir-pim-tree": { "p-address": "1.0.0.1", "p-multicast-group": "10.10.10.10" } } }
Ingress Replication
<pmsi-tunnel> <leaf-information-required>true</leaf-information-required> <mpls-label>20024</mpls-label> <ingress-replication> <receiving-endpoint-address>172.12.123.3</receiving-endpoint-address> </ingress-replication> </pmsi-tunnel>
{ "pmsi-tunnel": { "leaf-information-required": true, "mpls-label": 20024, "ingress-replication": { "receiving-endpoint-address": "172.12.123.3" } } }
mLDP MP2MP LSP
<pmsi-tunnel> <leaf-information-required>true</leaf-information-required> <mpls-label>20024</mpls-label> <mldp-mp2mp-lsp> <opaque-type>255</opaque-type> <opaque-extended-type>11111</opaque-extended-type> <opaque>aa:aa</opaque> </mldp-mp2mp-lsp> </pmsi-tunnel>
{ "pmsi-tunnel": { "leaf-information-required": true, "mpls-label": 20024, "mldp-mp2mp-lsp": { "opaque-type": 255, "opaque-extended-type": 11111, "opaque": "aa:aa" } } }
PE Distinguisher Labels Attribute
<pe-distinguisher-labels-attribute>
<pe-distinguisher-label-attribute>
<pe-address>10.10.10.1</pe-address>
<mpls-label>20024</mpls-label>
</pe-distinguisher-label-attribute>
<pe-distinguisher-label-attribute>
<pe-address>10.10.20.2</pe-address>
<mpls-label>20028</mpls-label>
</pe-distinguisher-label-attribute>
</pe-distinguisher-labels-attribute>
{
"pe-distinguisher-labels-attribute" : {
"pe-distinguisher-label-attribute": [
{
"pe-address": "10.10.10.1",
"mpls-label": "20024"
},
{
"pe-address": "10.10.20.2",
"mpls-label": "20028"
}
]
}
}
Extended Communities:
Source AS Extended Community
<extended-communities>
<transitive>true</transitive>
<source-as-extended-community>
<global-administrator>65</global-administrator>
</source-as-extended-community>
</extended-communities>
{
"extended-communities" : {
"transitive": true,
"source-as-extended-community": {
"global-administrator": 65
}
}
}
Source AS 4 Octets Extended Community
<extended-communities>
<transitive>true</transitive>
<source-as-4-extended-community>
<global-administrator>65555</global-administrator>
</source-as-4-extended-community>
</extended-communities>
{
"extended-communities" : {
"transitive": true,
"source-as-4-extended-community": {
"global-administrator": 65555
}
}
}
ES-Import Route Target
<extended-communities>
<transitive>true</transitive>
<vrf-route-import-extended-community>
<inet4-specific-extended-community-common>
<global-administrator>10.0.0.1</global-administrator>
<local-administrator>123=</local-administrator>
</inet4-specific-extended-community-common>
</vrf-route-import-extended-community>
</extended-communities>
{
"extended-communities" : {
"transitive": true,
"vrf-route-import-extended-community": {
"inet4-specific-extended-community-common": {
"global-administrator": "10.0.0.1",
"local-administrator": "123="
}
}
}
}
To remove the route added above, following request can be used:
URL: /rests/data/bgp-rib:application-rib/10.25.1.9/tables=bgp-types:ipv4-address-family,bgp-mvpn:mcast-vpn-subsequent-address-family/bgp-mvpn-ipv4:mvpn-routes/mvpn-route/mvpn/0
Method: DELETE