Using a MUM presentation on the subject: "Using Mikrotik CHR as a BGP edge router"
https://mum.mikrotik.com/presentations/ ... 562405.pdf
loading the LINX table took 4 minutes and 46 seconds on VMWare and an i7-7700k. OUCH. Now add load, they pushed 5G through it and convergence went to 11 Minutes! Totally unacceptable.
proxmox was 1:34 and 9:03 which is a bit better, but still a big problem under load.
Hyper-v did it in 12 seconds. Under load, 41 seconds. THAT's usable.
Loading routes is a simple operation done many many times and latency from userspace to kernel is responsible for almost all BGP performance. Hyper-V's hypervisor architecture happens to have the lowest latency for this type of operation.
Hyper-v numbers look a lot like Linux+Quagga numbers but I can't find a Linux+quagga on such powerful hardware... So there is still room for improvement.
And guess what, the *old* x86 routeros is still king for BGP. CHR can't touch it except on Hyper-V, and CHR still slower despite probably being run on faster/more modern CPUs. There are plenty of gotcha's with x86 version, specifically the memory limit. We are fast approaching a full gig per peer (IPv4+IPv6).
Basically, it doesn't make a lot of sense to run a Windows computer just to run a CHR on just to get decent BGP speeds.
Further, if you actually want to have full routes at your towers because you are multi-homed you really don't have a great option.
It's really time for an x86-64 bit release *OR* just make an x86-64 bare metal *routerboard* , they did it before with the rb230, granted those were not the fastest things... You can get a LOT of Ram and Ghz in a small package in x86-64 these days.
I agree that bare metal sounds like the fastest possible solution - due to the fact that there would be no hypervisor overhead - which could allow all interfaces being directly managed by the bare metal ROS install.
However - the underlying issue to bare metal and CHR is the fact that there is no ISO for a bare metal install of a CHR.
So - A thought I have that might work to acheive a CHR on bare metal is:
** Only a thought & this depends if the CHR can directly talk to the network devices ***
Using a hyper visor (in my case VmWare ESXi would be to attempt something like this procedure ...
- 1st , get a CHR running on the hyper visor system
- 2nd , add a raw/dedicated disk to the hypervisor and attempt a raw copy (or some sort of a DD) from the hyper visor CHR disk system to the new raw/dedicated IDE hard disk.
- 3rd , after the copy , re-install the IDE hard disk into a bare-metal computer and attempt to boot the IDE hard disk.
---or--- another possible method ---
- a) on the hypervisor system, install the CHR system to a dedicated raw (semi-stand-alone) IDE hard disk.
- b) on the hypervisor , make the virtual hardware match the bare-metal hardware
- c) then remove the IDE hdd and install in in the bare metal and try booting the IDE hdd on the bare metal box.
*** I am pretty sure the HDD and HDD controller card might need to be IDE because I dont think there is any SAS,SATA,SCSI drivers in CHR
*** I suspect that a native Intel E1000 and/or E1000e network card should work because the drivers are already in the CHR
*** I have no idea about 10-gig network cards - but possibly if they can use ethernet drivers already in the CHR
Anybody have any thoughts ?