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

From: Jeffrey Haas <[email-masked]>
Date: Mon, 18 Nov 2019 06:08:51 -0500

Per IDR mic comment, copying once again to IDR since I mis-laid the mail.
My apologies, Haibo.

If I understand your comment correctly, your question is "how do you bind a
given routing instance (e.g. VRF) to a given BGP session?"

If so, I think you are correct.  We do not have a clean way to specify this.
It may also have impacts on the network instancing model in general.  Let us
raise the issue with netmod working group.

-- Jeff

On Tue, Aug 27, 2019 at 03:39:17AM +0000, Wanghaibo (Rainsword) wrote:
> 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
> 
> On Thu, Aug 15, 2019 at 12:32:01PM +0000, Wanghaibo (Rainsword) wrote:
> > 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
> 
> 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: Mon, 18 Nov 2019 16:49:11 +0000

Hi Jeff,

	My question is similar to "how do you bind a given routing instance (e.g. VRF) to a given BGP session?"

    Now multiple vendors have implemented this feature. 
    They don't bind a vrf to a given BGP session, but bind to different public bgp instance. 

	For example:
    bgp instance 1 as 100
      neighbor A remote-as 100
       address-family ipv4-vpn, evpn enabled
      neighbor B remote-as 200
       address-family ipv4-vpn enabled
    bgp instance 2 as 200
      neighbor C remote-as 200
       address-family evpn enabled
    vrf vrf1
      bgp instance-toCE1 as 65001
       neighbors ...
    vrf vrf2 
      ospf instance-toCE2
       areas...

    Vrf1 bind to bgp instance 1
    Vrf1's VPN routes will advertised through bgp instance 1's neighbor A&B, through VPNv4 or EVPN family
    Vrf2 bind to bgp instance 2
    Vrf2's VPN routes will advertised through bgp instance 2's neighbor C, through EVPN family.
	The two bgp instance are separate from each other.

    It seems like vrf1 bind to neighbor A&B, vrf2 bind to neighbor C.
    But the neighbors are contained in a bgp instance. ( neighbor A&B in bgp instance 1, neighbor C in bgp instance2)
    
	According to RFC8022, we can create multiple bgp instance for public routing.
    But now we cannot specify one vrf how to bind to one bgp instance's according to current bgp model.

Regards,
Haibo

-----邮件原件-----
发件人: Jeffrey Haas [mailto:[email-masked]] 
发送时间: 2019年11月18日 19:09
收件人: Wanghaibo (Rainsword) <[email-masked]>
抄送: [email-masked]; [email-masked]
主题: Re: [Idr] draft-ietf-idr-bgp-model

If I understand your comment correctly, your question is "how do you bind a given routing instance (e.g. VRF) to a given BGP session?"

If so, I think you are correct.  We do not have a clean way to specify this.
It may also have impacts on the network instancing model in general.  Let us raise the issue with netmod working group.

-- Jeff

---

From: Yingzhen Qu <[email-masked]>
Date: Mon, 18 Nov 2019 22:03:54 -0800

Hi Jeff,

I would think it makes more sense to do this binding in BGP module because
it is sort of a special case related with BGP, but I'm not sure what's the
best way to do it.

possible solutions:
1. add a reference
2. add a configuration
3.  ...

Thanks,
Yingzhen

On Mon, Nov 18, 2019 at 8:49 AM Wanghaibo (Rainsword) <
[email-masked]> wrote:

> Hi Jeff,
>
>         My question is similar to "how do you bind a given routing
> instance (e.g. VRF) to a given BGP session?"
>
>     But the neighbors are contained in a bgp instance. ( neighbor A&B in
> bgp instance 1, neighbor C in bgp instance2)
>
> If I understand your comment correctly, your question is "how do you bind
> a given routing instance (e.g. VRF) to a given BGP session?"
>
> It may also have impacts on the network instancing model in general.  Let
> us raise the issue with netmod working group.
>
> -- Jeff
>
> >   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
> >
> _______________________________________________
> Idr mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/idr
>