by Axel Dahlberg
Summer is approaching fast! The days until vacation are getting fewer and fewer. But before you can relax at a beach with a cold drink you need to send a bunch of emails. However for some reason the software allowing your computer to connect to the Internet has suddenly vanished. What can you do? Well, maybe you can just manually do whatever this software does. It can’t be too hard right? Or can it…?
The network stack, a collection of of software used by computers to connect to each other and run applications over a network, such as e-mail, social media, file sharing, video streaming etc., used by today’s Internet is crucial to its operation. You use it everyday, but do you know what it actually does? When you send an email to your colleague, how is your email actually transmitted across to a different computer?
Similarly, a network stack will be equally important for the development of the Quantum Internet. “Wow, hold on! What did he say!? A Quantum Internet..??” If this is your reaction, also take a look at the recent blog posts by Matteo and Suzanne. Now, where was I? Ah yes! A network stack will be equally important for the development of the Quantum Internet.
However, there is a problem… No such network stack exists — yet, at least — because at QuTech we are aiming to develop a network stack for the Quantum Internet. Developing a network stack is definitely a challenging task. It took about 20 years for the network stack used in today’s Internet (TCP/IP) to go from a research project to be adopted as the standard in the early ARPANET in 1982.
Of course, you might wonder why we cannot simply use the current network stack from the conventional (also called “classical”) Internet also in the Quantum Internet. In this blog post I will try to give a brief high-level description of the network stack in the “classical” Internet, discuss some of the differences between the “classical” Internet and the Quantum Internet and describe our current view of a network stack for the Quantum Internet.
A classical network stack
A stack is not only used for networks or the Internet but to run any kind of software on you computer. In general a software stack consists of multiple layers which work together to realize some service to a user. The core idea for using a stack is that higher layers can make use of the service that a lower layer provides, without knowing the details of how this is implemented. The implementation of the lower layer is usually called a protocol. There can be many different protocols realizing a service of a layer, for example as we will see below, the link layer in the Internet has many implementations such as Ethernet, Wi-Fi, etc. All the higher layer needs to know is how to communicate to the lower layer using a specified interface and what actions it can expect, i.e. what the service is. The layers of the stack allow for abstraction of technical details and allow someone to develop a protocol for a higher layer, (almost) independently from someone else implementing a lower layer.
As an analogy, think of when you send a letter in paper form. You don’t need to know exactly how the mailman will deliver your letter or what route he will take to the destination, you only need to know what service he provides, i.e. the delivery of a letter, and what interface to use, i.e. how you should specify the address on the letter.
The (“classical”) Internet of today is built on the Internet protocol suite, also called TCP/IP. TCP/IP is a stack consisting of five layers: physical layer, link layer, internet layer, transport layer and application layer (see figure below). Each of these layers plays a pivotal role in how the Internet works today and you probably make use of them every day. If you send an email it is likely that your email client uses for example SMTP (Simple Mail Transfer Protocol) which is a protocol in the application layer.
You might wonder how your email actually gets sent over the internet? A good analogy one can have in mind is that each layer puts the content of the layer above in an envelope specific to that layer and tags this with relevant information such an address. In formal terms the layer constructs a packet with the relevant information in the header and the content from the higher layer in the payload. Thus, your email is put in a transport layer packet, which in turn is put in a internet layer packet etc. all the way down to the physical layer where the final packet is encoded as for example modulations of an electric field. At the receiving end, each layer unpacks the envelope, inspects the relevant information and passes the payload up a higher layer or transmits another envelope further in the network to the final destination. Let’s dive a little deeper into what each layer does.
The physical layer consists of all the hardware, cables etc. and concerns how a string of bits is actually transmitted through for example a cable or the air.
The link layer is responsible for sending messages (frames) between nodes that are on the same network. This network might be your Wi-Fi network at home or the Ethernet (i.e. a normal cabled network) in your office. Messages are sent from one node to another through the use of a switch which is aware of all the nodes in the network. In this sense there is no routing at this level, since the switch has a lookup table for where to send the message based on the MAC-address (Media Access Control address) of the nodes on the network and can simply pass on a message from one node to the other. This is compared to the next layer, where there can be multiple hops through routers from the sender to the receiver and finding the optimal path is a non-trivial task.
The task of the internet layer is to send messages (packets) between nodes which are not on the same network. The protocol used in today’s Internet is the Internet Protocol (IP). Messages are transmitted across the Internet using routers which have routing tables to know how to forward a message based on its accompanied IP-address. However, the internet layer has no guarantee that the message actually arrives on the other side or whether different messages arrive in order. If a router is out of memory or is being flooded with more messages than it can handle, it can simply drop messages without breaking the service guarantees of the internet layer.
There are two common protocols in the transport layer: TCP and UDP. TCP turns the internet layer into a robust service for message-transmission and sets up a connection between two end-nodes which wish to communicate (also called a socket). The connection is setup using an agreement between the nodes (formally called a three-way handshake) which goes something like this:
- Node A: “Yo B, I’d like to tell you something.”
- Node B: “Hey A, sure, I’m listening.”
- Node A: “Okay, here it is:…”
The protocol makes sure all message arrive by possible re-sending them if they get lost and also that they get unpacked at the receiver in order. This way of dealing with losses is usually called the end-to-end principle, where state about whether messages are transmitted or lost is kept at the end-nodes. The alternative would be to have for example routers or intermediate nodes keep track of this. However, if these intermediate nodes break down this information is lost. Furthermore, for some applications, forcing all message to arrive by all means is not desirable since it causes delays. For example, for phone calls over Skype or WhatsApp, fluctuating latencies is a bigger problem than lost messages.
Finally, the higher layer contains applications such as mail-protocols (SMTP, IMAP or POP), accessing server content (HTTP), remote login (SSH), peer-to-peer file sharing (BitTorrent) and many more.
Quantum vs Classical
What is the most fundamental operation that the current Internet provides for you? Maybe it’s showing you cat pictures on Instagram, provide you with the latest post from xkcd or simply allow you to find a recipe for how to make Boeuf Bourguignon. These are all of course important tasks, however they all rely on one fundamental operation, namely to send data from one node to another. This is what the (“classical”) Internet does.
What about the Quantum Internet? You might think that the most fundamental operation in the Quantum Internet is to send quantum data (qubits) from one node to another. However, to send a qubit by direct transmission, for example encoded as the polarization of a single photon, over large distances is not feasible due to the large probability of losing the photon in a fibre. Perhaps in the far future we will have revolutionized the fibre-technology and photons can be sent with essentially no losses, but for now this cannot be done. Instead, a qubit is transmitted from one node to another using teleportation (see figure below). As described in the blog post by Jeremy, a qubit is teleported by consuming one entangled link and sending two “classical” bits. So to send qubits, we need entangled links, which is therefore a more fundamental operation.
In the “classical” Internet messages are sent between distant nodes (internet layer) by iteratively sending this message between neighbouring nodes (link layer) along a path. Similarly, in the Quantum Internet, long distance entangled links can be constructed by combining entangled links between adjacent nodes through an operation called entanglement swap, which is the same as teleportation, only now teleported qubit is entangled with another (see figure).
As we have seen in the previous section, in the “classical” Internet the notion of a connection only occurs in the transport layer. However, in the Quantum Internet a sense of connection already takes form in the lowest layer in the form of an entangled link. Let me explain what I mean by this. A connection requires the continuous participation of two nodes. In the TCP protocol of the transport layer in the “classical” Internet a connection (also called a socket) is set up by having both nodes agree, using a three-way handshake, that data will be sent. This is different from the lower layers where when a node sends a message it can forget about it and continue with other tasks, before the message actually arrived on the other end. Similarly, entangled links in the Quantum Internet require the participation of both nodes during the whole lifetime of the link.
Apart from the fact that the notion of connections occur already in the lowest level of a stack for the Quantum Internet, other differences include:
- Entangled links (connections) can only be used once. Once an entangled pair is used, for example, to teleport a qubit, it is gone.
- Entangled links can live between nodes that are not directly connected and act as virtual connections. Arguably this is perhaps not different from the “classical” Internet where the use of, for example, VPN (virtual private network) tunnels also act as virtual connections.
- Entangled links are short-lived. There has been an incredible progress in extending the lifetime of entangled links and quantum memories here at QuTech, which can preserve qubits for around a second, are now state of the art. However, compared to the storage life of classical data, this is of course very short.
- Qubit and entangled links cannot be copied. This is due to the no-cloning theorem and prohibits amplification as a means to prevent losses.
A quantum network stack
So how will a network stack in the Quantum Internet look like? At QuTech we are currently thinking about this and I will here give a brief description on our current view. What I describe here is our proposal on what the tasks of the different layers are on an abstract level. A lot of work still remains to fine-tune this and to actually develop protocols for each layer that provide these tasks. In our recent paper we describe more in detail this functional allocation of the network stack and also present a protocol for the link layer, together with a full implementation and extensive simulations. Furthermore we currently have a draft in the research group QIRG at IRTF, where this draft aims to define the service and interface of the link layer in a quantum network.
Our current view of a quantum network stack is heavily inspired by TCP/IP and is visualized in the figure below. In this view the physical layer will be able to perform entanglement generation attempts between directly connected nodes. However, even though experimentalists recently succeeded in making the delivery of remote entanglement more robust, generating entanglement is a process which has to be tried often before it succeeds. The task of the link layer is therefore to keep state of current entanglement generation requests from higher layers and issue re-tries to the physical layer. The link layer thus provides a robust entanglement generation service between to directly connected nodes. Extending entanglement to distant nodes which are not physically connected in the network is the task of the network layer. Such long distance entanglement can be used by an application or for long-distance qubit transmission through teleportation. Whether qubit transmission requires its own layer or is just part of an application, is at this point not clear.
The Quantum Internet is no longer a distant dream but could soon become reality. At QuTech we aim to build the first universally programmable quantum network in the world, between the four Dutch cities: Delft, The Hague, Leiden and Amsterdam. This network will be a prototype and the first step in creating a larger scale quantum network and later a Quantum Internet. In our prototype network we aim to be able to showcase a full implementation of a network stack within the coming years.
About Axel Dahlberg
Axel Dahlberg is doing his PhD in the group of Stephanie Wehner at QuTech since two years back. He’s from Sweden where he did his bachelor in physics and continued with his masters in theoretical physics at ETH in Zurich, Switzerland. When he’s not thinking about how applications will communicate to hardware in the Quantum Internet using a network stack he enjoys to go climbing in all its forms.