I've been testing Mikrotik RouterOS BGP implementation recently and noticed very interesting and behavior. Unlike other common network operation systems like Cisco IOS-XE, IOS-XR or Juniper JunOS, RouterOS establishes BGP peering with it's peers one by one every 5 seconds and this timer can not be adjusted. It does not depend on BGP keepalive/hold timers, number of prefixes advertised from the peers or number of peers according to my testing. It does not depend on number of CPUs allocated for VM (or available on hardware router) at least in the current 6.x versions. For example:
[admin@R1] /routing bgp peer> print status interval=10
Flags: X - disabled, E - established
0 E name="peer1" instance=default remote-address=192.168.100.2 remote-as=65000 tcp-md5-key=">
nexthop-choice=default multihop=no route-reflect=no hold-time=3m ttl=default
in-filter="" out-filter="" address-families=ip default-originate=never
remove-private-as=no as-override=no passive=no use-bfd=no remote-id=192.168.100.2
local-address=192.168.100.1 uptime=2m5s prefix-count=5000 updates-sent=0
updates-received=5000 withdrawn-sent=0 withdrawn-received=0 remote-hold-time=3m
used-hold-time=3m used-keepalive-time=1m state=established
1 E name="peer2" instance=default remote-address=192.168.100.3 remote-as=65000 tcp-md5-key=">
nexthop-choice=default multihop=no route-reflect=no hold-time=3m ttl=default
in-filter="" out-filter="" address-families=ip default-originate=never
remove-private-as=no as-override=no passive=no use-bfd=no remote-id=192.168.100.3
local-address=192.168.100.1 uptime=2m prefix-count=5000 updates-sent=0
updates-received=5000 withdrawn-sent=0 withdrawn-received=0 remote-hold-time=3m
used-hold-time=3m used-keepalive-time=1m state=established
2 E name="peer3" instance=default remote-address=192.168.100.4 remote-as=65000 tcp-md5-key=">
nexthop-choice=default multihop=no route-reflect=no hold-time=3m ttl=default
in-filter="" out-filter="" address-families=ip default-originate=never
remove-private-as=no as-override=no passive=no use-bfd=no remote-id=192.168.100.4
local-address=192.168.100.1 uptime=1m55s prefix-count=5000 updates-sent=0
updates-received=5000 withdrawn-sent=0 withdrawn-received=0 remote-hold-time=3m
used-hold-time=3m used-keepalive-time=1m state=established
3 E name="peer4" instance=default remote-address=192.168.100.5 remote-as=65000 tcp-md5-key=">
nexthop-choice=default multihop=no route-reflect=no hold-time=3m ttl=default
in-filter="" out-filter="" address-families=ip default-originate=never
remove-private-as=no as-override=no passive=no use-bfd=no remote-id=192.168.100.5
local-address=192.168.100.1 uptime=1m50s prefix-count=5000 updates-sent=0
updates-received=5000 withdrawn-sent=0 withdrawn-received=0 remote-hold-time=3m
used-hold-time=3m used-keepalive-time=1m state=established
4 E name="peer5" instance=default remote-address=192.168.100.6 remote-as=65000 tcp-md5-key=">
nexthop-choice=default multihop=no route-reflect=no hold-time=3m ttl=default
in-filter="" out-filter="" address-families=ip default-originate=never
remove-private-as=no as-override=no passive=no use-bfd=no remote-id=192.168.100.6
local-address=192.168.100.1 uptime=1m45s prefix-count=5000 updates-sent=0
updates-received=5000 withdrawn-sent=0 withdrawn-received=0 remote-hold-time=3m
used-hold-time=3m used-keepalive-time=1m state=established
All peers are the same traffic generator advertising 5000 prefixes. BGP instance on RouterOS is enabled and then it starts to process peers one by one. Note exact 5 second difference between peers in the uptime field.
This was tested with 6.45.9 and 6.47 software versions. Unfortunately, I was not able to try 7.1beta2 currently available (apparently, there were some improvements in BGP for multi-core/CPU systems according to release notes).
7.1beta2 I've installed as CHR and requested 60 day trial with unlimited functionality, but unlike 6.x, I cannot enable any other packages except routeros itself, hence BGP is not available for testing there. If you have any idea on how to enable BGP on 7.0beta7 or never, let me know. Appreciate in advance.