BGP policies and packet forwarding

This is a problem which is perhaps solvable via BGP4 or even otherwise...

I have a network of cisco routers (csc3), running cisco IGRP. I carry
the end-site networks in the IGP. The border gateway to the ENSS runs
igrp as well as BGP.

         a----------+-A----------C-+-----ENSS ----- NSFnet
         b---------/ | | |
                      > > >
         c----------+-B----------D |
         d---------/ \------ x -------- y

In the above picture, I denote my backbone routers as capital A B C D
and I am using lowercase 'a b c d' for the end sites.

All the backbone routers run IGRP and carry full end site routing
information.

The problem I am having is in routing for/to 'y'

a, c, x, y all are belonging to the same company and 'x' desires
that traffic from 'a' and 'c' to 'y' goes over the x-y private link.

However, traffic from the non-company sites (b & d) should flow via
the ENSS and then to 'y'.

How do I tell the routers 'C' and 'D' to send traffic from 'a' and
'c' via the private link x-y and all other traffic via the ENSS ?
If a packet arrives at D destined for 'y', then I don't see any
way of *forwarding* it to 'x' or 'C' based on the *source* address.

I was reading about 'encapsulation' in the 'bgp-application' draft,
but has that been implemented yet ?

Should I not carry the 'a' 'c' 'x' & 'y' routes in my igrp and just
use IBGP ? If so, then do I need to create an IBGP peer mesh with
all routers in my network ? Will that give me the capability to route
traffic based on the *source* network address ?

Lastly, note that I have drawn a simplistic view of the net... in
actuality, there are a lot more backbone and end routers involved.

Thanks,

-vikas (609) 897-7307
vikas@jvnc.net ...rutgers!jvncnet!vikas