As a member of the iQua group, PhD Hassan Shojania has been a researcher in the Department of Electrical and Computer Engineering at U of T since 2006. His novel research could have a direct impact on the technologies that we use every day — from iPhones to iPods to personal computers.

Born in Iran, Shojania graduated with a degree in Computer Engineering from Tehran Polytechnic. He moved to Canada in 1998 and found a job as a software engineer with ATI Technologies. He worked there for a number of years and took some courses before deciding to pursue graduate studies at Queen’s University in 2003. He started his doctoral degree in January 2006 and has been with the iQua group since.

Comprised of seven PhD and two Masters candidates, the iQua group conducts research on large-scale peer-to-peer and wireless networking under the supervision of Professor Baochun Li, a 2009 recipient of U of T’s prestigious McLean prize in Engineering. Since 2003, the group has focused primarily on network coding to improve the performance of networked systems.

In computer networks, when there are multiple paths between the senders and the receivers, some intermediate links between the nodes can become bottlenecks. This results in extra delivery time as the messages have to be scheduled sequentially across the bottlenecked links. With network coding, however, the messages can be combined and sent in coded forms, reducing the overall delivery time. Obviously, the encoding process in the senders and the decoding process in the receivers require extra computation. Network coding effectively achieves faster network delivery by trading the extra computation cost of coding. Some applications of network coding include media and content delivery systems.

Despite its benefits, network coding has not gained popularity in the computing industry, mainly because of its extra computational load (extra computation that has to be performed to encode or decode processes) on the device. Shojania’s past research focused primarily on coming up with efficient implementations of network coding, like low computation overhead, such that they can be used in practical applications across various devices. The first stop was the Central Processing Unit, which handles all computations of your typical desktop or laptop computer. After achieving good performance with the CPUs, high-performance servers became the next target. In many network applications like Youtube, hundreds of servers are employed, each serving thousands of clients. As a result, achieving significantly higher performance was necessary for such demanding servers.

While multi-core CPUs of modern servers improved the coding performance, the gain was not enough for real-life applications.

As an alternative, Shojania turned to Graphics Processing Units for better performance. Although primarily designed for displaying the computer output on a monitor, GPUs have significantly improved their computational capability to handle increasingly complex computer games. More recently, GPUs have also become capable of general-purpose computation. In his 2009 paper titled “Nuclei: GPU-Accelerated Many-Core Network coding” and in another follow-up paper, Shojania noted that computing cores of commodity off-the-shelf GPUs could perform network coding much faster than multi-core CPUs. GPU-based systems prove to be a more suitable alternative for high-performance servers.

In his setup for a “media-streaming server” (a server that provides a number of different computers with media), the GPU is dedicated to network encoding while the CPUs handle the rest of the work. This includes grabbing the media files, and then sending the coded media to thousands of clients simultaneously.

After the servers, the last stop was smartphones. Shojania’s 2009 paper titled “Random Network Coding on the iPhone: Fact or Fiction?” expanded on the research by focusing on the first implementation of random network coding in the iPhone and iPod Touch. Because of less capable computing cores in these devices, compared to the CPUs in computers, the computational load was a big concern. Furthermore, it had a direct effect on the energy consumption. However, Shojania recognized that in order to make network coding more appealing in the mobile devices, faster processors would be needed. Fortunately, iPhone 3GS, Google’s Nexus One, and the recently released Ipad use more advanced processors, making the use of network coding even more practical.

In his most recent work, Shojania has put together his previous research by creating a toolkit called Tenor which makes efficient network coding possible on different hardware platforms — GPUs, CPUs, and smartphones. To demonstrate the effectiveness of the toolkit, this work has also included real-world video streaming experiments in client-server and P2P setups.

In P2P networks, for example, each peer (a computing device participating in the application) is receiving data from multiple senders. A computer with a higher network bandwidth, like the server, is able to serve more peers in this network. Each intermediate compute, or intermediate node, helps to forward the content through the network. Therefore, a peer serves two purposes in a network: it is a recipient of data as well as a sender of data. Network coding helps P2P systems by simplifying the send protocol.

This recent paper — a culmination of work conducted over three years — also shows how a GPU-based server can serve thousands of clients in a client-sever streaming system in a setup similar to YouTube. Shojania will be completing his doctoral degree this year and hopes that his research will contribute to the future content delivery systems.