Asynchronous Events

Windows 8 Registered I/O and I/O Completion Ports

In my last blog post I introduced the Windows 8 Registered I/O Networking Extensions, RIO. As I explained there are three ways to retrieve completions from RIO, polled, event driven and via an I/O Completion Port (IOCP). This makes RIO pretty flexible and allows it to be used in many different designs of servers. The polled scenario is likely aimed at very high performance UDP or High Frequency Trading style situations where you may be happy to burn CPU so as to process inbound datagrams as fast as possible.

Windows 8 Registered I/O Networking Extensions

Most of the buzz being generated around the Windows 8 Developer Previews at the moment seems to be centred on the new Metro user interface and the Windows Runtime. Whilst both Metro and WinRT are key components of the next Windows release I find the Registered I/O Networking Extensions to be far more interesting, but then I guess I would… What are the Registered I/O Networking Extensions? The Registered I/O Networking Extensions, RIO, is a new API that has been added to Winsock to support high-speed networking for increased networking performance with lower latency and jitter.

Out of band data, TCP Urgent mode and overlapped I/O

Some stream protocols have the concept of ‘out of band’ (OOB) data. This is a separate logical communication channel between the peers which enables data that is unrelated to the current data in the stream to be sent alongside the normal data stream. This is often a way for some data to jump ahead of the normal stream and arrive faster than if it were delivered via the the normal data stream.

Latest release of The Server Framework: 6.5.1

Version 6.5.1 of The Server Framework was released today. This is primarily a bug fix release, although we also add several new example clients and servers. This release includes the following, see the release notes, here, for full details of all changes. Bug fixes to The Core Framework which affect the use of the newly added “Read Again” functionality. Fixes to the Hixie76 WebSockets protocol handler to improve interoperability. Added outbound connection establishment support to the Hixie76 protocol handler.

A little note to all you Chinese hackers

My server logs are showing that there are some people currently trying to hack this site. They appear to be mainly Chinese. I assume you think you might be able to download the source code to The Server Framework for free if you manage to hack my websites; after all the same IP addresses have been exploring my sites a lot and looking at lots of the documentation pages on here…

Latest release of The Server Framework: 6.5

Version 6.5 of The Server Framework was released today. This release includes the following, see the release notes, here, for full details of all changes. WebSockets support via The WebSockets Option Pack. WebSocket protocol compliance test results can be found here. Improvements to the flow control connection filter so that managing high volume connections is easier than ever. Added code to automatically detect if it’s safe to enable FILE_SKIP_COMPLETION_PORT_ON_SUCCESS on a given machine.

The WebSocket protocol - Draft, HyBi 09

Due to client demand we’re working on the WebSocket protocol again. Things have moved on since the work we did in December and this time the resulting option pack really will make it into the next release rather than simply being something that we tweak for each client that asks for it. Back in December one of our gaming clients wanted WebSocket functionality in their game server so we did some work on the two versions of the spec that they wanted, the Hixie 76 draft and the HyBi 03 draft.

TCP flow control and asynchronous writes

Overview To enable network applications to send and receive data via a TCP connection reliably and efficiently the TCP protocol includes flow control which allows the TCP stack on one side of the connection to tell the TCP stack on other side of the connection to slow down its data transmission, or to stop sending data entirely. The reason that this is required is that the TCP stack in each peer contains buffers for data transmission and data reception and flow control is required to prevent a sender from sending when a receiver’s buffer is full.

New client profile: inConcert

We have a new client profile available here for a client that began by using The Free Framework and then switched to using The Server Framework to take advantage of the advanced features that it offers.