快速开发路由协议原型的环境

2 投票
3 回答
1607 浏览
提问于 2025-04-16 14:36

我正在研究路由协议。目前,我用Python编写了一些模拟程序,测试一种新的协议。接下来的步骤是建立一个真实的原型,让它能够在基于Linux的操作系统上运行(像ospfd这样的路由守护进程)。

请问,哪个编程环境或语言比较适合快速构建路由协议的原型呢?有没有人有过构建分布式协议原型的经验?

我希望尽量多关注高层的协议逻辑,而不是底层的机器指令。我愿意学习新的语言(比如Erlang或Haskell),如果这些语言更适合这个任务的话。另外,我也听说过Python中的twisted框架(这可能让我重用一些代码),但我不太清楚这是否只对我编写基于客户端/服务器的协议有帮助。

有没有人知道关于(分布式)协议实现的优雅教程或示例实现?

3 个回答

1

Scapy 是一个很不错的工具。你可以在一个比较高的层面上创建数据包,并且它对添加各种协议的支持也很好。虽然不适合用在正式的生产环境中,但它非常适合用来做原型设计。

它是用 Python 写的,虽然这可能对你来说没什么特别的意义。

1

Erlang非常适合用来做逻辑原型,不需要具体的实现,同时也能用来实现能够在现实世界中运行的协议。

你不需要其他框架,只要Erlang和它自带的OTP就足够了。

即使你需要处理数据包的底层内容,Erlang也能通过它的二进制模式来帮助你,这些模式非常适合处理协议数据包。

如果你想要高性能,可以把最关键的部分放到Erlang中的“端口”里,用C语言或其他底层语言来实现。

3

如果你主要关心的是你的协议如何相互作用,而不想考虑像数据包长什么样这样的实现细节,那么Erlang可能会非常适合你。这个语言的一个重要特点就是可以在(真实或虚构的)网络上发送任意消息。所以,如果你真的只想在信息层面上工作,它对此有很好的支持。

我想用Erlang做的事情可能对实际生产环境帮助不大,但可能比用Scapy花的时间要少很多。

因为节点可以是有IP地址的主机,而消息几乎可以包含任何内容,所以用Erlang来模拟一个协议会非常简单。如果你感兴趣的话,可以通过这个链接开始学习这门语言。

撰写回答