Hi, Following up on this one, it seems that both czf attributes described in this thread, the "coordinates" and the "backupList" are not documented in the official docs in http://trafficcontrol.incubator.apache.org/docs/latest/admin/traffic_ops_using.html#the-coverage-zone-file-and-asn-table
Is there a plan to update the documentation ? should I open a JIRA for it ? Thanks, Ori On Thu, Mar 30, 2017 at 8:45 PM, Jeff Elsloo <[email protected]> wrote: > Yes, that's correct. > -- > Thanks, > Jeff > > > On Thu, Mar 30, 2017 at 11:20 AM, Eric Friedrich (efriedri) > <[email protected]> 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 <[email protected]> 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) > >> <[email protected]> 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" <[email protected]> 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 <[email protected]> > 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) > >>>> <[email protected]> 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 "<[email protected]> > >>>>> Date: 2017/3/29 22:45:12 > >>>>> To: > >>>>> "[email protected]"<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) > >>>>> <[email protected]> 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" <[email protected]> > 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) > >>>>>> <[email protected]> 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 < > >>>> [email protected]> > >>>>>> 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 > >>>>>> <[email protected]> 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 > >>>>>> <[email protected]> > >>>>>>>>> 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 > >>>>>> <[email protected]> > >>>>>>>>> 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 > >>>>>> <[email protected]> > >>>>>>>>> wrote: > >>>>>>>>>>> > >>>>>>>>>>>> Yes; the feature went into 1.5.x. > >>>>>>>>>>>> -- > >>>>>>>>>>>> Thanks, > >>>>>>>>>>>> Jeff > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> On Thu, Jan 19, 2017 at 10:37 AM, Steve Malenfant < > >>>>>>>>> [email protected]> > >>>>>>>>>>>> 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) < > >>>>>>>>>>>>> [email protected]> 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 > >>>>>> <[email protected]> > >>>>>>>>>>>> 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) > >>>>>>>>>>>>>>> <[email protected]> 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) < > >>>>>>>>>>>>>> [email protected]> wrote: > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> On Jan 3, 2017, at 5:20 PM, Jeff Elsloo > >>>>>> <[email protected] > >>>>>>>>>>>> <mailto: > >>>>>>>>>>>>>> [email protected]>> 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) > >>>>>>>>>>>>>>>>> <[email protected]<mailto:[email protected]>> 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 > >>>>>> <[email protected] > >>>>>>>>>>>> <mailto: > >>>>>>>>>>>>>> [email protected]>> 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) < > >>>>>>>>>>>>>> [email protected]<mailto:[email protected]>> 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 | > [email protected] > >>> <[email protected]> > >>> > >>> > > > -- *Ori Finkelman*Qwilt | Work: +972-72-2221647 | Mobile: +972-52-3832189 | [email protected]
