下一代广域网技术-Segment Routing(SR)

news2024/11/15 6:01:17

1.SR MPLS

1.1.广域网VPN技术的演进

特殊的EVPN:从L2VPN发展的EVPN

  • 以VPLS为例的L2VPN存在多种问题,例如业务部署复杂、网络规模受限、不支持双归等,IETF提出EVPN来解决这些问题
  • EVPN最初被设计为一个基于BGP扩展的L2VPN技术,但是随着协议的扩展EVPN同时还支持L3VPN
  • EVPN凭借其诸多优势被广泛应用于WAN、DCN(VXLAN的控制层面,使用type4消息)、园区网和SD-WAN等多个场景。
  • 在这里,将使用type5的消息来传递L3VPN的路由

广域网VPN分类-IP承载技术

  • MPLS VPN:底层承载网络使用MPLS/IP作为转发平面。MPLS可以承载L2或L3VPN,如BGP MPLS VPN,VPLS,VPWS,SR-MPLS
  • SRv6 VPN,SRv6 VPN底层承载网络使用IPv6作为转发平面。SRv6是以IPv6抵制作为segment的Segment Routing技术,被广泛认为是广域网下一代演进方向

将BGP/MPLS L3 VPN的各种关键技术抽象,可以得到广域网VPN的技术架构,分为了四个功能模块

  1. 业务接入
  2. VPN业务隔离
  3. MP-BGP传递路由信息
  4. PE之间建立转发隧道

广域网数据平面发展-Segment Routing

  • 在广域网VPN中数据平面呈现为数据转发隧道
  • 从MPLS发展Segment Routing,常见的转发隧道有MPLS(LDP)、MPLS TE、SR-MPLS和SRv6等
  • 广域网支持同时承载多种隧道技术,由用户VPN根据隧道策略选择迭代的隧道

1.2.Segment基本概念

SR(Segment Routing)是基于源路由理念而设计的在网络上转发数据包的一种技术架构。SR MPLS是指基于MPLS转发平面的SR。SR将网络路径分成一个个段,并且为这些段和网络中的转发节点分配段标识ID。通过对段和网络节点进行有序排列(Segment List),就可以得到一条转发路径。
SR将代表转发路径的段序列编码在数据包头部,随数据包传输。接收端收到数据包后,对段序列进行解析,如果段序列的顶部段标识是本节点时,则弹出该标识,然后进行下一步处理;如果不是本节点,则使用ECMP(Equal Cost MultiplePath)方式将数据包转发到下一节点。

使用SR技术,将带来明显的受益:

  • 简化MPLS网络的控制平面。
    使用控制器或者IGP集中算路和分发标签,不再需要RSVP-TE,LDP等隧道协议。可以直接应用于MPLS架构,转发平面没有变化。

  • 提供高效TI-LFA(Topology-Independent Loop-free Alternate) FRR保护,实现路径故障的快速恢复。
    在SR技术的基础上结合RLFA(Remote Loop-free Alternate) FRR算法,形成高效的TI-LFA FRR算法。TI-LFA FRR支持任意拓扑的节点和链路保护,能够弥补传统隧道保护技术的不足。

  • 更具有网络容量扩展能力。
    传统MPLS TE是一种面向连接的技术,为了维护连接状态,节点间需要发送和处理大量Keepalive报文,设备控制层面压力大。SR仅在头节点对报文进行标签操作即可任意控制业务路径,中间节点不需要维护路径信息,设备控制层面压力小。
    此外,SR技术的标签数量是:全网节点数+本地邻接数,只和网络规模相关,与隧道数量和业务规模无关。

  • 更好的向SDN网络平滑演进。
    基于源路由理念而设计,通过源节点即可控制数据包在网络中的转发路径。配合集中算路模块,即可灵活简便的实现路径控制与调整。
    同时支持传统网络和SDN网络,兼容现有设备,保障现有网络平滑演进到SDN网络,而不是颠覆现有网络。

