In each DC there is a core. It is usually stacked 3750X switches.
OSPF runs on the cores to exchange internal routes
Two borders in each DC. It might be Cisco, Juniper or even Linux. Borders run multimode BGP with various providers.
Each DC announces its own /24 network.
There is a full mesh iBGP between borders on virtual interfaces, that are built over internal OSPF.
Is it a good design or not?
1) I would like to move iBGP to cores and configure route reflectors on them. Is it a good idea?
2) We have a public prefix /21. Instead of announcing /24 in each DC I would like to announce /21 in all DCs + /24 in each. But I don't know what to do with the firewalls in each DC. They are stateful.