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

相关推荐
小贾要学习5 小时前
【Linux】TCP网络通信编程
linux·服务器·网络·c++·网络协议·tcp/ip
vortex55 小时前
构建可审计、可分层、可扩展的SSH身份管理体系
网络·ssh·php
渣渣馬6 小时前
rk3588s的firfly的linux的sdk版本
linux·运维·服务器
Hello_Embed6 小时前
嵌入式上位机开发入门(十九):Socket 状态检测与断线重连
网络·单片机·网络协议·tcp/ip·嵌入式
cheems95276 小时前
[SpringMVC]Cookie 和Session 从无状态协议到状态保存实务
网络·http
Bruce_Liuxiaowei6 小时前
2026年4月第2周网络安全形势周报(3)
网络·安全·web安全
zl_dfq6 小时前
计算机网络 之 【IP协议】(IPv4报文格式、IP地址、公网IP VS 私网IP、路由VS转发)
网络·计算机网络·ip
赵优秀一一6 小时前
FastAPI 核心
linux·python·fastapi
大数据新鸟7 小时前
NIO 三大核心组件
服务器·网络·nio