SDN主要提出控制面和转发面分离的思想。传统的网络设备(交换机、路由器)是控制面、转发面合一的。不利于设备的配置和维护。如某台设备连线掉了,定位困难。给设配进行配置时也比较麻烦,需要登录到控制台一一进行配置。在SDN场景下,这些都不是问题,全都有控制器controller统一管控,如统一下发配置。
说道这个下发配置,就必须聊聊SDN的南北向接口。北向接口:web和控制器之间的接口,如用户下发配置到控制器,即走常规的restful接口(http接口)。南向接口:控制器和网络设备的接口,用于控制器将配置下发到设备上。南向接口需要依赖相关的协议,如netconf、restconfi、ovsdb等协议。除了上述传统的协议,专门为SDN提出的Openflow协议也是支持设备间通信的,并且以流表的方式描述设备间的通信动作。
谈到SDN无法回避的一个问题就是这2类网络构成。Underlay 和 Overlay 网络。
Underlay 是传统的物理拓扑,交换机-路由器,基于mac转发表和ip路由表进行通信。就是传统网络,跑ospf、bgp, is_is 协议的。
Overlay 承载在Underlay 网络的基础上用来跑隧道报文的,如vxlan、GRE等隧道报文。以vxlan隧道为例,就是在underlay网络中再增加vtep设备,vtep设备间通过vxlan转发表进行通信。Vlan报文在封装时,只要填写上对端的vtep点信息(ip,mac)就行了。
这样就可以实现对大二层(相隔很远的2个逻辑上可以通信的局域网,如VPC)的通信。当对端的vtep点收到vxlan报文时,再进行解封装即可。
那么负责vtep通信的vxlan转发表又是如何形成的呢? 就是通过bgp-evpn协议实现的,可以在协议中改动rt rd字段携带相关的信息。
在这里普及下vxlan报文的构成。就是在原始的二层报文上在添加4个头部信息。 mac-ip-udp-vxlan头-原始二层报文。vxlan头中的3个字节(24位,1600万)作为vni,相对于传统的vlan(4096) 空间扩展了很多。