《趣谈网络协议》学习笔记 DAY03

内容摘录自极客时间课程《趣谈网络协议》,如有侵权,请及时联系删除。

软件定义网络SDN

三个关键特点:

  1. 控制与转发分离
    转发平面就是一个个虚拟或者物理的网络设备,控制平面就是统一的控制中心。(可以理解为之前的网络设备需要每台分别配置,现在可以进行统一配置与管理)
  2. 控制与转发平面之间使用开放接口
    控制器向上提供接口,被应用层调用,称为北向接口;控制器向下调用接口,来控制网络设备,称为南向接口。
  3. 逻辑上进行集中控制
    逻辑上集中的控制平面可以控制多个转发面设备,也就是控制整个物理网络,因而可以获得全局的网络状态视图,并根据该全局网络状态视图实现对网络的优化控制。

OpenFlow和OpenvSwitch实现SDN

开源实现。
OpenFlow 是 SDN 控制器和网络设备之间互通的南向接口协议,OpenvSwitch 用于创建软件的虚拟交换机。OpenvSwitch 是支持 OpenFlow 协议的,当然也有一些硬件交换机也支持 OpenFlow 协议。它们都可以被统一的 SDN 控制器管理,从而实现物理机和虚拟机的网络连通。
在这里插入图片描述

OpenFlow协议

在OpenvSwitch里面,有一个流表规则,任何通过这个交换机的包,都会经过这些规则进行处理,从而接收、转发、放弃。流表其实就是一个个表格,每个表格好多行,每行都是一条规则。每条规则都有优先级,先看高优先级的规则,再看低优先级的规则。
在这里插入图片描述
在这里插入图片描述
对于每一条规则,要看是否满足匹配条件。这些条件包括,从哪个端口进来的,网络包头里面有什么等等。满足了条件的网络包,就要执行一个动作,对这个网络包进行处理。可以修改包头里的内容,可以跳到任何一个表格,可以转发到某个网口出去,也可以丢弃。
通过这些表格,可以对收到的网络包随意处理(随意处理?如何做到安全?),如:

  1. 物理层,指定从哪个口转发;
  2. MAC层,修改源MAC,修改目标MAC,修改VLAN,删除 VLAN,MAC 地址学习;
  3. 网络层,修改源IP地址,修改目标IP地址;
  4. 传输层,修改源端口,修改目标端口;

OpenvSwitch有本地的命令行可以进行配置。我们可以通过OpenvSwitch的命令创建一个虚拟交换机。然后可以将多个虚拟端口port添加到这个虚拟交换机上,实现虚拟网桥,vlan,网卡绑定等功能。

OpenvSwitch解析

用户态两个重要的进程:

  1. OVSDB 进程,使用ovs-vsctl命令行会和这个进程通信,去创建虚拟交换机,创建端口,将端口添加到虚拟交换机上,OVSDB 会将这些拓扑信息保存在一个本地的文件中。
  2. vswitchd进程,ovs-ofctl命令行会和这个进程通信,去下发流表规则,规则里面会规定如何对网络包进行处理,vswitchd 会将流表放在用户态 Flow Table 中。

在内核态,有内核模块OpenvSwitch.ko,其会在网卡上注册一个函数(hook),每当有网络包到达网卡的时候,这个函数就会被调用,进而将网络包中的信息进行解析,包括入(网)口、MAC、IP、端口号等。

内核态也会有Flow Table。接下来内核态模块在这个内核态的流表中匹配规则,如果匹配上了,就执行相应的操作,比如修改包,或者转发,或者放弃。如果内核没有匹配上,这个时候就需要进入用户态,用户态和内核态之间通过Linux的一个机制叫Netlink,来进行相互通信。内核通过upcall,告知用户态进程 vswitchd,在用户态的 Flow Table 里面去匹配规则,这里面的规则是全量的流表规则,而内核态的 Flow Table 只是为了做快速处理,保留了部分规则,内核里面的规则过一段时间就会过期。当在用户态匹配到了流表规则之后,就在用户态执行操作,同时将这个匹配成功的流表通过 reinject 下发到内核,从而接下来的包都能在内核找到这个规则,来进行转发。

SDN使用的其中一个开源控制器是OpenDaylight。

云计算中应用OpenvSwitch

参考

趣谈网络协议-软件定义网络

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值