QNX 网络模型

QNX为黑莓提供的支持多虚拟机主机模型的汽车电子系统,整体采用微内核架构配置为RTOS系统。其中QNX提供了独立的网络模型,以运行在userspace的网络协议栈搭配相应的网卡驱动为整个系统提供网络服务。

目前QNX支持两种协议栈,分别为io-sock和io-pkt. io-sock默认集成在8.0以上版本的qnx系统;io-pkt则集成在7.1系统之前。其中io-sock不向前兼容io-pkt且不向前兼容任何io-pkt配套的组件如:ping、sshd、tcpdump、iperf、ssh等。下边是io-sock的大体结构:

io-sock协议栈目前仅支持以太网以及以usb、pcie、phy三种形式物理转换的以太网接口,但是目前不会支持所有类型的厂商。

启动io-sock

集成io-sock可以参考qnx官方原文档,这里介绍如何启动io-sock(仅限arm架构,x86架构下的qnx会有一定区别),启动指令如下:

复制代码
io-sock -m phy -m pci -usb -d dwceqos -d em -d axge

其中m表示协议栈依赖的module,如使用phy作为以太网物理接口需要依赖对应的phy驱动。同理如果使用pci转换以太网的物理接口需要依赖pci驱动以及pci-server服务。

其中d表示对应网卡驱动类型,如em为pci转换网卡对应的winyao驱动。axge为usb转换网卡对应的Asix驱动。

上网功能配置

QNX系统中设备通过以太网访问internet需要配置ip,这里QNX提供了dhclient用于作为DHCP client提供dhcp服务。用于分配ip地址,网关 mask dns等。

默认运行方案:./dhclient

QNX提供了ssh服务组件,可以通过ssh协议与外部设备通过网络交换数据,这里需要启动sftp-server以及sshd服务。同时配置sshd_config提供相应的ssh key. 这里给一个参考配置:生成类型为ed25519以及ecdsa两种类型的key。

复制代码
ssh-keygen -t ed25519 -f ssh_host_ed25519_key -N ''
ssh-keygen -t ecdsa -b 521 -f ssh_host_ecdsa_key -N ''

虚拟机上网模型

QNX支持多虚拟运行,如linux 、android、类linux系统等。QNX提供qvm服务提供虚拟机运行环境的支持,且可以控制虚拟机的运行状态。那么虚拟机想要通过以太网上网仅需要打开虚拟网络配置,如linux的virtio_net ->y,就可以使用以太网服务eth0.

QNX作为主机端,需要单独为某个虚拟机提供网络,需要设定一个独立的桥(bridge0)为虚拟机提供路由服务。为了网络的隔离足够从分,每个虚拟机需要额外配置一个虚拟网卡(vp)作为桥接的中继。

如上图,实际上host是给虚拟机分配了一个vp0作为虚拟网但是vp0严格来说是工作在主机测的,如果直接让虚拟机的eth0和vp0通信,那么主机与虚拟机中间网络的隔离就会显的不那么彻底。所以host额外在虚拟机的空间配分配了一个p2p接口与vp0进行数据的完全接受。这里p2p是虚拟网卡的节点,并不是任何类型的网卡设备。

参考虚拟网络配置如下:

复制代码
vdev virtio-net
  loc 0x1c0c0000
  intr gic:40
  mac **:**:**:**:**:**
  name p2p
  peer /dev/vdevpeers/vp0

上网配置参考qnx8.0官方文档:Guest-to-host

相关推荐
扛枪的书生13 分钟前
TigerVNC 安装流程
linux
Mortalbreeze19 分钟前
深入 Linux Socket 编程:端口号、网络字节序与 struct sockaddr 详解
linux·服务器·网络·c++
躺柒34 分钟前
读半导体简史08大型机
linux·服务器·c语言·数据库·unix·ibm
井川廊咏40 分钟前
【总集篇】Linux | 如何创建一个 home 目录在 /data 磁盘的 sudo 用户(补档)
linux·运维·服务器
Kina_C1 小时前
LVS负载均衡的十二种核心调度算法
linux·运维·算法·负载均衡·lvs
shencz20001 小时前
用bc脚本求解大质数
linux
AOwhisky1 小时前
Linux(CentOS)系统管理入门笔记(第十五期)——文件系统与存储管理(上篇):设备识别、挂载与文件查找
linux·运维·笔记·centos·文件系统
寒水馨1 小时前
Linux下载、安装 Bun v1.3.14(附安装包bun-linux-x64.zip)
linux·javascript·typescript·node.js·bun·运行时·包管理器
AI产品库2 小时前
从沙盒到生产库:OpenAI GPT-5.6 Sol 在评测中自主入侵 Hugging Face
网络·gpt
Dear~yxy3 小时前
LVS企业级实战
linux·服务器·lvs