连接图算法CGR(一)


前言

这几天的科研任务需要了解与CGR路由有关的知识,重点阅读了两篇相关论文,想通过写这篇博客将理解的知识进行一下整理,同时也希望给其他想要了解CGR路由算法的童靴提供一点参考信息。这一篇博客重点介绍CGR路由。下一篇博客将会介绍一下连接计划的优化问题。


CGR路由算法简介

连接图算法CGR(Contact Graph Routing)

  • 提出背景

    在导航卫星网络中,卫星采用动态调度的指向性天线来实现星间链路,任意时刻,任意两个卫星之间不一定存在端到端路径,卫星之间的连接也不是持续建立的,而是间断连接的。导航卫星网络可以视为一个典型的容断容迟网络。由于传统的地面路由算法假定节点之间有持续的链路连接,而针对移动通信卫星星座的路由算法假设卫星节点之间存在端到端的路径,所以均不适合导航卫星星座。

    在导航卫星星座中,导航卫星的链路都是预先规划好的,每颗卫星都可以获得当前和将来的拓扑信息。链路调度通常定义为一颗卫星与其他可见卫星周期性的,顺序的建立星间链路。

    NASA喷气式推进实验室的研究人员Burleigh针对延时大、链路间断可用的行星际因特网提出了连接图路由算法CGR,利用已知的连接计划,采用一种启发式的路径计算算法计算路径。CGR可以同时计算多条路径,并考虑了链路带宽的消耗问题。

  • 连接图路由算法的整个处理流程

    这里写图片描述

    连接计划包括连接信息和距离信息。CGR依赖于连接计划生成网络的连接图,提前分发到每个网络节点。随着时间的推进,CGR通过连接计划过程来更新连接计划,比如增加未来的连接机会,并去除过去的连接计划。每个节点,CGR利用一种称为连接检查过程的算法(CRP)在连接图的基础上计算可以转发的邻居节点,并通过一定的策略选择下一跳节点。在下一跳结点,执行相同的处理。

    (ps:有没有觉得这一段很抽象,只是一个非常概括的描述)

    连接图对每个其他节点D包含两个链表:

    • 一个发送者对象链表:起始时间,结束时间,发送节点号,数据传输率,该链表从所有以D为接收节点的连接消息中得出,并按起始时间排序;
    • 一个来源对象链表:包含发送节点号和该节点与节点D的距离,由距离消息得出。

    值得注意的是,CGR中没有路由表,因为不同时刻到达的束转发路径会有很大的不同。CGR会为每个到达的束根据当前的连接关系计算转发路径。通常,CGR会计算每个束的预计容量消耗ECC,和每个连接机会的残余容量RC,选择路径的时候会判断该路径是否还有足够的链路容量,因此能够避免拥塞的发生。

  • 伪代码实现

    CGR使用了一个启发式的路由算法,通过递归的调用连接检查过程(CRP)来实现路径的计算。如下:

    这里写图片描述

    这里写图片描述

    为了验证CGR路由算法的有效性,首先进行了CGR路径计算的模拟,仿真设定CGR计算从卫星1-24的路径,为了测试包产生时刻对CGR路由计算结果的影响,每隔3s进行一次路由计算,计算结果如下图所示:

    这里写图片描述
    (该仿真结果有助于理解CGR算法,及其伪代码实现)

    伪代码有点难以理解,查了下关于contact graph routing的源文档,发现理清代码结构就很好理解啦。
    D定义为目的结点,该路由算法采用递归的方式,从最靠近D结点的结点计算起,慢慢得出整条路径。
    初始化应该很好明白,对每一个发送消息到D的节点m(为了打字方便,此处用m代替Mtransmit)进行循环结构判断,分三种情况:

    • m是本地结点
    • m是相邻节点,且已经属于可转发相邻结点集合
    • m是除这两种节点以外的结点

    再根据m的起始时刻,结束时刻,以及束b的路径消耗等来判断是否进行一些信息的更新。

参考文献

【1】《基于连接图路由算法的导航星座网络路由性能研究》 燕洪成,张庆君,孙勇, 北京空间飞行器总体设计部
【2】《Contact Graph Routing》 draft-burleigh-dtnrg-cgr-00,July 4,2010


声明:如需转载,请注明出处,蟹蟹!

posted @ 2022-11-20 22:40  风一样的liz  阅读(350)  评论(0编辑  收藏  举报