Some of the information in this writeup is out of date or wrong. Refer to the current progress report for more up to date information.

RMHAM RouterOS 7 Progress Report

Willem A. Schreüder AC0KQ

3/6/2022: RouterOS 7.1.3

In preparation for the eventual migration of Mikrotik devices to RouterOS 7, I have been experimenting with RouterOS releases to see if it is ready for prime time.

For these experiments I used a RB750 five port router, and attached it to the RMHAM Netlab. Overall the results are getting better, but not all the problems have been resolved. Therefore, the recommendation is to NOT upgrade any devices to RouterOS 7 yet.

Installing RouterOS 7

For the current experiment, I retrieved RouterOS 7.1.3 (stable) from the Mikrotik web site.

After upgrading the router by uploading the NPK to the router and rebooting, the router was unresponsive. I therefore did a hard reset of the router, and was able to connect to the router using WinBox over Layer 2.

Upgrading the RouterBOARD to 7 resulted in the device booting but being unresponsive. A hard reset recovered the device and rolled back the RouterBOARD to the previous version. I therefore disabled automatic upgrading of the RouterBOARD.

Once the router configuration was reset, I labeled the interfaces, installed a bridge, mapped ports to the bridge, set the bridge and WAN IP addresses, enabled DNS and enabled DHCP. This processes was straight forward and is essentially identical to how it worked in RouterOS 6.

Enabling OSPF

With the new routing engine in RouterOS 7, the process of enabling OSPF is very different than in RouterOS 6.

The Router ID is shared between protocols and seems to default to the bridge. The selected ID is dynamic, so perhaps it is prudent to manually fix it to the bridge IP. However, so far the default seems satisfactory.

To enable OSPF, click Routing > OSPF to get the dialog for OSPF. First select + on the Instance tab. The defaults are fine, specifically Version 2 (for OSPF version 2), but you must add main from the Routing Table

Leave the Filter section unused. I have not had any success with the new filters which is very different in RouterOS 7. Putting anything in the filters causes OSPF to learn the routes, but never use them.

Second click the Areas tab and +. The default backbone area is fine so just click OK.

Third click the Area Ranges tab and + and add the subnets you want OSPF to route. (In RouterOS 6 this was called Networks).

Note that you need to set all the fields. Repeat this for 10.0.0.0/8, 172.16.0.0/16 and 192.168.0.0.16. What is new in RouterOS 7 is that you can set a cost along with the prefix. For the 172.16.0.0/16 we can now set a default weight of (say) 1000 which is convenient.

Finally, add the interfaces you want by going to the Interface Template tab and clicking + to enable each interface. I connected to the Lab at Squaw and Horsetooth.

 

Note that interfaces are no longer added automatically and that you don't have to copy the interfaces to set the cost and network type. I have not yet experimented with VPN interfaces, but I believe you will still need to make those static by copying before adding the template. However, in the OSPF interface template a second copy is not required.

Once interfaces are added, the OSPF routes show up in the routing table and routing functions as expected. Active interfaces will show up in the interfaces tab, neighbors in the neighbors tab, and the LSA in the LSA tab, which looks very similar to how it did in RouterOS 6.

If the routes show up in red in the IP Routes, OSPF knows about the routes from OSPF but is not using them. When fooling with filters and other settings, it is occasionally necessary to disable the OSPF instance and then enable it bofore the routes turn black indicating that they are being used. I do not have a definitive answer for when this is necessary or not, but try it if your changes do not seem to be taking effect.

OSPF Filters

Routing filters in RouterOS 7 are very different than in RouterOS 6. An example filters looks like this
if (dst==192.168.0.0/22 && dst-len>=22) { reject }
In WinBox, there is no help with the syntax. You pretty much have to figure out the rules directly. The filters are executed in order, but it looks like there may be an implied "reject everything" at the end because an empty filter seems to reject all routes.

I am hopeful that the OSPF filters will be less quirky than in RouterOS 6 so that we can filter all the undesirable addresses at the source, instead of having to add ospf-in filters everywhere to reject, for example, the 192.168.[0-3].0/24 subnets. However, so far I have struck out adding any filters. No matter what filters I add, OSPF rejects all routes. So I have clearly screwed it up.

Conclusions

Based on these experiments, RouterOS 7 is not yet ready for prime time:
  1. Upgrading from RouterOS will likely require a hard reset of the device. I am yet to need a NetInstall, but it is likely the router will need a complete refresh.
  2. The RouterBOARD upgrade hang is problematic. Not sure if this is just on older hardware, but since it takes a hard reset of the hardware to recover, this is a show stopper.
  3. The RouterOS 7 OSPF implementation seems to play nice with RouterOS 6 OSPF. As shown above, the procedure for enabling OSPF, networks and interfaces is quite different than RouterOS 6, but once you get used to it I consider the improvements worth while.
  4. The documentation on the Routing Filters is lagging the implementation and I still need to get my head around how it works. The filters appear significantly more sophisticated than in RouterOS 6, so this could be a step forward, but it is totally free format and WinBox provides little help, so DevDB seems like the obvious solution.
Therefore, we strongly discourage everyone from upgrading to RouterOS 7 at this time. However the progress of the last 6 months has been significant, and this recommendation may change in a few months.