# 学习 `OpenDaylight (ODL)` is a modular open platform for customizing and automating networks of any size and scale. The OpenDaylight Project arose out of the SDN movement, with a clear focus on network programmability. It was designed from the outset as a foundation for commercial solutions that address a variety of use cases in existing network environments. `ONOS` is the only SDN controller platform that supports the transition from legacy “brown field” networks to SDN “green field” networks. This enables exciting new capabilities, and disruptive deployment and operational cost points for network operators. `OpenStack Networking ("Neutron")` Neutron is an OpenStack project to provide "networking as a service" between interface devices (e.g., vNICs) managed by other Openstack services (e.g., nova). `Open Virtual Network (OVN) `is an Open vSwitch-based software-defined networking (SDN) solution for supplying network services to instances. OVN provides platform-agnostic support for the full OpenStack Networking API. OVN allows you to programmatically connect groups of guest instances into private L2 and L3 networks. OVN uses a standard approach to virtual networking that is capable of extending to other Red Hat platforms and solutions. `The Floodlight Open SDN Controller `is an enterprise-class, Apache-licensed, Java-based OpenFlow Controller. It is supported by a community of developers including a number of engineers from Big Switch Networks. `NOX POX Beacon Maestro Ryu` `mininet ns-3 containernet` `Tungsten Fabric` `ONL(Open Network Linux)` # ovs ```bash # checking for kernel version... 4.4.189 # configure: error: Linux kernel in /lib/modules/4.4.189-1.el7.elrepo.x86_64/build is version 4.4.189, but version newer than 4.3.x is not supported (please refer to the FAQ for advice) wget https://www.openvswitch.org/releases/openvswitch-2.11.1.tar.gz tar xvf openvswitch-2.11.1.tar.gz ./boot.sh ./configure --with-linux=/lib/modules/`uname -r`/build make # sudo make install sudo make modules_install sudo modprobe openvswitch sudo yum install epel-release sudo yum install python34 curl -O https://bootstrap.pypa.io/get-pip.py sudo /usr/bin/python3.4 get-pip.py sudo /usr/bin/python2 get-pip.py sudo pip3 install six sudo pip install six sudo modprobe openvswitch lsmod |grep openvs openvswitch 290816 0 tunnel6 16384 1 openvswitch nf_defrag_ipv6 20480 2 openvswitch,nf_conntrack_ipv6 nf_nat_ipv6 16384 2 openvswitch,ip6table_nat nf_nat_ipv4 16384 2 openvswitch,iptable_nat nf_nat 28672 5 openvswitch,nf_nat_ipv4,nf_nat_ipv6,xt_nat,nf_nat_masquerade_ipv4 nf_conntrack 114688 10 ip_vs,openvswitch,nf_nat,nf_nat_ipv4,nf_nat_ipv6,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_netlink,nf_conntrack_ipv4,nf_conntrack_ipv6 libcrc32c 16384 4 xfs,ip_vs,dm_persistent_data,openvswitch ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema ``` * ovs-vswitchd 主要模块,实现switch的daemon,包括一个支持流交换的Linux内核模块 * ovsdb-server 轻量级数据库服务器,提供ovs-vswitchd获取配置信息 * ovs-brcompatd 让ovs-vswitch替换Linuxbridge,包括获取bridge ioctls的Linux内核模块 * ovs-dpctl 用来配置switch内核模块 * ovs-vsctl 查询和更新ovs-vswitchd的配置 * ovs-appctl 发送命令消息,运行相关daemon * ovsdbmonitor GUI工具,可以远程获取OVS数据库和OpenFlow的流表 * ovs-openflowd:一个简单的OpenFlow交换机 * ovs-controller:一个简单的OpenFlow控制器 * ovs-ofctl 查询和控制OpenFlow交换机和控制器 * ovs-pki :OpenFlow交换机创建和管理公钥框架 * ovs-tcpundump:tcpdump的补丁,解析OpenFlow的消息 # 网管协议 ```bash openflow & netconf(restconf) of-config & ovsdb & snmp wget https://github.com/coredns/coredns/releases/download/v1.3.0/coredns_1.3.0_linux_amd64.tgz curl -s -L git.io/corefile | bash coredns -conf Corefile ``` # 参考 * [The universal data plane API](https://blog.envoyproxy.io/the-universal-data-plane-api-d15cec7a) * [SDN网络指南](https://feisky.gitbooks.io/sdn/) * [SDN 技术指南(一):架构概览](https://riboseyim.com/2017/05/12/SDN/) * https://github.com/alauda/kube-ovn * [How to use Open Virtual Networking with Kubernetes](https://github.com/ovn-org/ovn-kubernetes)