It's a BGP design point for a router to only announce the route(s) that it is actively *using*. In your comment above,
a. If a router has a route it believes is "best", why isn't it using it?
I believe this is why it is called a "policy routing," to force sub-optimal behavior compared to the normal selection algorithm of the routing protocol. You may have a 'best' route to a destination you use internally, but you don't advertise it outside of your AS because of policy reasons. The standard example is not announcing routes heard from peers to other peers. This keeps all of MCI's traffic from being routed through a small customer in the Northwest. You may also have a 'lessor' path, which you would advertise, except its not the 'best' route according to your policy, i.e. a multi-homed customer with unequal cost lines. Policy: Shortest Path X X A X D X D C X D C +----+ +----+ -----| A |-----| B |----- X A B / +----+ +----+ / | \ | X | \ | \ | \ | \ +----+ +----+ ----| D |-----| C |----- X A C +----+ +----+ X X A X A X D X A B Policy: Fastest/Biggest Path between X & A(T1) & D(T3) X D X D A X X D C X C D +----+ +----+ T1-----| A |-----| B |----- X D A B / +----+ +----+ / | \ | X | \ | \ | \ | \ +----+ +----+ T3-----| D |-----| C |----- X D C +----+ +----+ X X D X A X D A X D A B Policy: Shortest Path/Do Not Announce Peer-to-Peer X X A X D +----+ +----+ -----| A |-----| B |----- X A / +----+ +----+ / | \ | X | \ | \ | \ | \ +----+ +----+ -----| D |-----| C |----- X A +----+ +----+ X X A X A X D Policy: Fastest/Biggest Path between X & A & D/Do Not Announce Peer-to-Peer X D X +----+ +----+ T1-----| A |-----| B |----- No Route / +----+ +----+ / | \ | X | \ | \ | \ | \ +----+ +----+ T3-----| D |-----| C |----- X D +----+ +----+ X X D X A
b. Regardless of the answer, the router should announce the route it is using for its own forwarding. To do otherwise would be to lie about the path which traffic will take to the advertised destination.
If policy forbids it from announcing the route it is using, so be it. (Or, if that's not acceptable change the policy.)
Policy is a business decision, not a technical decision. You can be unfair to C by congesting the line XA. Or you can be unfair to B by announcing a longer path XDAB, or no path. Who do you care more about B or C? All animals are equal, but some animals are more equal than others. Yes, you might be able to play enough games with this simple example, to force things to work 'right.' But the mesh is being extended all the time.
By the way, this general fact about BGP (external announcements are governed by internal route selection) also means that for Randy to always announce the same route to his peer, he would have to change his own, internal routing policy to do cold-potato routing to one of the two candidate paths. This doesn't seem like a reasonable thing for a peer to demand he do.
In any business negotiation, either side can demand whatever they want. But the other side doesn't have to give it to them. This really isn't an operational issue, other than the engineers need to keep their managers informed of the consequences of managerial decisions. -- Sean Donelan, Data Research Associates, Inc, St. Louis, MO Affiliation given for identification not representation