第25讲 | 软件定义网络:共享基础设施的小区物业管理办法笔记本:创建时间:作者:URL:
P.趣谈网络协议2018/7/26 14:50hongfenghuoju
更新时间:
2018/7/26 14:50
第25讲 | 软件定义网络:共享基础设施的小区物业管理办法2018-07-13 刘超第25讲 | 软件定义网络:共享基础设施的小区物业管理办法刘超- 00:00 / 18:25上一节我们说到,使用原生的VLAN和Linux网桥的方式来进行云平台的管理,但是这样在灵活性、隔离性方面都显得不足,而且整个网络缺少统一的视图、统一的管理。可以这样比喻,云计算就像大家一起住公寓,要共享小区里面的基础设施,其中网络就相当于小区里面的电梯、楼道、路、大门等,大家都走,往往会常出现问题,尤其在上班高峰期,出门的人太多,对小区的物业管理就带来了挑战。物业可以派自己的物业管理人员,到每个单元的楼梯那里,将电梯的上下行速度调快一点,可以派人将隔离健身区、景色区的栅栏门暂时打开,让大家可以横穿小区,直接上地铁,还可以派人将多个小区出入口,改成出口多、入口少等等。等过了十点半,上班高峰过去,再派人都改回来。软件定义网络(SDN)这种模式就像传统的网络设备和普通的Linux网桥的模式,配置整个云平台的网络通路,你需要登录到这台机器上配置这个,再登录到另外一个设备配置那个,才能成功。如果物业管理人员有一套智能的控制系统,在物业监控室里就能看到小区里每个单元、每个电梯的人流情况,然后在监控室里面,只要通过远程控制的方式,拨弄一个手柄,电梯的速度就调整了,栅栏门就打开了,某个入口就改出口了。这就是软件定义网络(SDN)。它主要有以下三个特点。控制与转发分离:转发平面就是一个个虚拟或者物理的网络设备,就像小区里面的一条条路。控制平面就是统一的控制中心,就像小区物业的监控室。它们原来是一起的,物业管理员要从
监控室出来,到路上去管理设备,现在是分离的,路就是走人的,控制都在监控室。
控制平面与转发平面之间的开放接口:控制器向上提供接口,被应用层调用,就像总控室提供按钮,让物业管理员使用。控制器向下调用接口,来控制网络设备,就像总控室会远程控制
电梯的速度。这里经常使用两个名词,前面这个接口称为北向接口,后面这个接口称为南向接口,上北下南嘛。
逻辑上的集中控制:逻辑上集中的控制平面可以控制多个转发面设备,也就是控制整个物理网络,因而可以获得全局的网络状态视图,并根据该全局网络状态视图实现对网络的优化控制,
就像物业管理员在监控室能够看到整个小区的情况,并根据情况优化出入方案。
OpenFlow和OpenvSwitch
SDN有很多种实现方式,我们来看一种开源的实现方式。
OpenFlow是SDN控制器和网络设备之间互通的南向接口协议,OpenvSwitch用于创建软件的虚拟交换机。OpenvSwitch是支持OpenFlow协议的,当然也有一些硬件交换机也支持OpenFlow协议。它们都可以被统一的SDN控制器管理,从而实现物理机和虚拟机的网络连通。
SDN控制器是如何通过OpenFlow协议控制网络的呢?
在OpenvSwitch里面,有一个流表规则,任何通过这个交换机的包,都会经过这些规则进行处理,从而接收、转发、放弃。
那流表长啥样呢?其实就是一个个表格,每个表格好多行,每行都是一条规则。每条规则都有优先级,先看高优先级的规则,再看低优先级的规则。
对于每一条规则,要看是否满足匹配条件。这些条件包括,从哪个端口进来的,网络包头里面有什么等等。满足了条件的网络包,就要执行一个动作,对这个网络包进行处理。可以修改包头里的内容,可以跳到任何一个表格,可以转发到某个网口出去,也可以丢弃。通过这些表格,可以对收到的网络包随意处理。
具体都能做什么处理呢?通过上面的表格可以看出,简直是想怎么处理怎么处理,可以覆盖TCP/IP协议栈的四层。对于物理层:匹配规则包括由从哪个口进来;执行动作包括从哪个口出去。对于MAC层:匹配规则包括:源MAC地址是多少?(dl_src),目标MAC是多少?(dl_dst),所属vlan是多少?(dl_vlan);执行动作包括:修改源MAC(mod_dl_src),修改目标MAC(mod_dl_dst),修改VLAN(mod_vlan_vid),删除VLAN(strip_vlan),MAC地址学习(learn)。对于网络层:匹配规则包括:源IP地址是多少?(nw_src),目标IP是多少?(nw_dst)。执行动作包括:修改源IP地址(mod_nw_src),修改目标IP地址(mod_nw_dst)。对于传输层:匹配规则包括:源端口是多少?(tp_src),目标端口是多少?(tp_dst)。执行动作包括:修改源端口(mod_tp_src),修改目标端口(mod_tp_dst)。总而言之,对于OpenvSwitch来讲,网络包到了我手里,就是一个Buffer,我想怎么改怎么改,想发到哪个端口就发送到哪个端口。OpenvSwitch有本地的命令行可以进行配置,能够实验咱们前面讲过的一些功能。我们可以通过OpenvSwitch的命令创建一个虚拟交换机。然后可以将多个虚拟端口port添加到这个虚拟交换机上。ovs-vsctl add-br ubuntu_br实验一:用OpenvSwitch实现VLAN的功能下面我们实验一下通过OpenvSwitch实现VLAN的功能,在OpenvSwitch中端口port分两种。第一类是access port:这个端口配置tag,从这个端口进来的包会被打上这个tag;如果网络包本身带有的VLAN ID等于tag,则会从这个port发出;从access port发出的包不带VLAN ID。第二类是trunk port:这个port不配置tag,配置trunks;如果trunks为空,则所有的VLAN都trunk,也就意味着对于所有VLAN的包,本身带什么VLAN ID,就是携带者什么VLAN ID,如果没有设置VLAN,就属于VLAN 0,全部允许通过;如果trunks不为空,则仅仅带着这些VLAN ID的包通过。我们通过以下命令创建如下的环境:ovs-vsctl add-port ubuntu_br first_brovs-vsctl add-port ubuntu_br second_brovs-vsctl add-port ubuntu_br third_brovs-vsctl set Port vnet0 tag=101ovs-vsctl set Port vnet1 tag=102ovs-vsctl set Port vnet2 tag=103ovs-vsctl set Port first_br tag=103ovs-vsctl clear Port second_br tagovs-vsctl set Port third_br trunks=101,102另外要配置禁止MAC地址学习。ovs-vsctl set bridge ubuntu_br flood-vlans=101,102,103
25软件定义网络:共享基础设施的小区物业管理办法 - 图文
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)