构建基于空间的ISP

2021-05-12 22:29:45

编辑注意事项:这是一个四部分系列的第二件,在为Spacex提供动力。如果你错过了昨天的作品,你可以在这里阅读。

有要求软件工程师出汗。大量分配到数千个节点。高可靠性和可用性。多个不同的平台。快速的网络增长。

这是世界SPACEX的Starlink程序,它已经设定了一个目标,为访问不可靠,昂贵或完全不可用的位置提供高速宽带互联网。

堆栈溢出用两个Starlink软件领导 - Akash Badshah和Andy Bohn - 关于他们的发展方法和实践。该软件大致分为两部分:1)苍蝇和2)软件支持飞行组件的软件,管理网络,控制Starlink卫星“星座” - 在轨道中的Starlink卫星 - 并保持星座之间的通信和普通的地面互联网。

目前的Starlink星座由低地球轨道数百个小,低成本的卫星组成,公司旨在将此扩展到数千次。低空是提供低延迟所必需的。目前的地球静止卫星距离地球中心26,200英里2200英里,表面上方22,300英里,这意味着信号大约需要0.240秒来进行往返。 Starlink目前在340英里的轨道上,将光速度延迟切割成近百分之一的速度。

网络软件团队的经理Bohn表示,“我们有一个地面服务集群,讨论了谁与网络交谈。对我们的卫星有趣的是他们非常接近。因此,卫星可能只有几分钟的开销。因此,客户屋顶上的天线需要改变它经常与之交谈的卫星。“

“考虑手机如何与固定的通信塔通信。偶尔你的手机需要从一个塔转到另一个塔,但连接通常是稳定的,“Bohn说。 “对于Starlink来说,主要挑战之一是我们的”塔楼“是轨道地球,强迫您对互联网的道路经常改变。我的团队通过计算所需的网络拓扑,将此计划分发给网络中的资产,配置硬件以使其发生,以使其发生。“

当然,Starlink卫星呈现自己的问题。每个卫星不仅负责维持与视图中的地站的连接,但与大多数卫星不同,Starlink Inter在很大程度上导航自己。当您推出数百个卫星时,没有时间将每个人置于自己的特定轨道;相反,地面控制将每个卫星与星座中的一个地方进行各种卫星,卫星操纵本身就位。然后,地球侧网络提供交通条件和星座变化的连续更新,而每个卫星在其计划的轨迹上更新了地面。

“问题的组合学使这个系统将这个系统扩大到数以上万的人为挑战,”Bohn说。 “在服务用户时,Starlink卫星需要使用不同频率的数据束绘制地面以避免干扰。我们最终解决了全球规模着色和干扰避免问题,这是我们实时做出更大的挑战之一。“

STARLINK软件,卫星和地面上,都是在C ++中的几乎完全编写的,在Python中有一些原型开发。该软件是在持续的集成环境中开发的,团队经常与主开发分支合并,并每周在太空中部署到卫星的舰队。

“我们为大多数车辆控制软件使用C ++。 Spacex有很多遗产,因为它是一种非常低级的语言,我们可以在裸机微控制器上使用。这让我们在我们在整个不同的车辆中使用的嵌入式Linux计算机上使用它,“Badshah解释道。 “我们从Dragon和Falcon学到了很多关于如何在共享数据的三次计算机上运行自冗余架构,并解决同样问题。”

新代码通过许多不同的测试框架进行了广泛的测试周期,从简单的单元测试到庞大的模拟中运行。一些最有趣的测试包括将卫星从地面站放置的卫星从地面站施加并测试他们的通信,以验证卫星将运行的整个环境仿真的测试。实质上,Starlink在地球附近建立了模拟的模拟时空。

“对于这些算法的开发和测试,我们在高性能计算群集中连续集成运行的全尺寸网络仿真。该模拟能够运行C ++生产代码以及在Python中编写的原型代码运行,“Bohn说。 “Python版本允许在设计阶段进行快速迭代。一旦我们对算法的结果感到满意,我们将它移到C ++,因此它在生产中有效运行。“

Starlink的一个大挑战之一是卫星们自己经常改变。 Starlink表示,他们从未有过推出的推出,其中卫星进入星座的卫星没有从上次发布发生的。在大多数环境中,这将是一个主要问题(读:灾难的谱系)通过将软件开发人员直接进入制造周期来解决这个问题。

而不是新的硬件被“抛出墙壁”到开发人员,软件开发人员将制造过程融入到实际制造车间的范围内。为了确保硬件和软件在整个过程中保持同步,有时会在卫星上脱离生产线的卫星和轨道的轨道。

一旦卫星软件准备飞行,它就包装了传输到卫星。首先将发布部署到轨道上的几颗卫星并在适当的地方进行测试。如果有故障,则可以回滚软件。如果它判断令人满意,软件将在指数卷栏中部署到剩余的卫星。

C ++的另一个优点是内存管理领域。无论您在发布前检查代码多少次,您必须在轨道中准备好软件损坏。 “我们建立的是一个核心基础设施,使我们能够知道我们正在分配我们的所有内存

初始化时间。如果事情发生故障分配,我们将在前面做到这一点,“Badshah说。 “我们还有不同的工具,以便通过应用程序持久的任何状态都在内存中的一个非常特定的位置管理。这让我们知道计算机之间的正确共享。你不想要的是一种情况,其中一台计算机采用辐射击中,一点点翻转,它不在与其他计算机的共享内存中,它可以自己运行。“

如果您想了解更多关于在空间X的车辆工程师的内容,请查看他们的职业生涯。如果您对DepsX的其他部分的代码有兴趣,您可以进入我们的其余部分。

标签:太空软件,spacex