关于xenomai3 RTnet的一点记录

简介: Xenomai3的RTnet协议栈支持TCP和UDP,但不包括IGMP,且ARP支持有限,可能导致延迟或错误。服务端仅允许单个客户端连接。启用`CONFIG_XENO_DRIVERS_NET_ADDON_PROXY_ARP`时,RTnet与rtproxy MAC相同,否则rtproxy不支持ARP。TCP/IP的实时性不足,但Xenomai4的EVL核聚焦二层实时网络。更多详情见链接。
  1. xenomai3协议栈RTnet支持TCP、UDP,但不支持IGMP;
  2. 对ARP支持有限制:地址解析的延迟会影响数据包传输延迟,RTnet为实时性考虑,路由表设计静态的,只在设置期间配置,或者接收到其他机器A发出的的ARP请求才会将A的路由信息添加到路由表。如果我们访问的IP是未知目标MAC地址,不会发出解析请求,直接报错。如果我们不能配置路由表,这会影响我们作为客户端去连接服务端时,出现找不到服务端。
  3. RTnet TCP作为服务端时,每个服务端端口同时只允许一个客户端连接,这算是什么服务端!!!!
  4. 关于CONFIG_XENO_DRIVERS_NET_ADDON_PROXY_ARP配置说明:
  • CONFIG_XENO_DRIVERS_NET_ADDON_PROXY_ARP启用时:

    • rtproxy 与rtnet设备MAC地址相同

    • RTnet接收的ARP请求由linux接收处理,但rtnet接收到ARP回复会记录到rtroute表中

      即若没有启用rtproxy ,无法ping通rtnet的IP

    • linux路由表

    • rtping不能使用,只能使用linux ping

    • linux发送时,直接通过rtnet网卡发送

    • 对于每一个IP帧,先检查rtnet是否接收,rtnet不接收才转发给rtproxy ,对于rtnet不支持的ip协议,直接转发

  • CONFIG_XENO_DRIVERS_NET_ADDON_PROXY_ARP关闭后:

    • rtproxy 设备MAC地址为 0:0:0:0:0:0,且不支持ARP(dev->flags |= IFF_NOARP),rtproxy 设备不支持组播。
    • RTnet接收的ARP请求由RTnet处理并回复
    • linux发送时,先查询rtroute,然后修改linux发送的数据包,源MAC修改为rtnet设备的MAC,目的MAC为路由表中获取(缺点是rtroute的路由表是静态的)
  1. TCP/IP本就不是实时的,xenomai3全部用rtnet实现可用性太低,但在实际实时以太网应用中,基本只用到二层实时网络收发,不涉及三层及以上协议,所以xenomai4中evl核中基于linux扩展,实时只支持raw packet是非常正确的做法!

更多信息参见:https://source.denx.de/Xenomai/xenomai/-/wikis/RTnet_Basics

目录
相关文章
|
算法 Linux 调度
xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(一)--实时端socket创建流程
xenomai与普通linux进程之间通讯XDDP(一)--实时端socket创建流程
753 1
xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(一)--实时端socket创建流程
|
存储 Ubuntu Linux
xenomai3+linux构建linux实时操作系统-基于X86_64和arm
Xenomai是一个实时性解决方案,通过在Linux上添加实时内核Cobalt来增强实时性能。它有三个主要部分:libcobalt(用户空间实时库)、Cobalt(内核空间实时内核)和硬件架构特定层(ipipe-core或dovetail)。ipipe-core适用于Linux 5.4以下版本,而dovetail用于5.4及以上版本。本文介绍了在X86 Ubuntu环境下,如何编译Xenomai内核,搭建应用环境,包括配置、编译、安装和实时性测试。对于其他硬件架构,如ARM和ARM64,步骤类似。文章还提到了Xenomai与Linux内核版本的兼容性和实时性测试结果。
1411 0
xenomai3+linux构建linux实时操作系统-基于X86_64和arm
|
Linux 测试技术 API
xenomai内核解析之xenomai初探
本文是关于Xenomai实时操作系统的初探,Xenomai是一个实时性增强的Linux系统,它通过实时内核和用户空间库提供硬实时性能。Xenomai 3主要由实时内核Cobalt、实时驱动模型RTDM、用户空间库libcobalt等组成,支持两种构建实时系统的方式:Cobalt和Mercury。Cobalt在内核空间与标准Linux内核并存,通过I-Pipe处理中断,确保实时任务的执行。Mercury则是通过修改Linux内核实现。
1161 0
xenomai内核解析之xenomai初探
|
存储 缓存 Linux
xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(三)--实时与非实时数据交互
本文介绍了Xenomai中的XDDP(Xenomai Distributed Data Protocol)通信机制,XDDP用于实时和非实时进程之间的数据交换。XDDP在Xenomai内核中涉及的数据结构和管理方式,以及创建XDDP通道后的实时端和非实时端连接过程。
594 0
xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(三)--实时与非实时数据交互
|
存储 网络协议 算法
TCP的局限性
【8月更文挑战第20天】
498 3
|
缓存 算法 Linux
xenomai /PREEMPT-RT 实时性优化指南
xenomai /PREEMPT-RT 实时性优化指南
771 0
xenomai /PREEMPT-RT 实时性优化指南
|
消息中间件 测试技术 Linux
linux实时操作系统xenomai x86平台基准测试(benchmark)
本文是关于Xenomai实时操作系统的基准测试,旨在评估其在低端x86平台上的性能。测试模仿了VxWorks的方法,关注CPU结构、指令集等因素对系统服务耗时的影响。测试项目包括信号量、互斥量、消息队列、任务切换等,通过比较操作前后的时戳来测量耗时,并排除中断和上下文切换的干扰。测试结果显示了各项操作的最小、平均和最大耗时,为程序优化提供参考。注意,所有数据基于特定硬件环境,测试用例使用Alchemy API编写。
1257 0
linux实时操作系统xenomai x86平台基准测试(benchmark)
|
存储 网络协议 Linux
RTnet – 灵活的硬实时网络框架
本文介绍了开源项目 RTnet。RTnet 为以太网和其他传输媒体上的硬实时通信提供了一个可定制和可扩展的框架。 本文描述了 RTnet 的架构、核心组件和协议。
457 0
RTnet – 灵活的硬实时网络框架
|
Linux 编译器 调度
xenomai内核解析--双核系统调用(二)--应用如何区分xenomai/linux系统调用或服务
本文介绍了如何将POSIX应用程序编译为在Xenomai实时内核上运行的程序。
390 1
xenomai内核解析--双核系统调用(二)--应用如何区分xenomai/linux系统调用或服务
|
Linux API 调度
xenomai内核解析-xenomai实时线程创建流程
本文介绍了linux硬实时操作系统xenomai pthread_creta()接口的底层实现原理,解释了如何在双内核间创建和调度一个xenomai任务。本文是基于源代码的分析,提供了详细的流程和注释,同时给出了结论部分,方便读者快速了解核心内容。
362 0
xenomai内核解析-xenomai实时线程创建流程