Segment是节点针对所收到的数据包要执行的指令,该指令包含在数据包头部中。
指令的例子包括:

  • 按照到达目的地的最短路径来转发数据包
  • 通过特定的出接口来转发数据包
  • 将数据包转发到特定的应用/服务实例等

Segment ID

用于标示segment,它的格式取决于具体的技术实现,例如可以使用MPLS标签、MPLS标签空间中的索引、IPv6地址。
Segment List是一个或多个SID构成的有序列表

源路由

源节点选择一条路径并在报文中压入一个有序的Segment List,网络中的其他节点按照报文封装的Segment List进行转发

Segment分类

在这里插入图片描述

Prefix Segment(前缀段)
用于标识网络中某个目的地址前缀。通过IGP协议扩散到其他网元,全局可见,全局有效
通过Prefix SID来进行标识。Prefix SID是发布端通告的SRGB范围内的偏移值,接收端会根据自己的SRGB计算实际标签用于生成MPLS转发表项。
生成方式:手工配置
Node Segment是特殊的Prefix Segment,用于标识特定的节点
在节点的loopback接口下配置IP地址作为前缀,这个节点的prefix SID实际就是node SID

node SID类似IP路由中的目的网络地址,Prefix SID类似IP路由中的目的网络地址

Adjacency Segment(邻接段)
用于标识网络中的某个邻接。通过IGP协议(需要启用SR扩展)扩散到其他网元,全局可见,本地有效
生成方式:源节点通过协议动态分配
Adjacency Segment通过Adjacency Segment ID标识。
Adjacency SID为SRGB范围之外的本地SID

Adjacency SID类似IP网络中的出接口信息(下一跳)

SR Policy

RFC 8402中定义SR Policy是一段有序的段列表(an ordered list of segments)。更完整的说法是SR Policy最终呈现为一段有序的段列表,还包含了计算、生成和维护这个段列表及引入流量等SR技术的一种框架。SR Policy是当前最主流的实现SR的方式。
一个SR Policy由头端节点引导流量进入这个段策略中。它的段列表被精确的分配为标签栈指导流量转发。这个段列表由一系列的优化目标(optimization objective)和限制(constraints,例如时延、亲和性和SRLG等)综合计算得到。这个计算可由本地或者PCE服务器完成,然后可以被通过NETCONF或者PCPE配置。
SR Policy可被用于流量工程(TE)、运行、管理、维护(OAM)和FRR等。

在这里插入图片描述

可以由CLI、NETCONF、PCEP、BGP SR-Policy等多种方式生成。华为设备上通过BGP接收的SR Policy优于静态配置。
包含Segment List,完整的指导流量引入和转发

SR-MPLS和SPv6

SR-MPLS

需要利旧现有设备的用户适用

数据转发平面:基于MPLS
使用MPLS标签值作为SID
段序列被编码成标签栈。要处理的段位于栈顶,一个段处理完成后,相关标签从标签栈中弹出

SRv6
数据转发平面:基于IPv6
使用IPv6地址作为SID值
段序列被编码为标签栈,使用IPv6的扩展头SRH(Segment Routing Header)承载

SRGB

Segment Routing Global Block

在这里插入图片描述

用户指定的为Segment Routing预留的本地标签集合
每台设备通过扩展的路由协议通告自己的SRGB
节点通过扩展的路由协议通告前缀SID索引(Index)后,各台设备分别根据SRGB计算入站和出站SID
在实际部署中,建议设备采用统一的SRGB
为什么需要SRGB:SR要求前缀SID全局有效。在MPLS中,设备的一部分标签空间可能被其他协议,例如LDP占用,因此需要制定明确的空间用于SR全局标签

标签栈、粘连标签与粘连节点

标签栈

在这里插入图片描述

标签栈是标签的排序集合,用于表示一条完整的LSP
标签栈中每一个邻接标签标识一条具体的邻接,整个标签栈标识了整条转发路径LSP的所有邻接
在报文转发过程中,通过标签栈中每个邻接标签查找对应的邻接,并将标签弹出后转发,将标签栈中所有邻接标签弹出后,报文就走完了整条LSP,到达SR-TE隧道的目的地

