We have three core sites that are each connected via point-to-point DS3s, (triangle design) using OSPF. We also have an MPLS DS3 using BGP going into each site as well. One site is completely VoIP and requires QoS treatment. We would like to load balance between the P2P and MPLS links at each site and allow for dynamic failover should a link or two fail. Is this possible? If so, how is it accomplished? My coworker is leaning toward GRE tunnels, but I would like other opinions and options before we dive headlong down this trail.