Changes between Version 8 and Version 9 of VirtualBox


Ignore:
Timestamp:
May 14, 2009, 3:49:15 PM (15 years ago)
Author:
Nicolas
Comment:

Fix formatting and some typos

Legend:

Unmodified
Added
Removed
Modified
  • VirtualBox

    v8 v9  
    1010 1. License. Its OSE (Open Source Edition) is published under the GPL v.2, but
    1111 even the non-libre version -PUEL,
    12  [http://www.virtualbox.org/wiki/VirtualBox_PUEL Personal Use and Evaluation
    13  License]- could be used for our purposes, but that's something to be checked
     12 [http://www.virtualbox.org/wiki/VirtualBox_PUEL Personal Use and Evaluation License]
     13 - could be used for our purposes, but that's something to be checked
    1414 by someone who actually knows something about licensing, unlike myself.
    1515 1. Faster and "less painful" installation process, partly due to its lighter
     
    7373licensing. However, it lacks support for direct interacting with the guest
    7474appliance: there are no equivalents to VIX's `CopyFileFromGuestToHost`,
    75   `RunProgramInGuest`, etc. related to the seven points summarizing the
    76   requirements. This inconvenience can nevertheless be addressed as mentioned
    77   with certain additional benefits and no apparent drawbacks.
     75`RunProgramInGuest`, etc. related to the seven points summarizing the
     76requirements. This inconvenience can nevertheless be addressed as mentioned
     77with certain additional benefits and no apparent drawbacks.
    7878
    7979
     
    120120  [[Image(STOMPArchV2.png)]]
    121121
    122   === Network Setup ===
    123 
    124   In the previous diagram, it was implied that both host and guests were
    125   already connected to a common broker. This is clearly not the case upon startup. Both the
    126   host and the guests need to share some knowledge about the broker's location, if it's going
    127   to be running on an independent machine. Otherwise, it can be assumed that it listens on the
    128   host's IP. Moreover, this can always be assumed if an appropriate port forwarding mechanism
    129   is put in place in the host in order to route the connections to the broker.
    130  
    131   The recent release of the 2.2 series of !VirtualBox is a very convenient one: the newly introduced
    132   host-only networking feature fits our needs like a glove. From
    133   [http://download.virtualbox.org/virtualbox/2.2.2/UserManual.pdf the manual] (section 6.7):
     122=== Network Setup ===
     123
     124In the previous diagram, it was implied that both host and guests were
     125already connected to a common broker. This is clearly not the case upon startup. Both the
     126host and the guests need to share some knowledge about the broker's location, if it's going
     127to be running on an independent machine. Otherwise, it can be assumed that it listens on the
     128host's IP. Moreover, this can always be assumed if an appropriate port forwarding mechanism
     129is put in place in the host in order to route the connections to the broker.
     130
     131The recent release of the 2.2 series of !VirtualBox is a very convenient one: the newly introduced
     132host-only networking feature fits our needs like a glove. From
     133[http://download.virtualbox.org/virtualbox/2.2.2/UserManual.pdf the manual] (section 6.7):
    134134
    135135    Host-only networking is another networking mode that was added with version 2.2
     
    148148    can be intercepted.
    149149   
    150   That is to say, we have our own virtual "ethernet network". On top of that, !VirtualBox
    151   provides an easily configurable DHCP server that makes it possible to set a fixed IP for the
    152   host while retaining a flexible pool of IPs for the VMs.
    153   Thanks to this feature, there is no exposure at all: not only do the used IPs belong to a private
    154   intranet IP range, but the interface itself is purely virtual.
    155 
    156 
    157   === Command Execution ===
    158   Requesting the execution of a program contained in the guest fit nicely into an async.
    159   message passing infrastructure: a tailored message addressed to the guest we want to
    160   run the command on is published, processed by this guest and eventually answered back
    161   with some sort of status (maybe even periodically in order to feedback about progress).
    162 
    163   Given the subscription-based nature of the system, several guests can be addressed at
    164   once by a single host, triggering the execution of commands (or any other action
    165   covered by this mechanism) in a single go. Note that neither the hosts nor the
    166   (arbitrary number of) guests need to know how many of the latter conform the system:
    167   new guest instances need only subscribe to these "broadcasted" messages on their own
    168   to become part of the overall system. This contributes to the ''scalability'' of the system.
    169 
    170 
    171   === File Transfers ===
    172   This is a trickier feature: transfers must be bidirectional, yet we want to avoid any kind
    173   of exposure or (complex) configuration.
    174 
    175   The proposed solution takes advantage of the [http://www.cse.nd.edu/~ccl/software/chirp/ Chirp protocol and set of tools].
    176   This way, we don't even require privileges to launch the server instances. Because
    177   the file sharing must remain private, the chirp server is run on the guests. The host agent
    178   would act as a client that'd send or retrieve files. We spare ourselves from all the
    179   gory details involved in the actual management of the transferences, delegating the job
    180   to chirp (which deals with it brilliantly, by the way).
    181 
    182   The only bit missing in this argumentation is that the host needs to be aware of the guests'
    183   IP addresses in order to communicate with these chirp servers. This is a no-issue, as the
    184   custom STOMP-based protocol implemented makes it possible for the guests to "shout out" their
    185   details so that the host can keep track of every single one of them.
    186 
    187 
    188   === Open Questions ===
    189   * Where should the broker live? Conveniently on the same machine as the hypervisor or on
    190     a third host? Maybe even a centralized and widely known (ie, standard) one? This last option
    191     might face congestion problems, though.
    192   * Broker choice. Full-fledged ([http://activemq.apache.org/ ActiveMQ]) or more limited but lighter?
    193     (ie, [http://www.germane-software.com/software/Java/Gozirra/ Gozirra]). On this
    194     question, unless a centralized broker is universally used, the lighter version largely suffices.
    195     Otherwise, given the high load expected, a more careful choice should be made.
     150That is to say, we have our own virtual "ethernet network". On top of that, !VirtualBox
     151provides an easily configurable DHCP server that makes it possible to set a fixed IP for the
     152host while retaining a flexible pool of IPs for the VMs.
     153Thanks to this feature, there is no exposure at all: not only do the used IPs belong to a private
     154intranet IP range, but the interface itself is purely virtual.
     155
     156
     157=== Command Execution ===
     158Requesting the execution of a program contained in the guest fit nicely into an async.
     159message passing infrastructure: a tailored message addressed to the guest we want to
     160run the command on is published, processed by this guest and eventually answered back
     161with some sort of status (maybe even periodically in order to feedback about progress).
     162
     163Given the subscription-based nature of the system, several guests can be addressed at
     164once by a single host, triggering the execution of commands (or any other action
     165covered by this mechanism) in a single go. Note that neither the hosts nor the
     166(arbitrary number of) guests need to know how many of the latter conform the system:
     167new guest instances need only subscribe to these "broadcasted" messages on their own
     168to become part of the overall system. This contributes to the ''scalability'' of the system.
     169
     170
     171=== File Transfers ===
     172This is a trickier feature: transfers must be bidirectional, yet we want to avoid any kind
     173of exposure or (complex) configuration.
     174
     175The proposed solution takes advantage of the [http://www.cse.nd.edu/~ccl/software/chirp/ Chirp protocol and set of tools].
     176This way, we don't even require privileges to launch the server instances. Because
     177the file sharing must remain private, the chirp server is run on the guests. The host agent
     178would act as a client that'd send or retrieve files. We spare ourselves from all the
     179gory details involved in the actual management of the transfers, delegating the job
     180to chirp (which deals with it brilliantly, by the way).
     181
     182The only bit missing in this argumentation is that the host needs to be aware of the guests'
     183IP addresses in order to communicate with these chirp servers. This is a no-issue, as the
     184custom STOMP-based protocol implemented makes it possible for the guests to "shout out" their
     185details so that the host can keep track of every single one of them.
     186
     187
     188=== Open Questions ===
     189 * Where should the broker live? Conveniently on the same machine as the hypervisor or on
     190   a third host? Maybe even a centralized and widely known (ie, standard) one? This last option
     191   might face congestion problems, though.
     192 * Broker choice. Full-fledged ([http://activemq.apache.org/ ActiveMQ]) or more limited but lighter?
     193   (ie, [http://www.germane-software.com/software/Java/Gozirra/ Gozirra]). On this
     194   question, unless a centralized broker is universally used, the lighter version largely suffices.
     195   Otherwise, given the high load expected, a more careful choice should be made.
    196196
    197197
     
    217217of the tools/libraries it provides.
    218218
    219   === Overview ===
    220   Upon initialization, guests connect to the broker, that's expected to listen on the
    221   default STOMP port 61613 at the guest's gateway IP.
    222   Once connected, it "shouts out" he's joined the party, providing a its unique id (see
    223   following section for details). Upon reception, the BOINC host notes down this unique id for
    224   further unicast communication (in principle, other guests don't need this information). The
    225   host acknowledges the new guest (using the STOMP-provided ack mechanisms).
    226 
    227 
    228   === Unique Identification of Guests ===
    229   The preferred way to identify guests is based simply on their IP.
    230 
    231 
    232   === Tailor-made STOMP Messages ===
    233   The whole custom made protocol syntax is encapsulated in the
    234   classes of the "words" package. Each of these words correspond
    235   to this protocol's commands, which are always encoded as
    236   the first single word of the exchanged STOMP messages.
    237 
    238   It is the !MsgInterpreter class responsability to "interpret"
    239   the incoming STOMP messages and hence route them towards
    240   the appropriate "word" in order to perform the corresponding
    241   action.
     219=== Overview ===
     220Upon initialization, guests connect to the broker, that's expected to listen on the
     221default STOMP port 61613 at the guest's gateway IP.
     222Once connected, it "shouts out" he's joined the party, providing a its unique id (see
     223following section for details). Upon reception, the BOINC host notes down this unique id for
     224further unicast communication (in principle, other guests don't need this information). The
     225host acknowledges the new guest (using the STOMP-provided ack mechanisms).
     226
     227
     228=== Unique Identification of Guests ===
     229The preferred way to identify guests is based simply on their IP.
     230
     231
     232=== Tailor-made STOMP Messages ===
     233The whole custom made protocol syntax is encapsulated in the
     234classes of the "words" package. Each of these words correspond
     235to this protocol's commands, which are always encoded as
     236the first single word of the exchanged STOMP messages.
     237
     238It is the !MsgInterpreter class responsibility to "interpret"
     239the incoming STOMP messages and hence route them towards
     240the appropriate "word" in order to perform the corresponding
     241action.
    242242
    243243  The "words" considered so far are:
     
    334334
    335335== Miscelaneous Features ==
    336   * Multiplatform: it runs wherever a python runtime is available. All
    337   the described dependencies are likewise portable.
    338   * Fully asynchronous. Thanks to the usage of the Twisted framework, the
    339   whole system developed is seamlessly multithreaded, even though no
    340   threads are used (in the developed code at least). Instead, all the
    341   operations rely on the asynchronous nature of the Twisted mechanism,
    342   about which details are given
    343   [http://twistedmatrix.com/projects/core/documentation/howto/async.html here].
     336 * Multiplatform: it runs wherever a python runtime is available. All
     337   the described dependencies are likewise portable.
     338 * Fully asynchronous. Thanks to the usage of the Twisted framework, the
     339   whole system developed is seamlessly multithreaded, even though no
     340   threads are used (in the developed code at least). Instead, all the
     341   operations rely on the asynchronous nature of the Twisted mechanism,
     342   about which details are given
     343   [http://twistedmatrix.com/projects/core/documentation/howto/async.html here].
    344344
    345345== Prototype ==
     
    364364    completely operate with the wrapped VM-based computations.
    365365
    366 
    367