M / \ A B * Peer link | * | Customer link RRRRRRR Point1 * * Point2 VVVVVVV
How is R supposed to recognize some likely disjoint set of of what A announces to R as coming from M through B so as to recognize it as a customer prefix? Note that the paths from M to R through A and B can be longer than depicted and that M's address space may not be taken from R's, A's, or B's.
R could request A to provide it with a list of ASes for indirect customers behind A. (R probably already does that.) That would be sufficient information for R's router at the R/B interconnection to tag M's routes as customer routes. Essentially, when R's router at the R/B interconnection receives a route with path "B M", it could use the fact "M is an indirect customer" rather than "B is a non-customer" to tag the route appropriately. Alternatively, R could make the decision using prefixes rather than AS numbers, and could make it at the R/V[Point2] outbound announcement point rather than at the B/R inbound announcement point. --apb (Alan Barrett)