28.08.2015 Views

The Design and Implementation of the Anykernel and Rump Kernels

1F3KDce

1F3KDce

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

163<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Figure 3.33: Remote client architecture. Remote clients communicate with<br />

<strong>the</strong> rump kernel through <strong>the</strong> rumpclient library. <strong>The</strong> client <strong>and</strong> rump kernel may<br />

or may not reside on <strong>the</strong> same host.<br />

run <strong>and</strong> exit independently. This independence makes it straightforward to adapt<br />

existing programs as rump kernel clients, <strong>and</strong> as we will see later in this section,<br />

allows existing binaries to use services from a rump kernel without recomplication.<br />

For example, it is possible to configure an unmodified Firefox browser to use a<br />

TCP/IP stack provided by a rump kernel.<br />

<strong>The</strong> general architecture <strong>of</strong> remote rump clients is illustrated in Figure 3.33. It is<br />

explained in detail in <strong>the</strong> following sections.<br />

Communication is done using host sockets. Currently, two protocol families can<br />

be used for client-server communication: Unix domain sockets <strong>and</strong> TCP/IP. <strong>The</strong><br />

advantages <strong>of</strong> Unix domain sockets are that <strong>the</strong> available namespace is virtually<br />

unlimited <strong>and</strong> it is easy to bind a private server in a local directory without fear <strong>of</strong><br />

a resource conflict. Also, it is possible to use host credentials (via chmod) to control<br />

who has access to <strong>the</strong> server. <strong>The</strong> TCP method does not have <strong>the</strong>se advantages —<br />

in <strong>the</strong> general case it is not possible to guarantee that a predefined port is not in use<br />

— but TCP does work over <strong>the</strong> Internet. Generally speaking, Unix domain sockets<br />

should be used when <strong>the</strong> server <strong>and</strong> client reside on <strong>the</strong> same host.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!