New open source TCP/IP stack now available

Over the last eighteen months, RISC OS Developments Ltd (ROD) has had programmers beavering away on an important development for the platform – a new TCP/IP (i.e. internet) stack (version 7.00) – and it is now available for anyone using the platform to download and install.

Doing so is very easy. It doesn’t need you to update your version of the operating system; instead it comes with a simple installation program. That program even includes an uninstall option, to make it easy to remove and revert to the stack version shipped with your OS in the – hopefully unlikely – event of there being any problems. (And if there are, you’ll find a few notes included within the zip file, including how to report problems to ROD – using a web-based ticketing system that itself runs on a RISC OS server, using the new stack!)

It needs to be stressed that this is a first release of the new software, so it should be considered still a work in progress. As such, there are still features to be added at a later point, particularly in the area of the user interface – however, the stack itself is fully implemented and functional, and has seen extensive testing by a wide range of users, using a broad selection of software.

The new development, which has come about thanks to a commercial user, is based on the OpenBSD network stack, chosen because it is highly respected. As well as its reputation for being one of the most secure solutions available, it makes it easy to register and de-register interfaces on the fly. This makes it ideal for what ROD wants to achieve with and for the operating system.

One of the focuses of the development work has been to produce a version of the stack for RISC OS with as few changes as possible from the BSD source. This is so that future changes to the source can be tracked, with much of the conversion process being automated – the aim being to ensure future updates, whenever the new stack is updated/synchronised with BSD, don’t involve recreating work that has gone before, and maximising compatibility with existing software.

To that end, much of the development time has been to ensure existing applications behave as before, with no incompatibilities, no matter what generation of RISC OS platform was current, and what specification of stack was in place, when they were written – going all the way back to the Acorn era. The stack fully supports Acorn’s Internet 4 and 5 application programming interfaces – the older of which dates back to the 1980s and 1990s. Consequently, every network application found by ROD has been found to work – which also means that developers won’t have to change any of their existing code to support the new stack. If they do wish to tinker, though, there is extensive documentation, including some elements that are now publicly documented for the very first time.

Also included are new open source Resolver and MBufManager modules, which replace the existing closed source versions – and these, too, are compatible with the older stack, so developers can use them on all machines for the purpose of testing, including those for which the new stack isn’t suitable. Speaking of…

To use the new stack, you need to be running RISC OS 5 – ideally 5.24 or later, with 5.28+ preferred. Optimised for ARMv7+ platforms, the new stack also supports ARMv5, so can be used on hardware such as the original Raspberry Pi, and the Pi Zero. It has been tested on a number of platforms – which are considered ‘supported’:

  • Gigabit ethernet platforms: i.MX6, Titanium, Raspberry Pi 4, Raspberry Pi 400
  • 100Mbit USB ethernet-based devices such as: BeagleBoard, Pandaboard, Raspberry Pi models 1-3, Raspberry Pi Zero (w) with USB ethernet adaptor.

It has also been reported as working on the IGEPv5 (USB ethernet), but it has had only limited testing on that platform.

Older platforms – the Iyonix, and the RiscPC with open source NIC/podule interfaces – are currently unsupported, though its possible they may be supported in future. RPCEmu also falls into this category, but this one may warrant deeper investigation given that it’s an emulator rather than an actual platform.

So, what are the features and benefits for users? There is a more fuller list included in the zip, but some key highlights include:

  • It is a modern TCP/IP stack with support for both IPv4 and IPv6 internet standards – the latter being important in an era when IP address blocks in the older standard are starting to become harder to come by. In practice, most users shouldn’t notice any difference as yet, but over time you can expect to see more and more network hardware supporting IPv6 and not IPv4.
  • Internal IP addresses can be manually set up as before, and there is support for automatic assignment using DHCP for IPv4 addresses, and SLAAC – stateless address auto-configuration – for IPv6 ones.
  • Compatibility doesn’t stop at software as mentioned above; it also extends to your existing network configuration files – so once installed, you shouldn’t have to tweak anything to get things working.
  • Dynamic network configuration is supported, which means that should you be changing your network setup, you won’t need to reboot your RISC OS computer(s) running the stack – they will simply detect the changes, and update as necessary.

In addition, this new stack provides a firm foundation for RISC OS networking with – hopefully – more to come. The next steps will be to include more drivers and support, improved network configuration to make it easy for less technical users to be able to do more than just the basics. And also for the future, there’s an important bullet point not included above list of features and benefits, so here it is:

  • The 802.11 protocol is supported, which paves the way for Wi-Fi in future.

Wi-Fi, it should be noted, isn’t just going to appear overnight, but – as with the SDIO driver code previously – we’re inching ever closer.

Related posts