随着网络规模的不断扩大和复杂性的增加,传统的网络架构已经难以满足日益增长的网络需求。SDN(Software Defined Networking)技术的出现,为网络的管理和控制带来了革命性的变化。SDN的核心思想是将网络的控制和管理从传统的分散式硬件设备中剥离出来,实现了集中化的网络控制。
1、SDN架构
SDN控制器:SDN控制器是整个SDN架构的核心,它负责管理和控制整个网络。SDN控制器通过与网络设备进行通信,实现对网络设备的集中化配置、监控和管理。SDN控制器通常是基于开源软件实现,比如OpenDaylight和ONOS等。
网络设备:网络设备是SDN架构中的重要组成部分,它们负责数据平面的处理和转发。网络设备可以是传统的路由器、交换机等硬件设备,也可以是软件定义的网络设备,如Open vSwitch等。
SDN应用程序:SDN应用程序是基于SDN控制器的应用程序,它们负责实现各种网络服务,比如负载均衡、流量控制、安全管理等。SDN应用程序可以是开源软件,也可以是自己开发的定制化应用程序。
SDN北向接口:SDN北向接口是SDN控制器提供给上层应用程序的API接口。通过SDN北向接口,上层应用程序可以实现对网络的集中化控制和管理。SDN北向接口通常是基于REST或XML-RPC等协议实现的。
SDN南向接口:SDN南向接口是SDN控制器与网络设备之间的API接口。通过SDN南向接口,SDN控制器可以实现对网络设备的集中化配置、监控和管理。SDN南向接口通常是基于OpenFlow或NETCONF等协议实现的。
2、SDN的工作原理
控制器与网络设备通信:SDN控制器与网络设备之间通过SDN南向接口进行通信。控制器向网络设备发送控制命令,如配置、更新和删除流表项等。
控制器获取网络拓扑信息:控制器通过与网络设备交互,获取网络拓扑信息,包括连接关系、设备属性和链路状态等。这些信息将用于制定网络的全局视图。
制定网络策略:基于获取的网络拓扑信息,控制器制定网络策略,如流量调度、路径选择和服务质量保障等。控制器根据网络策略生成相应的流表项,并下发到网络设备中。
数据平面流量转发:网络设备根据收到的流表项进行数据包的转发。数据包进入网络设备后,根据流表项的匹配规则进行流量转发或处理,从而实现控制器指定的网络策略。
监控和反馈:网络设备将与数据转发相关的信息反馈给控制器,包括流量统计、链路状态变化和异常报告等。控制器根据这些信息进行网络监控和故障管理,同时根据需要更新和调整网络策略。
3、为什么需要Yang
如何建立网络设备的数据模型,以及如何描述网络设备的各种协议和服务。为了解决这个问题,IETF(Internet Engineering Task Force)的NETMOD(Network Modeling Working Group)组织开发了一种建模语言,名为YANG(Yet Another Next Generation)。它提供了一种结构化的方式来描述网络设备的数据模型。通过定义模块、类型、数据节点和容器等元素,可以构建出复杂的网络数据模型。YANG还定义了一系列的数据类型和函数,用于描述网络设备中的各种数据类型和计算。这些数据类型和函数可以用于数据模型的验证和约束,确保网络设备中的数据格式正确和一致。
在SDN中,YANG被广泛用于描述网络控制器和网络设备之间的通信协议,比如OpenFlow协议和NETCONF协议。YANG定义了用于描述这些协议的数据模型,以及与网络设备交互的API接口。通过使用YANG,网络控制器可以对网络设备进行配置、监控和管理。
4、YANG的工作原理
定义数据模型:使用YANG语言定义网络设备的数据模型,包括设备的属性、配置项、状态信息和操作等。数据模型描述了网络设备的结构和行为。
构建数据树:基于定义的数据模型,构建出网络设备的数据树。数据树是一种层次结构,用于组织和表示网络设备中的数据。
数据交互:通过YANG定义的数据模型,实现网络设备与SDN控制器之间的数据交互。SDN控制器可以通过YANG定义的数据模型向网络设备发送配置命令、获取设备状态和执行操作等。
数据验证和约束:YANG定义了一系列的数据类型和函数,用于验证和约束网络设备中的数据。控制器在与网络设备进行数据
交互时,可以使用YANG定义的数据类型进行数据的验证,确保数据的格式正确和一致。同时,YANG还支持定义约束条件,如范围限制、唯一性约束和依赖关系等,以确保网络设备中的数据满足特定的规范和要求。
自动生成代码和API:基于YANG定义的数据模型,可以使用相应的工具自动生成代码和API。这些代码和API可以用于快速开发SDN控制器和应用程序,实现对网络设备的集中化管理和控制。
5、YANG的实现原理
YANG的实现原理涉及两个主要方面:YANG语法解析和YANG模
YANG语法解析:YANG语法解析是将YANG语言的源代码转化为计算机可以理解的内部表示形式的过程。在这个过程中,解析器会对YANG语法进行词法分析和语法分析,将源代码解析成语法树或其他形式的数据结构。
YANG模型处理:YANG模型处理是对解析后的YANG模型进行处理和管理的过程。这包括对模块、类型、数据节点和容器等元素进行解析和组织,构建出完整的数据模型。在这个过程中,还会进行数据类型验证、约束检查和语义分析等操作,以确保数据模型的正确性和一致性。
实现YANG的工具和框架通常提供了一套API和函数库,用于方便地创建、解析和操作YANG模型。这些工具和框架可以支持开发者快速构建YANG模型、生成代码和API,简化了YANG的实现过程。
总结起来,YANG作为SDN中的一种建模语言,通过定义数据模型和数据交互方式,提供了一种统一的描述和管理网络设备的方式。它的工作原理涉及YANG语法解析、模型处理和数据验证等过程。通过使用YANG,SDN控制器和应用程序可以与网络设备进行交互,实现对网络的集中化控制和管理。
在实际应用中,开发者可以使用各种开源的YANG工具和框架来实现YANG模型的创建、解析和使用。一些知名的YANG工具包括pyang、YangTools、OpenYuma和ConfD等。这些工具提供了丰富的功能和API,支持YANG模型的开发、编译、验证和解析,大大简化了YANG模型的实现过程。
YANG还可以和其他SDN相关的协议、标准和接口配合使用,比如NETCONF协议。NETCONF是一种用于配置网络设备的远程过程调用协议,它使用YANG作为数据建模语言,实现了网络设备的集中化配置管理。
除了NETCONF,YANG还可以和RESTCONF、SNMP等协议和标准配合使用,实现更加灵活的网络管理和控制。
本文由 小菜鸡的修炼之路 原创发布于华为企业互动社区,未经作者许可,禁止转载。