I guess I should start by saying that IP prefixes are not technically bought. When an IP prefix is allocated to a provider from an RIR like ARIN, there is no transfer of ownership. The IP range is always allocated to the RIR, and the allocation to the provider is only valid so long as the original terms of the allocation are upheld.
As for the routing part of the question, it is hard to give a specific answer without details on the actual prefixes used; however the most likely explanation is that some providers have policies in place which are not accepting the more specific /24 announcements.
I assume that the site in the US is announcing the entire /19 range, so any ISP that does not carry the specific /24 prefix will instead route towards the covering /19.
As for why some of the ISPs are not accepting the specific /24 announcements, this can have a number of reasons, and to be honest you are only going to be able to get a definitive answer from the ISP doing the filtering; however there are a few things you can try to improve your chances of the announcements being accepted.
Some ISPs will build their policies dynamically from information in routing registries. My experience is strongest in the RIPE service region, where routing policy can be registered using RPSL syntax in the RIPE database. ARIN also have a routing registry, but for the ARIN service region it is more common to register policy with the Merit RADb at ra.net. RPKI is still in it's early days and not many people are using RPKI in their policies; however it is an area to consider for the future which may allow for more reliable route distribution.
As you have seen, if the route is not in the table of these other ISPs then you are not going to be able to influence their routing by means of attributes on your announcements (i.e. as path length, communities, etc). You are only going to fix things by getting them to accept your announcement.
This might be a bit long winded, but I'll try to address most of your issues in one go. Wish me luck!
You can have your upstream service providers advertise a default route (0.0.0.0) through BGP to your routers. When you configure OSPF on your BGP routers, you can use the command "default-information originate." As long as you're getting the default route from your ISP (which only happens when you have connectivity to that ISP), you'll advertise the default route into OSPF. As soon as you lose that default route from your ISP, you'll lose the OSPF default route.
You'll need to establish BGP peering between all of your internet routers (the ones connected to your ISPs). This is an internal BGP or iBGP relationship and needs to be a full mesh. Per your diagram, you only have two internet routers, so a full mesh is simple. There are no tricky steps to peer on iBGP versus eBGP; just a simple neighbor statement. When BGP sees that your neighbor has the same AS number, it forms an iBGP relationship instead of an eBGP one.
Preferring one route over another is a bit tricky, particularly where BGP is concerned. Load balancing is done using route maps and traditionally with as-path prepending. There are a few ways to do this. I'd like to add a caveat that if you aren't filtering outgoing route advertisements, you'll end up advertising ISP A's routes to ISP B and C and so forth which will turn you into a transit AS and you'll end up piping some A <-> B, A <-> C, and B <-> C traffic through your network which is probably not what you want.
Here's one go at your load balancing:
! Set an IP access list that matches your BGP-advertised network
ip access-list standard 1 permit a.b.c.d mask a.b.c.d
! Set an IP as-path access list to only allow advertising of YOUR network
ip as-path access-list 1 permit ^$
! Make a route-map for ISP C, match the as-path and access-list above, then make it look
! less appealing than going through ISP A/B
route-map ISP_C 10
match ip address 1
match as-path 1
set as-path prepend <Your AS> <Your AS> <Your AS>
! The more times you prepend your AS to a route, the less desirable it looks, so traffic
! will be more likely to come in via ISP A/B than C. The last step is to add it to your
! ISP C neighbor statement in BGP
router bgp <Your AS>
neighbor <ISP C> route-map ISP_C out
If you have more than one subnet, you can even things out a little more and use router B for site B and router A for site A by selectively prepending your AS path to individual subnets. Here's an example:
Router A:
ip access-list standard 1
permit <site B subnets>
ip as-path 1 permit ^$
route-map ISP_AB 10
match ip address 1
match as-path 1
set as-path prepend <Your AS> <Your AS>
route-map ISP AB 20
match as-path 1
router bgp <Your AS>
neighbor <ISP A> route-map ISP_AB out
neighbor <ISP B> route-map ISP_AB out
Router B:
ip access-list standard 1
permit <site A subnets>
ip as-path 1 permit ^$
route-map ISP_C 10
match ip address 1
match as-path 1
set as-path prepend <Your AS> <Your AS>
route-map ISP C 20
match as-path 1
router bgp <Your AS>
neighbor <ISP C> route-map ISP_C out
What you've effectively done is make site B's subnets look less appealing coming from Router A than they do from ISP C and make site A's subnets look less appealing coming from Router B than they do from ISP A/B. You might have to play around with your AS path prepending some to get the right amount of prepending in.
I hope this helps! BGP is a bit of a monster, but once you understand the parts, it's fun to play with. I highly recommend the CBT Nuggets series on BGP if you feel a bit shaky on the subject and I always use GNS3 as a testbed to verify big network changes before I implement them.
Best Answer
Yes. Nobody will advertise any network smaller than a /48. The same thing is in IPv4; no ISP will advertise any network smaller than a /24.
The problem is the sheer number of routes that would generate on the Internet by advertising networks smaller than a /48. Even at /48 with the current global address range of 2000::/3, that translates to 35,184,372,088,832 possible routes.
In fact, IANA had a rule that nobody (even individuals) should get networks smaller than /48. The ISPs eventually overruled that for individuals, giving them /56. Each site is supposed to have at least a /56, and a company gets at least a /48 which the company can advertise. If you wish to advertise individual sites, they each need a /48 (or a /56 out of separate /48s).
You can go to the RIR and get a smaller mask. For instance, we got a /32 from each RIR.