可编程网络ppt课件_第1页
可编程网络ppt课件_第2页
可编程网络ppt课件_第3页
可编程网络ppt课件_第4页
可编程网络ppt课件_第5页
已阅读5页,还剩113页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、可编程网络,Programmable Networks,因特网体系结构,基于TCP/IP协议栈,遵循“端到端原则”: 网络层只提供不可靠的传输服务,应用要求的可靠性和安全性等均由端系统实现。 优点: 降低因特网的复杂度 易于增加新的应用 30多年的实践证明这种结构是非常成功的,因特网体系结构的问题,一些新兴应用需要的网络服务(如服务质量保证、多播支持、移动性支持等)无法由端系统提供。 要求中间节点(路由器/交换机)提供这些服务违背“端到端原则”,在实践上也面临巨大的困难,至今没有成功的先例。 目前的因特网体系结构已严重阻碍了因特网的发展,需要研究具有自适应、动态和智能化特性的新型网络体系结构,

2、1 主动网络(Active Networks,主动网络允许用户对网络中间节点(如路由器、交换机等)进行编程,具有智能的中间节点通过对收到的报文进行定制处理来提供定制的服务。 通过向主动节点发送携带有移动代码的报文,用户可以按需创建自己的服务并分布到网络中,主动网络的自适应性和动态特性,主动网络能引导数据报主动避开受到破坏的节点。 当节点尚未布署某种服务时,它能自动从相邻节点或指定节点获取服务代码并进行自动布署。 注入网络的移动代码能自动扩散和消失。 当节点受到攻击时能自动启动保护程序,主动网络的主动性(智能性,主动网络的主动性表现在两个方面: 用户可将程序注入网络来扩展节点功能。 路由器可对流

3、经它的用户数据包的内容执行计算,甚至改变数据包的内容。 与传统节点的存储-转发模式不同,主动节点的工作模式是存储-计算-转发,主动网络体系结构,主动网络由一群主动节点构成,主动节点通过执行主动包中的代码实现定制的服务。 主动节点和主动包是主动网络中最主要的两个功能实体: 主动节点:可编程的中间节点 主动包:携带了代码的分组 主动节点体系结构及主动包的定义构成了主动网络体系结构的基础,主动节点体系结构,主动网络与传统网络的区别,主动网络并不规定网络节点应该如何协同工作来提供某种特定功能的服务,而是向网络提供了可自由增加新服务的能力。 主动网络需要解决的主要问题: 主动节点如何支持用不同的编程语言

4、书写的应用程序在本地动态加载? 主动节点如何隔离不同的应用程序,包处理过程,主动应用(1):可靠组播,可靠组播: 所有组播包最终都被正确地传送给每个接收者 需要有丢失检测、反馈和数据重传等措施 目前主要有两种基本的确认模型: 基于ACK的模型:接收者对每个正确收到的包,向发送者发送ACK。 基于NACK的模型:接收者检测丢失的包,仅在发现包丢失时发送NACK。 这两种模型都会产生ACK/NACK风暴,且重传数据包都由源发出,增加发送方负担和增大重传延迟,主动路由器参与的可靠组播,数据缓存: 组播树上的主动路由器缓存经过的数据包。 本地恢复: 当NACK到达路径上的一个主动路由器时,若路由器中有

5、缓存的包,组播该包到NACK到达的接口链路,否则向上游转发NACK。 NACK抑制: 主动路由器对每个丢失包维护一个NACK记录和修复记录,抑制重复的NACK,主动应用(2):端到端拥塞控制,端到端的拥塞控制是因特网面临的主要难题之一: 算法的分布性:拥塞控制算法的实现分布在各个网络节点中,每个节点都不能得到完整的信息。 网络环境的复杂性:各节点的性能参数(带宽、延迟、丢失率等)差异很大。 算法的性能要求:拥塞控制算法需要在多个性能目标(如公平性、效率、稳定性和收敛性)之间进行权衡。 算法的开销:算法本身不能带来较多的附加网络流量,计算复杂度要低,主动拥塞控制,传统的端到端拥塞控制方法: 端节

6、点检测拥塞,并在检测到拥塞后降低发送速率。发生拥塞的路由器从发生拥塞到接收到速率调整后的分组,一直处于拥塞状态。 主动节点参与的端到端拥塞控制: 路由器检测到拥塞后,立即要求其上游路由器设置过滤器,过滤从导致拥塞的端节点来的分组。 路由器将拥塞情况直接报告给端节点。 收到端节点的反应后,撤销过滤器,主动应用(3):扩展的任意播,任意播(anycast):发送方把分组发送给一组接收者中的任意一个。 组播:发送方把分组发送给一组接收者中的每一个。 任意播的推广:允许多于一个接收者收到分组,可编程的任意播PAMcast,PAMcast利用组播树的分支节点进行选择性拷贝来实现可编程的任意播: 组播树的

7、每条链路维护一个group size属性,表示通过这条链路向下(远离核心节点)可以到达的组成员数量。 分组头中除记录组地址外,还记录度(分组的接收者数量)和拷贝模式(均匀分布接收者,或选择最近的k个接收者)。 分组首先被路由到组播树的核心节点,核心节点首先决定采取的拷贝模式,然后根据度信息确定向哪些下游节点转发分组。 这个过程在每个组播路由器上重复执行,直至消息到达成员节点,主动网络的问题,有特色的主动网络应用不多 未经过大规模实践的检验 互操作性难题(应用程序在多个操作系统上运行的兼容性问题) 尚缺乏完备的网络管理功能 网络安全如何保证(路由器具有执行程序的能力,2 OpenFlow和软件定

8、义网络,网络创新对现实世界的影响力在下降: 现象:大部分的研究成果仅停留在实验室中,很少能够应用到实际的网络中。 直接原因:目前没有切实可行的方法可以在足够真实的环境下对研究成果进行测试。 根源:网络基础设施已经僵化,新的功能很难加入到已有的网络中: 新的功能要求对因特网体系结构进行革命性改变(端到端原则不再适用) 网络设备全都是封闭系统(无法加载新的功能,可编程网络研究,主动网络 GENI(Global Environment for Networking Innovation): 构建一个全国范围的实验性网络,用于研究新的网络体系结构和分布式系统。 用户可以申请全网范围内的一些资源(链路、

9、包处理单位、终端主机等)构建其实验性网络。 优点:可编程网络降低了试验新技术的壁垒,提高了网络创新的速度。 缺点:费时、费力、费钱。 OpenFlow,2.1 OpenFlow,目标: 在真实的校园网上方便地试验新的网络协议。 需要解决三个问题: 说服网络管理员同意在他们管理的网络上试验新的网络协议 允许研究人员在实际网络上试验新协议而不会干扰网络的正常运行 交换机需要什么样的功能才能运行新的协议,方案一(商业性解决方案,交换机/路由器提供开放的、可编程的虚拟化平台,但该方案不现实: 商用的交换机和路由器不提供开放软件平台,更不会提供虚拟化硬件或软件的方法。 不同厂商生产的设备内部实现不同,对

10、于研究者来说不存在一个标准的实验平台。 设备厂商不愿意公开设备内部的编程接口,方案二(研究性解决方案,研究者自行开发设备: 基于PC服务器的软件平台: 利用通用操作系统和开源软件实现软件路由器是可能的,但不具有实验要求的性能及端口密度。 基于专用硬件的交换路由设备: 为线速处理设计的高端专用硬件:太昂贵; 为教学和研究目的开发的专用硬件平台:端口数少,两种方案的比较,商业性解决方案封闭而不灵活。 研究性解决方案通用性好,但性能和端口密度达不到要求,有的非常昂贵,折衷方案,牺牲一点通用性,换取一定程度的灵活性,达到以下目的: 具有商用设备的高性能和低价格的特点 能支持不同的研究范围 能隔绝实验流

11、量和营运流量 满足设备制造商封闭平台的要求,交换机/路由器的流表(flow table,流表由很多个流表项组成,每个流表项就是一个转发规则。 数据包进入交换机后,通过查询流表获得转发的目的端口。 流表一般放在TCAM(三态内容可寻址存储器)中,以实现高速查找。 尽管不同设备厂商的流表不同,但有一些功能在许多交换机和路由器中都有,OpenFlow的解决思路,OpenFlow提供了一个编写交换机/路由器流表的开放协议: 允许管理员将网络流量划分成营运流和实验流,其中营运流仍然接受常规的处理。 研究者通过选择数据包要经过的路径及接受的处理来控制实验流,尝试新的处理技术,OpenFlow交换机,一个O

12、penFlow交换机由三个部分组成: 一个流表:定义不同的流及各个流应如何处理 一个安全通道:用于交换机和远程控制器之间的安全通信 OpenFlow协议:交换机与控制器通信的接口标准 运行机制: 新协议运行在一个控制器(如用户的PC机)上,通过OpenFlow接口在流表中添加或删除相关的表项,指导交换机/路由器进行相应处理(如转发到哪个端口、丢弃等),避免将新的协议加载到交换机上,OpenFlow方案的优点,向研究者开放了因特网(可以修改流表) 满足设备制造商封闭平台的要求(不需要将新协议加载到交换机上) 具有商用设备的高性能和低价格的特点(本身就是商用设备) 能支持不同的研究范围 能隔绝实验

13、流量和运行流量,OpenFlow交换机分类,Dedicated OpenFlow switch: 专门为支持OpenFlow而设计,不支持现有的商用交换机上的正常处理流程。 交换机不再具有控制逻辑(控制面),只是作为一个在端口间转发数据包的数据路径部件。 OpenFlow-Enabled switch: 在商业交换机的基础上添加流表、安全通道和OpenFlow协议来获得OpenFlow特性。 既有商业交换机的转发模块,又有OpenFlow的转发逻辑,可以采用两种不同的方式处理接收到的数据包,专用的OpenFlow交换机,流(flow,RFC 3697定义流是从一个特定的源发送到一个特定目的(单

14、播地址、组播组、广播域)的一系列数据包。 OpenFlow中流的定义更宽泛一些,指具有某种相同特征、需要进行相同处理的一系列数据包。比如: 一个TCP连接,来自特定MAC地址或IP地址的数据包,具有相同VLAN标签的数据包,来自同一个交换机端口的数据包等。 对于非IPv4数据包,可以是匹配某个特定报头的数据包,流表项,流表中的每个条目包含三个域: header:用于定义一个流 Counters:流的统计信息(包数、字节数、最近一个数据包的到来时间) Action:处理数据包的动作 表1 第一代OpenFlow交换机的header域,流的处理动作,专用OpenFlow交换机定义的三个基本动作:

15、将数据包转发到一个或几个端口:通常要求线速转发。 封装并转发到控制器:将数据包封装后通过安全通道转发给控制器。(如流的第一个数据包) 丢弃数据包:通常用于安全目的,如丢弃洪泛攻击的包,支持OpenFlow的交换机,在商业交换机的基础上添加流表、安全通道和OpenFlow协议 流表一般会重用已有的硬件(如TCAM) 安全通道和OpenFlow协议要移植到交换机的操作系统上,隔离营运流和实验流,两种方法: 定义一个新的动作,将属于营运流的数据包转发到交换机的正常处理流程。 为营运流和实验流定义不同的VLAN标签。 支持OpenFlow的交换机必须支持以上两种方法中的一种,有些两种都支持,交换机类型

16、,Type0交换机: 只支持10元组header域和4种数据包处理动作的OpenFlow交换机,不能满足复杂实验的要求。 Type1交换机: 支持更多的处理动作(如修改包头、将数据包映射到一个优先级等),以及允许在header中出现非TCP/IP头域等,控制器(controller,控制器向流表中添加或删除流,其功能可简单、可复杂: 可以是运行在PC上的一个应用程序,在试验期间静态地建立流,将几个实验节点连接起来。(类似于VLAN) 可以在实验过程中动态地添加或删除流。 可以支持多个研究者,允许他们在不同的流集合上运行各自的独立实验,OpenFlow的使用例子,Amy想在网络中测试她设计的Am

17、y-OSPF路由协议,并只对从她的PC机上发送出去的流使用Amy-OSPF。 Amy-OSPF运行在一个控制器上。 在与她的PC机相连的OpenFlow交换机上定义一个流,凡是从其PC机进入该交换机的包都属于这个流,该流的处理动作为“封装并转发到控制器”。 当第一个分组从其PC机进入交换机时,分组被发送给控制器。 控制器使用Amy-OSPF为该流确定一条路径,在路径经过的每一个交换机上添加一个流表项,将分组返回给第一个交换机。 后继分组进入这些交换机时,按照流表的指示转发,控制器的性能、可靠性和扩放性 ,集中式控制器的处理速度能跟上新流的到达速度吗? 用一台低端PC机实现的控制器,每秒可以处理

18、一万个新流。 可靠性和扩放性? 可以使用几个控制器和简单的负载均衡机制来构成一个分布式系统,OpenFlow的应用,校园网:提供测试新协议和新算法的平台。 广域网和移动网络:移动管理,电源管理。 数据中心:数据中心内部重路由网络流量(节能,路由失效恢复) 网络管理和安全控制:按照安全策略控制流的传输路径。 软件定义网络:在分离的控制面和数据面之间提供通信接口,OpenFlow的前景,OpenFlow开辟了一个全新的研究领域,允许我们通过一种优雅而有效的方法将多年来的研究成果应用到实际网络中。 2008和2009连续两年获得SIGCOMM最佳演示奖。 MIT Technology Review将

19、其列为十大未来技术之一。 已在十多个科研机构中部署,并将在国家科研骨干网以及其它科研和生产中应用。 一些重要的设备厂商已经提供了支持OpenFlow的交换机。 二十几家公司组成了一个开放网络基金会(ONF),目标是让开放和可编程网络成为主流,让程序员像为计算机和智能手机写软件那样为网络写软件,参考文献,OpenFlow: Enabling Innovation in Campus Networks. ACM Computer Communication Review. Vol.38, Issue 2, pp.69-74. /citation.cfm?id=135

20、5746,2.2 软件定义网络(SDN) Software Defined Networks,软件定义网络是指网络的控制面与物理拓扑分离的一种网络体系结构: 交换机只运行数据面,根据交换机内部的流表进行数据包转发。 控制面运行在单独的服务器上,为每个流建立转发路径,并下发到路径上的所有交换机中。 用户可以通过编写运行在控制器上的程序来控制自己的流(软件定义网络,现状,网络设备中数据面和控制面共存,有以下问题: 控制面越来越复杂,控制软件越来越庞大; 必须兼顾数据面的高性能和控制面的高度灵活性; 研发难度大,周期长,成本高,厂商积极性不高。 数据面和控制面的差异: 数据面:处理过程较简单,要求线

21、速转发,一般用硬件实现,以获得高速度。 控制面:处理任务较复杂,不要求线速,一般由通用处理器上的软件实现,以获得可编程性,分离数据面和控制面的好处,交换机功能得到极大简化,设备成本大大降低。 新的功能只需添加在控制器上,方便网络功能扩展。 数据面和控制面可以用不同的计算平台实现: 数据面采用成熟的硬件技术(如ASIC),速度高、成本低。 控制面采用通用多核服务器,计算能力强。 控制面可以采用集中式的计算模型,克服目前分布式计算带来的问题(信息不一致,不能做出最佳决策,分布式算法的复杂度高,软件定义网络与OpenFlow,软件定义网络的组成: 控制器 交换机 控制器和交换机之间的通信协议 软件定

22、义网络和OpenFlow: 软件定义网络是一种网络体系结构。 OpenFlow是可以实现SDN的一个通信协议,SDN也可以不用OpenFlow作为通信协议,2.3 SDN控制器,控制器是SDN的控制中枢,负责维护整个网络的完整视图,为每一个流建立转发路径。 NOX是第一个SDN控制器原型。 NOX实际上实现了一个网络操作系统,为用户提供统一的、集中式的编程接口,使得用户可以方便地编写程序来管理网络,计算机和网络,令计算机执行新的任务很容易: 操作系统对底层硬件资源进行了抽象,并提供对这些抽象的访问接口。 应用程序使用高层抽象来访问硬件资源。 在因特网上增加新的功能很困难: 管理员只能通过手工配

23、置每一个网络设备来实现对整个网络的管理意图。 所用配置语言及配置参数是低级的。 网络好比是一台没有操作系统的计算机,对网络设备进行配置就好比是用与硬件相关的机器语言进行编程,网络操作系统,我们需要一个网络“操作系统”,为整个网络提供一个统一的、集中式的编程接口,允许管理员使用高层抽象来配置网络。 网络操作系统含义的变迁: 过去指“包含了网络操作能力的操作系统”。 现在指“为以编程方式控制网络提供执行环境的系统,计算机操作系统 VS 网络操作系统,类似之处: 计算机操作系统提供对资源的读、写能力; 网络操作系统提供对网络的观察和控制能力。 不同之处: 计算机操作系统管理硬件资源; 网络操作系统并

24、不管理网络,在其上运行的应用程序(称管理应用)执行真正的管理任务,网络操作系统带来的好处,网络操作系统提供集中式的编程模型,就好像整个网络是在一台计算机上,从而可以采用集中式算法。 程序使用高级抽象(如用户和主机名)而不是低级配置参数(如IP和MAC地址)书写,从而管理指令可独立于网络拓扑(网络操作系统维护高层抽象和低级配置参数之间的绑定,基于NOX的网络,一组OpenFlow交换机 一个(或几个)服务器,上面运行了: 控制器程序 网络视图(或其拷贝) 管理应用,观察与控制的粒度,观察粒度: NOX的网络视图包括交换机一级的拓扑,用户、主机、中间系统及其它网元的位置,提供的服务。 NOX的网络

25、视图包括所有名字和地址之间的绑定(缓变状态),但不包括网络流量的当前状态(瞬变状态)。 这样的观察粒度既可为大多数网络管理应用提供足够的信息,又因为变化缓慢便于在一个大型网络中维护。 控制粒度: NOX以流为单位进行控制。 这个粒度既能适应大规模网络,又能提供灵活的控制,网络运行方式,OpenFlow交换机用形如的流表表示: 若输入分组匹配特定的header,计数器被更新,相应的动作被执行。 若分组匹配多个表项,优先级最高的表项被选中。 若输入分组不匹配任何一个表项,分组被转发给控制器。 流的第一个分组会被发送给控制器(称flow initiation),由控制器建立路径。 若控制器程序希望处

26、理某个协议的所有包,可以不往流表中插入相应的表项,扩放性分析(1,NOX处理发生在三个时间尺度上: 数据包到达:对于10Gbps链路,包到达速率是Mpps量级。(由交换机处理) 新流启动:一般比包的到达速率低一到几个数量级。(由控制器实例处理,可以增加控制器实例) 网络视图发生变化:包含几千台主机的网络,网络视图发生变化的事件大约为每秒几十个,扩放性分析(2,网络状态维护: 网络视图是唯一需要保持全局一致的状态。(缓变,集中维护或多地点复制) 包状态:保存在交换机中。 流状态:保存在控制器实例中,编程接口,NOX运行在用户空间,提供事件驱动的编程接口,核心代码用C+写成。 NOX的编程接口包括

27、事件、名字空间和网络视图: 应用程序调用注册的处理程序处理事件。 NOX包含的基础应用用于构造网络视图和维护高层名字空间。 程序员以拓扑无关的方式编写管理应用。管理应用可以用Python或C+编写,动态加载,网络控制,管理应用通过OpenFlow执行网络控制: 应用可向流表中插入、删除表项,或从表项中读取计数器值。 通过修改流表表项,管理应用可有完全的二层路由和访问控制能力。 若在交换机中增加新的操作,管理应用还能够执行常规的包处理原语,如加密和速率控制等。 特定应用可以将数据包定向到专门的中间系统,以实现对数据包的定制处理,高层服务,NOX包括一组“系统库”,提供一些常用功能的高效实现,如:

28、 路由 包分类 标准网络服务(如DHCP、DNS) 基于策略的网络过滤,局限性,目前NOX仅关注功能性和扩放性,即建立一个可以编写网络管理应用的实用平台,且可以扩展到大规模网络。 NOX尚没有考虑安全和应用隔离的问题,参考文献,NOX: Towards an Operating System for Networks. /nickm/papers/p105-v38n3u-mckeownA4.pdf,3 Clean Slate Design for the Internet,Clean Slate计划: 如果我们以20-30年的后见之明重新设计一个因

29、特网,我们会设计出什么样的因特网? Clean Slate计划于2012年1月结束,转变为以下四个大的项目(/): 因特网架构: OpenFlow and Software Defined Networking 移动因特网: POMI 2020 移动社交网络: MobiSocial 数据中心: Stanford Experimental Data Center Lab,架构稳定是因特网成功的关键,在因特网几十年的发展过程中: 在IP层之下,各种网络通信技术(从无线到光纤)极大地扩展了因特网的容量和范围。 在IP层之上,各种前所未有的应用

30、(从Web到社交网络)改变了我们的生活。 然而,基本的因特网架构(即IP、TCP、DNS和BGP)几乎没有改变。 稳定的网络架构是因特网获得成功的关键。(Everything over IP, IP over everything.,架构刚性是阻碍因特网发展的因素,因特网架构的问题: 因特网没有提供和重要基础设施相称的安全性和可用性。 没有包含足够的机制用于提供安全性、移动性、可问责性(accountability)等新的功能。 缺少模块化,许多改进因特网架构的方案无法被吸收到因特网中。 因特网架构缺陷长期存在不是因为它们在技术上难以解决,而是因为目前的因特网架构无法通过可增量部署来纠正这些缺

31、陷,用clean slate设计消除架构刚性,研究人员希望通过设计“clean slate”的因特网架构,来解决因特网架构刚性的问题。 架构刚性指缺乏通过可增量部署解决问题的能力。 研究人员希望设计一个支持架构演化(随时间改变)和多样性(空间上不同)的因特网: 支持架构演化意味着不需要一开始就设计出一个完美的因特网。 空间多样性意味着不需要在因特网的所有部分都部署相同的架构,这是支持架构演化的重要特性,架构和框架,研究人员提出,因特网的核心固定设计(因特网中较长时期不会发生改变的部分 )不应当是一个完整的架构(architecture),而应是一个最小的架构框架(architectural f

32、ramework)。 框架和架构的关系类似于微内核和内核的关系: 微内核是内核的最小设计,比内核灵活性好,需要额外的服务组件来实现较高级的系统服务。 框架是架构的最小设计,比架构灵活性好,需要添加额外的组件构成完整的网络架构,微内核和内核,内核负责管理系统资源,为应用程序提供对计算机硬件的安全访问。 微内核是内核的最小设计: 只提供一组最基本的服务(如进程调度、进程间通信、存储管理、处理I/O设备等 )。 其它系统服务(如文件管理、网络支持等 )作为可以根据需要加入的选件。 微内核的目标是将系统服务的实现和系统的基本操作规则分离开来,使得内核中最核心部分的设计更简单,设计问题的实质,不是要设计

33、出一套能满足一系列特性(如安全性、可靠性、可扩放性)的完整的网络组件集合(如特定的路由方法、寻址方法、命名方法),而是要提出一个框架,在该框架下完整的网络组件集合: 能够作为全功能架构运行,满足各种需要的特性; 不需要静态和一致地部署,而是可以共存、通信和随时间演化。 为最大化在框架下的创新自由度,框架应规定得尽可能少,哪些架构特性必须是固定框架的一部分,研究人员认为只有三个核心接口(原语)是需要固定的: 域间通信接口(即域间路由) 应用和网络的接口(即网络API) 主机用于抵御DoS攻击的接口 由这三个核心接口构成的框架称为FII(Framework for Internet Innovat

34、ion,FII的假设,因特网仍然按自治域(AS)组织 所有的自治域通过一个全局的域间路由系统连接起来 协议统一编号,是什么阻碍了因特网架构的创新,因特网架构允许独立的创新发生在网络应用和网络技术上,但不允许发生在架构内部。 然而,网络中的许多设计改变: 要求广泛的一致(如域之间) 辐射到整个架构(许多协议都要变) 要求改变物理设施的许多部分 因特网架构组件之间的高度耦合阻碍了因特网创新,架构模块化是重新设计因特网的指导原则,架构模块化要求架构组件的接口是可扩展的和抽象的: 可扩展:新的功能可以添加到一个特定的组件中,能够感知到这个变化的组件可以使用它,而未被修改的组件也能正常工作。(可增量部署

35、) 抽象:接口应工作在合适的抽象层次上,避免涉及实现细节,3.1 架构锚(architecture anchor,架构锚:本质上很难改变的因特网架构组件。 为使架构锚不会束缚与之交互的组件,架构锚的接口必须是可扩展的和抽象的。 因此,设计FII框架需要甄别出因特网中的架构锚,并为它们设计抽象和可扩展的接口。 因特网只有两个架构锚: 域间路由 应用,域间路由是架构锚,各个自治域利用域间路由连接起来,修改域间路由要求在各个域之间达成一致,因此域间路由是架构锚。 域间路由的接口必须是抽象的和可扩展的: 抽象:域间路由应只涉及域标识符和路径特性,不规定路径的语义、传输方式及计算方式,并完全独立于域的内

36、部机制。 可扩展:应支持路由计算、路径QoS及域间路由的许多其它方面。 目前只有Pathlet routing协议满足这两个条件,应用是架构锚,因特网应用的数量巨大、发展迅速、来源丰富,网络架构的改变不应要求修改应用,因此应用也是一个架构锚。 应用和网络之间的接口(NetAPI)必须是抽象和可扩展的: 抽象:接口使用名字和结构化数据定义,不能绑定到特定的名字格式。 可扩展:允许引入新的接口语义而不影响原有应用,以下组件不是架构锚,IP或其它全局通用的包处理协议: 基于FII建立的网络架构不需要一个全局通用的包处理协议;也不需要依靠IP进行全局寻址。 主机网络栈: 主流操作系统升级很快,新的网络

37、特性能很快加入到主机网络栈中。 硬件设施: 当前的硬件设施是阻碍架构变化的锚,这个问题将来可以通过使用软件定义网络来避免,FII与因特网架构的比较,3.2 安全,FII必须能启用安全,但又不需要去实现安全: 除了保证自己机制的安全性以外,FII并不需要去解决任何特定的安全问题。 人们必须能够使用FFI提供的原语和它在其它组件中允许的自由度去建立可使因特网更安全的机制。 问题: 为了允许建立必要的安全机制,FII中还需要包括什么原语,网络安全的目标,面对攻击时,网络应当确保通信中的每一方: 其发送的数据包能够到达参与通信的另一方(可用性) 能够确定另一方的身份(身份鉴别) 能够对收到的数据包的真

38、实性进行验证(数据起源鉴别和完整性检查) 加密技术足以满足身份鉴别、起源鉴别和完整性检查的要求,剩下的唯一威胁是可用性,针对可用性的攻击,攻陷路由器或其它网元,使其失效或产生byzantine行为(一种欺骗行为,声称将会转发分组,但其实不转发)。 拒绝服务攻击(Denial of Service,DoS,如何应对被攻陷的路由器,路由器失效: 一般的可靠性机制(如多路径)可以应对路由器失效。 byzantine攻击: Pathlet routing:一个byzantine域只能对自己的转发行为撒谎,不能发布虚假的pathlet。 网络监视和端到端观察:用户可以检测到拜占廷攻击,并选择绕过该域的路

39、由。 类似的域内路由机制或网络内监视。 不需要在FII中加入处理这类攻击的安全原语,如何应对拒绝服务攻击,域内机制: 每个域可实现自己的域内DoS攻击防御机制。 域间机制: FII提供一个接口(原语)来处理域间DoS攻击,受害者发送一个shut-up消息给攻击源,要求其不再发送任何数据包给它,3.3 其它原语,元协商(meta-negotiation): 主机通信前,需要协商它们将使用的高层协议。 FII标准化一个元协商协议,供主机协商使用哪一个协商协议。 接口查询(interface query): FII定义的NetAPI支持对API方案的查询,以便让应用决定调用哪一种API方案,其它原语

40、(续,引导接口(bootstrap interface): 主机第一次进入一个域时,必须了解环境并确定本地资源的位置。 FII要求每一个域的网络技术支持一种引导方法,与该技术关联的主机网络栈实现必要的主机操作。 FII标准化一个可被用户程序调用的引导接口,当检测到本地网络技术后,主机栈执行合适的引导操作。 引导接口至少返回以下信息:域标识符,主机的域内地址,缺省的可信第三方的名字,到达第一跳路由器的地址,一个资源目录,一个路由计算代理,3.4 举例,域X中的主机A上有一个应用想发送一个文件给域Y中的主机B 域X支持某个“下一代以太网”(NGE) 域Y支持某种新的IP(newfangled IP

41、) X与Y之间使用点-点光纤链路连接,几个术语,路由计算代理(Route Computing Agent,RCA): 一个虚拟实体,为主机提供到达目的节点的端-端路径。 RCA可能位于主机上,也可能是域提供的一种服务,也可能是一个第三方服务。 地址(全地址): 域标识符 + 域内地址(Intra-domain name,IDA) 转发指示(forwarding directive): 构成一条路径的pathlet集合 + 目的节点的全地址,工作过程,A的应用程序调用接口查询原语,为文件传输选择一种合适的API方案。 将文件和主机B的名字传给选定的API。 A的网络栈解析B的名字: 首先确定名字

42、所属的名字空间 将名字发送给合适的名字解析器(名字解析器的位置根据资源目录确定) 接收名字解析器发来的B的全地址(B所属的域及域内地址,工作过程(续,A从RCA获得一组合适的pathlet(RCA的位置通过引导程序获得) A构造在第一条pathlet上传输的分组,封装在NGE分组中,发送给第一跳路由器(第一跳路由器的地址通过引导程序获得) 第一跳路由器将分组转发到边界路由器(域内路由完成) 边界路由器将分组在光纤上传输。 Y的边界路由器将包转换成NIP格式,使用B的全地址作为目的地址,将分组递送到B(域内路由完成,兼容性要求,需要兼容的地方: A和B需要使用相同的端-端(高层)协议。 不需要兼

43、容的地方: X和Y可以运行不同的内部架构,使用不同的编址和路由方案。 FII与因特网相比: 因特网中的域可以使用不同的二层技术,但必须使用IP进行全局寻址。 FII的域可以使用不同的三层技术,不需要全局寻址方案,3.5 几个问题,FII使得架构创新很容易吗? 否 公平地说,FII使得架构创新从 “本质上不可能” 变成 “可能,但不容易”。 FII对因特网可以采用的架构有限制吗?是 FII只能支持满足以下三个条件的架构: 使用pathlet routing作为域间路由协议 使用FII的NetAPI语法(对语义无限制) 支持shut-up消息,几个问题(续,为什么不采用覆盖网络或类似GENI的虚拟

44、测试床? 尽管覆盖网络是一种重要的网络技术,但它不能使得一个广泛使用的架构发生改变而不影响现有应用或架构中的其它组件。 虚拟化的测试床设施(如GENI)虽然允许在一个物理设施上同时部署许多不同的架构设计,但GENI没有描述如何去演变一个当前正在使用的架构而不产生广泛性的破坏,几个问题(续,为什么不采用主动网络? 主动网络提供了灵活的(从而是可进化的)数据路径,但它不涉及其它方面的架构创新。 建议采用软件定义网络提供灵活的转发设施。 这是故事的结束吗?否。 这只是关于架构进化的一个长期研究计划的开始,希望有更多的人去寻找替代这三个基本原语的更好方案,与此同时质疑作者的基本推理路线,看是否需要添加

45、新的原语或采用不同的原语。 需要更好地理解什么样的功能不能在基于FII的架构上实现(局限性,3.6 域间路由-Pathlet routing,Pathlet routing是一个抽象(与域无关)和可扩展的(可提供新的特性)域间路由方案,与此同时仍然保留和BGP相同的策略灵活性和自治性。 Pathlet的发布: 每个域发布一组可以承载网络流量的路径片段(称为pathlet),Pathlet用它们经过的虚拟节点(可想像成域)描述。 包含在一个pathlet中的域都必须同意支持该路径片段(用加密表示),因此pathlet本质上是服从策略的,并且是不可伪造的,Pathlet的传播,方式一: 在物理拓扑

46、上使用基于gossip的传播算法,并允许域撤销路由。 方式二: 使用一个集中式的数据库(如放在Google站点上),可以向数据库中注册或从数据库中撤销pathlet,路由计算,从发布的所有pathlet中选择能够构成端到端路径的一系列相容的pathlet,可按任何标准来选择路由。 作为源路由协议,pathlet routing可方便地支持由用户控制的多路径路由。 Pathlet扩展后很容易支持域间任意播和多播,在pathlet上传送数据包,可将选择的pathlet放在包头中,也可通过控制面先建立路径。 每条Pathlet上的包可以有自己的包格式,包头一般会按如下组织: pathlet信息(要经

47、过的pathlet序列) 路径可见的信息(如用于拥塞控制的信息) 目的节点的域内地址,Pathlet routing的扩展性,pathlet的描述是可扩展的,它允许域发布新的服务(如QoS)或性能信息(如带宽、丢包率)。 pathlet不需要在IP层面上互连,只要邻接的pathlet在相应的端点上有相容的传输媒体,就可以互连。(二层) 传播pathlet的方法可以改进或替换。 pathlet routing支持各种各样的策略,Pathlet routing的扩展性(续,pathlet的粒度没有规定: 一个虚节点可能代表一个AS、一个地理区域、一个物理路由器或路由器中的一个实例。 一条pathl

48、et可能代表一条物理链路、一条完整的端-端路径、一条增广了某个服务(如病毒扫描)的路径、或一条穿过了好几个AS的路径。 包格式不需要全局定义,每条pathlet可以规定进入的包格式和离开的包格式,3.7 应用-网络接口-NetAPI,当前的netAPI不是抽象的,它们通过在应用和底层网络之间传递网络地址,将两者耦合起来。 当前的netAPI扩展性不够,它们被绑在类似socket的语义上,不能支持其它的接口。 一个完全可扩展的netAPI应当支持任意的接口语义,应用只需给出接口方案的标识符以及与该接口方案关联的接口调用,抽象和可扩展的NetAPI,FII引入一个间接层次,使用一个方案ID指出使用

49、的是什么编程接口方案,名字的可扩展性,NetAPI的可扩展性要求名字本身必须是可扩展的,这样新的命名方案(名字空间)可以添加进来。 应用不能绑定到特定的名字格式,应当将名字当作不透明、无语义的比特串,依靠网络栈去解析和调用基于名字的功能。 名字应当有一个熟知的语法,将名字空间与名字本身分隔开,比如(namespace: name)这样的格式,其中namespace是名字空间的ID,名字解析,两级名字解析: 网络栈中的名字解析器确定名字所属的名字空间(元解析); 调用该名字空间的名字解析器。 主机的名字解析通常返回: 主机的全地址(若是多穴主机,返回多个全地址) 描述主机支持哪些端到端协议的元数据 FII通过插入一个简单的间接层次,允许接口和命名的完全一般性,NetAPI的实现,方式一: 直接将NetAPI暴露给应用程序(类似socket接口) 方式二: 将NetAPI隐藏于网络栈中,应用只同一个文件系统打交道,网络栈确定所请求对象的位置,若不在本地,远程调用NetAPI,名字解析的实现,一个名字空间可以由几个不同的名字解析协议提供服务。 在资源目录中,服

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论