传统网络中,各个AS(Autonomous System,自治系统)相互连接并使用EGP( Exterior Gateway Protocol,外部网关协议)互相通信,其中BGP是EGP的代表协议。BGP支持70000 多个不同网络之间的协调,但在全球多次发生的网络故障事实表明,BGP是互联网中最脆弱的部分之一。2020 年,一场影响美国服务提供商 Cloudflare 的重大事件持续了 7 个小时,导致全球流量下降 3.5%。此事件由一个微不足道的BGP配置错误引起——区域路由器中的轻微故障触发了众所周知的蝴蝶效应,从而导致大部分地区的互联网连接中断。这种中断会给企业带来巨大的成本,并对依赖互联网提供关键服务的机构造成严重影响。
那么,一个重要的问题是:我们为何要依赖这种不可靠的基础设施?答案出奇地简单:在发明之初,BGP并非旨在处理我们今天拥有的全球规模和数量的网络互连。BGP的创建是为了支持 80 年代后期规模小得多的互联网互连。在过去的 30 年里,它的大部分功能性运作给人一种虚假的稳定感。为了保证可靠通信,我们需要比 BGP 所能提供的更强大的属性。
其中,由瑞士苏黎世联邦理工大学及其附属公司 Anapaya Systems 开发的SCION(Scalability, Control, and Isolation On Next-Generation Networks)架构,自诩为“最现代、最安全的架构”,正引起业界关注。SCION 代表的是下一代网络的可扩展性、可控性和隔离性,其目标是通过安全的域间路由和路径感知网络实现一个安全、稳定和透明的互联网。
本文将系统介绍什么是SCION 、与传统互联网架构的对比、SCION应用现状等。
传统互联网架构概述
互联网是一个全球范围内的互连计算机网络系统。通过互联网,我们可以即时分享全球的数据和信息。我们依赖于手机、笔记本电脑、物联网设备、家庭自动化设备等不断地访问互联网,以便与他人进行交流、购物、使用社交媒体以及工作等等。
从架构的角度来看,互联网只是多个网络的互连,它是将世界各地的计算机网络连接成一个实体。互联网不是一台大型计算机,而是众多计算机和设备相互连接。
为了能够连接所有大陆,在世界各地建立了一个非常复杂的物理海底网络,如下所示:
| 海底电缆的布线(来源:维基百科)
互联网的历史
在互联网时代之前,计算机只是一台大型主机,无法与任何其他计算机“对话”。当时没有任何技术或术语可以将两台计算机通过“网络”连接起来。
从历史上看,互联网的起源始于1960 年代,当时美国高级研究计划局网络(ARPANET) 开始开发其公共分组交换网络。
1969年10月29日,加州大学洛杉矶分校(UCLA)的一名学生查理·克莱恩(Charley Kline)试图登录斯坦福研究所(SRI)的主机,这是两台计算机之间第一次成功发送信息。
发送到远程终端的第一个命令是“LOGIN” ——它一共进行了两次尝试,第一次尝试在 Charley 键入“LOG”后崩溃了,但他们设法解决了问题,并在第二次尝试时成功登录到 SRI 的远程终端。随着时间的推移,ARPANET也开始不断发展壮大。
然而,由于连接到 ARPANET 的网络不同,使用的网络协议也各不相同,一些网络无法相互通信。为了克服这一挑战,1970 年代开发出了TCP/IP协议栈,并在 1974 年产生了第一个初始 TCP RFC 草案 - RFC675。该 RFC 中首次使用术语“Internet”作为互联网络的简写。
TCP/IP 堆栈花了将近10 年的时间成为了 ARPANET 标准,所有节点都在 1983 年迁移到 TCP/IP 堆栈。其他较旧的协议,如 1960 年代开发的网络控制程序 (NCP)已被弃用。Telnet和 FTP(文件传输协议)是第一个使用 Internet 网络的应用程序(自1969年以来可用)。
ARPANET 于1989 年关闭(最终于 1990 年退役),取而代之的是美国国家科学基金会网络(NSF)。1986 年,NSF 建立了一个1.5 兆比特/秒的网络,这就是众所周知的NSFNET。许多商业和其他ISP(互联网服务提供商)在此期间被引入并连接到该网络。
1991 年之前,互联网主要被科学家和政府机构用来交换信息和数据。1991年,万维网 (WWW)问世。尽管Internet网络的最初发展始于美国,但是CERN项目通过引入最初的WWW和HTTP标准使得Internet更容易为普通用户使用,从而带动了Internet的大规模发展。
目前,根据IXPO组织的数据显示:
截止到2022年1月,全球共有49.5亿人使用互联网(占世界人口的 62.5%)
索引网络共22.5亿页
据Statista的数据,到2025年,我们每天将发送超过3760亿封电子邮件
IDC 预计,到 2025 年,全球数据空间将增长到175 zettabytes(1 ZB 等于 1 万亿 GB)
IOT Analytics 报告称,到 2025 年,物联网设备将达到271亿台
| 历年互联网里程碑
综上所述,互联网的发展经历了多次迭代升级。然而,在其发展过程中却没有预料到现代互联网使用存在的一些问题。
现代互联网架构
一般来说,现有的互联网架构由三层ISP组成,ISP(internet service provider)是指互联网服务提供商,类似中国电信、中国移动、中国联通就是国内有名的ISP。
| 当前的互联网架构(来源:维基百科)
三层ISP结构分为主干ISP(Tier 1 )、地区ISP(Tier 2)、本地ISP(Tier 3)。本地ISP给用户提供最直接的服务,本地ISP可以连接到地区ISP,也可以连接到主干ISP。只要每一个本地ISP都安装了路由器连接到某个地区ISP,而每一个地区ISP也有路由器连接到主干ISP,那么在这些相互连接的ISP的共同作用下,就可以完成互联网中的所有的分组转发任务。
互联网交换点(IXP):为了更快地转发分组,IXP允许两个网络直接连接并交换分组,而不需要通过第三个网络来转发分组。
因此,获得互联网接入的关键是连接到互联网服务提供商,而问题是 ISP 如何相互信任并交换路由信息?BGP(边界网关协议)就是起到这个作用,BGP允许ISP之间交换IPv4和IPv6前缀。
然而,ISP的BGP 路由交换策略很难建立清晰和开放的关系,这可能会导致许多误解,甚至是基于 BGP 的前缀劫持,这种情况每天都会发生多次,Facebook、微软等大型互联网公司都难以避免遇到这个问题。
这就是传统互联网架构存在的主要问题(传统互联网架构并不是为了防止此类问题而构建的),现在出现了一种更现代的方法,称为 SCION 。
SCION互联网架构
SCION(下一代网络的可扩展性、可控性和隔离性)是一种完全不同的全球互联网架构方法,它主要侧重于安全性、可控性、健壮性、高可用性和隔离性。SCION 项目于 2010 年在瑞士苏黎世的 ETH 大学启动,它被 IETF 认为是基于新型路径感知网络的“未来互联网提案”。
SCION 是一种路径感知协议,旨在取代互联网中广泛使用的 BGP 协议。路径感知架构允许终端主机(或网关)了解可用的网络路径段并将它们组合成端到端的路径,并在包头中携带。
SCION网络架构的组成部分
SCION网络架构定义了如下概念:
隔离域 (ISD,Isolation domains ) :一个独立的公共管辖区和故障域。
ISD 核心:管理 SCION 网络核心的 AS(自治系统,autonomous systems),提供全球连接,负责 ISD 域内的策略。
核心 AS:ISD核心的一部分。
路由:可以分为 ISD 间域和 ISD 内域。
信任根配置 (TRC):每个 ISD 都有自己的信任根, 它解决了寡头垄断模型(Web PKI)和垄断模型(DNSSEC,RPKI)的问题,并确保几乎不会受到针对内部 ISD 路由策略的外部攻击。
ISD 内信标系统:在 ISD 内通告可能的路径,遍历 ISD 内的所有 AS,通过 ISD 核心提供多路径。
ISD 间通信:如果主机“S”想要在 SCION 网络中与主机“E”通信,则有三个 ISD(蓝色、橙色和绿色)——下图说明了该过程:
| ISD间 通信图(来源:SCION-architecture)
下面是一个简单的 SCION 拓扑概述:
| SCION 拓扑图(来源:SCION-architecture article)
SCION网络路由过程
SCION架构中,互联网仍然由自治系统组成。但是,通过将自治系统分组到“隔离域 (ISD) ”中,增加了一个层次结构层。通常,ISD 中的 AS 共享某些属性。例如,他们可能共享一个管辖区或地理位置。每个 ISD 都有自己的公钥基础设施(PKI),例如,用于保护 SCION 内的路由。ISD 的 PKI 只能为它自己的隔离域中的系统分发证书。因此,如果安全受到威胁,其影响将仅限于受损的隔离域。隔离域的管理由 ISD 核心负责,由于核心 AS 负责 ISD 的管理,因此它们通常由 ISD 中所有其他 AS 信任的各方运行。ISD核心在域间路由中也起着重要作用。下图 描述了 SCIONLab 网络(截至 2020 年 9 月)中的不同 ISD 和一些 AS,这是一个支持 SCION 实验的全球研究网络。
| 图 :截至 2020 年 9 月的 SCIONLab 拓扑,显示了驻留在各种隔离域中的自治系统(来源SCIONLab)
目前 Internet 上的路由依赖 BGP,由于 Internet 是在非层次结构的基础上组织的,作为一个“扁平”网络,路由器使用巨大的路由表以根据目标地址确定将数据包转发到哪里。而SCION 中有所不同:转发基于数据包携带转发状态。即每个数据包都包含它需要传输的路径(在 AS 级别),因此不再需要路由器上的巨大表。这释放了路由器的内存,更重要的是,它使发件人能够确定他们的网络流量应该如何通过互联网传输。为此,发送方需要知道哪些路径可以到达预期的目标 AS。在确定路径时,区分两种情况:ISD 内的流量(ISD 内)和 ISD 之间的流量(ISD 间)。
在每个 ISD 中,AS 根据它们在以 ISD 核心为根的有向无环图中的连接进行分层组织,可以直接有效确定可能的路径。该过程也称为信标,由核心 AS 启动,核心 AS 向下游的相邻非核心 AS 发送路径段构建信标 (PCB)。当非核心 AS 收到 PCB 时,它会添加自己的身份和一些附加信息,稍后在数据包标头中构建路径时将需要这些信息。然后它将 PCB 转发给遵循相同程序的所有下游邻居。因此,PCB 包含有关它从 ISD 核心到当前 AS 的路径信息。最终 PCB 将到达叶 AS,并且根据 PCB 中的信息,所有 AS 都将知道至少一条可以到达 ISD 核心的路径。除了转发 PCB 之外,每个 AS 还存储它刚刚在本地学习到的路径,并通知 ISD 核心它希望到达的路径。最后,核心知道如何到达每个 AS,每个 AS 都知道如何到达核心。
| 图 :具有单个 ISD 的 SCION 拓扑示例。ISD 中的节点代表 AS
现在考虑这样一种情况,AS D(在上图中)想要与 AS E(两者都是非核心AS)进行通信,因此它询问核心如何从核心到达 AS E(我们指的是这部分路径作为下段)。它已经知道自己如何到达核心(我们将这部分路径称为上行段),因此它可以将这两个段组合起来构建一条从自身到 AS E 的路径。它在 SCION 数据包标头中包含该路径,因此路径上的每个 AS 都知道将数据包转发到哪里。如果两个段相交,即如果路径的上段和下段经过同一个非核心 AS,则可以采取捷径。在这种情况下,首先将数据包转发到核心是没有意义的,只是为了让它再次采用相同的路由返回。直接对等互连也是可能的。
我们现在知道如何到达同一个 ISD 中的另一个 AS,只要两个路径段在同一个核心 AS 开始/结束。然而,我们仍然没有到达另一个 ISD 中的 AS 所需的完整路径,或者使用上行和下行段不在同一核心 AS 结束/开始的路径。这个问题由 ISD 间路由解决,所有核心 AS 都参与其中。ISD 间路由使用与 BGP 类似的方法:它将 PCB 发送给它的邻居,邻居添加各自的信息并将新的 PCB 转发给它们的邻居。这听起来类似于 ISD 内部路由方法,但 ISD 间路由没有方向性。这意味着该过程不如内部 ISD 方法有效,并且也无法扩展。
| 图 :具有三个不同 ISD 的 SCION 拓扑示例。ISD 中的节点代表 AS
使用上述过程的结果,AS 能够通过使用以下递归方法来构建自己的 ISD 和其他 ISD 中的其他 AS 进行通信。这次 AS G 想要与位于另一个 ISD 中的 AS Q 进行通信。通过内部 ISD 信标,G 知道如何到达其 ISD 的核心(上行段)。G询问核心如何到达Q。通过 ISD 间路由,G 的 ISD 核心知道如何到达 Q 的 ISD 核心。这部分路径称为核心段。G 的 ISD 核心询问 Q 的 ISD 核心如何从其 ISD 核心(下段)到达 Q。G 的 ISD 核心然后将核心段和下段返回给 G。G 现在可以通过组合上段、核心段和下段来构建到 Q 的完整路径。注意,由于每个段可能有多个选项,因此可以使用多个路径,不同的数据包可以使用不同的路径。当然,路径可能不再起作用,例如,由于链路故障。在这种情况下,G 将需要通过另一条路径再次发送丢失的数据包和后续数据包。路径问题可以通过网络向发送方发出信号(类似于今天 ICMP 发生的情况),也可以从没有接收到数据包的事实中推断出来。
由于路径在 AS 级别定义并包含在数据包中,因此我们需要知道我们要与之通信的终端主机位于哪个 AS 和 ISD 中。因此,我们需要将这两条附加信息包含在终端主机的地址中。因此,一个地址现在由三部分组成:ISD、AS 和终端主机的本地地址。终端主机的地址在上述任何过程中都没有用到,只用于自治系统内部的本地传递。
SCION 在设计时考虑了安全性,因此在上述所有过程中,涉及的数据都经过身份验证,从而排除了路由劫持。
IP网络上的SCION路由
在路由过程方面,SCION 使用了所谓的“Beaconing(信标)”而不是 BGP。Beaconing 进程负责发布新路径和路径探索进程。
BGP 协议有一个可选的多路径功能,可以使用,但默认情况下不启用,它需要额外的配置,供应商也可以自行更改,这在互联网中没有广泛使用。
与传统 BGP 的对比见下表:
| BGP/BGPSec/SCION控制平面能力对比
尽管在整个 AS 中原生使用 SCION 可能是充分利用 SCION 的最佳方式,但这可能很难实现。在整个网络中采用 SCION 需要每个连接的设备来处理 SCION 协议。在所有类型的设备和所有应用程序中实现 SCION 可能被证明是困难的。
幸运的是,有一种部署 SCION 的方法使我们能够利用它的许多优势,同时也无需修改网络中的应用程序或终端主机。在这种情况下(如图所示),域间 SCION 通信由网络而不是终端主机处理。所有终端主机继续按照他们目前的方式使用 IP。这是通过在网络中部署 SCION-IP 网关 (SIG) 来实现的。SIG 通过 SCION 网络隧道传入 IP 数据包,处理例如路径选择。然后目标网络中的 SIG 将 IP 数据包传送到目标终端主机。因此,我们可以将当今的 IP 网络与 SCION 集成,并立即从 SCION 的特性中受益。SCION 协议可以通过现有的 TCP/IP 网络“建立隧道”,但需要额外的 80 个字节来传输额外的 SCION 信息。
下面是一个示例拓扑,展示了 SCION 如何通过 IP 网络建立隧道:
| SCION over IP 网络示例(来源:SIDN Labs)
关于协议本身,它引入了几个新的标头:
通用标头:在所有 SCION 流量中共享:
地址标头:标识流量的来源和目的地,标识 ISD、AS 和主机地址:
路径类型标头:关于路径元数据、跳数(最多 64 )和附加信息(可选)的信息:
PathMeta header:携带特定路径头的元数据信息:
扩展标头:未来对 SCION 协议的扩展都使用以下格式实现:
SCION 的优势
与传统互联网相比,SCION最重要的优势是:
高可用性通信:默认情况下使用并启用多路径通信,不受当前 BGP 级攻击影响,例如前缀劫持。
客户端路径控制:SCION可以保证每个数据包走的路径,特别是哪些 ISP 或地理位置没有被遍历。
秘密路径:只能由选定的通信伙伴使用。即使攻击者知道网络拓扑,加密路径保护也可以隐藏路径,从而使路径不可能被 DDoS攻击。
VPN链路保护:VPN 链路可以由 SCION 网络提供,为端到端 VPN 隧道提供上面列出的所有属性。
更快的路径故障转移。
与现有网络基础设施的互操作性:SCION 可以在现有 IP 网络之上使用。在这种情况下,可以使用 SCION-IP 网关 (SIG) 将 SCION 标头封装在 TCP/IP 堆栈之上,这种情况下的SCION效率较低,因为它不是端到端的,但您可以利用现有的 IP 网络来传输和隧道支持 SCION 的流量,并且仍然可以获得 SCION 的许多优势,尤其是在安全性方面。为了扩展 SCION 感知网络,可以在 AS 内部署 SCION 边界路由器 (BR) 以支持本地支持 SCION 的通信。
传输不可知:SCION 可以本地运行(仅使用 SCION 标头)或使用任何常用的底层传输,无论它是 IP 网络、MPLS 网络等。
无 BGP:不再需要 BGP 协议。SCION 旨在取代 Internet 中的 BGP。
数据平面处理减少:减少对数据包的处理。
就其本质而言,SCiON 以可控性、可靠性和安全性的形式提供了对业务通信至关重要的三大独特属性。
SCION提高安全性和高可用性
虽然普通 SCION 具有安全性和可用性优势,但 SCION 有两种额外的“风味”,它们为域间路由带来了额外的属性。他们被称为 EPIC 和 COLIBRI。
EPIC
EPIC代表检查每个数据包.它通过数据平面中的每个数据包粒度引入了额外的安全性和透明度。在普通 SCION 中,相同的路径信息用于多个数据包并且独立于数据包内容,而在 EPIC 中,路径信息与数据包内容相关联。EPIC 有多种变体,可提供不同级别的安全性。它可用于向所有中间跃点提供数据包源的身份验证和到目的地的有效负载的身份验证。通过构建这些功能,它甚至可以用于为源和目的地提供数据包所采用路径的验证。为了实现这一点,每一跳都会向数据包添加加密证据,记录处理过程。但是,该功能在数据包处理期间需要额外的加密操作,并且需要在终端主机和路径上的每一跳之间共享的附加密钥。这可以通过一个名为 DRKey 的系统有效地完成。DRKey 的一个重要特性是可以即时计算密钥,这使得 EPIC 的加密比涉及内存查找时更快。在标准 x86 硬件上,数据包的处理时间不到 100 纳秒。这允许非常快速的数据包身份验证,因此可以非常快速地传输数据,因为可以允许经过身份验证的数据包通过传统防火墙。该原理已在 LightningFilter 中得到证明,它在基于 x86 的服务器上的实验设置中实现了 120 Gbps 的速度。
COLIBRI
鉴于 EPIC 引入了额外的身份验证和验证,COLIBRI提供了域间带宽预留,这使得为两个终端主机之间的路径确保最小带宽成为可能。结合 LightningFilter 以高速过滤经过身份验证的数据包,即使在拒绝服务攻击下,也可以实现高水平的关键服务可用性。
SCION网络的类型
目前部署的SCION网络有两种类型:
1)SCIONLab :SCIONLab 是一个全球研究网络,用于测试 SCION 下一代互联网架构。
任何人都可以参与其中并创建最多五个支持 SCION 的 AS。
SCIONLab 的基础设施包括全球连接的 AS 和 ISD(隔离域)网络。
易于设置,所有必需的组件都可以作为一组 VM 进行部署,作为软件包安装,或者可以从源代码构建。
SCION 也有一些局限性:
PKI 控制平面是集中式的,这意味着存在单点故障,但它确实使密钥分发更容易、更快,这在某些使用场景下更为重要。
Overlay 链接(通过公共互联网)用于基础设施内部和用户 AS 的基础设施之间,降低了完整 SCION 部署的安全性、可用性和性能方面的能力,但也降低了复杂性。
下图展示了当前全球 SCIONLab 网络的拓扑结构:
| 现有 SCIONLab 全球研究网络拓扑结构(来源:SCIONLab)
2)生产级全球SCION 网络- Anapaya(ETH 大学的衍生公司)生产级全球 SCION 网络,目前主要由瑞士银行和金融机构使用,但越来越多的 ISP 和企业实体正在加入。
| 当前Production SCION-Internet地图(来源:SCION-architecture)
总 结
与任何协议一样,SCION 也有其缺点,其主要的潜在问题在于:
获取路径存在额外延迟。这可以通过缓存和路径重用来避免,类似于 DNS 过程。
带宽开销。协议标头中需要新信息,因此在数据包中使用了更多空间,不过这些空间都没有被浪费,所有信息都被使用,它提供了路径控制、更简单的数据平面等。
可能需要新证书(例如 TRC 证书),好处是安全性更高。
工程师必须学习新的协议和方法。
但是,正如本文所述,新协议为互联网流量提供了一种全新的方法,其优点超过了这些缺点,尤其是在路由控制、安全性、可扩展性和高可用性方面。它可以完全控制到终端系统的路由过程——您可以为您的流量决定最佳路径,其中“最佳路径”可能意味着:最快、最便宜、避开某些地区或管辖区等等。
由于 SCION 集成了完整的PKI 基础设施,并且每个数据包都经过签名和验证,因此它提供了额外的安全性。SCION 是无 BGP 的,使用一种称为beaconing的新路由方法。
此外,使用 Research SCION 网络可以很容易地测试 SCION 基础设施,任何人都可以参与其中。
声明:本文来自SDNLAB,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。