North American Network Operators Group

Date Prev | Date Next | Date Index | Thread Index | Author Index | Historical

Re: Request for Comments on a topological address block for N. Calif.

  • From: Sean Doran
  • Date: Mon Sep 25 19:38:40 1995

Noel -

  Your model is one of the many things that gets solved when
doing closest-exit routing with external peers.

   A quick pair of definitions: a customer is someone paying
for transit everywhere through a particular bitpipe; an
external peer is a non-customer with which one exchanges
traffic.  For the most part these days, external peers are
not generally also customers.

   So, in the model I mentioned, we effectively have two
customers paying to exchange traffic over A, or over A and S.
The fact that one single organization is picking up the bill
is not really relevant, or necessarily even knowable.  The
point is that A is being paid for two customer connections,
or A and S are each being paid for one customer connection.
A and S are external peers.

   In your model:

| Two large carriers, P and Q, are
| interconnected at multiple sites, among them X and Y. Let's further suppose
| carrier P has two customers, C1 and C2, near X and Y respectively. 

We'll assume that P and Q are external peers with no
customer/provider relationship with respect to X and Y.

There are several answers to your questions, depending on
routing policy of both parties.  I won't do all variations,
but here are the simple cases:

P does closest-exit routing towards Q; Q takes MEDs to do
best-exit routing towards prefixes P announces, or Q uses an
advisory line to allow P to specify exit points from Q to P
on a per-prefix basis.

Since we have destination-only routing in place in the
Internet, P could dump traffic for C1 on Q at Y, and Q would
route it to X, deliver it to P, which would carry it to C1.

Trivial.  Seen it happen.  It works.

However, Q cannot do the reverse to P.  If Q dumps traffic
for C2 onto P at X, P would dump it right back to Q at X.
In short, you get a routing-loop.


Example 1:

	c3->P--->PY-QY--->Q------>QX-PX-->C1

Example 2:

		PX<-QX<---c4
	        |
		\->QX
		    |
		PX<-/

There are ways in which this can be worked around,
for example, by using outgoing routing filters to announce
certain networks to P only at C1 or at C2, or by
using differing AS paths in the announcements and the like.

I imagine that anyone caught doing this deliberately and
without explicit permission (and in practice it has been
pretty easy to catch) would quickly find themselves with no
peering at all, and would just as quickly become a pariah.

(Non peers at X and Y could aim static routes too, which is
equally ugly, and the way around this on the engineering (as
opposed to legal department) front, on top of pariah methods
and the fact that there is the return-traffic problem that
isn't always trivial to deal with, is to break level-2
connectivity between, say, N and Q at X and Y, or to use
various ugly war knobs in people's favourite routers.)

If Q voluntarily allows P or N to do this type of long-haul
routing through Q's backbone (AS healing and the like), then
imho Q is pretty stupid, and not just for the reasons you
mention.

Also for some of the reasons you touch on, I think that
having a customer relationship with anyone at X or Y would
also be a silly thing for Q to do.

	Sean.