Running BGP Route Reflector in a Virtual Machine
The BGP-based SDN Solutions webinar triggered another interesting question from one the attendees:
It seems like the BGP route reflector functionality can be implemented as a Virtual Machine. Will a VM have enough resources to meet the requirements of a RR?
Short answer: Yes.
The only resources a BGP route reflector needs are CPU and memory. The networking requirements aren't that critical - the BGP sessions are more likely to be CPU-bound than bandwidth-bound.
Considering this, it makes little sense to run a BGP route reflector on a router or switch - you're wasting valuable forwarding hardware to provide functionality that could be implemented on any x86 server. IXP operators realized that a long time ago; many IXPs use Bird or Quagga as route server.
The service providers offering more than just IP connectivity couldn't use the same trick. Most open-source BGP implementations don't support the additional address families needed to implement L2VPNs or L3VPNs. However, it seems the large customers managed to push the traditional networking vendors hard enough - Cisco, Juniper and Alcatel Lucent are offering BGP router reflector functionality in a VM format - from Cisco's Cloud Services Router (CSR 1000v) and IOS XRv to Juniper's Virtual Route Reflector and ALU's VSR-RR.
Summary: if you want to implement BGP route reflector functionality outside of the regular forwarding path (as a dedicated control-plane function), don't waste money buying a router to do it. Use either an open-source solution or network operating system in VM format.
More information
BGP-Based SDN Solutions webinar describes numerous BGP-based SDN solutions and open-source tools you could use to build another one.
At this point in time I would assume that all ISP's do label switched forwarding for Internet traffic also though so it should not be an issue even in that case.
MPLS VPNs don't have this problem of course since the egress exit point is determined at ingress and there is no hop by hop decision on forwarding.
By running it in a VM you could shift the workload while you are patching one of the RR's. It's trivial to add memory and CPU which would not be the case for a physical router.
The drawback seems to be the licensing which is more expensive than one would imagine (isn't that always the case?).
It works for private VPN address families where NLRIs are relatively unique, but BGP's lack of ability to communicate more than the active path is a hindrance for the Internet table, since any moderately geographically-diverse network with peering ends up requiring quite localised route selection.
BGP ORR is an interesting option to address this problem, but I can't help thinking that the fixation on centralisation of what is a crucially a distributed compute problem is the main issue.
Not that I am advocating a centralised RR setup.
http://www.slideshare.net/mynog/21st-centuryibgp-routereflectionmarktinka
On my network for instance I have 20+ sites today in a full mesh, and they act as RRs for downstream routers. I could likely replace all of that with 3 pairs of servers running multiple vRR VMs for different domains along with ORR for true best path selection.