Subject: Re: [Netmod-ver-dt] Resolving package conflicts

From: "Reshad Rahman (rrahman)" <[email-masked]>
Date: Wed, 11 Sep 2019 20:49:42 +0000

No objections, makes sense.

From: Netmod-ver-dt <[email-masked]> on behalf of "Rob Wilton (rwilton)" <[email-masked]>
Date: Wednesday, September 11, 2019 at 6:00 AM
To: "[email-masked]" <[email-masked]>
Subject: [Netmod-ver-dt] Resolving package conflicts

In the packages draft it is possible to for a package definition to combine modules from two separate packages which may conflict.  I.e. more than one version of a module might end up in the resultant package, or the import dependencies might need to be fixed.

This is OK, because the packages draft requires that these conflicts are always explicitly resolved by listing the specific module versions in the combined package, so the problem is solved.

But what about if we define a package [email-masked]<mailto:[email-masked]> that contains, say, 10 modules?

This package might be imported by a hypothetical [email-masked]<mailto:[email-masked]>.

Separately there might be a hypothetical [email-masked]<mailto:[email-masked]> package that has been published later and uses an updated version of ietf-base package, say [email-masked]<mailto:[email-masked]>, that may contain BC updates to several of the modules.

Say a device wants to implement a [email-masked]<mailto:[email-masked]> module that imports both [email-masked]<mailto:[email-masked]> and ietf-l2vpn@1..0.0<mailto:[email-masked]>.  Currently the packages draft would require the my-packages definition to explicitly re-state each of the modules in [email-masked]<mailto:[email-masked]> that differed [email-masked]<mailto:[email-masked]> (because only a single version of a module can be implemented, and all conflicts must be explicitly resolved).

This works, but I’m wondering whether that might become overly verbose.  Hence, I’m thinking that it might be useful for the [email-masked]<mailto:[email-masked]> definition to explicitly list [email-masked]<mailto:[email-masked]> as a direct package import, stating that it is replacing [email-masked]<mailto:[email-masked]> (which is indirectly imported via [email-masked]<mailto:[email-masked]>).  Avoiding the need to explicitly list the conflicting modules.  In fact, we could require that all conflicting imported package versions must also be explicitly resolved, just like for modules.

Does anyone have any objections to this?

Thanks,
Rob

---

From: Mahesh Jethanandani <[email-masked]>
Date: Wed, 11 Sep 2019 14:22:43 -0700

I have no objection either. But I want to take a very specific example, something I am already working on. With the package concept, how do you see this being packaged?

To support ietf-bgp model, I need the following modules:
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
To support ietf-evpn module, I need the following modules:
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
To support ietf-l2vpn module, I need the following modules:
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]
There are some common modules that all three need, e.g. ietf-interfaces, ietf-ip etc., then there are modules like ietf-l2vpn that are the L2VPN “package” but are needed by EVPN, and then there will be modules that are needed by two of them for which I do not have an example here, but I am sure I can dig one up.

How do you see this packaged?

> On Sep 11, 2019, at 1:49 PM, Reshad Rahman (rrahman) <[email-masked]> wrote:
> 
> From: Netmod-ver-dt <[email-masked] <mailto:[email-masked]>> on behalf of "Rob Wilton (rwilton)" <[email-masked] <mailto:[email-masked]>>
> To: "[email-masked] <mailto:[email-masked]>" <[email-masked] <mailto:[email-masked]>>
> But what about if we define a package [email-masked] <mailto:[email-masked]> that contains, say, 10 modules?
>  
> This package might be imported by a hypothetical [email-masked] <mailto:[email-masked]>.
>  
> Separately there might be a hypothetical [email-masked] <mailto:[email-masked]> package that has been published later and uses an updated version of ietf-base package, say [email-masked] <mailto:[email-masked]>, that may contain BC updates to several of the modules.
>  
> Say a device wants to implement a [email-masked] <mailto:[email-masked]> module that imports both [email-masked] <mailto:[email-masked]>and ietf-l2vpn@1..0.0 <mailto:[email-masked]>.  Currently the packages draft would require the my-packages definition to explicitly re-state each of the modules in [email-masked] <mailto:[email-masked]> that differed [email-masked] <mailto:[email-masked]> (because only a single version of a module can be implemented, and all conflicts must be explicitly resolved).
>  
> This works, but I’m wondering whether that might become overly verbose.  Hence, I’m thinking that it might be useful for the [email-masked] <mailto:[email-masked]> definition to explicitly list [email-masked] <mailto:[email-masked]> as a direct package import, stating that it is replacing [email-masked] <mailto:[email-masked]> (which is indirectly imported via [email-masked] <mailto:[email-masked]>).  Avoiding the need to explicitly list the conflicting modules.  In fact, we could require that all conflicting imported package versions must also be explicitly resolved, just like for modules.
>  
> _______________________________________________
> Netmod-ver-dt mailing list
> [email-masked] <mailto:[email-masked]>
> https://www.ietf.org/mailman/listinfo/netmod-ver-dt <https://www.ietf.org/mailman/listinfo/netmod-ver-dt>
Mahesh Jethanandani
[email-masked]

