2012-03-24 10:01 3702人阅读 评论(0) 收藏 举报
分类:
计算机网络(12)

版权声明:本文为博主原创文章,对文章内容有任何意见或建议,欢迎与作者单独交流,作者QQ(微信):245924426。

(1) 问题的提出

TCP和其它很多传输协议基于这样的假设:发送者和接收者通过某网络路径长期连接在一起,否则协议会失效,数据也不能被传输。但并非每一个网络都能保证有端到端的路径,这些网络之间的连接是间断性的。要在这类网络中传输数据是一件很棘手,同时极具挑战性的事情。

(2) DTN的定义

在这些网络中,当有工作链路的时候,交换数据的工作仍然能够通过将它们存储在结点并在之后转发来实现。这个技术叫做消息交换。最终,数据会被延迟送到目的地。其结构基于此方法的网络叫做DTN(Delay-Tolerant Network,或Disruption-Tolerant Network,中断容忍网络)。

(3) 有关DTN的工作

对于DTN的工作开始于2002年,这一年IETF成立了一个关于DTN的研究组。DTN的灵感产生于在空间中发送包的想法。空间网络必须应对间歇性的通信和很长的延迟。Kevin Fall发现这些用于空间网络的想法也能够被应用于间歇性连接很常见的地球网络中(Fall,2003)。这个模型对通信过程中存储和延迟时有发生的因特网作了一个有用的总结。数据传输就像在邮政系统中传输或电子邮件一样,而非像在路由器中的包交换一样。

       2002年以来,DTN的结构得到了更新,DTN模型的应用也得到了发展。Laoutaris等(2009)研究了该模型,发现它能够以较小的代价提供充足的能力,同时,DTN模型提供的能力是传统端到端模型提供的能力的两倍

(4) DTN的结构

对于缺乏端到端连接的情况,DTN能够正常运转,因为它有一个基于消息交换的结构,如图1所示。它也可用于容忍可靠性低和延迟大的链路。这个结构在RFC 4838中有详细说明。

图1 延迟容忍网络结构

在DTN术语中,一个消息被称为是一个bundle。DTN结点包含有存储器(像磁盘或闪存一样典型的连续存储器)。它们存储这些bundle,直到链路可得,然后转发这些bundle。这些链路间歇性地工作。图1展示了五个当前没有工作的间歇性链路,以及两个正在工作的链路。一个工作链路叫做一个contact。图1也显示了存储在两个DTN结点处的bundle,它们正等着被contact发送出去。使用这种方法,这些bundle被从源站到目的站的contact延迟了。

(5) 研究展望

在学术界,DTN的许多方面正在研究中。正如上面提到的,路由的好策略取决于contact的特性。在网络中存储数据也引发了其它问题。现在,拥塞控制也必须考虑在结点处的存储器,它们被当成另外一种能够被充分利用的资源。端到端通信的缺乏也带来了安全问题。在一个DTN结点接手一个bundle之前,它可能想知道发送者是否有权使用网络,并且这个bundle是否是目的端所需要的。这三个问题的解决之道取决于DTN的类型,因为空间网络与传感网络不同。

参考资料

Andrew S. Tanenbaum, ComputerNetworks(fifth edition), 机械工业出版社。

