Hi,

tl;dr you can now use standard tools such as ifconfig, sysctl, netstat, 
ls, dd, etc. to remotely observe and control bare metal rump kernels

Rump kernels support remote system calls ("sysproxy"), meaning that 
clients issuing the syscalls may reside on different hosts than the rump 
kernel.  (if you're not familiar with the concept, read the "Getting 
started" link from rumpkernel.org; if you really want to get familiar 
with the concept, read section 3.12 from the first edition of 
book.rumpkernel.org).

Some time ago we were chatting with Martin about better visibility into 
what was going in a rumprun-xen guest at runtime.  With rump kernels 
running on top of POSIX userspace, you can readily use remote system 
calls for that effect.  The remote system calls were designed to operate 
using out-of-band transport, so in userspace they simply use _host_ 
sockets (i.e. not the rump kernel networking stack ... since one might 
not even exist).  Therefore, I was thinking we'd hack up some xenbus 
transport for it.  However, I now realized the existing sockets 
transport implementation could work on _top_ of the rump kernel guest. 
Of course, there's one obvious limitation with a non-out-of-band 
solution: you can't configure the management networking interface that way.

So I hacked it up, and it appears to work as postulated.  Support is 
available for baremetal (my Xen Dom0 is still AWOL); as a side-effect, 
baremetal grew support for pthreads.  If you want to play with sysproxy 
on bare metal, compile rumprun-baremetal with "make SYSPROXY=y", then 
use rumpremote from rumprun-posix as normal with RUMP_SERVER set to 
"tcp://guestip:12345".  Note that your rump kernel has to run on the 
same machine architecture as your remote clients (Unix is not Plan9, 
though as observable, it gets us 98% there without rewriting a single 
line of code).

Short transcript, including a demonstration of the obvious limitation, 
follows -- yes, you can have >1 guest interfaces and dedicate one to 
management, but you still need to be careful.

enjoy & happy holidays
   - antti

rumpremote (tcp://10.181.181.181:12345)$ sysctl kern.hostname
kern.hostname = rump-baremetal
rumpremote (tcp://10.181.181.181:12345)$ ls -l
total 2
drwxr-xr-x  2 0  0  512 Jan  1 00:00 dev
drwxrwxrwt  2 0  0  512 Jan  1 00:00 tmp
rumpremote (tcp://10.181.181.181:12345)$ ifconfig -a
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192
        inet 127.0.0.1 netmask 0xff000000
vioif0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        ec_capabilities=1<VLAN_MTU>
        ec_enabled=0
        address: 52:54:00:12:34:57
        inet 10.181.181.181 netmask 0xffffff00 broadcast 10.181.181.255
rumpremote (tcp://10.181.181.181:12345)$ ifconfig vioif0 down
helloooo??? ;)
^C

------------------------------------------------------------------------------
Dive into the World of Parallel Programming! The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net
_______________________________________________
rumpkernel-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rumpkernel-users

Reply via email to