粘连标签与粘连节点

在这里插入图片描述

100就是粘连标签,R2是粘连节点

当标签栈深度超过转发器所支持的标签深度时,控制器需要为转发器分配多个标签栈,在合适的节点下发标签栈的同时分配一种特殊的标签,然后将这些标签栈关联起来,实现逐段转发
这种特殊的标签被称为粘连标签,这个合适的节点成为粘连节点。控制器为粘连节点分配粘连标签,并将其压在标签栈底。

1.3.Segment基本原理

SID的使用

通过按序组合前缀(节点)SID和邻接SID,可以构建出网络内的任何路径。
在路径的每一跳,使用栈顶段信息区分下一跳
段信息按照顺序堆叠在数据头的顶部
当栈顶段信息包含另一个节点的标识时,接收节点使用等价多路径(ECMP)将数据包转发到下一跳
当栈顶段信息是本节点的标识时,接收节点弹出顶部段并执行下一个段所需的任务。
实际应用中Prefix Segment、Adjacency Segment、Segment可以单独使用,也可以结合使用

场景1:基于Prefix Segment的转发路径

在这里插入图片描述

  • 由IGP通过最短路径算法(IGP)计算得出

通过IGP扩散之后,整个IGP域的所有设备学习到R2的Prefix SID(100)
以R1为例(其他设备类似),它通过SPF算法计算出一条到达R2的最短路径

基于Prefix Segment的转发路径并不是一条固定路径,头节点也无法控制报文的整条转发路径。

场景2:基于Adjacency Segment的转发路径

在这里插入图片描述

通过给网络中每个邻接分配一个Adjacency Segment,然后在头节点定义一个包含多个Adjacency Segment的Segment List。

通过这种方式可以严格制定任意一条显示路径(Strict Explicit),可以更好的配合实现SDN

场景3:基于Adjacency Segment+Node Segment的转发路径

在这里插入图片描述

将Adjacency Segment和Node Segment结合,通过Adjacency Segment,可以强制整条路径包含某一个邻接。而对于Node Segment,节点可以使用SPF算法计算最短路径,也可以负载分担。

这种方式的路径并不是严格固定,所以也称作松散路径(Loose Explicit)

SR-BE

在这里插入图片描述

使用一个SID来知道设备基于最短路径进行数据转发,这种工作机制称为SR-BE(Best Effort)
例如在本例中使用R6的Node SID 606可以指导数据沿着去往R6的最短路径来转发数据,该最短路径是基于路由协议计算得出的,并且支持等价路径。
SR-BE是一种替代“LDP+IGP”的一种新方案

SR-TE

在这里插入图片描述

使用多个SID进行组合来知道数据转发,这种工作机制可以对数据的转发路径进行一定约束,从而满足流量工程需求,因此被称为SR-TE(Traffic Engineer)
SID的组合形式:

  • 使用多个Node SID
  • 使用多个Adjacency SID
  • 使用Node SID与Adjacency SID组合,如图中所示

虽然可以手工配置,但真实生产环境中,SR-TE都是有控制器参与路径算的

1.4.SR-TE

分段路由流量工程SR-TE是使用SR作为控制协议的一种新型的TE隧道技术。SR-TE隧道是指基于TE的约束属性,利用SR协议创建的隧道
SR-TE一般由控制器计算隧道的转发路径,然后将与路径严格对应的标签栈下发给转发器
SR-TE的实现当前有隧道借口和SR Policy两种方式

1.4.1 隧道接口实现

集中式SR-MPLS TE功能架构

SR-MPLS TE(Segment Routing-MPLS Traffic Engineering)是使用SR作为控制协议的一种新型的TE隧道技术。SR-MPLS TE支持采用集中式架构,控制器收集全局网络拓扑信息和TE信息,集中算路,然后把算路结果下发给网络设备。
SR-MPLS TE也支持使用手工方式配置。

