Control and Data Plane Seperation

课程地址

Overview

今天正式地学习一个控制与数据平面分离。学习完本节,应该要掌握何为控制和数据平面,了解它们的功能以及好处,并且能够说出它们之间的差异。控制与数据平面的分离给我们带来的机遇和挑战,给我们带来哪些机遇?解决这些挑战的具体方法又是什么呢?

What are the Control and Data Plane?

控制平面就是控制转发行为的逻辑。我的理解是控制平面不一定是一个“平台”之类的东西,例如各种路由协议就是最典型的控制平面,因为路由协议直接操作路由,路由就是控制转发行为的。其他的例子还包括上节课提到的 Firewalls 这类的 middle box 网络配置。还有一类叫做负载平衡器(load balancer)的配置,也是一种控制平面。你也可以认为控制平面就是网络的大脑。

  • Data Plane:

    • Forwarding traffic according to control logic.

数据平面就是依照控制逻辑来进行转发行为。就是网络中的 packet 通过一些信息确定一个路径,到达合适的目的地。在之前,把数据平面配置在硬件上比较常见,现在越来越多地使用软件来定义可编程的数据平面。

Why Separate the Control and Data Plane?

之前讲过,这里做点补充。

分离的控制和数据平面第一个有利于它们隔离进行创新迭代。第二个在配置新网络、新的软硬件时有好处。比方说如果要为网络配置新的路由器或者交换机时,因为控制平面和数据平面分离,配置时不会受到硬件上跑的软件的能力的限制。

有利于网络管理者从一个更高的层次,使用高阶软件(high-order softwares)去控制网络。使得网络管理者很容易推断网络本身的行为,也方便了查错。

Where Separation helps?

这种思想给我们带来了哪些好处,又在哪些方面帮助到了我们?这里会涉及数据中心管理、路由控制、企业网络安全这几个方面,还有一个方面是能够使得通过分离控制和数据平面来让用于研究的网络和成品网络和谐共存在同一个基础设施上(allowing research network to coexist with production network)(有点儿网络虚拟化的味道)。

Data Center

控制和数据平面分离在数据中心领域方面的应用是相当广的。

在管理数据中心时,由于流量需求变化(traffic demands shift),要在物理位置上移动一个虚拟机是非常常见的。这里举了雅虎做例子,雅虎的数据中心中有两万台服务器,四十万台虚拟机,这些巨量的虚拟机在网络拓扑结构下要互相通信,任意两两虚拟机之间需要 1024 个link才能满足需求。

当你要移动一台虚拟机,又要保证网络的一致性、完整性、稳定性,真是一件相当难的事情。

雅虎的做法是:对交换机进行编程,并引入中心控制器,用控制器来更新网络状态。

Program each of the network switches from a central database, so as virtual machines migrate that central controller knows about the migration and can update the switch state accordingly, so the network path update in accordence with the VM migration.

Filtering Attack Traffic

Dos 攻击,全称为 Denial-of-service_attack,拒绝服务攻击。是一种很常见的攻击方式,攻击者发送大量无用请求,耗尽网络资源,使得网络不能满足正常功能和其他用户的需求而瘫痪。

wiki - perpetrator seeks to make a machine or network resource unavailable to its intended users by temporarily or indefinitely disrupting services of a host connected to the Internet. Denial of service is typically accomplished by flooding the targeted machine or resource with superfluous requests in an attempt to overload systems and prevent some or all legitimate requests from being fulfilled.

要对Dos攻击有比较好的防御效果,需要下面几个机制:攻击侦查、流量分级、响应工具,来阻止恶意的流量,让正常访问的流量通过。

wiki #Defense techniques - Defensive responses to denial-of-service attacks typically involve the use of a combination of attack detection, traffic classification and, aiming to block traffic that they identify as illegitimate and allow traffic that they identify as legitimate.

在传统网络中,对这种攻击可能真的没有太好的办法。比方说,很难在离攻击源较劲的地方就消除威胁。wiki中有提到几个防御手段,Firewall 就是一种。但也有为难的地方,如果某一端口遭受攻击,Firewall 也不能全部断开这个端口的流量输入,因为这会阻挡合法用户的请求。还有一点就是 Firewall 在网络的架构中算是比较深的级别,在 Firewall 搞定攻击威胁之前,也许已经有很多路由器遭攻击瘫痪。

... firewalls may be too deep in the network hierarchy, with routers being adversely affected before the traffic gets to the firewall.

也有别的方法,比方说配置额外的前端硬件,来侦测流量,检查是否合法。或者配置软件来完成这些工作。但也有缺点,甚至有这样的恶意攻击方式:

Intrusion prevention systems (IPS) are effective if the attacks have signatures associated with them. However, the trend among the attacks is to have legitimate content but bad intent. Intrusion-prevention systems which work on content recognition cannot block behavior-based DoS attacks.

有的 Dos 攻击不只是发送大量请求来耗尽网络资源。它经过精心伪装,内容看似合法,实则不怀好意,是想进网络里搞坏事的(behavior-based DoS attacks)。IPS对此无能为力。。。

为此,AT&T 的策略是将转发流量的数据平面和控制流量去向的控制平面分离。AT&T 配置了一个 RCP (route control platform)。RCP 会对遭受 Dos 攻击的 point 给予一个 null route(怎么翻译好呢,我想叫它假路由),不会让攻击流量真正地产生攻击效果。这有点儿像黑洞路由,也可以说是 Upstream filtering,上游过滤。 AT&T 就在提供这种功能的供应商名单中。

