From: Claudio D. Gasparini Date: Fri, 25 May 2018 10:18:20 +0000 (+0200) Subject: BGP MVPN Extension documentation X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F81%2F72481%2F4;p=docs.git BGP MVPN Extension documentation JIRA: BGPCEP-396 Change-Id: I9868dcb95df1eefdc6398d2fe9a2a281d06201a1 Signed-off-by: Claudio D. Gasparini --- diff --git a/docs/user-guide/bgpcep-guide/bgp/bgp-user-guide-evpn-family.rst b/docs/user-guide/bgpcep-guide/bgp/bgp-user-guide-evpn-family.rst index 1e8739dcc..09de14c4a 100644 --- a/docs/user-guide/bgpcep-guide/bgp/bgp-user-guide-evpn-family.rst +++ b/docs/user-guide/bgpcep-guide/bgp/bgp-user-guide-evpn-family.rst @@ -339,6 +339,7 @@ Make sure the *Application Peer* is configured first. ----- **EVPN Routes:** +**************** * **Ethernet AD per ESI** .. code-block:: xml @@ -463,97 +464,9 @@ Make sure the *Application Peer* is configured first. 2000 -**P-Multicast Service Interface Tunnel (PMSI) attribute:** +**Attributes:** -* **RSVP-TE P2MP LSP** - .. code-block:: xml - - - true - 20024 - - 1111111111 - 11111 - 10.10.10.10 - - - -* **mLDP P2MP LSP** - .. code-block:: xml - - - true - 20024 - - x:ipv4-address-family - 10.10.10.10 - - 111 - 11111 - aa:aa:aa - - - - -* **PIM-SSM Tree** - .. code-block:: xml - - - true - 20024 - - 11.12.13.14 - 10.10.10.10 - - - -* **PIM-SM Tree** - .. code-block:: xml - - - true - 20024 - - 11.12.13.14 - 10.10.10.10 - - - -* **BIDIR-PIM Tree** - .. code-block:: xml - - - true - 20024 - - 11.12.13.14 - 10.10.10.10 - - - -* **Ingress Replication** - .. code-block:: xml - - - true - 20024 - - 172.12.123.3 - - - -* **mLDP MP2MP LSP** - .. code-block:: xml - - - true - 20024 - - 111 - 11111 - aa:aa - - +.. include:: bgp-user-guide-pmsi-attribute.rst **Extended Communities:** diff --git a/docs/user-guide/bgpcep-guide/bgp/bgp-user-guide-mvpn-family.rst b/docs/user-guide/bgpcep-guide/bgp/bgp-user-guide-mvpn-family.rst new file mode 100644 index 000000000..30dd21b98 --- /dev/null +++ b/docs/user-guide/bgpcep-guide/bgp/bgp-user-guide-mvpn-family.rst @@ -0,0 +1,530 @@ +.. _bgp-user-guide-mvpn-family: + +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. + +.. contents:: Contents + :depth: 2 + :local: + +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:** ``/restconf/config/openconfig-network-instance:network-instances/network-instance/global-bgp/openconfig-network-instance:protocols`` + +**Method:** ``POST`` + +**Content-Type:** ``application/xml`` + +**Request Body:** + +.. code-block:: xml + + + bgp-example + x:BGP + + + + 192.0.2.2 + 65000 + + + + IPV4-MCAST-VPN + + + IPV6-MCAST-VPN + + + + + + +BGP Peer +'''''''' +Here is an example for BGP peer configuration with enabled IPV4 MCAST-VPN family. + +**URL:** ``/restconf/config/openconfig-network-instance:network-instances/network-instance/global-bgp/openconfig-network-instance:protocols/protocol/openconfig-policy-types:BGP/bgp-example/bgp/neighbors`` + +**Method:** ``POST`` + +**Content-Type:** ``application/xml`` + +**Request Body:** + +.. code-block:: xml + + + 192.0.2.1 + + + IPV4-MCAST-VPN + + + + +Ipv4 MCAST-VPN Route API +^^^^^^^^^^^^^^^^^^^^^^^^ +Following tree illustrates the BGP MCAST-VPN route structure. + +.. code-block:: console + + :(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. + +.. code-block:: console + + :(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:** ``/restconf/operational/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`` + +**Method:** ``GET`` + +**Response Body:** + +.. code-block:: xml + + + + flow1 + 0 + + 172.16.0.44:101 + 192.168.100.1 + + + + 199.20.166.41 + + + + igp + + + + + +The Ipv6 Multicast VPN table in an instance of the speaker's Loc-RIB can be verified via REST: + +**URL:** ``/restconf/operational/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`` + +**Method:** ``GET`` + +**Response Body:** + +.. code-block:: xml + + + + flow1 + 0 + + 172.16.0.44:101 + 192.168.100.1 + + + + 2001:db8:1::6 + + + + igp + + + + + +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:** ``/restconf/config/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:** + +.. code-block:: xml + :linenos: + :emphasize-lines: 4,17 + + + mvpn + 0 + + 172.16.0.44:101 + 192.168.100.1 + + .... + + + 199.20.166.41 + + + + igp + + + .... + + + + +@line 4: One of the MCAST-VPN route must be set here. + +@line 15: In some cases, specific extended community presence is required. + +----- + +**MVPN Routes:** + +* **Intra-AS I-PMSI A-D** + .. code-block:: xml + + + 0:5:3 + 10.10.10.10 + + +* **Inter-AS I-PMSI A-D** + .. code-block:: xml + + + 1.2.3.4:258 + 64496 + + +* **S-PMSI A-D** + .. code-block:: xml + + + 1.2.3.4:258 + 10.0.0.10 + 12.0.0.12 + 1.0.0.1 + + + .. code-block:: xml + + + 1.2.3.4:258 + 10.0.0.10 + + 1 + 0 + das75das48bvxc + + 1.0.0.1 + + +* **Leaf A-D** + .. code-block:: xml + + + + 1.2.3.4:258 + 1 + + 1.0.0.1 + + + .. code-block:: xml + + + + 1.2.3.4:258 + 10.0.0.10 + + 1 + 0 + das75das48bvxc + + 1.0.0.1 + + 1.0.0.1 + + +* **Source Active A-D** + .. code-block:: xml + + + 1.2.3.4:258 + 1.0.0.1 + 2.0.0.2 + + +* **Shared Tree Join** + .. code-block:: xml + + + + 1.2.3.4:258 + 64415 + 1.0.0.1 + 2.0.0.2 + + + + .. code-block:: xml + + + + 1.2.3.4:258 + 64415 + 1.0.0.1 + + 1 + 0 + das75das48bvxc + + + + +* **Source Tree Join** + .. code-block:: xml + + + + 1.2.3.4:258 + 64415 + 1.0.0.1 + 2.0.0.2 + + + + .. code-block:: xml + + + + 1.2.3.4:258 + 64415 + 1.0.0.1 + + 1 + 0 + das75das48bvxc + + + + +**Attributes:** + +.. include:: bgp-user-guide-pmsi-attribute.rst + +* **PE Distinguisher Labels Attribute** + .. code-block:: xml + + + + 10.10.10.1 + 20024 + + + 10.10.20.2 + 20028 + + + +**Extended Communities:** + +* **Source AS Extended Community** + .. code-block:: xml + + + true + + 65 + + + +* **Source AS 4 Octets Extended Community** + .. code-block:: xml + + + true + + 65555 + + + +* **ES-Import Route Target** + .. code-block:: xml + + + true + + + 10.0.0.1 + 123= + + + + +----- + +To remove the route added above, following request can be used: + +**URL:** ``/restconf/config/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`` + +References +^^^^^^^^^^ +* `Multicast in MPLS/BGP IP VPNs `_ +* `BGP Encodings and Procedures for Multicast in MPLS/BGP IP VPNs `_ +* `IPv4 and IPv6 Infrastructure Addresses in BGP Updates for Multicast VPN `_ diff --git a/docs/user-guide/bgpcep-guide/bgp/bgp-user-guide-pmsi-attribute.rst b/docs/user-guide/bgpcep-guide/bgp/bgp-user-guide-pmsi-attribute.rst new file mode 100644 index 000000000..b0494ca66 --- /dev/null +++ b/docs/user-guide/bgpcep-guide/bgp/bgp-user-guide-pmsi-attribute.rst @@ -0,0 +1,98 @@ +* **P-Multicast Service Interface Tunnel (PMSI) attribute:** + + - **RSVP-TE P2MP LSP** + + .. code-block:: xml + + + true + 20024 + + 1111111111 + 11111 + 10.10.10.10 + + + + - **mLDP P2MP LSP** + + .. code-block:: xml + + + true + 20024 + + x:ipv4-address-family + 10.10.10.10 + + 255 + 11111 + aa:aa:aa + + + + + - **PIM-SSM Tree** + + .. code-block:: xml + + + true + 20024 + + 11.12.13.14 + 10.10.10.10 + + + + - **PIM-SM Tree** + + .. code-block:: xml + + + true + 20024 + + 1.0.0.1 + 10.10.10.10 + + + + - **BIDIR-PIM Tree** + + .. code-block:: xml + + + true + 20024 + + 1.0.0.1 + 10.10.10.10 + + + + - **Ingress Replication** + + .. code-block:: xml + + + true + 20024 + + 172.12.123.3 + + + + - **mLDP MP2MP LSP** + + .. code-block:: xml + + + true + 20024 + + 255 + 11111 + aa:aa + + diff --git a/docs/user-guide/bgpcep-guide/bgp/bgp-user-guide-supported-capabilities.rst b/docs/user-guide/bgpcep-guide/bgp/bgp-user-guide-supported-capabilities.rst index 255d21f4b..6a3968418 100644 --- a/docs/user-guide/bgpcep-guide/bgp/bgp-user-guide-supported-capabilities.rst +++ b/docs/user-guide/bgpcep-guide/bgp/bgp-user-guide-supported-capabilities.rst @@ -29,6 +29,9 @@ In addition to the base protocol implementation, the plugin provides many extens * `draft-ietf-idr-bgp-prefix-sid `_ - Segment Routing Prefix SID extensions for BGP * `RFC4364 `_ - BGP/MPLS IP Virtual Private Networks (VPNs) * `RFC4659 `_ - BGP-MPLS IP Virtual Private Network (VPN) Extension for IPv6 VPN + * `RFC6513 `_ - Multicast in MPLS/BGP IP VPNs (VPNs) + * `RFC6514 `_ - BGP Encodings and Procedures for Multicast in MPLS/BGP IP VPNs + * `RFC6515 `_ - IPv4 and IPv6 Infrastructure Addresses in BGP Updates for Multicast VPN * `RFC7432 `_ - BGP MPLS-Based Ethernet VPN * `draft-ietf-bess-evpn-overlay `_ - A Network Virtualization Overlay Solution using EVPN * `draft-ietf-bess-evpn-vpws `_ - VPWS support in EVPN diff --git a/docs/user-guide/bgpcep-guide/bgp/index.rst b/docs/user-guide/bgpcep-guide/bgp/index.rst index a3ea7e740..8b937fa34 100644 --- a/docs/user-guide/bgpcep-guide/bgp/index.rst +++ b/docs/user-guide/bgpcep-guide/bgp/index.rst @@ -17,6 +17,7 @@ The user should learn about BGP basic concepts, supported capabilities, configur bgp-user-guide-l3vpn-family bgp-user-guide-linkstate-family bgp-user-guide-flowspec-family + bgp-user-guide-mvpn-family bgp-user-guide-evpn-family bgp-user-guide-additional-path-capability bgp-user-guide-route-refresh-capability