WHO 与 Protobuf

YANG vs Protobuf

我们正在尝试对网络设备的配置进行建模。该模型将非常分层。在 Yang 和 Protobuf 中编写模型的优缺点是什么?

TL;DR:如果您想利用真正的 NW 管理标准,请选择 YANG 和 NETCONF/RESTCONF。如果您的用例非常具体并且您想更快地取得进展,那么请使用 Protocol Buffers。

如果您的设备将由各种网络管理工具进行管理,那么使用 YANG 进行建模并在设备中放置第 3 方 NETCONF 代理(如 TailF ConfD)可能会有所帮助。你的工作是 "just" 定义你的模型并将设备内部与代理集成。 YANG 和 NETCONF/RESTCONF 是实际的网络管理标准,因此您的设备将与许多已经支持 YANG 和 NETCONF 的管理工具兼容。所以,选择YANG,您可能真的为您的设备打开了商机。

您可以像predi建议的那样选择使用YANG创建模型,然后开发一种自动将这些模型转换为protobuf模型的方法。通过这种方式,您可以使用 protobuf 在运行时利用高级 YANG 建模和快速紧凑的通信。对于开源项目来说,这听起来像是一个非常有趣的想法(人们已经想到 some extent),但它需要大量的努力,如果没有这两种技术的专业知识,将很难实现。请注意,您永远无法通过自己混合使用 YANG 和 protobuf 来获得第一种方法的好处,因为在 NW 管理世界中不会有这样的标准。

如果您的重点是时间并且只想编码,那么我个人建议使用 clean protobuf。这将使您的解决方案更简单,并且您可以充分利用大型 protobuf 社区。当然,YANG 有优势,它与真正的 NW 管理协议密切相关,但它也很复杂且不太受欢迎,因此您可能会迷失在它的所有特性中。