以上就是两个控制与数据平面分离的两个实例。

Software Defined Networking(Week 3, part 1)的更多相关文章

  1. Software Defined Networking(Week 1)

    前言 课程名称:软件定义网络 课程地址 Coursera上新的一期还没开课,所以是YouTube. Instructor:Nick Feamster Get Started 对于本次课程,主要的新内容 ...

  2. Software Defined Networking For Dummies, Cisco Special Edition

    从接触SDN开始,不论是硬件还是软件,一直都是从具体的点开始,慢慢的勾勒出自己认为的SDN的样子,相信读完这本思科出的关于SDN的书会对其有新的认识 这本书的名字就是Software Defined ...

  3. Improving Network Management with Software Defined Networking

    Name of article:Improving Network Management with  Software Defined Networking Origin of the article ...

  4. Method of Seamless Integration and Independent Evolution of Information-Centric Networking via Software Defined Networking

    A method of transferring data between a software defined network (SDN) and an information-centric ne ...

  5. Software Defined Networking(Week 2, part 2)

    History of SDN 1.3 - 1.4 课程地址 Network Virtualization 网络可虚拟化,可以说是SDN的一项核心内容,同样也源自很多先前的技术和思想.我们先讨论何为网络 ...

  6. Software Defined Networking(Week 2, part 1)

    History of SDN 1.1 - 1.2 本节讨论从上世纪八十年代时到现在为止出现的SDN的思想和发展历史.了解历史,可以明白技术后面的成因以及一些原则,并从架构上去大致掌握.了解一些主旨. ...

  7. A Survey of Machine Learning Techniques Applied to Software Defined Networking (SDN): Research Issues and Challenges

    将机器学习用到SDN中的综述:研究的问题和挑战 从流量分类.路由优化.服务质量(Qos)/体验质量(QoE)预测.资源管理和安全性的角度,回顾了机器学习算法如何应用于SDN领域. 相关知识 在SDN中 ...

  8. Software Defined Networking(Week 2, part 3)

    Control of Packet-switch Network 我们已经讨论过中心控制网络的原理,但主要是以电话网络做模型的.现在我们来看看对于分组交换网络的控制是如何改进的. Why Separa ...

  9. RFIDler - An open source Software Defined RFID Reader/Writer/Emulator

    https://www.kickstarter.com/projects/1708444109/rfidler-a-software-defined-rfid-reader-writer-emul h ...

随机推荐

  1. mysql where语句多条件查询是and和or联合使用bug

    公司项目中有段功能是全局搜索框和下拉列表的联合查询,在联调开发中发现单独用下拉查询是正确的,单独用全局搜索框也是正确的,测试发现是sql语法有问题. 问题截图: 出现问题的核心还是在于搜索框是用于多个 ...

  2. struts2第一天——入门和基本操作

    一.概述 1.运用场景: 应用于三层架构中web层的框架(显示层的运用),是经典MVC模型的web应用的变体. 2.与struts1的对比: struts2是在struts1基于webwork发展的全 ...

  3. plsql分页

    分页是任何一个网站(bbs,网上商城,blog)都会使用到的技术,因此学习pl/sql编程开发就一定要掌握该技术.如下图: 1.  编写无返回值的存储过程 首先是掌握最简单的存储过程,无返回值的存储过 ...

  4. 20155236范晨歌 Exp1PC平台逆向破解及Bof基础实践

    出现的问题及解决: 在下载execstack时,出现了下列签名无效的错误! 解决方案:发现是密钥过期了,将新的密钥填入apt-keyring 输入命令:apt-key adv --keyserver ...

  5. 5249: [2018多省省队联测]IIIDX

    5249: [2018多省省队联测]IIIDX 链接 分析: 贪心. 将给定的权值从大到小排序,从第一个往后挨个赋值,考虑第i个位置可以赋值那些树.首先满足前面必须至少有siz[i]个权值没选,如果存 ...

  6. .net core中使用缓存(cache)

    官方文档:https://docs.microsoft.com/en-us/aspnet/core/performance/caching/memory?view=aspnetcore-2.2#use ...

  7. C# 面试题 二

    1.进程和线程的区别 进程是系统进行资源分配和调度的单位:线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源. 2.成员变量和成员函数前加static的作用 它们被称为常 ...

  8. bootStrap中Tab页签切换

    关于$().tab()一般用来实现标签页和胶囊链接内容片段的切换,或是相关内容的页面导航: <ul class="nav nav-tabs" id="myTab&q ...

  9. C#简单的四位纯数字验证码

    验证码练手,整型.四位验证码 大体意思就是:四位纯数字验证,只要验证不成功就无限验证 刚开始在纠结怎么让整个过程循环起来,什么循环放到最外层,其实就是一个循环,看来自己的循环练习的还是不够多,不够灵活 ...

  10. 【PaPaPa】集成B/S主流技术的MVC5项目 - 实干派:说做就做,我们已经起航,你还在观望吗

    我们是谁 我们是C#爱好者,互相分享技术,一起学习一起成长一起做一个项目. 我们是开源爱好者,从我们手上出来的代码都会托管在源代码管理平台(oschina),到目前为止不收费,将来也不会出现任何收费情 ...