[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: hard questions: request routing




I do not think this architecture has been discarded at all. I think we
only recognized that sometimes CDN B wants to have real time control
over which surrogate is used and also does not want to provide a
list of all currently available surrogates to A. 

So I think we have to support both. 

As for your solution outlined below in step 2. you can still get
loops. However, they are easily removed by adding a path to each
request for resolution which we can do since the protocol
between RR A and RR B is defined by us (so we don't need an ugly
DNS hack ....).

Oliver


MITTIG Karel FTRD/DMI/CAE writes:
 > Hello,
 > 
 > All the messages I've seen are only dealing with hierarchical RRs peering, 
 > using delegation (CNAME, NS, URL rewriting,...) and/or forwarding, right ?
 > 
 > For me, another way could be to use a horizontal collaboration: instead of 
 > delegating the routing mechanism to another CDN, it consists in asking other
 > 
 > CDNs for metrics, while the routing decision remains to content owner CDN. 
 > In order to do this, other RRs are seen by first RR just as black-box
 > agents.
 > 
 > 
 > If I take an example with 2 DNS based RRs, A and B. CDN A has a content
 > defined
 > by www.site.com, which it wants to peer with CDN B. Because A owns the
 > content,
 > it might want to remain authoritative on it, because it's him who is
 > responsible
 > of the end-user delivery (for the Content Provider point of view).
 > 
 > My opinion to do this is to have a dedicated protocol between RRs
 > Controllers, 
 > which is distinct from the routing mechanism. 
 > 
 > This protocol might looks like below:
 > 
 > 
 > 1.Peering negotiation phase
 > 
 > RR A	<---------------------------------------------> RR B
 > 	   metrics handled (RTT, server load, hops,...)
 > 
 > RR A	<---------------------------------------------> RR B
 > 	   	TTLs accepted (minimum, maximum)
 > 
 > Eventually:
 > RR A	<---------------------------------------------> RR B
 > 	   		peered URI()
 > 
 > 
 > 2.First client request
 > Client 1 requests www.site.com
 > 	|
 > 	|
 > 	\/
 >     RR A	-----------------------------------------------> RR B	
 > 		         Metrics value (Client IP, URI)?
 > 	|
 > 	|
 > 	\/
 >      RR A response to client : www.site.com , A surrogate IP 
 >      (acting just like it was alone)
 > 
 > (CDN B URI availability could be known using announcement)
 > 
 > 
 > 3.(A)synchronous reply of B
 > RR A	<----------------------------------------------- RR B
 > 	     Best response = corresponding surrogate IP 
 > 		+ associated metrics values() 
 > 		+ TTL for this response
 > 
 > 
 > For the RR A point of view:  	
 >   - does RR B manage given URI (may be done by announcement) ?
 >   - using A metrics algorithm, is the results given by B better than A ?
 >   - if true, A answers to next clients with B surrogate IP (and A refresh
 > metrics 
 > by calling B according to TTL)
 > 
 > 
 > 4.Next requests
 > Client 1' requests www.site.com
 > 	|
 > 	|
 > 	\/
 >      RR A (decide which between A surrogate or B surrogate is better ==>
 > find B)
 > 	|
 > 	|
 > 	\/
 > RR A response to client : www.site.com , B surrogate IP 
 > 
 > 
 > Has this kind of architecture been discarded ? If so, why ?
 >