在这里插入图片描述

  1. 扩展IS-IS/OSPF携带TE信息,在域内泛洪IGP和TE信息,生成TEDB。
  2. 通过BGP-LS收集网络信息,建立全局TE数据库。
  3. 控制器基于约束全局算路。
  4. 使用PCEP或BGP SR Policy将算路结果下发设备。
和RSVP-TE比较
比较项SR-MPLS TERSVP-TE
标签分配通过对IGP协议扩展进行标签分配和扩散。每条链路仅分配一个标签,所有的LSP共用这一个标签,减少了标签资源的占用,减轻了标签转发表的维护工作量通过对RSVP协议扩展进行标签分配和扩散。每条LSP分配一个标签,当有多条LSP时,同一条链路上需要分配多个标签,标签资源占用的多,标签转发表的维护工作量大
控制平面信令控制协议为IGP协议扩展,减少协议数量需要RSVP-TE作为MPLS的控制协议,控制平面较复杂
可扩扎性网络中间设备不感知隧道,隧道信息携带在每个报文中,无需维护隧道状态信息,只需维护转发表项,可扩展性强需要维护隧道状态信息,也需要维护转发表项,可扩展性差
路径调整和控制网络中间设备不感知隧道,仅通过对入节点的报文进行标签操作即可任意控制业务路径,无需逐节点下发配置。当路径中的某个节点发生故障,由控制器重新计算路径并更新入节点的标签栈,即可完成路径调整无论是正常业务调整还是故障场景的被动路径调整,都需逐节点下发配置
网络拓扑收集
  1. 转发器的IGP协议收集网络拓扑信息,收集SR的邻接标签和节点标签。
  2. BGP-LS将带有SR标签信息的网络拓扑和TE信息上报给控制器。

对于使能了SR能力的IGP,会为所有使能IGP协议的出接口分配SR邻接标签。邻接标签通过IGP泛洪到整个网络中。

标签分配

SR-MPLS TE方案中由转发器的IGP协议分配标签,并通过BGP-LS将分配的标签上报给控制器:

  • SR-MPLS TE主要使用邻接标签,也可以使用节点标签。
  • 邻接标签是源节点分配的,只在本地有效,并且具有一定的方向性。

在这里插入图片描述

在设备上分别使能IGP SR能力。对于使能了SR能力的IGP实例,会对所有使能IGP协议的出接口分配SR邻接标签。
邻接标签通过IGP的SR协议扩展,泛洪到整个网络中。
以R4为例, IGP分配标签的具体过程如下:

  1. R4的IGP协议为其邻接分配本地动态标签。例如为邻接R4->R5分配的邻接标签为1045。
  2. R4的IGP协议发布邻接标签,泛洪到整个网络。
  3. R4上生成邻接标签对应的标签转发表。
  4. 网络中的其它设备的IGP协议学习到R4发布的邻接标签,但是不生成标签转发表。

其他设备按照R4的方式分配和发布邻接标签,生成标签转发表。BGP-LS将带有SR标签信息的网络拓扑和TE信息上报给控制器。

LSP的创建

SR-MPLS TE(Segment Routing-MPLS Traffic Engineering)是指基于TE的约束属性,利用SR创建的隧道。如图所示两条LSP分别作为主路径和备份路径。两条LSP隧道都对应同一个隧道ID的SR-MPLS TE隧道。

在这里插入图片描述

隧道属性配置

SR-MPLS TE隧道的属性是创建隧道的依据。SR-MPLS TE隧道可以在控制器或转发器上配置。
控制器上配置隧道:在控制器上进行SR-MPLS TE隧道配置后,控制器将隧道属性通过NETCONF下发给转发器,转发器通过PCEP协议将隧道托管给控制器进行管理。
转发器上配置隧道:在转发器上进行SR-MPLS TE隧道配置后,转发器将隧道托管给控制器进行管理。

手工隧道

