在Linux上实现x.224 OSI COTS协议的最佳方式是什么



我需要让运行2.6.12.1内核的旧Linux盒子与使用的旧计算机通信

ISO 8602数据报(无连接服务)1987 12 15(第1版)
ISO 8073 Class 4(面向连接的服务)
这些都使用"非活动网络层"子集。(我确信这意味着我不必担心路由问题。两个端点正在用它们的mac地址互相攻击。)

我有一个内核模块来实现无连接部分。为了使面向连接的服务能够运行,什么是最好的方法?我一直在采用这样的方法,通过引用tcp实现,将结构proto_ops.connect、.accept和.elisten函数添加到我现有的无连接驱动程序中。

也许还有更好的方法?我花了很多时间试图决定tcp代码在做什么,然后决定这是否与我的需求相关。例如,不需要Nagle算法,因为我没有传输的小数据。此外,我可能不需要很多错误恢复和流控制的东西,因为我知道两个端点正在传输的数据以及它们传输的频率。我的计划是首先通过任何简单的(如果有的话)数据包重传、排序,等等。到了我的wireshark看起来与我从实时系统中捕捉到的wireshark相似的程度。然后针对真实的东西尝试我的,然后添加任何错误恢复/重新传输的东西。换句话说,试图确定我想要复制的tcp/流实现的核心是什么,而不是我可能永远不需要的额外纠错/流控制,这是一件非常痛苦的事情。

我找到了\net\core\stream.c,上面写着:
*通用流处理例程。这些对于大多数
*协议都是通用的。甚至IP。今晚8-)
*之所以使用此选项,是因为TCP、LLC(其他层)都有大部分
*相同的sendmsg()和recvmsg()代码
*所以我们(将)在这里分享。

这向我暗示,也许我可以从一个更简单的流开始。有人能推荐一个更基本的流驱动程序而不是tcp吗?

有没有提供基本流实现的示例代码?

我制作了一个用户级库来实现协议,提供了我自己的open/read/write/select等版本。如果有人关心,你可以在http://pnwsoft.com

不要尝试使用openss7。这完全是在浪费时间。

最新更新