延迟容忍网络(Delay-tolerant networking)的更多相关文章

  1. 分布式CAP理论介绍:一致性(Consistency),可用性(Availability),容忍网络分区(Partition tolerance)

    在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性(Consisten ...

  2. 信息中心网络 ,Information-centric networking, ICN

  3. JDK1.6新特性,网络增强(Networking features and enhancements)

    参考: http://docs.oracle.com/javase/6/docs/technotes/guides/net/enhancements-6.0.html http://blog.csdn ...

  4. 极客时间-左耳听风-程序员攻略-Linux系统、内存和网络

    程序员练级攻略:Linux系统.内存和网络 Linux 系统相关 Red Hat Enterprise Linux 文档 . Linux Insides ,GitHub 上的一个开源电子书,其中讲述了 ...

  5. High Performance Networking in Google Chrome

    小结: 1. 小文件存储于一个文件中: 在内部,磁盘缓存(disk cache)实现了它自己的一组数据结构, 它们被存储在一个单独的缓存目录里.其中有索引文件(在浏览器启动时加载到内存中),数据文件( ...

  6. High Performance Networking in Google Chrome 进程间通讯(IPC) 多进程资源加载

    小结: 1. 小文件存储于一个文件中: 在内部,磁盘缓存(disk cache)实现了它自己的一组数据结构, 它们被存储在一个单独的缓存目录里.其中有索引文件(在浏览器启动时加载到内存中),数据文件( ...

  7. 为 UWP 应用提供的 .NET 网络 API

    [编者按]本文作者是 Windows networking 团队项目经理 Sidharth Nabar.在微软 Build 2015 大会上,.NET Core 5 作为开发 UWP(Universa ...

  8. High Performance Browser Networking - TCP UDP TLS

    延迟 定义和标准延迟 延迟简单地说,它是一种转移或信息包从起点到终点,所花费的时间. 延迟=发送延迟+传播延迟+处理延迟+排队延迟: Propagation delay 传播时延 传播时延这个概念.是 ...

  9. iOS之网络请求NSURLSession剖析

    2013年的WWDC大会上,苹果推出了NSURLSession,对Foundation URL加载系统进行了彻底的重构,提供了更丰富的API来处理网络请求,如:支持http2.0协议.直接把数据下载到 ...

随机推荐

  1. 《java数据结构和算法》读书笔记

    大学时并不是读计算机专业的, 之前并没有看过数据结构和算法,这是我第一次看.         从数据结构方面来说:                数组:最简单,遍历.查找很快:但是大小固定,不利于扩展 ...

  2. 每个程序员都会的 35 个 jQuery 小技巧

    1. 禁止右键点击 $(document).ready(function(){ $(document).bind("contextmenu",function(e){ return ...

  3. 【android 开 发 】 - Android studio 下 NDK Jni 开发 简单例子

    Android 开发了一段时间,一方面 ,感觉不留下点什么.有点对不起自己, 另一方面,好记性不如烂笔头,为了往后可以回头来看看,就当做是笔记,便决定开始写博客.废话不多说 ! 今天想搞一搞 ndk ...

  4. postgresql 服务器端编程之hello word

    create or replace function addjifen( iuserid text, iamout INTEGER) returns text AS \[ BEGIN return ' ...

  5. ORACLE 11g 数据库体系结构图

    ORACLE 11g 的数据库体系结构图,非常全面.系统.高屋建瓴的整体介绍了ORACLE 11g 的数据库体系结构.如果能全面了解.清晰梳理.深入掌握这些知识点,相信对你了解学习.深入研究ORACL ...

  6. TCP首部解析

    TCP首部: TCP数据被封装在一个IP数据报中,如下: TCP首部数据格式: 16位源都口号,16为目的端口号用于寻找发送端和接收端的应用进程,加上IP首部的源端IP及终端IP,唯一的确认一个TCP ...

  7. RAC异机恢复

    RAC异机恢复PDCL到PFCL: PNCL:RAC+ASM ,product env   db name:PNCL   instance:PDCL1 PDCL2 PFCL:RAC+ASM ,perf ...

  8. CSS补充与JavaScript基础

    一.CSS补充 position 1.fiexd 固定在页面的某个位置; 示例将顶部菜单始终固定在页面顶部 position: fixed; 将标签固定在某个位置 right: 0; 距离右边0像素 ...

  9. Tips for Planning Your Business Startup

    原文链接:http://domaintree.me/?p=1037 By Robert Thibodeau –  Starting a business can be a very daunting ...

  10. stm32定时器实现60秒定时秒表

    #include "led.h" #include "delay.h" #include "key.h" #include "sy ...