[R1] interface tunnel1
[R1-Tunnel1] ip address unnumbered interface LoopBack0
[R1-Tunnel1] tunnel-protocol mpls te
[R1-Tunnel1] destination 3.3.3.3
[R1-Tunnel1] mpls te tunnel-id 1
[R1-Tunnel1] mpls te signal-protocol segment-routing
[R1-Tunnel1] mpls te path explicit-path p1 #手工指定路径

控制器NETCONF下发隧道

[R1] interface tunnel1
[R1-Tunnel1] ip address unnumbered interface LoopBack0
[R1-Tunnel1] tunnel-protocol mpls te
[R1-Tunnel1] destination 3.3.3.3
[R1-Tunnel1] mpls te tunnel-id 1
[R1-Tunnel1] mpls te signal-protocol segment-routing
[R1-Tunnel1] mpls te pce delegate  	 #托管给PCE Server

SR-MPLS TE隧道是通过Tunnel接口来建立和管理的,因此需要在隧道的入节点上配置SR-MPLS TE隧道接口。

隧道建立过程

当配置了某种业务(例如VPN业务)时,该业务需要绑定到SR-MPLS TE隧道,将按照以下过程建立SR-MPLS TE隧道:

在这里插入图片描述

  1. 控制器基于SR-MPLS TE的隧道约束属性,通过路径计算单元PCE(Path Computation Element)进行类似普通TE的路径计算,生成一个标签栈(即算路结果)。
  2. 控制器通过NETCONF将隧道配置信息下发给转发器、通过PCEP将标签栈下发给转发器。
  3. 转发器根据控制器下发的隧道配置和标签栈信息建立SR-MPLS TE隧道LSP。

优势:

  • 支持带宽计算与资源预留。
  • 可以站在全局视角计算最优路径。
  • 控制器可以与应用配合,由应用提出网络诉求,控制器计算满足诉求的转发路径,实现业务驱动网络。
  • 省去大量的手工配置,适合大规模网络。

在这里插入图片描述

1.4.2 SR-TE policy

早期SR-TE的不足

早期的SR-TE沿用RSVP-TE的“隧道接口”的概念,采用隧道接口实现SR。其典型特征如下所示,在配置上和流量导入中均出现Tunnel接口。

[R1] interface tunnel1
[R1-Tunnel1] ip address unnumbered interface LoopBack0
[R1-Tunnel1] tunnel-protocol mpls te
[R1-Tunnel1] destination 3.3.3.3
[R1-Tunnel1] mpls te tunnel-id 1
[R1-Tunnel1] mpls te signal-protocol segment-routing
...

隧道接口方式实现SR简单且易于理解,但是有以下不足:

  • 隧道接口和流量导入独立实现造成引流方式复杂和性能不高
  • 隧道需要预先配置部署,在无法明确隧道终点场景下有明显限制
  • 基于隧道接口实现的ECMP使用场景受限
SR-TE Policy介绍

SR-TE Policy是SR Policy在流量工程领域的使用。它依然使用段列表(Segment List)指定转发路径,但是抛弃了隧道接口的概念。
SR-TE Policy根据Segment不同分为SR-MPLS TE Policy和SRv6 TE Policy,这里主要介绍前者
SR Policy-般由控制器使用代表业务SLA的Color属性计算路径,下发转发器生成SR TE Policy隧道(如图所示转发器上隧道信息不同于SR-TE隧道)。网络头端结点通过扩展业务路由的Color团体属性和下一跳信息匹配到对应的SR Poilcy隧道进行业务转发。
SR Policy是当前主流厂家的实现SR-TE的方式。

<PE1> display tunnel-info all
Tunnel ID                  Type           Destination   Status

0x0000000001004c4c04    srv6tepolicy     1.0.0.12       UP
0x000000002900000004    dp                 1.0.0.12       UP
0x000000000300002001    srbe-lsp          1.0.0.12       UP
0x00000000320000c001    sr-te               1.0.0.12       UP
0x000000003400002001    srtepolicy        FC01::12       UP
SR Policy标准介绍

