Subject: [OPSAWG] L3VPN BGP Threshold and BGP Session parameters (https://github.com/IETF-OPSAWG-WG/l3nm/issues/34 and https://github.com/IETF-OPSAWG-WG/l3nm/issues/35)

From: Qin Wu <[email-masked]>
Date: Fri, 24 Jul 2020 08:17:41 +0000

Hi, All:
We have been discussion additional BGP parameters such as L3VPN BGP threshold and BGP session parameters, which is corresponding to issue ticket #34 and #35 on L3NM model,
And would like to have the following proposed change to L3NM model to resolve pending issue tickets:
OLD TEXT:
"
                    container bgp {
                      when "derived-from-or-self(../type, 'l3vpn-ntw:bgp')" {
                        description
                          "Only applies when protocol is BGP.";
                      }
                      if-feature "rtg-bgp";
                      leaf peer-autonomous-system {
                        type inet:as-number;
                        mandatory true;
                        description
                          "Customer AS number in case the customer
                           requests BGP routing.";
                      }
                      leaf local-autonomous-system {
                        type inet:as-number;
                        description
                          "Local-AS overwrite.";
                      }
                      leaf-list address-family {
                        type vpn-common:address-family;
                        min-elements 1;
                        description
                          "If BGP is used on this site, this node
                           contains a configured value.  This node
                           contains at least one address family
                           to be activated.";
                      }
                      leaf-list neighbor {
                        type inet:ip-address;
                        description
                          "IP address(es) of the BGP neighbor. An IPv4
                           and IPv6 neighbors may be indicated if
                           two sessions will be used for IPv4 and IPv6.";
                      }
                      leaf multihop {
                        type uint8;
                        description
                          "Describes the number of hops allowed between
                           a given BGP neighbor and the PE router.";
                      }
                      uses security-params;
                      uses vpn-common:service-status;
                      leaf description {
                        type string;
                        description
                          "Includes a description of the BGP session.
                           Such description is meant to be used for
                           diagnosis purposes. The semantic of the description
                           is local to an implementation.";
                      }
"
NEW TEXT:
"
                    container bgp {
                      when "derived-from-or-self(../type, 'l3vpn-ntw:bgp')" {
                        description
                          "Only applies when protocol is BGP.";
                      }
                      if-feature "rtg-bgp";
                      leaf peer-autonomous-system {
                        type inet:as-number;
                        mandatory true;
                        description
                          "Customer AS number in case the customer
                           requests BGP routing.";
                      }
                      leaf local-autonomous-system {
                        type inet:as-number;
                        description
                          "Local-AS overwrite.";
                      }
                      leaf-list address-family {
                        type vpn-common:address-family;
                        min-elements 1;
                        description
                          "If BGP is used on this site, this node
                           contains a configured value.  This node
                           contains at least one address family
                           to be activated.";
                      }
                      leaf-list neighbor {
                        type inet:ip-address;
                        description
                          "IP address(es) of the BGP neighbor. An IPv4
                           and IPv6 neighbors may be indicated if
                           two sessions will be used for IPv4 and IPv6.";
                      }
                      leaf multihop {
                        type uint8;
                        description
                          "Describes the number of hops allowed between
                           a given BGP neighbor and the PE router.";
                      }
                      uses security-params;
                      uses vpn-common:service-status;
                      leaf description {
                        type string;
                        description
                          "Includes a description of the BGP session.
                           Such description is meant to be used for
                           diagnosis purposes. The semantic of the description
                           is local to an implementation.";
                      }

                                                 leaf as-override {
                                                          type boolean;
                                                          default false;
                                                          description
                                                           "Define whether AS override is enabled, i.e., replace
                                                          the AS number of the peer specified in the AS Path
                                                          attribute with the local AS number.";
                                                        }
                                                 leaf default-route {
                                                          type boolean;
                                                           default false;
                                                          description
                                                           "Define whether default route can be advertised
                                                           to its peer.";
                                                        }

                                                 container bgp-timer {
                                                     description
                          "BGP timer specific configuration.";
                                                 leaf keep-alive {
                                                        type uint16;
                                                        units "seconds";
                                                        default 60;
                                                        description
                        "keep alive timer configured for specific peer.";
                                                 }
                                                 leaf hold-time {
                                                        type uint16;
                                                        units "seconds";
                                                        default 180;
                                                        description
                                                        "Expected BGP hold time in seconds configured
                                                        for specific peer.";
                                                        }
                                               }
                                                 container bgp-max-prefix {
                                                     description
                          "BGP maximum prefix configuration";
                                                        leaf max-prefix {
                                                          type uint32;
                                                          default 5000;
                                                           description
                           "Define maximum BGP prefix.";
                                                          }
                                                   leaf warning-threshold{
                                                           type decimal64 {
                                                           fraction-digits 5;
                                                           range "0..100";
                                                          }
                                                     units percent;
                                                          default 75;
                                                          description
                                                          "Define warning threshold value in percentage.";
                                                        }
                                                        leaf violate-action {
                                                          type enumeration {
                                                                 enum warning {
                                                                   description
                                                                   "Only give warning message when limit is exceeded";
                                                                 }
                                                                 enum discard-extra-paths {
                                                                   description
                                                                   "Discard extra paths when limit is exceeded";
                                                                 }
                                                                 enum restart {
                                                                   description
                                                                   "Restart time interval";
                                                                 }
                                                          }
                                                          description
                                                           "BGP neighbour max-prefix violate action";
                                                        }
                                                        leaf restart-interval {
                                                          type uint16;
                                                          units "minutes";
                                                          description
                                                          "Time interval (min) after which peering session
                                                          will be re-established";
                                                        }
                                               }
"
Regarding bgp-max-prefix, I personal feel it is different from maximum-routes which is applicable to all protocols while bgp max prefix is bgp specific, threshold and action parameters only tie with bgp maximum prefix parameter.

-Qin

---

From: "Roque Gagliano (rogaglia)" <[email-masked]>
Date: Fri, 24 Jul 2020 09:07:05 +0000

Hi Qin,

“Regarding bgp-max-prefix, I personal feel it is different from maximum-routes which is applicable to all protocols while bgp max prefix is bgp specific, threshold and action parameters only tie with bgp maximum prefix parameter.”

I agree with your comment. Additionally, maybe a more interesting question is if we want to set these parameters per neighbor, per PE-node or per VPN/VRF. I would think that we should have then generic per VRF/PE as part of the profiles but having the option to overwrite per neighbor. One example is a headquarter vs a branch…you may not want to set the same prefix-limits to them.

Regards,
Roque

From: OPSAWG <[email-masked]> on behalf of Qin Wu <[email-masked]>
Date: Friday, 24 July 2020 at 10:18
To: opsawg <[email-masked]>
Subject: [OPSAWG] L3VPN BGP Threshold and BGP Session parameters (https://github.com/IETF-OPSAWG-WG/l3nm/issues/34 and https://github.com/IETF-OPSAWG-WG/l3nm/issues/35)

Hi, All:
“
”
“

                                                 leaf as-override {
                                                          type boolean;
                                                          default false;
                                                          description

                                                 container bgp-timer {
                                                     description
“

-Qin

---

From: Qin Wu <[email-masked]>
Date: Fri, 24 Jul 2020 09:26:41 +0000

Yeah, I think it makes sense to add such knob to provide fine granularity control. Let me know if you have proposal for this.

-Qin
发件人: Roque Gagliano (rogaglia) [mailto:[email-masked]]
发送时间: 2020年7月24日 17:07
收件人: Qin Wu <[email-masked]>; opsawg <[email-masked]>
主题: Re: [OPSAWG] L3VPN BGP Threshold and BGP Session parameters (https://github.com/IETF-OPSAWG-WG/l3nm/issues/34 and https://github.com/IETF-OPSAWG-WG/l3nm/issues/35)

Hi Qin,

Regards,
Roque

From: OPSAWG <[email-masked]<mailto:[email-masked]>> on behalf of Qin Wu <[email-masked]<mailto:[email-masked]>>
Date: Friday, 24 July 2020 at 10:18
To: opsawg <[email-masked]<mailto:[email-masked]>>
Subject: [OPSAWG] L3VPN BGP Threshold and BGP Session parameters (https://github.com/IETF-OPSAWG-WG/l3nm/issues/34 and https://github.com/IETF-OPSAWG-WG/l3nm/issues/35)

Hi, All:

                                                 leaf as-override {
                                                          type boolean;
                                                          default false;
                                                          description

                                                 container bgp-timer {
                                                     description

-Qin