Currently, the usual way to communicate with VM instances in the cloud from outside is ssh. This is okay for most uses, but a) does not work when you mess up with the guest's ability to network and b) requires a free floating IP.

I wonder if, for qemu/kvm instances, it would be possible to use virtio-serial possibilities : from the guest, it is seen as a serial port, and from the outside, it is seen as a UNIX socket, or as something else. It is fast, as it does not go through virtualization and device drivers.

Maybe that exists already, or people are already working on it. Maybe that's what they already use for the "console" in the cloud dashboard (or do they use VNC?). I did not investigate much yet. That seems to be a complicated hackweek project, so perharps it will not get past the investigation phase.

If it succeeds, it will have an immediate appication for SLEnkins cloud backend (virtio already works for the local backend).

Looking for mad skills in:

virtio openstack

This project is part of:

Hack Week 12 Hack Week 14

Activity

  • about 2 years ago: thehejik liked virtio-serial in OpenStack
  • almost 3 years ago: dmaiocchi joined virtio-serial in OpenStack
  • almost 3 years ago: cwickert liked virtio-serial in OpenStack
  • almost 3 years ago: dguitarbite joined virtio-serial in OpenStack
  • almost 3 years ago: evshmarnev liked virtio-serial in OpenStack
  • Show History

    Comments

    • vuntz
      about 4 years ago by vuntz | Reply

      Have you seen http://blog.oddbit.com/2014/12/22/accessing-the-serial-console-of-your-nova-servers/ ?

    • ebischoff
      over 3 years ago by ebischoff | Reply

      No I didn't. Well, virtio-serial is not the same as the serial console. But there might be some knowledge to reuse. Thanks for the pointer.

    • dmaiocchi
      almost 3 years ago by dmaiocchi | Reply

      @eric, i woul edit in the description what is our goal by this hackweek: use virtio with twopence/SLEnkins instead of ssh on Cloud, for testing-qa-automation. ! :)

      • ebischoff
        almost 3 years ago by ebischoff | Reply

        please do (but just add, don't remove or change)

    • ebischoff
      almost 3 years ago by ebischoff | Reply

      OK, first results. I have been able to create a virtio channel in a cloud instance. It is commanded by a new setting in the cloud flavour, hw_channel:enabled set to True or to False.

      Now a few problems remain:

      • unicity: choose the name of the UNIX domain socket outside of the VM so each instance has its own
      • housekeeping: remove the socket when instance goes down
      • communication: how to communicate with the socket, given that the socket is on the compute node and the program wanting to use it is likely to be outside of the cloud

      The third problem might be solved by using socat running in background or a handmade proxy (testbus approach). Or by not using UNIX domain sockets :-) but e.g. TCP sockets. This needs investigation and will be next step.

      I'll create a project in gitlab to save my code and document my findings.

    • ebischoff
      almost 3 years ago by ebischoff | Reply

      here is the gitlab repo

    • e_bischoff
      almost 3 years ago by e_bischoff | Reply

      I made it listen on a TCP port. Now I need to forward somehow this port to the outside.

    Similar Projects

    This project is one of its kind!