Yes, that's correct.
--
Thanks,
Jeff

On Thu, Mar 30, 2017 at 11:20 AM, Eric Friedrich (efriedri)
<efrie...@cisco.com> wrote:
> Thanks Jeff-
>   Could I think of it as the following? Echoing back to be sure I 
> understand...
>
>  If there is a lat/long for a cache group in the CZF file, any client hit to 
> that CG should use the CZF lat/long as it client’s lat/long instead of using 
> geolocation.
>
> For the purposes of finding closest cache group, the client’s location (from 
> CZF as above or from Geolocation provider) will be compared against the 
> location of the cache’s as configuration in Traffic Op’s CG record?
>
> —Eric
>
>
>> On Mar 30, 2017, at 1:07 PM, Jeff Elsloo <jeff.els...@gmail.com> wrote:
>>
>> It could now be considered the "average" of the location of the
>> clients within that section of the CZF, however, it should be noted
>> that the addition of the geo coordinates to the CZF is relatively new.
>> Previously we never had the ability to specify lat/long on those
>> cachegroups, and we solely relied on those specified in edgeLocations,
>> meaning that the matches had to be 1:1. Adding the coordinates allowed
>> us to cover edge cases and miss scenarios and stick to the CZF
>> whenever possible. Previously when we had no coordinates, and we had a
>> hit in the CZF but not corresponding hit within the edgeLocations
>> (health, assignments, etc), we would fall back to the Geolocation
>> provider.
>> --
>> Thanks,
>> Jeff
>>
>>
>> On Thu, Mar 30, 2017 at 5:29 AM, John Shen (weifensh)
>> <weife...@cisco.com> wrote:
>>> Thanks Jeff and Oren for the discussion. I agree now that lat/long from CZF 
>>> is the “average” location of clients, and lat/long from Ops is the location 
>>> of a certain Cache Group. So it appears to be reasonable to use them as 
>>> source and dest to calculate the distance.
>>>
>>> Thanks,
>>> John
>>>
>>>
>>> On 30/03/2017, 6:55 PM, "Oren Shemesh" <or...@qwilt.com> wrote:
>>>
>>>    Jeff, having read this conversation more than once, I believe there is a
>>>    misunderstanding regarding the ability to provide coordinates for cache
>>>    groups both in the CZF and in the TO DB.
>>>
>>>    Here is what I believe is a description which may help understanding the
>>>    current behaviour:
>>>
>>>    The coordinates specified in the CZF for a cache group are not supposed 
>>> to
>>>    be the exactly same as the coordinates in the TO DB for the same cache
>>>    group.
>>>    This is because they do not represent the location of the caches of the
>>>    group.
>>>    They represent the (average) location of clients found in the subnets
>>>    specified for this cache group.
>>>
>>>    This, I believe, explains both the behaviour of the code (Why the
>>>    coordinates from the CZF are used for the source, but the coordinates 
>>> from
>>>    the TO DB are used for the various candidate cache groups), and the fact
>>>    that there is a 'duplication'.
>>>
>>>    Is this description true ?
>>>
>>>
>>>
>>>    On Wed, Mar 29, 2017 at 7:02 PM, Jeff Elsloo <els...@apache.org> wrote:
>>>
>>>> The cachegroup settings in the Traffic Ops GUI end up in the
>>>> `edgeLocations` section of the CRConfig. This is the source of truth
>>>> for where caches are deployed, logically or physically. We do not
>>>> provide a means to generate a CZF in Traffic Ops, so it's up to the
>>>> end user to craft one to match what is in Traffic Ops.
>>>>
>>>> There are several cases that need to be accounted for where a hit in
>>>> the CZF does match what's in `edgeLocations`, but cannot be served
>>>> there due to cache health, delivery service health, or delivery
>>>> service assignments. The other edge case is a hit where no
>>>> `edgeLocation` exists, which again, must be accounted for. Presumably
>>>> we have higher fidelity data in our CZF than we would in our
>>>> Geolocation provider and we should use it whenever possible.
>>>>
>>>> Think about this: what if you use the same CZF for two configured
>>>> CDNs, but one of the two CDNs only has caches deployed to 50% of the
>>>> cache groups defined in the CZF. Would we want to use the Geolocation
>>>> provider in the event that our source address matches a cachegroup
>>>> that does not have any assigned caches? We would ideally have as much
>>>> granularity as possible in the CZF, then use that to inform the
>>>> decision about which cachegroup should service the request instead of
>>>> falling back to a lower fidelity datasource. This is especially true
>>>> in the case of RFC 1918 addresses that might appear in one's CZF.
>>>>
>>>> Thanks,
>>>> Jeff
>>>>
>>>>
>>>> On Wed, Mar 29, 2017 at 9:12 AM, John Shen (weifensh)
>>>> <weife...@cisco.com> wrote:
>>>>> Hi Jeff,
>>>>>
>>>>> Thank you for the detail. I am wondering why there are two sets of
>>>> lat/lang,
>>>>> i.e. one in CZF, the other is in Ops GUI Cache Group setting. To
>>>> calculate
>>>>> the closest CG when matched CG in CZF is not available, the source
>>>> lat/long
>>>>> is from mathced CZF, and the dest lat/long is from Ops setting, which
>>>> doesnt
>>>>> seem to be consistent. Is there any reason why TR has this behavior?
>>>>>
>>>>> Since there are two sets of lat/long in TR, can we just use the lat/long
>>>> all
>>>>> from Ops CG settings to get the closest, and do not care about the values
>>>>> set in CZF? At least this will avoid inconsistent config for lat/long.
>>>>>
>>>>> Thanks,
>>>>> John
>>>>>
>>>>> ---Original---
>>>>> From: "Jeff Elsloo "<els...@apache.org>
>>>>> Date: 2017/3/29 22:45:12
>>>>> To:
>>>>> "dev@trafficcontrol.incubator.apache.org"<dev@trafficcontrol.incubator.
>>>> apache.org>;
>>>>> Subject: Re: Backup Cache Group Selection
>>>>>
>>>>> Yes, it's expected behavior. What you're describing sounds like a
>>>>> cachegroup in the CZF without any corresponding configuration in
>>>>> Traffic Ops, or a cachegroup with configuration in Traffic Ops, but
>>>>> with no available caches (DS assignments, health, etc).
>>>>>
>>>>> Presuming we have configured geolocation coordinates within the CZF,
>>>>> we know the lat/long of the cachegroup within the CZF that contains
>>>>> the source address. We can then order our list of cachegroups by
>>>>> lat/long, then select the "next best" cache group by distance and
>>>>> availability. That will be the actual cachegroup to serve the request;
>>>>> this prevents a miss on the CZF that would normally be routed to the
>>>>> Geolocation service selected for the DS.
>>>>>
>>>>> We do have a slight gap around logging, and maybe that's part of the
>>>>> question. What we see in the log is the selected lat/long, not the
>>>>> source lat/long of the hit, so we can't easily tell when we're in this
>>>>> case by simply looking at logs. This could be an area of improvement,
>>>>> however, we'll need to be careful to not conflate the logs with
>>>>> unnecessary information. In most cases the hit is the selected
>>>>> cachegroup, so we need to be careful to not just add "source" and
>>>>> "actual" coordinates to the log because it'll be identical in most CZF
>>>>> hit cases.
>>>>>
>>>>> Thanks,
>>>>> Thanks,
>>>>> Jeff
>>>>>
>>>>>
>>>>> On Wed, Mar 29, 2017 at 7:02 AM, John Shen (weifensh)
>>>>> <weife...@cisco.com> wrote:
>>>>>> Hi Jeff,
>>>>>>
>>>>>> I have just tried the getClosestCacheLocation() logic. It appears the
>>>> CZF
>>>>>> matched lat/long does come from CZF, but the lat/long of the “closest”
>>>> Cache
>>>>>> Groups is from the configuration by Ops. This means to calculate the
>>>>>> distance from the matched CG and “closest” CG, the source lat/long is
>>>> from
>>>>>> CZF, but the dest lat/long is not from CZF but from CG settings on Ops.
>>>> Is
>>>>>> this expected behavior?
>>>>>>
>>>>>> Thanks,
>>>>>> John
>>>>>>
>>>>>>
>>>>>> On 27/01/2017, 10:51 PM, "Jeff Elsloo" <jeff.els...@gmail.com> wrote:
>>>>>>
>>>>>>    Steve: I don't think the patch is required, however, as Eric found,
>>>>>>    without the patch there could be some gaps depending on the
>>>> scenario.
>>>>>>    That specific scenario revolved around the "next best cache group"
>>>> not
>>>>>>    having a DS assigned, or a healthy cache with the DS assigned. In
>>>> that
>>>>>>    case, despite the hits, you would still end up falling through to
>>>> the
>>>>>>    geolocation provider. The patch addresses that.
>>>>>>
>>>>>>    Eric: The rloc field is set via the Geolocation associated with the
>>>>>>    CacheLocation, which ultimately comes from the edgeLocations section
>>>>>>    of the CRConfig. When a CZF lookup is performed inside TR, a hit
>>>>>>    returns a CacheLocation. When caches aren't available within that
>>>>>>    CacheLocation, getClosestCacheLocation() is called, and that's why
>>>> you
>>>>>>    see the lat/long of the "next best cache group" instead of the
>>>> actual
>>>>>>    hit's lat/long.
>>>>>>
>>>>>>    If we want to have granularity in this situation, we might need to
>>>> 1)
>>>>>>    create a new RestultType, such as ResultType.CZ_NEXT (or something),
>>>>>>    and/or 2) massage the log format such that we either have a the
>>>>>>    original lat/long, and new lat/long in the rloc field, or create a
>>>> new
>>>>>>    field to save one or the other, such that we log both lat/longs.
>>>>>>
>>>>>>    Thoughts? Whatever we decide should go into TC-90 so we can apply
>>>> the
>>>>>>    proposed patch and improve the logging.
>>>>>>    --
>>>>>>    Thanks,
>>>>>>    Jeff
>>>>>>
>>>>>>
>>>>>>    On Fri, Jan 27, 2017 at 7:14 AM, Eric Friedrich (efriedri)
>>>>>>    <efrie...@cisco.com> wrote:
>>>>>>> The rloc field usually indicates the Geolocation IP of the client
>>>>>> (short for request location)
>>>>>>>
>>>>>>> But here it looks like rloc is reflecting the location of the CG
>>>> it
>>>>>> ultimately redirected to (response location?).
>>>>>>>
>>>>>>> I would have expected the rloc field to either
>>>>>>>   1) be blank (because we never did a lookup from geoprovider)
>>>>>>>        or
>>>>>>>   2)  to contain the coordinates of the cache group the CZF hit
>>>> on
>>>>>> (in this case us-ga-macon at 32.7261, -83.6547”)
>>>>>>>
>>>>>>> —Eric
>>>>>>>
>>>>>>>> On Jan 27, 2017, at 8:28 AM, Steve Malenfant <
>>>> smalenf...@gmail.com>
>>>>>> wrote:
>>>>>>>>
>>>>>>>> Jeff,
>>>>>>>>
>>>>>>>> CZF properly installed: yes
>>>>>>>> Network address or not: same behavior
>>>>>>>>
>>>>>>>> But you nailed the API one. There is no cache assigned to
>>>>>> us-ga-macon,
>>>>>>>> which is exactly what I'm testing.
>>>>>>>>
>>>>>>>> I added cache groups for my testing in the lab which I assigned a
>>>>>> few
>>>>>>>> caches to them :
>>>>>>>>
>>>>>>>> - us-ga-atlanta 34.0362 -84.3207
>>>>>>>> - us-ok-oklahomacity 35.4777 -97.5545
>>>>>>>> - us-va-nova 38.7922 -77.2136
>>>>>>>> - us-ca-sandiego 32.7205 -117.0838
>>>>>>>>
>>>>>>>> API :
>>>>>>>>
>>>>>> {"locationByGeo":{"city":"Macon","countryCode":"US","
>>>> latitude":"32.7288","postalCode":"31216","countryName":"United
>>>>>>>> States","longitude":"-83.6865"},"locationByFederation":"not
>>>>>>>> found","requestIp":"24.252.192.1","locationByCoverageZone":"not
>>>>>> found"}
>>>>>>>>
>>>>>>>> Using the X-MM-Client-IP it returned the proper cache based on
>>>> CZ,
>>>>>> it
>>>>>>>> correctly sent the request to the cache in us-ga-atlanta :
>>>>>>>> 1485522786.423 qtype=HTTP chi=24.252.192.1 url="
>>>>>>>> http://crs.cox-col-jitp2.cdn1.coxlab.net/"; cqhm=GET
>>>> cqhv=HTTP/1.1
>>>>>> rtype=CZ
>>>>>>>> rloc="34.03,-84.32" rdtl=- rerr="-" rgb="-" pssc=302 ttms=0.260
>>>>>> rurl="
>>>>>>>> http://cdn1cdedge0007.cox-col-jitp2.cdn1.coxlab.net/"; rh="-"
>>>>>>>>
>>>>>>>> I then changed the coordinate to match the us-ca-sandiego group
>>>> in
>>>>>> the CZF
>>>>>>>> and now the request is sent to the us-ca-sandiego caches :
>>>>>>>> 1485523546.345 qtype=HTTP chi=24.252.192.1 url="
>>>>>>>> http://crs.cox-col-jitp2.cdn1.coxlab.net/"; cqhm=GET
>>>> cqhv=HTTP/1.1
>>>>>> rtype=CZ
>>>>>>>> rloc="32.72,-117.08" rdtl=- rerr="-" rgb="-" pssc=302 ttms=0.206
>>>>>> rurl="
>>>>>>>> http://cdn1cdedge0001.cox-col-jitp2.cdn1.coxlab.net/"; rh="-
>>>>>>>>
>>>>>>>> I'm using 1.6.1 + patch discussed in this email. Not sure if
>>>> those
>>>>>> are
>>>>>>>> necessary but I'll need to try on unpatched version.
>>>>>>>>
>>>>>>>> Do we want to fix API to reflect CZF?
>>>>>>>>
>>>>>>>> Thanks for your help.
>>>>>>>>
>>>>>>>> Steve
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Jan 26, 2017 at 4:47 PM, Jeff Elsloo
>>>>>> <jeff.els...@gmail.com> wrote:
>>>>>>>>
>>>>>>>>> Dave just let me know that in this case you don't have any
>>>> caches
>>>>>>>>> assigned in us-ga-macon. I'm not sure how the API behaves at
>>>> that
>>>>>>>>> point – it likely won't follow the same "next best cache group"
>>>>>> logic,
>>>>>>>>> as it was designed as a simple lookup tool.
>>>>>>>>>
>>>>>>>>> Can you try simulating a request through Traffic Router directly
>>>>>> using
>>>>>>>>> the X-MM-Client-IP header, or fakeClientIpAddress query
>>>> parameter
>>>>>>>>> using the example IP of 24.252.192.0? After you do so, check the
>>>>>>>>> coordinates in the log entry and see if the result is a CZ hit.
>>>>>>>>> --
>>>>>>>>> Thanks,
>>>>>>>>> Jeff
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Thu, Jan 26, 2017 at 2:03 PM, Jeff Elsloo
>>>>>> <jeff.els...@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>> Are you 100% sure that the Traffic Router has loaded the
>>>> updated
>>>>>> CZF?
>>>>>>>>>> If so, what happens when you use an IP within the /20 instead
>>>> of
>>>>>> the
>>>>>>>>>> network address (.0)? I tried using a network address of a /22
>>>> on
>>>>>> a
>>>>>>>>>> 1.8 TR and it hit the CZF as expected. Ultimately what you're
>>>>>> seeing
>>>>>>>>>> is a CZF miss, unrelated to the geo coordinates.
>>>>>>>>>>
>>>>>>>>>> The underlying feature with the coordinates is to select the
>>>> next
>>>>>> best
>>>>>>>>>> cache group by proximity where healthy caches have a given
>>>>>> delivery
>>>>>>>>>> service assigned. In order to test that, you would need to
>>>> have a
>>>>>> CZF
>>>>>>>>>> hit in a cache group which doesn't have that particular
>>>> delivery
>>>>>>>>>> service assigned to any caches, or have all caches within that
>>>>>> cache
>>>>>>>>>> group with that delivery service in an unhealthy state.
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> --
>>>>>>>>>> Thanks,
>>>>>>>>>> Jeff
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Wed, Jan 25, 2017 at 1:33 PM, Steve Malenfant
>>>>>> <smalenf...@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>>> Jeff,
>>>>>>>>>>>
>>>>>>>>>>> I've tried this coverage zone file coordinate overwrite... I
>>>>>> might be
>>>>>>>>>>> missing something.
>>>>>>>>>>>
>>>>>>>>>>> I defined the following :
>>>>>>>>>>>
>>>>>>>>>>>       "us-ga-macon": {
>>>>>>>>>>>>           "coordinates": {
>>>>>>>>>>>>               "latitude": "32.7261",
>>>>>>>>>>>>               "longitude": "-83.6547"
>>>>>>>>>>>>           },
>>>>>>>>>>>>           "network": [
>>>>>>>>>>>>               "24.252.192.0/20",
>>>>>>>>>>>>               "68.1.20.0/22",
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Then issued the following query :
>>>>>>>>>>>
>>>>>>>>>>>> curl http://traffic_router:3333/crs/stats/ip/24.252.192.0
>>>>>>>>>>>>
>>>>>>>>>>>> {"locationByGeo":{"city":"Macon","countryCode":"US","
>>>>>>>>> latitude":"32.7288","postalCode":"31216","countryName":"United
>>>>>>>>>>>> States","longitude":"-83.6865"},"locationByFederation":"not
>>>>>>>>>>>> found","requestIp":"24.252.192.0","
>>>> locationByCoverageZone":"not
>>>>>>>>> found"}
>>>>>>>>>>>>
>>>>>>>>>>> I believe I'm expecting "locationByCoverageZone" to find
>>>>>> something...
>>>>>>>>>>>
>>>>>>>>>>> I tried on 1.6.0 and 1.6.1 (patched with the pastebin above
>>>>>> which I
>>>>>>>>> wasn't
>>>>>>>>>>> sure I was suppose to do).
>>>>>>>>>>>
>>>>>>>>>>> Would you mind giving me some light on this?
>>>>>>>>>>>
>>>>>>>>>>> Thanks,
>>>>>>>>>>>
>>>>>>>>>>> Steve
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Mon, Jan 23, 2017 at 3:05 PM, Jeff Elsloo
>>>>>> <jeff.els...@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Yes; the feature went into 1.5.x.
>>>>>>>>>>>> --
>>>>>>>>>>>> Thanks,
>>>>>>>>>>>> Jeff
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Thu, Jan 19, 2017 at 10:37 AM, Steve Malenfant <
>>>>>>>>> smalenf...@gmail.com>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>> I didn't know about this which is good information. Does
>>>> that
>>>>>> work on
>>>>>>>>>>>>> Traffic Router 1.6?
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Mon, Jan 9, 2017 at 12:44 PM, Eric Friedrich (efriedri) <
>>>>>>>>>>>>> efrie...@cisco.com> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Jeff and I had a quick Slack convo, so I’ll add a followup
>>>>>> summary
>>>>>>>>> here
>>>>>>>>>>>> in
>>>>>>>>>>>>>> case anyone else is interested.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Cache Group location (lat/long) is configured in Traffic
>>>> Ops
>>>>>> today
>>>>>>>>> (and
>>>>>>>>>>>> is
>>>>>>>>>>>>>> used for computing distance from Maxmind Geolocation).
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> You can also configure the location (lat/long) for a Cache
>>>>>> Group in
>>>>>>>>> the
>>>>>>>>>>>>>> CoverageZone file (example below).
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> When this location is configured (and Jeff’s suggested
>>>> logic
>>>>>> fix
>>>>>>>>> from
>>>>>>>>>>>>>> below is applied) and all caches in the mapped cache group
>>>>>> are
>>>>>>>>>>>> unavailable,
>>>>>>>>>>>>>> TR will send a client request to the cache group that is
>>>>>> closest to
>>>>>>>>> the
>>>>>>>>>>>>>> original mapped group.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Example CZF w/ cache location
>>>>>>>>>>>>>> -----
>>>>>>>>>>>>>> "coverageZones": {
>>>>>>>>>>>>>>   “edge-cg-1": {
>>>>>>>>>>>>>>     "network6": [
>>>>>>>>>>>>>>       ...
>>>>>>>>>>>>>>     ],
>>>>>>>>>>>>>>     "network": [
>>>>>>>>>>>>>>       ...
>>>>>>>>>>>>>>     ],
>>>>>>>>>>>>>>     "coordinates": {
>>>>>>>>>>>>>>       "longitude": “-75.3342",
>>>>>>>>>>>>>>       "latitude": “42.555"
>>>>>>>>>>>>>>     }
>>>>>>>>>>>>>>   },
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> —Eric
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Jan 5, 2017, at 12:06 PM, Jeff Elsloo
>>>>>> <jeff.els...@gmail.com>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> If we applied the proposed change, given your scenario we
>>>>>> should
>>>>>>>>> fall
>>>>>>>>>>>>>>> through to the return statement that calls
>>>>>>>>> getClosestCacheLocation().
>>>>>>>>>>>>>>> That method will order all cache groups based on their
>>>>>> lat/long
>>>>>>>>> and
>>>>>>>>>>>>>>> the lat/long of the cache group we hit on in the CZF. Once
>>>>>> the
>>>>>>>>> list is
>>>>>>>>>>>>>>> ordered, we iterate through the list until we find a cache
>>>>>> group
>>>>>>>>> that
>>>>>>>>>>>>>>> has available caches for that DS.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> BTW, the stuff on line 536 is likely to produce the exact
>>>>>> same
>>>>>>>>> result
>>>>>>>>>>>>>>> as the check that precedes it. networkNode.getLoc() will
>>>>>> return
>>>>>>>>> the
>>>>>>>>>>>>>>> string name of the cache group, so when we find the
>>>>>>>>> CacheLocation, it
>>>>>>>>>>>>>>> will be the same as what we had just checked. We could
>>>>>> probably
>>>>>>>>> get
>>>>>>>>>>>>>>> away with removing that part of the method as it's
>>>>>> redundant.
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>> Jeff
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Wed, Jan 4, 2017 at 11:54 AM, Eric Friedrich (efriedri)
>>>>>>>>>>>>>>> <efrie...@cisco.com> wrote:
>>>>>>>>>>>>>>>> Where would TR look outside the assigned cache group to
>>>>>> find the
>>>>>>>>> next
>>>>>>>>>>>>>> closest cache group?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Jan 4, 2017, at 11:25 AM, Eric Friedrich (efriedri) <
>>>>>>>>>>>>>> efrie...@cisco.com> wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Jan 3, 2017, at 5:20 PM, Jeff Elsloo
>>>>>> <jeff.els...@gmail.com
>>>>>>>>>>>> <mailto:
>>>>>>>>>>>>>> jeff.els...@gmail.com>> wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Hey Eric,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> It sounds like the use case you're after is an RFC 1918
>>>>>> client
>>>>>>>>>>>>>>>>> associated with a cache group whose caches are all
>>>>>> unavailable
>>>>>>>>> for
>>>>>>>>>>>> one
>>>>>>>>>>>>>>>>> reason or another. Is that correct?
>>>>>>>>>>>>>>>>> Yes, exactly.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> I looked at the code a bit, and I think that we can
>>>> make a
>>>>>> minor
>>>>>>>>>>>>>>>>> change to achieve the behavior you're looking for as
>>>> long
>>>>>> as
>>>>>>>>> you're
>>>>>>>>>>>>>>>>> able to put your RFC 1918 ranges in the CZF.
>>>>>>>>>>>>>>>>> Yes, we would want those ranges in the CZF. I can’t
>>>> think
>>>>>> of any
>>>>>>>>>>>> other
>>>>>>>>>>>>>> place they would go.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> There's a small logic gap in the existing algorithm
>>>> around
>>>>>> cache
>>>>>>>>>>>>>>>>> location selection and I think if we fix that (two line
>>>>>>>>> change), we
>>>>>>>>>>>>>>>>> should be better off all around. I think the only time
>>>>>> we'd ever
>>>>>>>>>>>> want
>>>>>>>>>>>>>>>>> to go to the geolocation provider is in the event of a
>>>>>> miss on
>>>>>>>>> the
>>>>>>>>>>>>>>>>> CZF, so as long as we have a hit there, we should find
>>>> the
>>>>>> cache
>>>>>>>>>>>> group
>>>>>>>>>>>>>>>>> closest to that hit location that has available caches.
>>>>>> This
>>>>>>>>> would
>>>>>>>>>>>>>>>>> automatically provide the "backup" cache group concept,
>>>>>> and has
>>>>>>>>> the
>>>>>>>>>>>>>>>>> added benefit of doing this selection dynamically based
>>>> on
>>>>>> the
>>>>>>>>> state
>>>>>>>>>>>>>>>>> of the CDN.
>>>>>>>>>>>>>>>>> Wow, thanks for picking up on this solution. Sounds
>>>> like a
>>>>>>>>> strong
>>>>>>>>>>>>>> possibility. I like that it can extend dynamically.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> See this to get an idea of what I mean:
>>>>>>>>> http://apaste.info/u3PQo
>>>>>>>>>>>>>>>>> https://github.com/apache/
>>>> incubator-trafficcontrol/blob/
>>>>>>>>>>>>>> 249bd7504eeb7cc43402126f3719017e2475ad33/traffic_router/
>>>>>>>>>>>>>> core/src/main/java/com/comcast/cdn/traffic_control/
>>>>>>>>>>>>>> traffic_router/core/router/TrafficRouter.java#L536
>>>>>>>>>>>>>>>>> Does this line set cacheLocation to the closest cache
>>>>>> group with
>>>>>>>>>>>>>> active caches on that DS?
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> What does networkNode.getLoc() actually return?
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> —Eric
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Obviously we'd need to test this to ensure we don't
>>>> break
>>>>>> other
>>>>>>>>>>>>>> functionality.
>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>>>> Jeff
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Tue, Jan 3, 2017 at 10:07 AM, Eric Friedrich
>>>> (efriedri)
>>>>>>>>>>>>>>>>> <efrie...@cisco.com<mailto:efrie...@cisco.com>> wrote:
>>>>>>>>>>>>>>>>> If all caches in the primary cache group are
>>>> unavailable,
>>>>>> our
>>>>>>>>> goal
>>>>>>>>>>>> is
>>>>>>>>>>>>>> to provide a backup routing policy for RFC1918 clients.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> When client IP is an public Internet IP, the current
>>>>>> backup
>>>>>>>>> policy
>>>>>>>>>>>> is
>>>>>>>>>>>>>> to assign the client to the geographically closest cache
>>>>>> (Distance =
>>>>>>>>>>>>>> MaxMind Geo Lat/Long - configured CG lat/long).
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> When client IP is an RFC1918 IP, the client would not
>>>> have
>>>>>> a
>>>>>>>>> maxmind
>>>>>>>>>>>>>> geo-loc, so would fall back to the DS geo-miss lat long.
>>>> We’d
>>>>>> prefer
>>>>>>>>>>>> some
>>>>>>>>>>>>>> more granular control over where these clients are routed
>>>> to,
>>>>>> rather
>>>>>>>>>>>> than a
>>>>>>>>>>>>>> per-DS setting.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> So with an RFC1918 client, the lookup process would be
>>>>>> (step 3
>>>>>>>>> is
>>>>>>>>>>>> only
>>>>>>>>>>>>>> addition)
>>>>>>>>>>>>>>>>> 1) Check CZF for a subnet match (and find a match for
>>>>>> existing
>>>>>>>>> cache
>>>>>>>>>>>>>> group). Assign client to CG
>>>>>>>>>>>>>>>>> 2) Check CG for available (online and associated w/ DS)
>>>>>>>>> servers. In
>>>>>>>>>>>>>> this particular case, assume CG has no servers available to
>>>>>> route
>>>>>>>>> the
>>>>>>>>>>>>>> client to
>>>>>>>>>>>>>>>>> 3) Walk the CZF's list of backup CGs and perform the
>>>> check
>>>>>> from
>>>>>>>>> #2
>>>>>>>>>>>> for
>>>>>>>>>>>>>> each CG. Use first server that is found
>>>>>>>>>>>>>>>>> 4) Assuming no server is found in #3, perform
>>>> geo-location
>>>>>> and
>>>>>>>>> find
>>>>>>>>>>>>>> closest cache group. Use a server from the closest CG if
>>>> one
>>>>>> is
>>>>>>>>> found
>>>>>>>>>>>>>>>>> 4a) If geo-location returns null, use the DS’ default
>>>>>> geo-miss
>>>>>>>>>>>>>> location as the client location.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> —Eric
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Dec 26, 2016, at 10:01 AM, Jan van Doorn
>>>>>> <j...@knutsel.com
>>>>>>>>>>>> <mailto:
>>>>>>>>>>>>>> j...@knutsel.com>> wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Hi Eric,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> How does the backup list relate to the
>>>>>> RFC1918-is-not-in-geo
>>>>>>>>>>>> problem?
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> To get to a cachegroup you need to get a match in the
>>>>>> coverage
>>>>>>>>>>>> zone, I
>>>>>>>>>>>>>> would think?
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Rgds,
>>>>>>>>>>>>>>>>> JvD
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Dec 22, 2016, at 12:28, Eric Friedrich (efriedri) <
>>>>>>>>>>>>>> efrie...@cisco.com<mailto:efrie...@cisco.com>> wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> The current behavior of cache group selection works as
>>>>>> follows
>>>>>>>>>>>>>>>>> 1) Look for a subnet match in CZF
>>>>>>>>>>>>>>>>> 2) Use MaxMind/Neustar for GeoLocation based on client
>>>> IP.
>>>>>>>>> Choose
>>>>>>>>>>>>>> closest cache group.
>>>>>>>>>>>>>>>>> 3) Use Delivery Service Geo-Miss Lat/Long. Choose
>>>> closest
>>>>>> cache
>>>>>>>>>>>> group.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> For deployments where IP addressing is primarily private
>>>>>> (say
>>>>>>>>>>>> RFC-1918
>>>>>>>>>>>>>> addresses), client IP Geo Location (#2) is not useful.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> We are considering adding another field to the Coverage
>>>>>> Zone
>>>>>>>>> File
>>>>>>>>>>>> that
>>>>>>>>>>>>>> configures an ordered list of backup cache groups to try if
>>>>>> the
>>>>>>>>> primary
>>>>>>>>>>>>>> cache group does not have any available caches.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Example:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> "coverageZones": {
>>>>>>>>>>>>>>>>> "cache-group-01": {
>>>>>>>>>>>>>>>>> “backupList”: [“cache-group-02”, “cache-group-03”],
>>>>>>>>>>>>>>>>> "network6": [
>>>>>>>>>>>>>>>>> "1234:5678::\/64”,
>>>>>>>>>>>>>>>>> "1234:5679::\/64"],
>>>>>>>>>>>>>>>>> "network": [
>>>>>>>>>>>>>>>>> "192.168.8.0\/24",
>>>>>>>>>>>>>>>>> "192.168.9.0\/24”]
>>>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> This configuration could also be part of the per-cache
>>>>>> group
>>>>>>>>>>>>>> configuration, but that would give less control over which
>>>>>> clients
>>>>>>>>>>>>>> preferred which cache groups. For example, you may have
>>>> cache
>>>>>>>>> groups in
>>>>>>>>>>>> LA,
>>>>>>>>>>>>>> Chicago and NY. If the Chicago Cache group fails, you may
>>>>>> want some
>>>>>>>>> of
>>>>>>>>>>>> the
>>>>>>>>>>>>>> Chicago clients to go to LA and some to go to NY. If the
>>>>>> backup CG
>>>>>>>>>>>>>> configuration is per-cg, we would not be able to control
>>>>>> where
>>>>>>>>> clients
>>>>>>>>>>>> are
>>>>>>>>>>>>>> allocated.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Looking for opinions and comments on the above proposal,
>>>>>> this is
>>>>>>>>>>>> still
>>>>>>>>>>>>>> in idea stage.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Thanks All!
>>>>>>>>>>>>>>>>> Eric
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>
>>>
>>>
>>>
>>>    --
>>>
>>>    *Oren Shemesh*
>>>    Qwilt | Work: +972-72-2221637| Mobile: +972-50-2281168 | or...@qwilt.com
>>>    <y...@qwilt.com>
>>>
>>>
>

Reply via email to