Zheng Da

Email: zhengda1936 at gmail dot com

Project: Network virtualization for subhurds etc.

The code.

The howto shows the instructions of setting up the virtual network in hurd and subhurd.


The design and the implementation

The requirements:

The possible approach is to use the multiplexer and the filter.

The multiplexer's 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.

A filter translator is needed to enforce the policies between the interface and the pfinet server. For example, the filter can control which packets can be delivered to the pfinet server, and which packets can be sent to the network interface. The filter can also guard the network traffic and drop illegal packets (forged by some malicious users) from pfinet or some other programs.

To create a virtual network interface:

The routing inside the multiplexer:

The implementation of the filter translator:


TODO

Coding


Completed tasks

Coding

The patch of glibc (pfinet server overriding) is here.

The patch of pfinet (open the virtual network interface) is here.

The patch of pfinet (fix pfinet to use the proper filter rule) is here.

The patch of pfinet (set the mach device in the promiscuous mode) is here.

The patch of boot (open the virtual network interface) is here.

The patch of gnumach (set the network device into the promiscuous mode) is here.

the multiplexer:

the filter translator:

the proxy of the proc server:

the devnode translator:

The Code Read

Documentation Read