CDNI                                                          J. Seedorf
Internet-Draft                                                       NEC                 HFT Stuttgart - Univ. of Applied Sciences
Intended status: Informational Standards Track                                 Y. Yang
Expires: September 6, 2015                                          Yale January 3, 2018                                     Tongji/Yale
                                                             J. Peterson
                                                           March 5, 2015
                                                            July 2, 2017

 Content Delivery Network Interconnection (CDNI) Request Routing: CDNI
          Footprint and Capabilities Advertisement using ALTO


   Network Service Providers (NSPs) are currently considering to deploy
   Content Delivery Networks (CDNs) within their networks.  As a
   consequence of this development, there is a need for interconnecting
   these local CDNs.  The necessary interfaces for inter-connecting CDNs
   are currently being defined in the Content Delivery Networks
   Interconnection (CDNI) WG.  This document focuses on the CDNI
   Footprint & Capabilities Advertisement interface (FCI).
   Specifically, this document specifies a new Application Layer Traffic
   Optimization (ALTO) service to facilitate Footprint & Capabilities
   Advertisement in a CDNI context.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on September 6, 2015. January 3, 2018.

Copyright Notice

   Copyright (c) 2015 2017 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   ( in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  ALTO within CDNI Request Routing  . . . . . . . . . . . . . .   3
   3.  Assumptions and High-Level Design Considerations  . . . . . .   4
     3.1.  General Assumptions and Considerations  . . . . . . . . .   4
     3.2.  Semantics for Footprint/Capabilities Advertisment . . . .   5
     3.3.  Advantages of using ALTO as the CDNI FCI protocol . . . .   7
     3.4.  Selection of a Downstream CDN with ALTO . . . . . . . . .   7
   4.  CDNI FCI ALTO Service . . . . . . . . . . . . . . . . . . . .   8
     4.1.  Server Response Encoding  . . . . . . . . . . . . . . . .   8
       4.1.1.  CDNI FCI Map  . . . . . . . . . . . . . . . . . . . .   8
       4.1.2.  Meta Information  . . . . . . . . . . . . . . . . . .   8
       4.1.3.  Data Information  . . . . . . . . . . . . . . . . . .   8
     4.2.  Protocol Errors . . . . . . . . . . . . . . . . . . . . .   9   8
     4.3.  Example . . . . . . . . . . . . . . . . . . . . . . . . .   9
   5.  Useful ALTO extensions for CDNI Request Routing . . . . . . .  10
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .  12  11
   7.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  12  11
   8.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  12  11
     8.1.  Normative References  . . . . . . . . . . . . . . . . . .  12  11
     8.2.  Informative References  . . . . . . . . . . . . . . . . .  13  12
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  14  13

1.  Introduction

   Many Network Service Providers (NSPs) are currently considering or
   have already started to deploy Content Delivery Networks (CDNs)
   within their networks.  As a consequence of this development, there
   is a need for interconnecting these local CDNs.  Content Delivery
   Networks Interconnection (CDNI) has the goal of standardizing
   protocols to enable such interconnection of CDNs [RFC6707].

   The CDNI problem statement [RFC6707] envisions four interfaces to be
   standardized within the IETF for CDN interconnection:

   o  CDNI Request Routing Interface
   o  CDNI Metadata Interface

   o  CDNI Logging Interface

   o  CDNI Control Interface

   This document focuses solely on the CDNI Request Routing Interface,
   which can be further divided into two interfaces (see [RFC6707] for a
   detailed description): the CDNI Request Routing Redirection interface
   (RI), and the CDNI Footprint & Capabilities Advertisement interface
   (FCI).  This document specifies a new Application Layer Traffic
   Optimization (ALTO) [RFC7285] service called 'CDNI Footprint &
   Capabilities Advertisement Service'.  This service is used to
   transport CDNI FCI JSON objects, which are defined in a separate
   document [].  An abstraction for managing
   individual CDNI capabilities in an opaque manner is defined as
   'FCIBase' object in [I-D.ietf-cdni-footprint-capabilities-semantics]. [RFC8008].

   Throughout this document, we use the terminology for CDNI defined in

2.  ALTO within CDNI Request Routing

   The main purpose of the CDNI Request Routing Interface is described
   in [RFC6707] as follows: "The CDNI Request Routing interface enables
   a Request Routing function in an Upstream CDN to query a Request
   Routing function in a Downstream CDN to determine if the Downstream
   CDN is able (and willing) to accept the delegated Content Request.
   It also allows the Downstream CDN to control what should be returned
   to the User Agent in the redirection message by the upstream Request
   Routing function."  On a high level, the scope of the CDNI Request
   Routing Interface therefore contains two main tasks:

   o  A) Determining if the downstream CDN is willing to accept a
      delegated content request

   o  B) Redirecting the content request coming from an upstream CDN to
      the proper entry point or entity in the downstream CDN

   More precisely, in [RFC7336] the request routing interface is broadly
   divided into two functionalities:

   o  1) the asynchronous advertisement of footprint and capabilities by
      a dCDN that allows a uCDN to decide whether to redirect particular
      user requests to that dCDN (the CDNI FCI)

   o  2) the synchronous operation of actually redirecting a user
      request (the CDNI RI)

   Application Layer Traffic Optimization (ALTO) [RFC7285] is an
   approach for guiding the resource provider selection process in
   distributed applications that can choose among several candidate
   resources providers to retrieve a given resource.  By conveying
   network layer (topology) information, an ALTO server can provide
   important information to "guide" the resource provider selection
   process in distributed applications.  Usually, it is assumed that an
   ALTO server conveys information these applications cannot measure
   themselves [RFC5693].

   Originally, ALTO was motivated by the huge amount of cross-ISP
   traffic generated by P2P applications [RFC5693].  Recently, however,
   ALTO is also being considered for improving the request routing in
   CDNs [I-D.jenkins-alto-cdn-use-cases].  In this context, it has also
   been proposed to use ALTO for selecting an entry-point in a
   downstream NSP's network (see section 3.4 "CDN delivering Over-The-
   Top of a NSP's network" in [I-D.jenkins-alto-cdn-use-cases]).  Also,
   the CDNI problem statement explicitly mentions ALTO as a candidate
   protocol for "algorithms for selection of CDN or Surrogate by
   Request-Routing systems" [RFC6707].

