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