通过两个例子来展示“SDN新网络”如何利用“软件”解决传统网络中的问题。
SDN Controller通过Openflow和LLDP发现整网拓扑
整网拓扑如上图所示
背景阐述:
所有交换机彼此互联
交换机通过带外方式(或网管网方式)连接Controller
交换机均使用Openflow协议。Openflow使用TCP端口6633或6653作为接收的监听端口。目前最新Openflow协议为1.5.1,详见ONF的spec。(https://www.opennetworking.org/images/stories/downloads/sdn-resources/onf-specifications/Openflow/Openflow-switch-v1.5.1.pdf)
无特殊Controller指定,各类型都OK
那对于传统交换机而已,正常情况他们是通过LLDP等类似的邻居发现协议发现彼此网络设备,形成整网拓扑。而在SDN环境中,设备是无脑的,此时需要借助Openflow和LLDP同时工作,来保障Controller环境下能够对全网进行拓扑发现。
工作流程介绍:
交换机连线至Controller,通过电信号,Controller发现有支持Openflow的SDN交换机接入,此时,Controller能够发现三台SDN交换机接入了。注意,此时三台设备之间的组网环境Controller是不清楚的。
Controller通过packet-out报文,封装LLDP报文进Openflow,分别分发给每个交换机。此时的packet-out报文中含有动作:分发LLDP报文从交换机的每个端口发出去。
此时交换机A根据Controller的动作指令,将LLDP报文从交换机所有接口发出去。交换机B和交换机C此时都能收到这个报文。
LLDP报文经过交换机之间的互联链路到达对端SDN交换机。而此时正因为交换机是SDN无脑交换机,他对于报文的处理都是上送Controller而非本地操作。则此时接受到LLDP的对端交换机会将LLDP报文再次封装,封装进packet-in,并上送至Controller。
此时Controller收到对端SDN交换机封装的packet-in报文,报文里包含原本的LLDP报文。此时Controller就已经知道所有的拓扑连接关系了。
SDN控制器对于ARP报文的处理
背景阐述:
网络拓扑已发现
控制器采用ODL(OpenDayLight)
本地主机H1(10.0.0.1)和对端主机H2(10.0.0.2)均连接于SDN交换机下面
整个过程是H1请求H2的ARP,H2响应H1
整个解析过程
H1去pingH2,即10.0.0.1去ping10.0.0.2。因为没有H2的MAC,此时需要做一次ARP解析。此时ARP请求(原本是广播)被SwitchA通过Openflow形式单播上送给Controller(packet-in报文)
Controller收到H1的ARP请求,记录H1位于Switch A下游,且记录相关的位置信息。