3.  Assumptions and High-Level Design Considerations

   In this section we list some assumptions and design issues to be
   considered when using ALTO for the CDNI Footprint and Capabilities
   Advertisement interface.

3.1.  General Assumptions and Considerations

   Below we list some general assumptions and considerations:

   o  As explicitly being out-of-scope for CDNI [RFC6707], it is assumed
      that ingestion of content or acquiring content across CDNs is not
      part of request routing as considered within CDNI standardization
      work.  The focus of using ALTO (as considered in this document) is
      hence on request routing only, assuming that the content (desired
      by the end user) is available in the downstream CDN (or can be
      aquired by the downstream CDN by some means).

   o  Federation Model: "Footprint and Capabilities Advertisement" and
      in general CDN request routing depends on the federation model
      among the CDN providers.  Designing a suitable solution thus
      depends on whether a solution is needed for different settings,
      where CDNs consist of both NSP CDNs (serving individual ASes) and
      general, traditional CDNs (such as Akamai).  We assume that CDNI
      is not designed for a setting where only NSP CDNs each serve a
      single AS only.

   o  In this document, it is assumed that the upstream CDN (uCDN) makes
      the decision on selecting a downstream CDN, based on information
      that each downstream CDN has made available to the upstream CDN.
      Further, we assume that in principle more than one dCDN may be
      suitable for a given end-user request (i.e. different dCDNs may
      claim "overlapping" footprints).  The uCDN hence potentially has
      to select among several candidate downstream CDNs for a given end
      user request.

   o  It is not clear what kind(s) of business, contract, and
      operational relationships two peering CDNs may form.  For the
      Internet, we see provider-customer and peering as two main
      relations; providers may use different charging models (e.g.,
      95-percentile, total volume) and may provide different SLAs.
      Given such unknown characteristics of CDN peering business
      agreements, we should design the protocol to support as much
      diverse potential business and operational models as possible.