在这里插入图片描述

RFC-draft-ietf-spring-segment-routing-policy中提出,BGP多协议扩展新增地址族BGP SR-Policy(SAFI=73)用于下发SR-TE Policy

  • 控制器通过BGP下发SR的SID组合给Ingress节点。在头端节点创建出一条道Egress节点的、带Policy Color的TE隧道
  • 当需要引用此隧道时,可以使用Policy Color对应到隧道。
SR Policy方案架构

在华为的解决方案中,控制器到设备之间包含三种关键协议:

  1. BGP-LS:用于收集隧道拓扑信息、网络带宽、链路时延等并上报隧道状态,用于计算SR Policy路径和隧道状态呈现
  2. BGP SR-Policy:用于控制器下发SR Policy信息(color,headend、endpoint等)
  3. NETCONF用于下发业务接口、路由策略(添加color属性)等其他配置
SR Policy三元组

<headend, color, endpoint>

  • hearend-头端,SR Policy生成的节点,一般是全局唯一的IP地址
  • color-颜色,32bit扩展团体属性,用于标识某一种业务意图(例如低延时)
  • endpoint-尾端,SR Policy的目的地址,一般是全局唯一的IP地址

Color和endpoint被用于SR Policy在特定头端标识转发路径

SR Policy模型

一个SR Policy可以包含多个候选路径(Candidate Path)。候选路径携带优先级属性(Preference)。优先级最高的有效候选路径为SR Policy的主路径,优先级次高的有效路径为SR Policy的热备份路径。
一个候选路径就是SR Policy通过PCEP或者BGP SR Policy向头端发送的信号单元

在这里插入图片描述

SR policy P1 <headend, color, endpoint>
 Candidate-path CP1 <protocol,origin,discriminator>
  Preference 200
   Weight W1, SID-List1 <SID11 ... SID1j>
   Weight W2, SID-List2 <SID21 ... SID2j>
 Candidate-path CP2 <protocol,origin,discriminator>
  Preference 100
   Weight W3, SID-List3 <SID31 ... SID3j>
   Weight W4, SID-List4 <SID41 ... SID4j>

配置示例

  1. 手工配置Segment List
segment-routing
 segment-list backuplist
  index 1 sid label 331140
  index 2 sid label 331450
 segment-list backuplist2
  index 2 sid label 331340
  index 3 sid label 331350
 segment-list mainlist
  index 1 sid label 331130
  index 2 sid label 331350
 segment-list mainlist2
  index 2 sid label 331340
  index 3 sid label 331450
  1. 手工配置SR policy
sr-te policy P1
 binding-sid 200
 endpoint 5.5.5.5 color 100
 mtu 9600
#
 candidate-path preference 2000
  segment-list mainlist
  segment-list mainlist2
#
 candidate-path preference 1000
  segment-list backuplist2
#
 candidate-path preference 1
  segment-list backuplist
SR Policy业务流程

背景:R3作为Egress路由器向Ingress路由器R1通告路由5.5.5.5/32,最终从R1-R3建立SR Policy隧道。隧道路径如图,Color为Green。

1.信息收集

在这里插入图片描述

BGP-LS扩展收集网络拓扑及标签信息,用于计算SR Policy路径和隧道状态呈现

其他操作:可以在控制器图形化界面上规划源路径R1、目的R3、引流策略(Color)等信息。控制器进行算路。

2.路由着色

在这里插入图片描述

控制器通过NETCONF向Egress路由器下发VPN出口策略或BGP出口策略。为路由前缀5.5.5.5/32设置扩展团体属性Color Green,路由下一跳是R3的地址3.3.3.3

3.路由传递

在这里插入图片描述

Egress路由器将着色的路由5.5.5.5/32通过MP-BGP通告给Ingress路由器。

4.下发SR Policy

在这里插入图片描述