---

From: "Rob Wilton (rwilton)" <[email-masked]>
Date: Thu, 12 Sep 2019 08:47:02 +0000

Hi Mahesh,

So, I don’t know all the dependencies, so I probably won’t get this quite right, but hopefully you’ll get the idea.

Perhaps we can fully work out this solution and then use this as the concrete example in the appendix of the packaging draft?

I would define packages for:

  *   Base Network YANG models (depends on nothing)
  *   Routing (depends on base network)
  *   BGP (depends on routing)
  *   L2VPN (depends on routing)
  *   EVPN (depends on L2VPN and BGP)

I have roughly put the YANG modules into packages below.

Open questions:
  - Should we split types modules into import-only/implemented.  Personally, I prefer to mark that as all implemented since I think that makes resolution easier.
- Should schema-mount be in the network base module?
- Should BGP RIB be split out of a base BGP package (e.g. could have bgp_base, bgp_rib, and bgp_all (that depends on both bgp_base and bgp_rib).

ex_ietf_base_ntwk_device_pkg:
  Version: 1.0.0
  Depends on:
               Nothing
  Modules:
    [email-masked]
    [email-masked]
    [email-masked]
    [email-masked]
    [email-masked]
   [email-masked]
    [email-masked]
    [email-masked] ?
   [email-masked]
    [email-masked]
    [email-masked]
    [email-masked]
    [email-masked]

ex_ietf_base_routing_pkg:
  Version: 1.0.0
  Depends on:
               [email-masked]
  Modules:
               [email-masked]
               [email-masked]
               [email-masked]
               [email-masked]
               [email-masked]
               [email-masked]
[email-masked]
[email-masked]
[email-masked]
[email-masked]

ex_ietf_bgp_pkg:
  Version: 1.0.0
  Depends on:
               [email-masked]
  Modules:

ex_ietf_l2vpn_pkg:
  Version: 1.0.0
  Depends on:
               [email-masked]
  Modules:
               [email-masked]
               [email-masked]

ex_ietf_evpn_pkg:
   Version: 1.0.0
   Depends on:
     [email-masked]
     [email-masked]
   Modules:

Thanks,
Rob

From: Netmod-ver-dt <[email-masked]> On Behalf Of Mahesh Jethanandani
Sent: 11 September 2019 22:23
To: Reshad Rahman (rrahman) <[email-masked]>
Cc: Rob Wilton (rwilton) <[email-masked]>; [email-masked]
Subject: Re: [Netmod-ver-dt] Resolving package conflicts

To support ietf-bgp model, I need the following modules:
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
To support ietf-evpn module, I need the following modules:
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
To support ietf-l2vpn module, I need the following modules:
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
·        [email-masked]<mailto:[email-masked]>
There are some common modules that all three need, e.g. ietf-interfaces, ietf-ip etc., then there are modules like ietf-l2vpn that are the L2VPN “package” but are needed by EVPN, and then there will be modules that are needed by two of them for which I do not have an example here, but I am sure I can dig one up.

On Sep 11, 2019, at 1:49 PM, Reshad Rahman (rrahman) <[email-masked]<mailto:[email-masked]>> wrote:

From: Netmod-ver-dt <[email-masked]<mailto:[email-masked]>> on behalf of "Rob Wilton (rwilton)" <[email-masked]<mailto:[email-masked]>>
Date: Wednesday, September 11, 2019 at 6:00 AM
To: "[email-masked]<mailto:[email-masked]>" <[email-masked]<mailto:[email-masked]>>
Subject: [Netmod-ver-dt] Resolving package conflicts

Say a device wants to implement a [email-masked]<mailto:[email-masked]> module that imports both [email-masked]<mailto:[email-masked]>and ietf-l2vpn@1..0.0<mailto:[email-masked]>.  Currently the packages draft would require the my-packages definition to explicitly re-state each of the modules in [email-masked]<mailto:[email-masked]> that differed [email-masked]<mailto:[email-masked]> (because only a single version of a module can be implemented, and all conflicts must be explicitly resolved).

Thanks,
Rob

_______________________________________________
Netmod-ver-dt mailing list
[email-masked]<mailto:[email-masked]>
https://www.ietf.org/mailman/listinfo/netmod-ver-dt

Mahesh Jethanandani
[email-masked]<mailto:[email-masked]>