3.2.  Semantics for Footprint/Capabilities Advertisment

   The CDNI document on "Footprint and Capabilities Semantics"
   [I-D.ietf-cdni-footprint-capabilities-semantics] [RFC8008]
   defines the semantics for the CDNI FCI.  It thus provides guidance on
   what Footprint and Capabilities mean in a CDNI context and how a
   protocol solution should in principle look like.  Here we briefly
   summarize the key points of the semantics of Footprint and
   Capabilities (for a detailed discussion, the reader is referred to

   o  Often, footprint and capabilities are tied together and cannot be
      interpreted independently from each other.  In such cases, i.e.
      where capabilities must be expressed on a per footprint basis, it
      may be beneficial to combine footprint and capabilities

   o  Given that a large part of Footprint and Capabilities
      Advertisement will actually happen in contractual agreements, the
      semantics of CDNI Footprint and Capabilities advertisement refer
      to answering the following question: what exactly still needs to
      be advertised by the CDNI FCI?  For instance, updates about
      temporal failures of part of a footprint can be useful information
      to convey via the CDNI request routing interface.  Such
      information would provide updates on information previously agreed
      in contracts between the participating CDNs.  In other words, the
      CDNI FCI is a means for a dCDN to provide changes/updates
      regarding a footprint and/or capabilities it has prior agreed to
      serve in a contract with a uCDN.

   o  It seems clear that "coverage/reachability" types of footprint
      must be supported within CDNI.  The following such types of
      footprint are mandatory and must be supported by the CDNI FCI:

      *  List of ISO Country Codes

      *  List of AS numbers

      *  Set of IP-prefixes

      A 'set of IP-prefixes' must be able to contain full IP addresses,
      i.e., a /32 for IPv4 and a /128 for IPv6, and also IP prefixes
      with an arbitrary prefix length.  There must also be support for
      multiple IP address versions, i.e., IPv4 and IPv6, in such a

   o  For all of these mandatory-to-implement footprint types,
      footprints can be viewed as constraints for delegating requests to
      a dCDN: A dCDN footprint advertisement tells the uCDN the
      limitations for delegating a request to the dCDN.  For IP prefixes
      or ASN(s), the footprint signals to the uCDN that it should
      consider the dCDN a candidate only if the IP address of the
      request routing source falls within the prefix set (or ASN,
      respectively).  The CDNI specifications do not define how a given
      uCDN determines what address ranges are in a particular ASN.
      Similarly, for country codes a uCDN should only consider the dCDN
      a candidate if it covers the country of the request routing
      source.  The CDNI specifications do not define how a given uCDN
      determines the country of the request routing source.  Multiple
      footprint constraints are additive, i.e. the advertisement of
      different types of footprint narrows the dCDN candidacy

   o  The following capabilities seem useful as 'base' capabilities,
      i.e. ones that are needed in any case and therefore constitute
      mandatory capabilities to be supported by the CDNI FCI:

      *  Delivery Protocol (e.g., HTTP vs. RTMP)

      *  Acquisition Protocol (for aquiring content from a uCDN)

      *  Redirection Mode (e.g., DNS Redirection vs. HTTP Redirection as
         discussed in [RFC7336])

      *  Capabilities related to CDNI Logging (e.g., supported logging

      *  Capabilities related to CDNI Metadata (e.g., authorization
         algorithms or support for proprietary vendor metadata)

3.3.  Advantages of using ALTO as the CDNI FCI protocol

   The following reasons make ALTO a suitable candidate protocol for
   downstream CDN selection as part of CDNI request routing and in
   particular for an FCI protocol:

   o  CDN request routing is done at the application layer.  ALTO is a
      protocol specifically designed to improve application layer
      traffic (and application layer connections among hosts on the
      Internet) by providing additonal information to applications that
      these applications could not easily retrieve themselves.  For
      CDNI, this is exactly the case: a uCDN wants to improve
      application layer CDN request routing by using dedicated
      information (provided by a dCDN) that the uCDN could not easily
      obtain otherwise.

   o  The semantics of an ALTO network map are an exact match for the
      needed information to convey a footprint by a downstream CDN, in
      particular if such a footprint is being expressed by IP-prefix

   o  Security: ALTO maps can be signed and hence provide inherent
      integrity protection (see Section 6)

   o  RESTful-Design: The ALTO protocol has undergone extensive
      revisions in order to provide a RESTful design regarding the
      client-server interaction specified by the protocol.  A CDNI FCI
      interface based on ALTO would inherit this RESTful design.

   o  Error-handling: The ALTO protocol has undergone extensive
      revisions in order to provide sophisticated error-handling,
      inparticular regarding unexpected cases.  A CDNI FCI interface
      based on ALTO would inherit this thought-through and mature error-

   o  Filtered network map: The ALTO Map Filtering Service (see
      [RFC7285] for details) would allow a uCDN to query only for parts
      of an ALTO map.

3.4.  Selection of a Downstream CDN with ALTO

   Under the considerations stated in Section 3, ALTO can help the
   upstream CDN provider to select a proper downstream CDN provider for
   a given end user request as follows: Each downstream CDN provider
   hosts an ALTO server which provides ALTO services which convey CDNI
   FCI information to an ALTO client at the upstream CDN provider.

4.  CDNI FCI ALTO Service

   The ALTO protocol is based on an ALTO Information Service Framework
   which consists of several services, where all ALTO services are
   'provided through a common transport protocol, messaging structure
   and encoding, and transaction model' [RFC7285].  The ALTO protocol
   specification [RFC7285] defines several such services, e.g. the ALTO
   map service.

   This document defines a new ALTO Service called 'CDNI Footprint &
   Capabilities Advertisement Service' which conveys JSON objects of
   media type 'application/alto-fcimap+json'.  This media type and JSON
   object format is defined in []; [RFC8008]; this document specifies how to
   transport such JSON objects via the ALTO protocol with the ALTO 'CDNI
   Footprint & Capabilities Advertisement Service'.
   An abstraction for managing individual CDNI capabilities in an opaque
   manner is defined as 'FCIBase' object in

4.1.  Server Response Encoding

4.1.1.  CDNI FCI Map

   The media type of the CDNI FCI Map is 'application/alto-cdni-
   fcimap+json'.  The HTTP Method, Accept Input Parameters,
   Capabilities, Uses, and Response of the CDNI FCI Map are specified in

4.1.2.  Meta Information

   The 'meta' field of a FCIMapData response MUST include 'vtag', which
   is an ALTO Version Tag of the retrieved FCIMapData according to
   [RFC7285] (Section 10.3.).  It thus contains a 'resource-id'
   attribute, and a 'tag' is an identifier string.

4.1.3.  Data Information

   The data component of a CDNI FCI Map resource is named 'fcimap' which
   is a JSON object of type FCIMapData.  This JSON object of type
   FCIMapData is derived from ResponseEntityBase as specified in the
   ALTO protocol [RFC7285] (Section 8.4.) and specified in

4.2.  Protocol Errors

   Protocol errors are handled as specified in the ALTO protocol
   [RFC7285] (Section 8.5.).

4.3.  Example

   The following example shows an CDNI FCI Map as in
   [], however with meta-information as defined
   in Section 4.1.2 of this document.

      GET /fcimap HTTP/1.1
      Accept: application/alto-fcimap+json,application/alto-error+json

      HTTP/1.1 200 OK
      Content-Length: 439
      Content-Type: application/alto-fcimap+json
        "meta" : {
          "vtag": {
            "resource-id": "my-default-fcimap",
             "tag": "da65eca2eb7a10ce8b059740b0b2e3f8eb1d4785"
        "fcimap": [
          { "name": "delivery_protocol",
            "values": [
          { "name": "delivery_protocol",
            "values": [
            "footprint": [
              { "type": "IPv4CIDR",
                "values": [

5.  Useful ALTO extensions for CDNI Request Routing

   It is envisioned that yet-to-be-defined ALTO extensions will be
   standardized that make the ALTO protocol more suitable and useful for
   applications other than the originally considered P2P use case
   [I-D.marocco-alto-next].  Some of these extensions to the ALTO
   protocol would be useful for ALTO to be used as a protocol within
   CDNI request routing, and in particular within the "Footprint and
   Capabilities Advertisment" part of the CDNI request routing

   The following proposed extensions to ALTO would be beneficial to
   facilitate CDNI request routing with ALTO as outlined in Section 3.4:

   o  Server-initiated Notifications and Incremental Updates: In case
      the footprint or the capabilities of a downstream CDN change
      abruptly (i.e. unexpectedly from the perspective of an upstream
      CDN), server initiated notifications would enable a dCDN to
      directly inform an upstream CDN about such changes.  Consider the
      case where - due to failure - part of the footprint of the dCDN is
      not functioning, i.e. the CDN cannot serve content to such clients
      with reasonable QoS.  Without server-initiated notifications, the
      uCDN might still use a very recent network and cost map from dCDN,
      and therefore redirect request to dCDN which it cannot serve.
      Similarly, the possibility for incremental updates would enable
      efficient conveyance of the aforementioned (or similar) status
      changes by the dCDN to the uCDN.  A proposal for server-initiated
      ALTO updates can be found in [I-D.marocco-alto-ws].  A discussion
      of incremental ALTO updates can be found in

   o  Content Availability on Hosts: A dCDN might want to express CDN
      capabilties in terms of certain content types (e.g. codecs/
      formats, or content from certain content providers).  A new
      endpoint property for ALTO that would be able to express such
      "content availability" would enable a dCDN to make available such
      information to an upstream CDN.  This would enable a uCDN to
      determine if a given dCDN actually has the capabilities for a
      given request with respect to the type of content requested.

   o  Resource Availability on Hosts or Links: The capabilities on links
      (e.g. maximum bandwidth) or caches (e.g. average load) might be
      useful information for an upstream CDN for optimized dowmstream
      CDN selection.  For instance, if a uCDN receives a streaming
      request for content with a certain bitrate, it needs to know if it
      is likely that a dCDN can fulfill such stringent application-level
      requirements (i.e. can be expected to have enough consistent
      bandwidth) before it redirects the request.  In general, if ALTO
      could convey such information via new endpoint properties, it
      would enable more sophisticated means for downstream CDN selection
      with ALTO.

6.  Security Considerations

   One important security consideration is the proper authentication of
   advertisement information provided by a downstream CDN.  The ALTO
   protocol provides a specification for a signature of ALTO information
   (see 8.2.2. of [RFC7285].  ALTO thus provides a proper means for
   protecting the integrity of FCI information.

   More Security Considerations will be discussed in a future version of
   this document.

7.  Acknowledgements

   The authors would like to thank Kevin Ma, Daryl Malas, and Matt
   Caulfield for their timely reviews and invaluable comments.

   Jan Seedorf is partially supported by the GreenICN project (GreenICN:
   Architecture and Applications of Green Information Centric
   Networking), a research project supported jointly by the European
   Commission under its 7th Framework Program (contract no. 608518) and
   the National Institute of Information and Communications Technology
   (NICT) in Japan (contract no. 167).  The views and conclusions
   contained herein are those of the authors and should not be
   interpreted as necessarily representing the official policies or
   endorsements, either expressed or implied, of the GreenICN project,
   the European Commission, or NICT.

8.  References

8.1.  Normative References

   [RFC5693]  Seedorf, J. and E. Burger, "Application-Layer Traffic
              Optimization (ALTO) Problem Statement", RFC 5693,
              DOI 10.17487/RFC5693, October
              2009. 2009,

   [RFC6707]  Niven-Jenkins, B., Le Faucheur, F., and N. Bitar, "Content
              Distribution Network Interconnection (CDNI) Problem
              Statement", RFC 6707, DOI 10.17487/RFC6707, September 2012.
              2012, <>.

   [RFC6770]  Bertrand, G., Ed., Stephan, E., Burbridge, T., Eardley,
              P., Ma, K., and G. Watson, "Use Cases for Content Delivery
              Network Interconnection", RFC 6770, DOI 10.17487/RFC6770,
              November 2012. 2012, <>.

   [RFC7285]  Alimi, R., Ed., Penno, R., Ed., Yang, Y., Ed., Kiesel, S.,
              Previdi, S., Roome, W., Shalunov, S., and R. Woundy,
              "Application-Layer Traffic Optimization (ALTO) Protocol",
              RFC 7285, DOI 10.17487/RFC7285, September
              2014. 2014,

   [RFC7336]  Peterson, L., Davie, B., and R. van Brandenburg, Ed.,
              "Framework for Content Distribution Network
              Interconnection (CDNI)", RFC 7336, DOI 10.17487/RFC7336,
              August 2014. 2014, <>.

   [RFC7337]  Leung, K. K., Ed. and Y. Lee, Ed., "Content Distribution
              Network Interconnection (CDNI) Requirements", RFC 7337,
              DOI 10.17487/RFC7337, August

8.2.  Informative References

   [I-D.peterson-CDNI-strawman] 2014,

   [RFC8008]  Seedorf, J., Peterson, L. J., Previdi, S., van Brandenburg,
              R., and J. Hartman, K. Ma, "Content Distribution Delivery Network Interconnection
              (CDNI) Problem Statement", draft-peterson-
              CDNI-strawman-01 (work in progress), May 2011. Request Routing: Footprint and Capabilities
              Semantics", RFC 8008, DOI 10.17487/RFC8008, December 2016,

8.2.  Informative References

              Marocco, E. and V. Gurbani, "Extending the Application-
              Layer Traffic Optimization (ALTO) Protocol", draft-
              marocco-alto-next-00 (work in progress), January 2012.

              Marocco, E. and J. Seedorf, "WebSocket-based server-to-
              client notifications for the Application-Layer Traffic
              Optimization (ALTO) Protocol", draft-marocco-alto-ws-02
              (work in progress), February 2014.

              Schwan, N. and B. Roome, "ALTO Incremental Updates",
              draft-schwan-alto-incr-updates-02 (work in progress), July

              Niven-Jenkins, B., Watson, G., Bitar, N., Medved, J., and
              S. Previdi, "Use Cases for ALTO within CDNs", draft-
              jenkins-alto-cdn-use-cases-03 (work in progress), June

              Ma, K. and J. Seedorf, "CDNI Footprint & Capabilities
              Advertisement Interface", draft-ma-cdni-capabilities-06
              (work in progress), June 2014.

              Liu, H., "A Cost Perspective on Using Multiple CDNs",
              draft-liu-cdni-cost-00 (work in progress), October 2011.

              Niven-Jenkins, B., Murray, R., Caulfield, M., and K. Ma,
              "CDN Interconnection Metadata", draft-ietf-cdni-
              metadata-09 (work in progress), March 2015.

              Faucheur, F., Bertrand, G., Oprescu, I., and R.
              Peterkofsky, "CDNI Logging Interface", draft-ietf-cdni-
              logging-15 (work in progress), February 2015.

              Seedorf, J., Peterson, J., Previdi, S., Brandenburg, R.,
              and K. Ma, "CDNI Request Routing: Footprint and
              Capabilities Semantics", draft-ietf-cdni-footprint-
              capabilities-semantics-05 draft-ma-cdni-capabilities-09
              (work in progress), March 2015. April 2016.

Authors' Addresses

   Jan Seedorf
   NEC Laboratories Europe, NEC Europe Ltd.
   Kurfuersten-Anlage 36
   Heidelberg  69115
   HFT Stuttgart - Univ. of Applied Sciences
   Schellingstrasse 24
   Stuttgart  70174

   Phone: +49 (0) 6221 4342 221 +49-0711-8926-2801

   Y.R. Yang
   Tongji/Yale University
   51 Prospect Street
   New Haven Haven, CT  06511
   United States of America


   Jon Peterson
   1800 Sutter St Suite 570
   Concord, CA  94520
   United States of America