控制器向头端下发SR Policy。R1接收到R3的BGP路由5.5.5.5/32.后续执行转发时,根据此路由的Color和下一跳迭代到SR Policy隧道。

SR Policy:
Color: Green
Endpoint: 3.3.3.3
Attribute:
 BSID: 30028
 Candidate path count: 1
 Preference: 100
  SegmentList:
   Label: 20004, 20003
5.引流及报文转发

在这里插入图片描述

Ingress路由器将SR Policy生成转发面隧道。头节点根据Color完成引流转发及转发(本例)。

支持其他引流方式,例如DSCP

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1859906.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DataWhale - 吃瓜教程学习笔记(三)

学习视频&#xff1a;第3章-对数几率回归_哔哩哔哩_bilibili 西瓜书对应章节&#xff1a; 3.3 对数几率回归 sigmoid函数 极大似然估计建模 信息论 以概率论、随机过程为基本研究工具&#xff0c;研究广义通信系统的整个过程 - 信息熵 &#xff08;信息期望&#xff09; 度…

上海亚商投顾:三大指数均跌超1% 全市场下跌个股近5000只

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 三大指数昨日震荡调整&#xff0c;尾盘集体跌超1%&#xff0c;微盘股指数跌逾4%&#xff0c;黄白二线分化明显…

【Hadoop集群搭建】实验3:JDK安装及配置、Hadoop本地模式部署及测试

1. 安装 SSH 工具 SSH Secure Shell Client 传输软件 FinalShell(推荐使用) 1.1使用SSH工具将JDK安装包上传至虚拟主机hadoop01, hadoop02, hadoop03&#xff0c;sogou500w 数据上传至 hadoop01。 a. 在虚拟主机/usr 目录下创建文件夹 java&#xff0c;JDK 上传至此目录&…

昇思25天学习打卡营第1天|初学教程

文章目录 背景创建环境熟悉环境打卡记录学习总结展望未来 背景 参加了昇思的25天学习记录&#xff0c;这里给自己记录一下所学内容笔记。 创建环境 首先在平台注册账号&#xff0c;然后登录&#xff0c;按下图操作&#xff0c;创建环境即可 创建好环境后进入即可&#xff0…

死锁的条件、预防、避免、检测

死锁的条件、预防、避免、检测 死锁的必要条件 互斥条件&#xff1a;一个资源一次只能给一个进程使用&#xff0c;非共享请求与保持条件&#xff1a;保持自己资源的同时请求其他资源&#xff0c;该资源可能被占有非剥夺条件&#xff1a;不能强行夺走资源&#xff0c;只能等别的…

【10】交易-交易的结构

1. 交易的结构 1.1 引言 需要说明的是,在我们之前的例子中,区块中的交易(data)是用字符串数据来表示的,但在真正的比特币网络中,交易是一个复杂的数据结构,记录了不同地址之间的价值转移信息。在比特币系统中没有账号或身份信息的概念的,也不会记录地址和身份之间的关…

iOS之如何创建.a静态库

番外&#xff1a;想要查看如何创建.framework静态库可前往看我​​​​​​​iOS之如何创建.framework静态库-CSDN博客这篇文章。 一、创建静态库项目 ①、打开 Xcode 并创建一个新的 Xcode 项目。 ②、选择 "macOS" -> "Framework & Library" -&…

“拿来主义”学习元素裁剪(附源码)

“拿来主义”学习元素裁剪 欢迎关注&#xff1a; 小拾岁月&#xff0c;获取源码。 参考链接&#xff1a;https://mp.weixin.qq.com/s/TsOOhUAff6OeqPW7A9JuaQ 预期效果图 需求分析 首先从需求上来看&#xff0c;需要一个主元素用于展示用户头像。例外&#xff0c;在页面无操…

[保姆级教程]uniapp设置字体引入字体格式

文章目录 在 UniApp 中设置和引入自定义字体&#xff08;如 .ttf、.woff、.woff2 等格式&#xff09;通常涉及几个步骤。 准备字体文件&#xff1a; 首先&#xff0c;你需要有字体文件。这些文件通常以 .ttf、.woff 或 .woff2 格式提供。确保有权使用这些字体&#xff0c;并遵守…

