Hi again, I understand now that the "backupList" feature does not exist yet. What is the status of this feature ? is it planned ?
Thanks, Ori On Mon, May 8, 2017 at 4:18 PM, Ori Finkelman <[email protected]> wrote: > 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 <072-222-1637>| Mobile: >> +972-50-2281168 <050-228-1168> | [email protected] >> >>> <[email protected]> >> >>> >> >>> >> > >> > > > > -- > > *Ori Finkelman*Qwilt | Work: +972-72-2221647 <072-222-1647> | Mobile: > +972-52-3832189 <052-383-2189> | [email protected] > -- *Ori Finkelman*Qwilt | Work: +972-72-2221647 | Mobile: +972-52-3832189 | [email protected]
