... if i configure same horizon vpls interfaces in HUB then i am not able to ping A to B pl explain
This is long - if you just want a fix for your problem, skip to TLDR below.....
Split horizon means block interfaces on the same horizon from seeing each other.
It's the opposite of what you might think. It might seem to mean "let these interfaces see each other but block from everywhere else" but that's completely backwards from the reality. So how is it useful to only block one set of interfaces from each other, but to allow them to talk normally to all other interfaces?
Split horizon is useful as a way to allow full mesh connectivity without using a tree topology.
VPLS is a great example:
Suppose each site A, B, C, and D have direct connections with VPLS, and 3 local ethernet interfaces all bridged together...
If site A receives a broadcast on ether2, it will forward it to ether1, ether3, vplsB, vplsC, and vplsD, since these are all members of the bridge.
No split horizon and no spanning tree = death!
If there was no split horizon, then when site B receives the broadcast on interface vplsA, it will forward it to ether1, ether2, ether3, (all of these are correct so far), vplsC!, and vplsD! (note that this makes a second copy of the broadcast for C and D)
Site C will receive the original broadcast from A, and forward it to ether1, ether2, ether3, vplsB, and vplsD.
Then it will receive the same broadcast from B and forward it to ether1, ether2, ether3, vplsA, and vplsD. (see the snowball starting yet?)
Site D will receive the original from A, --> e1, e2, e3, vplsB, vplsC
the duplicate from B --> e1, e2, e3, vplsA, vplsC
and
two duplicates from C --> e1, e2, e3, vplsA, vplsB
It will only take a few repeats to reach full bandwidth at all sites doing nothing but make infinite copies of the original broadcast packet! This is an out of control chain reaction. (and what happens if you plug a bunch of un-managed switches into each other and create a loop, by the way)
VPLS with split horizon
With all vplsX interfaces configured to the horizon=1, the behavior is much more normal.
A receives broadcast on ether2 --> e1, e3, vplsB, vplsC, vplsD.
B receives broadcast from vplsA --> e1, e2, e3 (split horizon stops it from going out to other VPLS sites)
C receives broadcast from vplsA --> e1, e2, e3 (split horizon stops it from going out to other VPLS sites)
D receives broadcast from vplsA --> e1, e2, e3 (split horizon stops it from going out to other VPLS sites)
-- every port in the network has now received the broadcast, and only once. (yay!)
Split horizon in general:
All switches do split horizon by default - even unmanaged ones - but each interface is on it's own seperate horizon.
(eth1=horizon1, eth2=horizon2, eth3=horizon3, etc)
So if a switch gets a broadcast on eth1, it will send it to eth2 .. eth24, but will not echo it back to eth1.
When you assign multiple interfaces to the same horizon, this gets expanded. Suppose eth1 - eth8 are horizon1 and eth9-24 are horizon2. Then a broadcast received on any of those 8 ports will not be reflected to eth9-eth24, but NOT 1-8 because they're all on the same horizon.
Split horizon is great for blocking client-to-client connectivity
People who activate client isolation in a WiFi deployment (default-forward='no' in Mikrotik terminology) are sometimes surprised that they can still see other wireless devices. This is because while two devices on the same AP are blocked from seeing each other, they can see the devices on every other AP at the site just fine. If the APs are connected to a switch that puts the APs all on the same horizon, then wireless clients are blocked from seeing wireless devices on ALL other APs, not just their own AP. They also can't see things plugged into the rest of the LAN, such as a guest computer in the lobby.
Suppose you have a DHCP server or a printer that you want everyone to see, then you simply don't put a horizon on its port, and everyone can talk to the server, but not to each other.
Explanation done - now back to your exact situation
TLDR:
You can accomplish your goal by using forwarding rules in the bridge firewall on the central site - make rules:
1: accept in-interface=vplsA out-interface=vplsB
2: accept in-interface=vplsB out-interface=vplsA
3: accept in-interface=vplsC out-interface=vplsD
4: accept in-interface=vplsD out-interface=vplsC
5: drop all
One final thought
I suspect that you CAN ping from one site to another, even across the provider's hub-and-spoke network.
Try this to see if it works, and if it does, you can extend to the rest of the sites:
at SiteA, put a static route /32 to B with gateway=ip.of.hub.site
at SiteB, put a static route /32 to A with gateway=ip.of.hub.site
Then try to ping. If this works, then you can do this everywhere. You may also need to drop ICMP redirect packets on the uplink interfaces at all spoke sites. (hub will forward the packets, but will also try to give siteB a 'hint' to go directly to A next time)
If THIS works, then you can just set up VPLS for full mesh with split horizon as in the example.