Docker配置国内镜像加速-2

Docker 官方镜像仓库&#xff08;如 Docker Hub&#xff09;可能由于网络原因&#xff0c;在某些地区或网络环境下下载速度较慢。使用镜像加速可以从距离用户更近、网络条件更好的镜像服务器获取镜像&#xff0c;从而显著提高下载速度&#xff0c;节省时间。 1.测试是否安装 d…

基于Java少儿编程管理系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

PyTorch实战:借助torchviz可视化计算图与梯度传递

文章目录 Tensor计算的可视化&#xff08;线性回归为例&#xff09; 如何使用可视化库torchviz 安装graphviz软件 安装torchviz库使用 torchviz.make_dot() 在学习Tensor时&#xff0c;将张量y用张量x表示&#xff0c;它们背后会有一个函数表达关系&#xff0c;y的 grad_f…

2024 年首份软件漏洞报告

Action1 Corporation 发布了其首份 2024 年软件漏洞评级报告。 该报告旨在为首席信息安全官 (CISO) 和首席信息官 (CIO) 提供有关其软件生态系统的战略见解。 它根据软件供应商的安全记录对其进行评估&#xff0c;以便做出更明智的采购决策。 此次发布是在国家漏洞数据库 (N…

让在制品管理更有效

徐总的工厂生产线非常繁忙&#xff0c;每天都在不停地运转。但在制品的流转和存储也非常混乱&#xff0c;导致了很多问题的出现。 一方面&#xff0c;由于缺乏有效的管理&#xff0c;在制品的库存不断增加&#xff0c;占用了大量的资金和空间资源。这些库存不仅增加了库存成本&…

从50分到90分,网站性能优化实践

难以置信: 我可是用尊贵的Vue3Ts开发的呢 (手动狗头). 十分抗拒: 迫于yin威,我给网站做了体检和手术. 体检 – 市面上的体检套餐有很多种,但其实都是换汤不换药.那药(标准)是什么呢?我们会在下面说明.这里我选择了谷歌亲儿子"灯塔"(LightHouse)进行性能体检. 体检…

PyTorch中“No module named ‘torch._six‘“的报错场景及处理方法

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 在使用PyTorch时&#xff0c;您可能会遇到"No module named ‘torch._six’"的错误。这通常是因为PyTorch的某些…

[分布式网络通讯框架]----集群与分布式的区别

单机聊天服务器 聊天系统做了模块化设计&#xff0c;每一个模块都包含很多特定的业务 缺点&#xff1a; 单机聊天服务器极大程度的受限于硬件资源&#xff0c;服务器所能承受的用户并发量是有限的&#xff0c;即使我们通过改变最大连接量等参数&#xff0c;但是受到单机本身…

VUE div的右上角的角标/标签

一、效果图 二、代码 <div class"comp-overview"><div class"overview-item" v-for"(item,index) in overviewInfoList" :key"index"><div class"angle_mark"><span>{{item.label}}</span>&…

CRMEB 多商户Java版v1.6公测版发布,付费会员上线,立即体验

新版本来袭&#xff01;CRMEB 多商户Java版v1.6正式发布&#xff01; 在v1.6新版本中&#xff0c;我们带来了付费会员体系&#xff0c;这将让商业模式更加灵活多元&#xff0c;新增加的移动端商家管理&#xff0c;也让运营触手可及&#xff0c;更加便捷&#xff0c;还有商家端员…

Pixel Heroes Fantasy Editor

使用Pixel Heroes: Fantasy Editor创建令人惊叹的像素角色!它是如何工作的?只需在编辑器中构建角色并保存动画精灵表。运行时动态构建角色使用角色构建器脚本!想将角色与不同的游戏引擎一起使用?只需制作PNG精灵表并导入其他软件! 特征: ● 角色编辑器,用于生成64x64帧的…