The systems and networking group is composed of approximately 20 researchers and post-docs. The group has existed since the lab opened, and over the last decade and a half we have covered a broad range of topics including systems, operating systems, networking, distributed systems, file and storage systems, cloud and data centre computing, social networking, security, network management, computer architecture, programming languages, and databases. We are a group that designs and builds systems that address significant real-world problems and demonstrate novel underlying principles.
Many projects that researchers from the group have been involved with have had significant impact in the academic community and resulted in papers that have been widely cited. We are also very proud that many of our projects have also had internal Microsoft impact or have been licensed. Two public examples of our impact on Microsoft are Microsoft System Centre Capacity Planner and The Windows Vista Network Map. This tradition continues, and we currently have a number of exciting active collaborations with product groups.
We are always looking for talented people to join our team. If you are interested in projects underway please look at the group members' personal pages.
The group has a long tradition of research in most aspects of computer communications and networks in general. The interests and contributions of the group are quite diverse with projects over the previous years in a number of areas such as peer-to-peer networks, resource allocation, congestion control and transport protocols, performance modelling, epidemics, network coding, routing, mobility models, social networks, enterprise and home network management, etc. Currently, there is a strong focus on data centre networks (private and cloud) where traditional assumptions that have underpinned the design of the Internet are challenged.
The systems and networking team have a history of doing research in file and storage systems. We engage in storage research at all levels of the storage stack, from user-experience driven file system designs to data centre scale scalable, predictable and efficient storage systems. Recently we have been working on a software-defined storage architecture that opens up the storage stack and makes it more controllable and programmable. You can read more about this in our SOSP paper.
Operating Systems and Programming Languages
We investigate problems spanning operating systems, programming languages and compilers. For example, how can we provide both strong security and high performance in the same language and runtime? What security properties can be defined at the programming language level, and how can they be enforced efficiently by the compiler, runtime, and operating system?
Software Architectures for New Hardware
Hardware trends are forcing us to rethink software architectures. For example, large memory sizes and increasing on- and off-chip integration and customization will enable "rack-scale commodity supercomputers" with terabytes of memory, 100s of cores and low-latency communication between them. Fully exploiting these capabilities requires a cross-layer redesign of the software (operating systems and applications) and networking stack. We are re-examining server software architectures to understand how applications can benefit from these new technologies and what the right programming model and hardware/software interface is for these applications.
Our mission is to invent new wireless architectures and technologies that will support ever-growing traffic demands from mobile devices. We are particularly interested in the new spectrum access models (such as white-spaces) that will yield more flexible and efficient use of spectrum. Our research focus is on wireless network protocols and underlying signal processing algorithms. We are equally engaged in advancing the state-of-the-art algorithmic research and building network prototypes to prove our concepts. To find out more, please visit our project page.
Big Data Analytics
We conduct research in the area of algorithms and systems for processing massive amounts of data. Our work aims at pushing the boundary of computer science in the area of algorithms and systems for large-scale computations. Our mission is to achieve major technological breakthroughs in order to facilitate new systems and services relying on efficient processing of big data. Our main areas of research are distributed queries, large-scale machine learning and distributed computing. To find out more, please visit our project page.
Empirical Software Engineering
We develop empirically driven strategies, techniques and tools to optimize software development. We base our analysis on development process data—changes and tests, bug reports and patches, organizational structure and team management. Using this historical data allows us to characterize and model existing development processes with respect to efficiency and effectiveness and to simulate the impact of optimization strategies on the overall development process and quality, speed and cost goals.
Analysing development process data has in the past already proved useful to software development organizations, as they seek to manage scope, quality, cost and time in software development projects. For example:
- The Cambridge Systems & Networking group is always looking for interns, post-docs and researchers. For more information, visit Microsoft Research Careers. Prospective interns may wish to identify people or projects they are interested in, and informally email the relevant staff directly (one email, cc'ed appropriately).