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

时间:2015-04-25 01:12:32

标签: linux tcp kernel protocols osi

我需要创建一个运行2.6.12.1内核的旧Linux机箱与使用以下代码的旧计算机进行通信:

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

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

也许有更好的方法?我花了很多时间来决定tcp代码在做什么,然后决定这是否与我的需求相关。例如,不需要Nagle算法,因为我没有传输少量数据。此外,可能有很多错误恢复和流量控制的东西,我不需要,因为我知道两个端点正在传输的数据以及它们传输它的频率。我的计划是先用任何简单的(如果有的话)数据包重传,排序等实现这一点,直到我的wireshark看起来类似于我从实时系统中获取的wireshark。然后尝试反对真实的东西,然后添加任何错误恢复/重新传输的东西似乎是必要的。换句话说,后方的痛苦是试图确定我要复制的tcp / stream实现的内容与我可能永远不需要的额外错误纠正/流控制内容。

我找到了\ net \ core \ stream.c,其中说:
 *通用流处理例程。这些是大多数的通用  *协议。甚至IP。今晚8-)。
 *这是因为TCP,LLC(其他人)层都大部分都是  *相同的sendmsg()和recvmsg()代码  *所以我们(将)在这里分享。

这向我建议,也许可以有一个更简单的流,我可以从中开始。有人可以推荐一个我应该从tcp开始的更基本的流驱动程序吗?

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

1 个答案:

答案 0 :(得分:0)

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

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