Subject: [Idr] draft-ietf-idr-bgp-model

From: "Wanghaibo (Rainsword)" <[email-masked]>
Date: Thu, 15 Aug 2019 12:32:01 +0000

Hi authors,

I have some question about the bgp model.

In current model, the bgp module will augment to routing,
     /rt:routing/rt:control-plane-protocols
               /rt:control-plane-protocol:
And the routing will schema mount to network-instance.

In this model, how to realize the multiple bgp public instance, like that

bgp instance 1 as-number 100
  neighbor 2.2.2.2
address-family vpn-ipv4
  vrf vpn1
neighbor 11.1.1.1
  address-family ipv4

bgp instance 2 as-number 200
  neighbor 3.3.3.3
address-family vpn-ipv4
  vrf vpn2
neighbor 12.1.1.1
  address-family ipv4

Bgp doesn't like ospf or isis, the vrf's bgp will associate to public bgp's special address family.
I'm not find how to describe the associate in current model

Best regards,
Haibo

---

From: Linda Dunbar <[email-masked]>
Date: Thu, 15 Aug 2019 23:40:46 +0000

Disclaimer:  I am not the author for this draft.

The document does say:
Additional modules or submodules to handle other aspects of BGP configuration,
including policy, VRFs, VPNs, and additional address families are also expected

Does it mean that VRF VPN1 for AS 100 and VRF VPN2 for AS200 can't yet be specified until the respective YANG Model document is specified?

I would think the following can be used to "realize the multiple BGP public instances" (missing the VPN part) as you requested?

<global>
   <as>100</as>
     <neighbor>
       <remote-address>2.2.2.2</remote-address>
       <afi-safis>
         <afi-safi>
           <afi-safi-name
            xmlns:bt="urn:ietf:params:xml:ns:yang:ietf-bgp-types">bt:l3vpn-ipv4-unicast
           </afi-safi-name>
        </afi-safi>
       </afi-safis>
    <neighbor>

  <as>200</as>
     <neighbor>
       <remote-address>3.3.3.3</remote-address>
       <afi-safis>
         <afi-safi>
           <afi-safi-name
            xmlns:bt="urn:ietf:params:xml:ns:yang:ietf-bgp-types">bt:l3vpn-ipv4-unicast
           </afi-safi-name>
        </afi-safi>
       </afi-safis>
    <neighbor>

</global>

Linda Dunbar

From: Idr <[email-masked]> On Behalf Of Wanghaibo (Rainsword)
Sent: Thursday, August 15, 2019 7:32 AM
To: [email-masked]
Cc: [email-masked]
Subject: [Idr] draft-ietf-idr-bgp-model

Hi authors,

Best regards,
Haibo

---

From: "Wanghaibo (Rainsword)" <[email-masked]>
Date: Fri, 16 Aug 2019 13:40:46 +0000

Hi Linda,

Thanks for your repy.
But I think your example is multiple bgp neighbors with different local-as, not multiple bgp public instance.

For multiple bgp public instance , each of them is separate with others, and the routes is also separate with other bgp public instance routes.

For example,
bgp instance 1 as 100, it receive a route 1:1:10.1.1.0/24 from its l3vpn-ipv4 neighbor 1.1.1.1
bgp instance 2 as 200, it also receive a route 1:1:10.1.1.0/24 from its l3vpn-ipv4 neighbor 2.2.2.2

The two routes are separate with each other, they will be do their own routing selection and other process.
But when they are in one bgp instance, they must do routing selection between them, because they are same prefix.

As described in RFC8022, the control-plane-protocol can be multiple ,
   +--rw routing
      +--rw router-id?
      +--rw control-plane-protocols
      |  +--rw control-plane-protocol* [type name]
      |     +--rw type
      |     +--rw name
      |     +--rw description?
so it may create multiple bgp with different name, for example one bgp for instance 1, and one bgp for instance 2,
and each of them can set their own bgp parameters.

But my question is that , how to associate  the vrf to the public bgp instance, as I wrote below.
Because bgp doesn’t like ospf and isis. Each vrf’s bgp must associate to a publice bgp instance.
They will use some address-family such as l3vpn-ipv4， l2vpn-evpn to send routes.

Regards,
Haibo

From: Linda Dunbar [mailto:[email-masked]]
Sent: Friday, August 16, 2019 7:41 AM
To: Wanghaibo (Rainsword) <[email-masked]>; [email-masked]
Cc: [email-masked]
Subject: RE: [Idr] draft-ietf-idr-bgp-model

The document does say:

Does it mean that VRF VPN1 for AS 100 and VRF VPN2 for AS200 can’t yet be specified until the respective YANG Model document is specified?

I would think the following can be used to “realize the multiple BGP public instances” (missing the VPN part) as you requested?

<global>
   <as>100</as>
     <neighbor>

  <as>200</as>
     <neighbor>

</global>

Linda Dunbar

