我们正在尝试对网络设备的配置进行建模。该模型将非常分层。在 Yang vs Protobuf 中编写模型的优缺点是什么?
1 回答
TL;DR : 如果您想利用真正的 NW 管理标准,请使用 YANG 和 NETCONF/RESTCONF。如果您的用例非常具体,并且您想更快地进步,那么请使用协议缓冲区。
如果您的设备将由各种网络管理工具管理,则使用 YANG 进行建模并在设备中放置第 3 方 NETCONF 代理(如TailF ConfD)可能会有所帮助。您的工作将“只是”定义您的模型并将设备内部与代理集成。YANG 和 NETCONF/RESTCONF 是实际的网络管理标准,因此您的设备将兼容许多已经支持 YANG 和 NETCONF 的管理工具。因此,选择 YANG,您实际上可能会为您的设备打开商机。
您可以按照 predi 的建议选择使用 YANG 创建模型,然后开发一种自动方法将这些模型转换为 protobuf 模型。通过这种方式,您可以使用 protobuf 在运行时利用高级 YANG 建模和快速紧凑的通信。对于开源项目来说,这听起来是一个非常有趣的想法(人们在某种程度上已经 想到了这一点),但它需要相当多的努力,如果没有这两种技术的专业知识,很难实现它。请注意,您永远无法通过自己混合 YANG 和 protobuf 来获得第一种方法的好处,因为在 NW 管理世界中不会有这样的标准。
如果您的重点是时间并且您只想编写代码,那么我个人建议使用干净的 protobuf。这将使您的解决方案更简单,并且您可以充分利用大型 protobuf 社区。当然,YANG 有优势,它与真正的 NW 管理协议密切相关,但它也很复杂,不太受欢迎,所以你可能会迷失在它的所有特性中。