2.1ONF定义的SDN基本架构:
- 应用层:实现网络流量的灵活控制,使网络作为管道智能
- 控制层:网络虚拟化实现方式,核心技术OpenFlow
- 转发层新型创新架构,实现网络设备控制与转发分离
- 2与3之间通过OpenFlow协议通信
2.2核心思想
1.Decoupling:控制平面负责上层的控制决策;数据平面负责数据的交换转发(网络逻辑集中控制)
- 控制平面---多个分布式的控制器
2.Abstraction:
- 转发抽象:路由表,MPLS标签表,ACL访问控制表抽象流表
- 分布状态抽象:分布状态抽象成全局网络视图
实现下发控制命令;收集设备和链路状态,为上层应用提供全局网络视图 - 配置抽象:网络行为表达通过编程语言实现,将抽象配置映射为物理配置,利用控制器提供的API,基于控制层提供的全局网络视图
3.Programable:开放接口编程
接口:
- 控制平面--应用平面(北向接口):REST API ;JAVA API
- 控制平面--数据平面(南向接口)实现协议:OpenFlow,NETCONF,OF-Config,OVSDB
- 东西向接口:多控制器或控制器与外部组件之间通信
数据平面:
- 高性能网络数据处理框架DPDK
- SDN数据平面可编程:P4
2.3Mininet应用实践(SDN仿真工具)
- 运用mininet可视化工具创建网络拓扑结构
- 运用mininet交互命令创建网络拓扑结构
- 运用python脚本构建网络拓扑结构
创建一个真实的虚拟网络,其中包含真实的工作组件,但运行在机器上,便于测试
- 命令行: sudo mn(简单拓扑:控制器-交换机--两个主机) controllers-switches-hosts
- 交互式命令: py net.addHost('h3')(添加主机)
- python应用程序 sudo python lab_1.py
更多:http://mininet.org/
基本命令:
- help:显示可能的mininet命令列表
- nodes:显示节点列表
- net:显示网络拓扑(ASCII编码)
- dump-显示每个节点的接口设置和表示每个节点进程的PID
- <node id>ifconfig类似于定义网络接口的Linux命令
基本命令行参数:
- --topo-启动时通过命令行定义拓扑
- --switch-定义使用交换机,默认使用ovsk交换机
- --controller-定义使用控制器,若为指定默认控制器,作为集线器使用