2.5GbE Direct Attach SFP on the Omnia

I was able to get my Omnia to talk to a MikroTik CRS305 at 2.5Gbps via an SFP DAC, in this forum post.

Short version: You need to force 2.5Gbps on both sides (disable auto-negotiation). Doing so requires the other side to have a switch/NIC ASIC that can talk to the SFP+ module at 2.5Gbps (this is not always supported – even if you were to run 2.5GBASE-T off a transceiver, the ASIC and transceiver may still be communicating at a higher rate). In other words, this isn’t going to work on all hardware. For the long version, read on.

Omnia Side

First, you’ll need to switch your Omnia to the SFP boot image. In the /boot directory, you’ll notice two images (*.dtb files), and a symlink to one or the other:

root@omnia:/boot# ls -ladrwxr-xr-x    1 root     root           158 May 18 08:33 .drwxr-xr-x    1 root     root           134 May 18 08:33 ..-rw-r--r--    1 root     root         19290 May 16 01:15 armada-385-turris-omnia-phy.dtb-rw-r--r--    1 root     root         19286 May 16 01:15 armada-385-turris-omnia-sfp.dtb-rw-r--r--    1 root     root          1199 Apr 29 08:12 boot.scrlrwxrwxrwx    1 root     root            31 May 13 11:41 dtb -> armada-385-turris-omnia-sfp.dtb-rwxr-xr-x    1 root     root       3881560 May 18 01:28 zImage

If the dtb symlink is pointing to the phy image, remove the symlink, and re-create it to point to the sfp image.

You’ll also need to add a line to your /etc/rc.local (before the ‘exit 0’ line):

ethtool -s eth2 speed 2500 autoneg off

Reboot after making these changes.

MikroTik Side

First off, I couldn’t figure out a way to get this to work on SwOS, which is a shame since I prefer it over RouterOS for simple switch configuration, where I don’t need any of the advanced functionality of ROS. You’ll need at least RouterOS 7.3.1, and of course a switch ASIC that supports 2.5Gbps.

In Interfaces, open up whichever interface you’d like to use. In my case, sfp-sfpplus3. On the ‘Ethernet’ tab, turn off Auto Negotiation, and select 2.5Gbps. Note that just because you see an option does not mean your hardware supports it – the CRS305 certainly doesn’t do 25/40/100Gb.

Once that’s done, everything should be working!

# iperf3 -c 192.168.1.1
Connecting to host 192.168.1.1, port 5201
[  5] local 192.168.1.4 port 43936 connected to 192.168.1.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   282 MBytes  2.36 Gbits/sec    0    814 KBytes
[  5]   1.00-2.00   sec   279 MBytes  2.33 Gbits/sec    0    947 KBytes
[  5]   2.00-3.00   sec   279 MBytes  2.35 Gbits/sec    0    947 KBytes
[  5]   3.00-4.00   sec   278 MBytes  2.33 Gbits/sec    0   1.06 MBytes
[  5]   4.00-5.00   sec   278 MBytes  2.33 Gbits/sec    0   1.11 MBytes
[  5]   5.00-6.00   sec   280 MBytes  2.35 Gbits/sec    0   1.11 MBytes
[  5]   6.00-7.00   sec   275 MBytes  2.31 Gbits/sec    0   1.22 MBytes
[  5]   7.00-8.00   sec   276 MBytes  2.32 Gbits/sec    0   1.30 MBytes
[  5]   8.00-9.00   sec   280 MBytes  2.35 Gbits/sec    0   1.30 MBytes
[  5]   9.00-10.00  sec   275 MBytes  2.31 Gbits/sec    0   1.30 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  2.72 GBytes  2.33 Gbits/sec    0             sender
[  5]   0.00-10.00  sec  2.71 GBytes  2.33 Gbits/sec                  receiver

iperf Done.

Leave a Reply