diff options
author | GNU Hurd wiki engine <web-hurd@gnu.org> | 2008-06-13 21:18:54 +0000 |
---|---|---|
committer | GNU Hurd wiki engine <web-hurd@gnu.org> | 2008-06-13 21:18:54 +0000 |
commit | 464f3345e6f416558ac954205145d998ec2e773c (patch) | |
tree | 5ba1ddf88df86e284f7cd881f85660b4eb750552 /community | |
parent | 435f3e1ea739ed2cea8099ab3ccbadd234232893 (diff) |
web commit by zhengda
Diffstat (limited to 'community')
-rw-r--r-- | community/da.mdwn | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/community/da.mdwn b/community/da.mdwn index 56a006b0..82df8569 100644 --- a/community/da.mdwn +++ b/community/da.mdwn @@ -6,9 +6,32 @@ Project: Network virtualization for subhurds etc. The [code](http://www.assembla.com/spaces/VNetHurd/trac_subversion_tool). -The design and implementation of [hypervisor](http://www.assembla.com/wiki/show/VNetHurd/The_design_of_hypervisor). +--- + +## The design and implementation of hypervisor + +### The requirements: +to implement a mechanism which help pfinet servers communicate with each other. For example, if pfinet 1 has IP A and pfinet 2 has IP B, the packet sent by pfinet 1 with destination address IP B should be received by pfinet 2. +Sub-hurd should be able to use this mechanism to communicate with each other. +Meanwhile this mechanism should allow non-privileged the user to start his own pfinet. + + +### The possible approach is to create a hypervisor whose roles are: + 1. to create some virtual network interface, so pfinet can send packets to it. + 2. to receive the packet from pfinet, and forward the packet to other pfinets in hurd + 3. or forward the packet to the real network device in the kernel and send it to the network. + 4. to guard the network traffic and filter illegal packets (forged by some malicious users) from pfinet or some other programs. + + +### To create a virtual network interface: +Implement the RPC interface defined in device.defs just as "boot" does. +Publish the port, so other programs can get the port and open the virtual device by calling device_open(). The hypervisor now works as a translator and other programs can get the port by calling file_name_port(). + +(to be continued) + +--- -The [schedule](http://www.assembla.com/wiki/show/b0f44qnbmr3AN4ab7jnrAJ/The_schedule_for_hypervisor). +The schedule --- |