From: Idr <[email-masked]<mailto:[email-masked]>> On Behalf Of Wanghaibo (Rainsword)
Sent: Thursday, August 15, 2019 7:32 AM
To: [email-masked]<mailto:[email-masked]>
Cc: [email-masked]<mailto:[email-masked]>
Subject: [Idr] draft-ietf-idr-bgp-model

Hi authors,

Bgp doesn’t like ospf or isis, the vrf’s bgp will associate to public bgp’s special address family.
I’m not find how to describe the associate in current model

Best regards,
Haibo

---

From: Linda Dunbar <[email-masked]>
Date: Fri, 23 Aug 2019 23:13:52 +0000

Can putting them in two  <global> create two public BGP instances? Although still not be able to associate the vrf to the public bgp instance (waiting for another YANG module?)

<global>
   <as>100</as>
     <neighbor>
  </as>100</as>
</global>

<global>
  <as>200</as>
     <neighbor>
     </neighbor>
</as>200</as>
</global>

Linda

From: Wanghaibo (Rainsword) <[email-masked]>
Sent: Friday, August 16, 2019 8:41 AM
To: Linda Dunbar <[email-masked]>; [email-masked]
Cc: [email-masked]
Subject: RE: [Idr] draft-ietf-idr-bgp-model

Hi Linda,

Thanks for your repy.

For example,

Regards,
Haibo

To: Wanghaibo (Rainsword) <[email-masked]<mailto:[email-masked]>>; [email-masked]<mailto:[email-masked]>

The document does say:

<global>
   <as>100</as>
     <neighbor>

  <as>200</as>
     <neighbor>

</global>

Linda Dunbar

Hi authors,

Best regards,
Haibo

---

From: Jeffrey Haas <[email-masked]>
Date: Mon, 26 Aug 2019 16:38:50 -0400

> I'm not find how to describe the associate in current model

The bgp model uses NMDA:
  augment "/rt:routing/rt:control-plane-protocols/"
        + "rt:control-plane-protocol" {

You may find this example from RFC 8349 helpful:

https://tools.ietf.org/html/rfc8349

: Appendix D.  Data Tree Example
: [...]
: 
: 
:      "ietf-routing:routing": {
:        "router-id": "192.0.2.1",
:        "control-plane-protocols": {
:          "control-plane-protocol": [
:            {
:              "type": "ietf-routing:static",
:              "name": "st0",
:              "description":
:                "Static routing is used for the internal network.",
:  

The definition of control plane protocols permits multi-instancing via name:

:        container control-plane-protocols {
:          description
:            "Support for control-plane protocol instances.";
:          list control-plane-protocol {
:            key "type name";
:            description

-- Jeff

---

From: "Wanghaibo (Rainsword)" <[email-masked]>
Date: Tue, 27 Aug 2019 03:39:17 +0000

Hi Jeff,
 
 Thanks for your reply. 

 I have read this example. But it doesn't solve my doubts. 
 If I have two public bgp instance like this:
    "ietf-routing:routing": {
       "router-id": "192.0.2.1",
       "control-plane-protocols": {
         "control-plane-protocol": [
           {
             "type": "ietf-routing:bgp",
             "name": "bgp0",
             "description": 
               "Bgp for CustomerA.",
             "bgp": {
			 "neighbors":{
			  "neighbor":[
			    {
				 "remote-address":"192.0.2.1",
                   "peer-as":"64497"
	               "afi-safis":{
                     "afi-safi":[
                       "afi-safi-name":"bt:l3vpn-ipv4-unicast"
                      ]
                    }
			    }	
			   ]
		      }
              }
           }
		 ]
         "control-plane-protocol": [
           {
             "type": "ietf-routing:bgp",
             "name": "bgp1",
             "description":
               "Static routing is used for the internal network.",
             "bgp": {
			 "neighbors":{
			  "neighbor":[
			    {
				 "remote-address":"192.0.3.1",
                   "peer-as":"64497"
	               "afi-safis":{
                     "afi-safi":[
                       "afi-safi-name":"bt:l2vpn-evpn"
                      ]
                    }
			    }	
			   ]
		      }
              } 
            }
         ]
       },
   
 And I have two vrf instance like :
    "ietf-network-instance:network-instances": {
      "network-instance": [
        {
          "name": "vrf-old",
           ...
        }
       ]
      }
    "ietf-network-instance:network-instances": {
      "network-instance": [
        {
          "name": "vrf-new",
           ...
        }
       ]
      }

  I want to specify the vrf-old use bgp0 to advertise routes using l3vpn-ipv4-unicast, and use bgp1 for vrf-new to advertise routes using l2vpn-evpn with type5.
  So how can I do this ?

Regards,
Haibo

-----Original Message-----
From: Jeffrey Haas [mailto:[email-masked]] 
Sent: Tuesday, August 27, 2019 4:39 AM
To: Wanghaibo (Rainsword) <[email-masked]>
Cc: [email-masked]; [email-masked]
Subject: Re: [Idr] draft-ietf-idr-bgp-model

The bgp model uses NMDA:

-- Jeff