Re: [CDNi] New Internet Draft: draft-sopher-cdni-footprint-types-extensions

Kevin Ma <kevin.j.ma.ietf@gmail.com> Wed, 13 January 2021 04:19 UTC

Return-Path: <kevin.j.ma.ietf@gmail.com>
X-Original-To: cdni@ietfa.amsl.com
Delivered-To: cdni@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8578A3A0E17 for <cdni@ietfa.amsl.com>; Tue, 12 Jan 2021 20:19:32 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.854
X-Spam-Level:
X-Spam-Status: No, score=-0.854 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, NORMAL_HTTP_TO_IP=0.001, NUMERIC_HTTP_ADDR=1.242, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wf6rsRj_43kZ for <cdni@ietfa.amsl.com>; Tue, 12 Jan 2021 20:19:28 -0800 (PST)
Received: from mail-pg1-x536.google.com (mail-pg1-x536.google.com [IPv6:2607:f8b0:4864:20::536]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B34D63A0E0E for <cdni@ietf.org>; Tue, 12 Jan 2021 20:19:28 -0800 (PST)
Received: by mail-pg1-x536.google.com with SMTP id g15so657015pgu.9 for <cdni@ietf.org>; Tue, 12 Jan 2021 20:19:28 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=XHvCdkZu7QHbPrxu+ljT2joQ81G8Wrb1TS5zXNZDoQQ=; b=mpv7Xq4+QNpcln7RNIrmpKyc5qP6i+M6WxGcwLFyDjVxsKrUqyWxcuMwHfovkqox9c VXY+3o3te4jGXe+z8X8n1uOQr3aW6Qipgk9GDpEKa0eee9bmtfCom9iZ9xfsot3l8GKf JwMf+yx1NQY99MazvlE3GT96oQliOzlI9nKtWNQ+P/1ZyiR5cIibXR//zjoMe9VWGP3B ocgm4wt7T7QTRz719RsXmzQ6Fz4s1mjaLJH2YrkZBtQHVXDyO3xTtLjaOVc7S38vWys+ LR6zYfK+UBjJyLyxPdBoK+wvKfu++P4eBSsjpXwpV5b7olPnyVmzV9Or4scAp0hRSzlg sUvw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=XHvCdkZu7QHbPrxu+ljT2joQ81G8Wrb1TS5zXNZDoQQ=; b=ol0r/rBvhN7xtjjhoL6AORTt4MTv4Rgs9AIF/0+6gTDZAC9l/EhNNwgKTbc4GRMH/e e/OzwlahjPeEDSEI6QphC3F0B/qnKRdQcex3qeLi2drMZhcfEOoth5ZYzUACFFxwcWL+ lycjMfZl6TwkRtXX/gfmJl3nLkWPW4MLIDW6scfGcLIz0ekgav72d8Ja7KSce9Depd8K TOEQLD1M3GZf/o+FRf8VG5PaiOSISut57GzFo0rEhNvglkSrLHGs0iX8xn23Dh1nv43J ZbclfV7kHawDrfl8wKReCsxpmOrUa+BX05wBbpRFZjv58w0IgbBc3pyD5380+6VRdD+X H4Dw==
X-Gm-Message-State: AOAM532Z29hSLBxsLt7DAlLZR7a9cen0uwYvybN7iIXAmdnw+hENlWA0 HIYz7Hcr6ZPoAleESKDUQlAmd/on4vlz9VrQHTA=
X-Google-Smtp-Source: ABdhPJxCFLfBrP/Ojna5srG6i+Vzefs+rVI4a7kCOs7Kt5gj145gKunS72AO7e0oJ1d/uqdXLVDuvz2/H1Npq5TY8ks=
X-Received: by 2002:a62:5e44:0:b029:1a4:daae:e765 with SMTP id s65-20020a625e440000b02901a4daaee765mr328849pfb.8.1610511568055; Tue, 12 Jan 2021 20:19:28 -0800 (PST)
MIME-Version: 1.0
References: <97e045b4b8ae42738a43f3dc0e3e1ca1@tbwexch02apd.uswin.ad.vzwcorp.com> <PR3PR10MB4239816DC20211300DC4EE49E1AC0@PR3PR10MB4239.EURPRD10.PROD.OUTLOOK.COM> <CAMrHYE2QM8+G2Z0BJ5O3iLej7qsxB_ZWY_8G9jHsrwVX0-1u8w@mail.gmail.com> <CA+ec=9paJQYpTQRc9v7C_WqekynApA-mNY90746uXc+_+mHs-g@mail.gmail.com> <CAMrHYE2Me__fOd8Q=e7ni98M6Aws+Z8YyyOfZamBjVUS7G2mzA@mail.gmail.com> <CA+ec=9pA4z3Psfj8NJwEenWEh_se0W_MgikQM5-CCVPf35qj_A@mail.gmail.com>
In-Reply-To: <CA+ec=9pA4z3Psfj8NJwEenWEh_se0W_MgikQM5-CCVPf35qj_A@mail.gmail.com>
From: Kevin Ma <kevin.j.ma.ietf@gmail.com>
Date: Tue, 12 Jan 2021 23:19:16 -0500
Message-ID: <CAMrHYE2M1tTnMLV_xRSXmGL4sQgCxvYSER2mi3nLohHdrxm9fA@mail.gmail.com>
To: Nir Sopher <nirs@qwilt.com>
Cc: Guillaume Bichot <guillaume.bichot@broadpeak.tv>, "<cdni@ietf.org>" <cdni@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000ebb5ef05b8c0715b"
Archived-At: <https://mailarchive.ietf.org/arch/msg/cdni/S8qs1NO7ElCOw8rsRT5fJhJ7Nso>
Subject: Re: [CDNi] New Internet Draft: draft-sopher-cdni-footprint-types-extensions
X-BeenThere: cdni@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "This list is to discuss issues associated with the Interconnection of Content Delivery Networks \(CDNs\)" <cdni.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/cdni>, <mailto:cdni-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/cdni/>
List-Post: <mailto:cdni@ietf.org>
List-Help: <mailto:cdni-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/cdni>, <mailto:cdni-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 13 Jan 2021 04:19:33 -0000

Hi Nir,

> Note that the footprint types are also used by the CDNI Metadata
LocationACL objects <https://tools.ietf.org/html/rfc8006#section-4.2.2.2>,
where IIUC the list of objects is considered as a set.

  Correct.  In RFC8006 section 4.2.2.1, the footprint list is treated as a
cumulative list.  I would expect the same to be true of the footprint list
in the FCI base advertisement object (in section 5.1 of RFC8008).  So, the
example in section 2.1 of your draft:

    [{"footprint-type": "ipv4cidr","footprint-value": ["192.0.2.0/24"]},

  {"footprint-type": "ipv6cidr","footprint-value": ["2001:db8::/32"]}]


  would cover the union of the ipv4 and the ipv6 prefixes, not the
intersection.

  If you wanted to create more complex multi-footprint-intersection rules,
that could be done by implementing a custom footprint type with the
intersection rules clearly defined.

thanx.

--  Kevin J. Ma

On Tue, Jan 12, 2021 at 7:25 AM Nir Sopher <nirs@qwilt.com> wrote:

> Hi Kevin and Guillaume,
>
> I did not intend to change the footprint objects. I assume we can just
> specify in the new RFC the class of each type and the semantic would apply
> on the current syntax.
> If we make changes in the syntax, we can do it simply by defining the
> footprints in 2 layers. For example:
> "footprints": [
>     [
>         {
>             "footprint-type": "iso3166code",
>             "footprint-value": ["ca", "us-ny"]
>         }
>     ],
>     [
>         {
>             "footprint-type": "ipv4",
>             "footprint-value": ["1.2.3.0/24"]
>         },
>         {
>             "footprint-the type": "ipv6",
>             "footprint-value": ["2001:db8::/32"]
>         }
>     ]
> ]
>
> The semantic would be considering the inner lists objects as sets, and
> then narrowing the outer list results.
> This would not force us to define the class of each type.
>
> The change I describe above can be valid to all FCI implementations.
> Note that the footprint types are also used by the CDNI Metadata
> LocationACL objects <https://tools.ietf.org/html/rfc8006#section-4.2.2.2>,
> where IIUC the list of objects is considered as a set.
>
> WRT the ALTO PID, I'll need to look deeper into it
>
> Nir
>
> On Tue, Jan 12, 2021 at 5:51 AM Kevin Ma <kevin.j.ma.ietf@gmail.com>
> wrote:
>
>> Hi Nir,
>>
>> > IIUC, this would weaken the protocol:
>>
>>   Again, just to be clear, the FCI semantics RFC was never intended to
>> define a "protocol".  The purpose was only to define a common message
>> format.  It is arguable whether the interpretation of the footprint list
>> entries should be protocol specific, but I think we can infer that we felt
>> such interpretations were protocol specific and thus beyond the scope of
>> the FCI semantics RFC.  We probably could've made that more clear, but
>> again, hindsight.
>>
>> > define now a "footprint object class", grouping the "footprint object
>> types"
>>
>>   wrt the grouping proposal, it is not clear to me that there is a
>> natural grouping for footprint types or how future footprint types would be
>> matched to a group, .e.g., should asn always be combined with ipv4/ipv6,
>> and why not combine IPs with countries?  There will likely always be
>> counter examples where a fixed grouping doesn't fit a certain scenario or
>> there is a difference of opinion on what the natural groupings should be.
>> These are the types of things we were trying to avoid in defining a generic
>> message envelope and wanted to delegate to protocol implementation specs
>> (e.g., the altopid footprint type solves the ipv4/ipv6 problem for the ALTO
>> FCI implementation,
>> https://tools.ietf.org/html/draft-ietf-alto-cdni-request-routing-alto-14#section-4.1
>> ).
>>
>>   Would the intent here be to enforce a grouping proposal on all FCI
>> implementations?  Or is there a specific FCI protocol you have in mind?  Is
>> SVA intending to use ALTO for FCI?
>>
>> thanx!
>>
>> --  Kevin J. Ma
>>
>> On Mon, Jan 11, 2021 at 11:45 AM Nir Sopher <nirs@qwilt.com> wrote:
>>
>>> Thanks Guillaume and Kevin,
>>>
>>> Indeed, disregarding the statement in the appendix would negate the need
>>> for the ipv4v6cidr.
>>> However, IIUC, this would weaken the protocol:
>>> Take for example an integration where we would like the footprint to
>>> cover only clients within a Europe wide spread ASN, but only in Belgium, or
>>> only the NY clients of a US-wide ASN. The protocol when disregarding the
>>> "narrowing semantics" statement would not be able to specify it (while in
>>> the original semantics it is definable).
>>>
>>> One can argue we need to be able to create some boolean expression.
>>> ORing and ANDing footprints.
>>> I think a better approach (Guillaume, it might be the direction you were
>>> pointing at), is to define now a "footprint object class", grouping the
>>> "footprint object types"
>>>
>>>    1. Footprint Class: ip
>>>    Grouped footprint-types:
>>>       1. ipv4cidr
>>>       2. ipv6cidr
>>>       3. asn
>>>    2. Footprint Class: geo
>>>    Grouped footprint-types:
>>>       1. countrycode
>>>       2. iso3166code
>>>
>>> When a footprint objects list is composed from multiple footprint-object
>>> classes, we should first merge objects from the same class as a "set", and
>>> then use the original narrowing semantics between the classes.
>>>
>>> This approach would solve the issue and would align with the original
>>> semantics in most cases, but would also avoid the "absurd result".
>>>
>>> Thoughts?
>>> Thanks,
>>> Nir
>>>
>>> On Mon, Jan 11, 2021 at 7:56 AM Kevin Ma <kevin.j.ma.ietf@gmail.com>
>>> wrote:
>>>
>>>> Hi All,
>>>>
>>>>   It's been a while since we had the FCI debates, and FCI has a rather
>>>> complex history, so I've had to refresh my memory.
>>>>
>>>>   wrt the text in question: "Multiple footprint constraints are
>>>> additive: the advertisement of different footprint types narrows the
>>>> dCDN's candidacy cumulatively." I believe that statement was referring
>>>> to if multiple FCI messages were sent for the same capability but the
>>>> messages had different footprints in them; I do not believe it was intended
>>>> to apply to multiple footprints in the same message.  (I believe it stemmed
>>>> from a protocol implementation question for how to override footprints and
>>>> how to deal with footprints in sequential messages, which I had addressed
>>>> in my original capabilities protocol draft:
>>>> https://tools.ietf.org/html/draft-ma-cdni-capabilities-04#section-2
>>>> and
>>>> https://tools.ietf.org/html/draft-ma-cdni-capabilities-04#section-3.2
>>>> .)
>>>>
>>>>   In addition, I don't know that we should give any normative weight to
>>>> a non-normative statement in an appendix.  As the draft points out (
>>>> https://tools.ietf.org/html/draft-sopher-cdni-footprint-types-extensions-01#section-2.1
>>>> ), applying the statement to the list of footprints in a single message
>>>> produces an absurd result (i.e., disjoint footprints produce an empty set
>>>> of footprints), and that was certainly not the intention (which I think we
>>>> can infer from the prevention of such a result in the protocol drafts).
>>>>
>>>> > Frankly, this is very strange that the statement is almost hidden in
>>>> a kind of annex  whereas it could have been located in section 5 in a
>>>> proper dedicated section.
>>>>
>>>>   Coming out of IETF 90 and 91, we had decided to focus the FCI
>>>> semantics draft on just the information that needed to be advertised and
>>>> separate out the protocol specifications (see:
>>>> https://mailarchive.ietf.org/arch/msg/cdni/3GVjUbBNsf2gV8fQUhcVBRID_mU/
>>>> ).  All of the less relevant material was moved to appendices (per:
>>>> https://mailarchive.ietf.org/arch/msg/cdni/2gLvfnlbpJjIo57bER72kIiSZsk/
>>>> ).  In hindsight we probably could've done more to clean up the appendices,
>>>> but as is always the case, we did not have the benefit of hindsight at the
>>>> time.  The decision was made to rely on ALTO as a transport protocol, which
>>>> defines its own footprint type and enforcement rules (see:
>>>> https://tools.ietf.org/html/draft-ietf-alto-cdni-request-routing-alto-14#section-4.1
>>>> ).
>>>>
>>>>   We probably also could have done more to specify the interpretation
>>>> of the footprint list, but I think that was just delegated to the protocol
>>>> specs.  At the time, there was contentious debate between advertising of
>>>> footprints vs advertising of capabilities (thus:
>>>> https://tools.ietf.org/html/rfc8008#section-3 ), and our focus was
>>>> clarifying the advertisement of capabilities with footprint restrictions
>>>> and completing the semantics draft so we could move forward with the
>>>> protocol draft(s).
>>>>
>>>>   If folks feel strongly about the appendix being confusing, we could
>>>> consider filing an errata?
>>>>
>>>> Sanjay/Nir,
>>>>
>>>>   If we disregard the statement in the appendix and assume that within
>>>> a single message, multiple footprint types are allowed and are considered
>>>> as a set, does that negate the need for the proposed ipv4v6cidr footprint
>>>> type?
>>>>
>>>>   wrt the iso3166code footprint type, I don't see any issue with it if
>>>> folks feel it would be useful.
>>>>
>>>> thanx!
>>>>
>>>> --  Kevin J. Ma
>>>>
>>>> On Sun, Jan 10, 2021 at 5:54 PM Guillaume Bichot <
>>>> Guillaume.Bichot@broadpeak.tv> wrote:
>>>>
>>>>> Hi Sanjay & Nir.
>>>>>
>>>>>
>>>>>
>>>>> Here is the  statement from 8008 (Appendix B) : Multiple footprint constraints are additive: the advertisement of different footprint types narrows the dCDN's candidacy cumulatively.
>>>>>
>>>>> Frankly, this is very strange that the statement is almost hidden in a kind of annex  whereas it could have been located in section 5 in a proper dedicated section.
>>>>>
>>>>> Your proposal solves the issue but not completely. I guess nothing prevent me to add several footprint constraints of the same type like the example below. Strictly speaking, if I captured well that statement, we should end up with an empty list as well.
>>>>>
>>>>>
>>>>>
>>>>> {
>>>>>
>>>>>      "capabilities": [
>>>>>
>>>>>        {
>>>>>
>>>>>          "capability-type": <CDNI capability object type>,
>>>>>
>>>>>          "capability-value": <CDNI capability object>,
>>>>>
>>>>>          },
>>>>>
>>>>>          "footprints": [
>>>>>
>>>>>              {
>>>>>
>>>>>                  "footprint-type": "ipv4cidr",
>>>>>
>>>>>                  "footprint-value": ["192.0.20/24"].
>>>>>
>>>>>              },
>>>>>
>>>>>              {
>>>>>
>>>>>                  "footprint-type": "ipv4cidr",
>>>>>
>>>>>                  "footprint-value": [["192.0.21/24"]
>>>>>
>>>>>              }
>>>>>
>>>>>          ]
>>>>>
>>>>>        }
>>>>>
>>>>>      ]
>>>>>
>>>>>    }
>>>>>
>>>>>
>>>>>
>>>>> I have another proposal  that is the following: instead of creating a new footprint type that requires a change in RFC8006 as well, why not just changing that statement that looks strange and almost faulty.
>>>>>
>>>>>
>>>>>
>>>>> -remove that faulty statement in Appendix B.
>>>>>
>>>>> - create a new section 5.x about “footprints” and add a new statement (or just add that new statement in Appendix B) like the following:
>>>>>
>>>>> ”Several footprint constraints can be given of either the same type or not.   The uCDN MUST consider the resulting footprint as a set of geographical areas constrained with a set of IP address ranges if any. If several geographical areas overlap then the coverage zone corresponds to the cumulative areas.”
>>>>>
>>>>>
>>>>>
>>>>> Examples
>>>>>
>>>>> -          E1: a set of address ranges
>>>>>
>>>>> "ipv4cidr", ["192.0.2.0/24", “192.0.2.1/24”]
>>>>>
>>>>> “ipv4cidr”, [“192.0.2.2/28”]
>>>>>
>>>>> "ipv6cidr", ["2001:db8::/32"]
>>>>>
>>>>> -          E2: a set of geographical areas
>>>>> "iso3166code", ["ca", us-ny]
>>>>>
>>>>> -          E3: a mixed of geographical areas and address ranges
>>>>>
>>>>> "ipv4cidr", ["192.0.2.0/24"]
>>>>>
>>>>> "ipv6cidr", ["2001:db8::/32"]
>>>>>
>>>>> -          "iso3166code", ["ca", “us-ny”]
>>>>>
>>>>>
>>>>>
>>>>> Guillaume
>>>>>
>>>>>
>>>>>
>>>>> *Guillaume BICHOT, **Principal Engineer, Head of Exploration*
>>>>>
>>>>> +33 (0) 6 8559 7666 | guillaume.bichot@broadpeak.tv
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> *From:* CDNi [mailto:cdni-bounces@ietf.org <cdni-bounces@ietf.org>] *On
>>>>> Behalf Of *Nir Sopher
>>>>> *Sent:* Wednesday, December 23, 2020 6:19 PM
>>>>> *To:* cdni@ietf.org
>>>>> *Subject:* [E] [CDNi] New Internet Draft:
>>>>> draft-sopher-cdni-footprint-types-extensions
>>>>>
>>>>>
>>>>>
>>>>> Hi,
>>>>>
>>>>>
>>>>>
>>>>> We have submitted draft-sopher-cdni-footprint-types-extensions
>>>>> <https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Furldefense.proofpoint.com%2Fv2%2Furl%3Fu%3Dhttps-3A__datatracker.ietf.org_doc_draft-2Dsopher-2Dcdni-2Dfootprint-2Dtypes-2Dextensions_%26d%3DDwMFaQ%26c%3DudBTRvFvXC5Dhqg7UHpJlPps3mZ3LRxpb6__0PomBTQ%26r%3DXniVbishGiO2Ao9hKqSc-hTVIWCi3T-x6GdHR4ZTgoM%26m%3DTs5uj_nZmoHgi7pPldjWKsDPgmeeiO_RkotsI8zZD-E%26s%3DoWZZ4TjWJsq7Ao899RmyOUwUgAjNYeVlksfkKAy-UeA%26e%3D&data=04%7C01%7Cguillaume.bichot%40broadpeak.tv%7Cf6b67a86cc4b44ff6b7a08d8a83b82a1%7C0ebe44eac9c9438da0407e699f358ed4%7C0%7C0%7C637444320869999346%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=YxIzX3bst5GAicrOxFI%2BqfRZYO65%2Fwh07pDTwoYrrJg%3D&reserved=0>
>>>>> that extends RFCs 8006/8008 in order to address the following issue:
>>>>>
>>>>>    - Sections 4.3.5 and 4.3.6 of [RFC8006] specify the "IPv4CIDR"
>>>>>    and  "IPv6CIDR" footprint types, respectively, for listing IP addresses
>>>>>    blocks.  Using Footprint Objects of these types, one can define an FCI
>>>>>    Capability Advertisement Object footprint constraints that match IPv4 or
>>>>>    IPv6 clients. Also as described in section 5 of RFC 8008, the FCI
>>>>>    Capability Advertisement Object includes an array of such CDNI Footprint
>>>>>    Objects. The array of Footprint Objects has a "narrowing" semantic that
>>>>>    prevents the usage of IPv4/IPv6 objects together in order to create a
>>>>>    footprint constraint that matches IPv4 clients together with IPv6 clients.
>>>>>
>>>>>
>>>>>
>>>>> In the submitted draft:
>>>>>
>>>>>    1. We add a new usecase of dCDN advertising a footprint that
>>>>>    consists of both IPv4 and IPv6 client addresses, by defining a new
>>>>>    "IPv4v6CIDR" Footprint Type.
>>>>>    2. We also add support for ISO3166Code Footprint Type, based on
>>>>>    ISO 3166 country codes and regions definition. This Footprint Type allows
>>>>>    the dCDN to advertise a footprint based on a specific region, for example a
>>>>>    state in the USA.
>>>>>
>>>>> We would highly appreciate it if folks can review and provide any
>>>>> feedback.
>>>>>
>>>>>
>>>>>
>>>>> Thanks and Happy Holidays,
>>>>>
>>>>> Sanjay & Nir
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> CDNi mailing list
>>>>> CDNi@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/cdni
>>>>>
>>>> _______________________________________________
>>>> CDNi mailing list
>>>> CDNi@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/cdni
>>>>
>>>