软件环境:ubuntu20.04 aosp
硬件环境:x86 PC
目标:在host ubuntu20.04和Android虚拟机间测试virtio-vsock

介绍

在android cuttlefish虚拟机启动已支持vsock,如vehicle hal等很多场景都使用了vsock。

测试

  1. 在host ubuntu20.04运行server demo,监听AF_VSOCK协议9999端口
 #include <sys/socket.h>
#include <linux/vm_sockets.h>
#include <string.h>
#include <stdio.h>int main()
{int s = socket(AF_VSOCK, SOCK_STREAM, 0);struct sockaddr_vm addr;memset(&addr, 0, sizeof(struct sockaddr_vm));addr.svm_family = AF_VSOCK;addr.svm_port = 9999;addr.svm_cid = VMADDR_CID_HOST;bind(s, &addr, sizeof(struct sockaddr_vm));listen(s, 0);struct sockaddr_vm peer_addr;socklen_t peer_addr_size = sizeof(struct sockaddr_vm);int peer_fd = accept(s, &peer_addr, &peer_addr_size);char buf[64];size_t msg_len;while ((msg_len = recv(peer_fd, &buf, 64, 0)) > 0) {printf("Received %lu bytes: %.*s\n", msg_len, msg_len, buf);}return 0;
}
  1. 在android虚拟机运行client demo,向AF_VSOCK协议9999端口发数据
#include <sys/socket.h>
#include <linux/vm_sockets.h>
#include <string.h>int main()
{int s = socket(AF_VSOCK, SOCK_STREAM, 0);struct sockaddr_vm addr;memset(&addr, 0, sizeof(struct sockaddr_vm));addr.svm_family = AF_VSOCK;addr.svm_port = 9999;addr.svm_cid = VMADDR_CID_HOST;connect(s, &addr, sizeof(struct sockaddr_vm));send(s, "Hello, world!", 13, 0);close(s);return 0;
}
  1. 结果

参考

https://chromium.googlesource.com/chromiumos/platform2/+/9e91613d2da1b3d6cfb1c77681444e688ce99cf4/vm_tools/docs/vsock.md

virtio-vsock相关推荐

  1. VIRTIO 前后端驱动中 GPA,HVA 转换原理

    先说几个英文缩写: GVA - Guest Virtual Address,虚拟机的虚拟地址 GPA - Guest Physical Address,虚拟机的物理地址 HVA - Host Virt ...

  2. linux 字符设备号分配状况

    字符设备主设备号范围 早期的内核字符主设备分配范围为0~255,后来由于不够用,对字符主设备号分配范围扩充到0~511,按照动态和静态申请划分情况使用,按照0~255和256~511两段进行详细划分, ...

  3. Kata Containers及相关vmm介绍

    Kata Containers介绍 Kata Containers 是轻量级虚拟机的一种新颖实现,可无缝集成到容器生态系统中. Kata Containers 与容器一样轻巧快速,并与容器管理层集成, ...

  4. vhost vsock

    Linux VM sockets in Go 1.内核版本4.8+: 2.qemu版本2.8+: 3.qemu-system-x86_64 -m 4G -hda /home/matt/ubuntuvm ...

  5. Linux镜像如何添加驱动,安装virtio驱动(Linux)

    为了确保私有镜像能正常创建启动云服务器,您需要在导入之前检查virtio驱动是否已经安装. 检查镜像内核是否支持virtio驱动 执行grep -i virtio /boot/config-$(una ...

  6. QEMU — VirtIO 的网络实现

    目录 文章目录 目录 virtio-net 前端 virtio-net 由 QEMU 完全虚拟化模拟的后端 vhost-net 处于内核态的后端 vhost-user 使用 DPDK 加速的后端 vD ...

  7. QEMU — VirtIO 虚拟化

    目录 文章目录 目录 全虚拟化 I/O 设备 准虚拟化 (Para-virtualizaiton) I/O 设备(VirtIO) VirtIO 的架构设计理念 VirtIO 在 Linux 中的实现 ...

  8. virtio后端驱动详解

    virtIO是一种半虚拟化驱动,广泛用于在XEN平台和KVM虚拟化平台,用于提高客户机IO的效率,事实证明,virtIO极大的提高了VM IO 效率,配备virtIO前后端驱动的情况下,客户机IO效率 ...

  9. Virtio:针对 Linux 的 I/O 虚拟化框架

    使用 KVM 和 lguest 的半虚拟化 I/O Linux 内核支持多种虚拟化模式,并且支持的数量随着虚拟化的进步和新模式的出现(例如 lguest)而增加.但是,让这些虚拟化模式能够在 Linu ...

  10. [FreeBSD] kvm下安装virtio驱动的freebsd

    kvm下安装客户机据说采用virtio驱动效率会高一些.不过virtio是gpl授权协议的,freebsd不会默认支持.需要用户自行编译内核.现记录过程如下 宿主机OS ubuntu 12.04 de ...

最新文章

  1. Connecting the Dots: 应用于主动单目深度估计的深度学习模型(CVPR2019)
  2. 97. Leetcode 剑指 Offer 60. n个骰子的点数 (动态规划-背包问题)
  3. 请解释Spring Bean 的生命周期?
  4. Redis实战(六):Redis的集群:AKF,主从复制的概念引入,CAP,Sentinel 哨兵
  5. 关于Config.ARGB_8888、Config.ALPHA_8、Config.ARGB_4444、Config.RGB_565的理解
  6. python接口自动化测试(七)-unittest-批量用例管理
  7. 树莓派4 PWM控制风扇转速
  8. editplus php格式化,让Editplus自动格式化css和js
  9. 使用MongoDB Compass将JSON数据文件导入MongDB
  10. 纸飞机飞行曲线matlab,从小到大只会做个纸飞机?关于折纸的「高端」技巧通通告诉你...
  11. 纬度、经度和坐标系网格
  12. 程序员创业:从有想法 - 公司注册 - 项目路演 - 一对一投资人商谈
  13. matlab保存nii_Matlab实现NIfTI(ANALYZE)核磁共振图像读写
  14. Olympiad(求区间内的美丽数)超详细 (C,C++)
  15. 在Win10系统下使用与安装metis
  16. 万花筒写轮眼画法_万花筒写轮眼画法教程
  17. 12[红+绿+蓝+Alpha]
  18. U3D_API_解析
  19. 物联网创业项目(物联网创业点子大全500个)
  20. 鸿水点评:春晚四小花旦

热门文章

  1. 虚拟系统rpc服务器不可用,TestDirector的RPC服务器不可用
  2. 当安全遇上AI 阿里聚安全算法挑战赛 队伍经验分享
  3. XDOC云服务API(七)
  4. UDP-RTP协议解析
  5. java jython 调用_如何从Jython调用由Java类执行的Java方法?
  6. ·144. 二叉树的前序遍历(前中后总结)
  7. 摩拜单车发免费月卡,会成中小玩家的噩梦吗?
  8. 云计算解决方案架构师=售前?[新职业的浅析]
  9. 软碟通制作自启动U盘并安装CentOS7系统详细教程
  10. 套接字是什么,套接字通信及其原理