IPv6 over IPv4

IPv6 over IPv4隧道简介

IPv6 over IPv4隧道可实现IPv6网络孤岛之间通过IPv4网络互连。由于IPv4地址的枯竭和IPv6的先进性,IPv4过渡为IPv6势在必行。因为IPv6与IPv4的不兼容性,所以需要对原有的IPv4设备进行替换。但是如果贸然将IPv4设备大量替换所需成本会非常巨大,且现网运行的业务也会中断,显然并不可行。所以,IPv4向IPv6过渡是一个渐进的过程。在过渡初期,IPv4网络已经大量部署,而IPv6网络只是散落在各地的“孤岛”,IPv6 over IPv4隧道就是通过隧道技术,使IPv6报文在IPv4网络中传输,实现IPv6网络之间的孤岛互连。

双协议栈

双栈技术是IPv4向IPv6过渡的一种有效的技术。网络中的节点同时支持IPv4和IPv6协议栈,源节点根据目的节点的不同选用不同的协议栈,而网络设备根据报文的协议类型选择不同的协议栈进行处理和转发。双栈可以在一个单一的设备上实现,也可以是一个双栈骨干网。对于双栈骨干网,其中的所有设备必须同时支持IPv4/IPv6协议栈,连接双栈网络的接口必须同时配置IPv4地址和IPv6地址。单协议栈和双协议栈结构示例如图1所示。

图1 双协议栈

双协议栈具有以下特点:

  • 多种链路协议支持双协议栈

    多种链路协议(如以太网)支持双协议栈。图中的链路层是以太网,在以太网帧上,如果协议ID字段的值为0x0800,表示网络层收到的是IPv4报文,如果为0x86DD,表示网络层是IPv6报文。

  • 多种应用支持双协议栈

    多种应用(如DNS/FTP/Telnet等)支持双协议栈。上层应用(如DNS)可以选用TCP或UDP作为传输层的协议,但优先选择IPv6协议栈,而不是IPv4协议栈作为网络层协议。

如图2为双协议栈的一个典型应用:

图2 双协议栈典型应用场景

如图所示,主机向DNS服务器发送DNS请求报文,请求域名www.example.com对应的IP地址。DNS服务器将回复该域名对应的IP地址。如图所示,该IP地址可能是10.1.1.1或fc00::1。主机系统发送A类查询,则向DNS服务器请求对应的IPv4地址;系统发送AAAA查询,则向DNS服务器请求对应的IPv6地址。

图中Switch支持双协议栈功能。如果主机访问IPv4地址为10.1.1.1的网络服务器,则可以通过Switch的IPv4协议栈访问目标节点。如果主机访问IPv6地址为fc00::1的网络服务器,则可以通过Switch的IPv6协议栈访问目标节点。

IPv6 over IPv4隧道

隧道(Tunnel)是一种封装技术。它利用一种网络协议来传输另一种网络协议,即利用一种网络传输协议,将其他协议产生的数据报文封装在自身的报文中,然后在网络中传输。隧道是一个虚拟的点对点的连接。一个Tunnel提供了一条使封装的数据报文能够传输的通路,并且在一个Tunnel的两端可以分别对数据报文进行封装及解封装。隧道技术就是指包括数据封装、传输和解封装在内的全过程。隧道技术是IPv6向IPv4过渡的一个重要手段。

由于IPv4地址的枯竭和IPv6的先进性,IPv4过渡为IPv6势在必行。因为IPv6与IPv4的不兼容性,所以需要对原有的IPv4设备进行替换。但是IPv4设备大量替换所需成本会非常巨大,且现网运行的业务也会中断,显然并不可行。所以,IPv4向IPv6过渡是一个渐进的过程。在过渡初期,IPv4网络已经大量部署,而IPv6网络只是散落在各地的“孤岛”,IPv6 over IPv4隧道就是通过隧道技术,使IPv6报文在IPv4网络中传输,实现IPv6网络之间的孤岛互连。

IPv6 over IPv4 隧道技术的基本原理如图1所示。

图1 IPv6 over IPv4 隧道原理

  1. 边界设备启动IPv4/IPv6双协议栈,并配置IPv6 over IPv4隧道。

  2. 边界设备在收到从IPv6网络侧发来的报文后,如果报文的目的地址不是自身且下一跳出接口为Tunnel接口,就要把收到的IPv6报文作为数据部分,加上IPv4报文头,封装成IPv4报文。

  3. 在IPv4网络中,封装后的报文被传递到对端的边界设备。

  4. 对端边界设备对报文解封装,去掉IPv4报文头,然后将解封装后的IPv6报文发送到IPv6网络中。

一个隧道需要有一个起点和一个终点,起点和终点确定了以后,隧道也就可以确定了。IPv6 over IPv4隧道的起点的IPv4地址必须为手工配置,而终点的确定有手工配置和自动获取两种方式。根据隧道终点的IPv4地址的获取方式不同可以将IPv6 over IPv4隧道分为手动隧道和自动隧道。

  • 手动隧道:手动隧道即边界设备不能自动获得隧道终点的IPv4地址,需要手工配置隧道终点的IPv4地址,报文才能正确发送至隧道终点。
  • 自动隧道:自动隧道即边界设备可以自动获得隧道终点的IPv4地址,所以不需要手工配置终点的IPv4地址,一般的做法是隧道的两个接口的IPv6地址采用内嵌IPv4地址的特殊IPv6地址形式,这样路由设备可以从IPv6报文中的目的IPv6地址中提取出IPv4地址。

手动隧道

根据IPv6报文封装的不同,手动隧道又可以分为IPv6 over IPv4手动隧道和IPv6 over IPv4 GRE隧道两种。

IPv6 over IPv4手动隧道

手动隧道直接把IPv6报文封装到IPv4报文中去,IPv6报文作为IPv4报文的净载荷。手动隧道的源地址和目的地址也是手工指定的,它提供了一个点到点的连接。手动隧道可以建立在两个边界路由器之间为被IPv4网络分离的IPv6网络提供稳定的连接,或建立在终端系统与边界路由器之间为终端系统访问IPv6网络提供连接。隧道的边界设备必须支持IPv6/IPv4双协议栈。其它设备只需实现单协议栈即可。因为手动隧道要求在设备上手工配置隧道的源地址和目的地址,如果一个边界设备要与多个设备建立手动隧道,就需要在设备上配置多个隧道,配置比较麻烦。所以手动隧道通常用于两个边界路由器之间,为两个IPv6网络提供连接。

IPv6 over IPv4手动隧道封装格式如图2所示。

图2 IPv6 over IPv4手动隧道封装格式

IPv6 over IPv4手动隧道转发机制为:当隧道边界设备的IPv6侧收到一个IPv6报文后, 根据IPv6报文的目的地址查找IPv6路由转发表,如果该报文是从此虚拟隧道接口转发出去,则根据隧道接口配置的隧道源端和目的端的IPv4地址进行封装。封装后的报文变成一个IPv4报文,交给IPv4协议栈处理。报文通过IPv4网络转发到隧道的终点。隧道终点收到一个隧道协议报文后,进行隧道解封装。并将解封装后的报文交给IPv6协议栈处理。

IPv6 over IPv4 GRE隧道

IPv6 over IPv4 GRE隧道使用标准的GRE隧道技术提供了点到点连接服务,需要手工指定隧道的端点地址。GRE隧道本身并不限制被封装的协议和传输协议,一个GRE隧道中被封装的协议可以是协议中允许的任意协议(可以是IPv4、IPv6、OSI、MPLS等)。

IPv6 over IPv4 GRE隧道封装和传输过程如图3所示:

图3 IPv6 over IPv4 GRE隧道

IPv6 over IPv4 GRE隧道的在隧道的边界路由器的传输机制和IPv6 over IPv4手动隧道相同。GRE隧道的原理请参见《S300, S500, S2700, S5700, S6700 V200R022C10 配置指南-VPN》 GRE配置。

自动隧道

自动隧道中,用户仅需要配置设备隧道的起点,隧道的终点由设备自动生成。为了使设备能够自动产生终点,隧道接口的IPv6地址采用内嵌IPv4地址的特殊IPv6地址形式。设备从IPv6报文中的目的IPv6地址中解析出IPv4地址,然后以这个IPv4地址代表的节点作为隧道的终点。

根据IPv6报文封装的不同,自动隧道又可以分为6to4隧道和ISATAP隧道两种。

6to4隧道

6to4隧道也属于一种自动隧道,隧道也是使用内嵌在IPv6地址中的IPv4地址建立的。与IPv4兼容自动隧道不同,6to4自动隧道支持Router到Router、Host到Router、Router到Host、 Host到Host。这是因为6to4地址是用IPv4地址做为网络标识,其地址格式如图4所示:

图4 6to4地址

  • FP:可聚合全球单播地址的格式前缀(Format Prefix),其值为001。
  • TLA:顶级聚合标识符(Top Level Aggregator),其值为0x0002。
  • SLA:站点级聚合标识符(Site Level Aggregator)。

6to4地址可以表示为2002::/16,而一个6to4网络可以表示为2002:IPv4地址::/48。6to4地址的网络前缀长度为64bit,其中前48bit(2002: a.b.c.d)被分配给路由器上的IPv4地址决定了,用户不能改变,而后16位(SLA)是由用户自己定义的。6to4隧道的封装和转发过程如图5所示。

图5 6to4隧道示例一

一个IPv4地址只能用于一个6to4隧道的源地址,如果一个边界设备连接了多个6to4网络使用同样的IPv4地址作为隧道的源地址,则使用6to4地址中的SLA ID来区分,但这些6to4网络共用一个隧道。如图6即上述情况:

图6 6to4隧道示例二

ISATAP隧道

ISATAP(Intra-Site Automatic Tunnel Addressing Protocol)是另外一种自动隧道技术。ISATAP隧道同样使用了内嵌IPv4地址的特殊IPv6地址形式,只是和6to4不同的是,6to4是使用IPv4地址做为网络前缀,而ISATAP用IPv4地址做为接口标识。其接口标识符格式如图7所示:

图7 ISATAP地址接口标识格式

如果IPv4地址是全局唯一的,则u位为1,否则u位为0。g位是IEEE群体/个体标志。由于ISATAP是通过接口标识来表现的,所以,ISATAP地址有全局单播地址、链路本地地址、ULA地址、组播地址等形式。ISATAP地址的前64位是通过向ISATAP路由器发送请求来得到的,它可以进行地址自动配置。在ISATAP隧道的两端设备之间可以运行ND协议。ISATAP隧道将IPv4网络看作一个非广播的点到多点的链路(NBMA)。

ISATAP过渡机制允许在现有的IPv4网络内部署IPv6,该技术简单而且扩展性很好,可以用于本地站点的过渡。ISATAP支持IPv6站点本地路由和全局IPv6路由域,以及自动IPv6隧道。ISATAP同时还可以与NAT结合,从而可以使用站点内部非全局唯一的IPv4地址。典型的ISATAP隧道应用是在站点内部,所以,其内嵌的IPv4地址不需要是全局唯一的。

图8为ISATAP隧道一个典型应用场景:

图8 ISATAP隧道示例

如上图所示,在IPv4网络内部有两个双栈主机Host B和Host C,它们分别有一个私网IPv4地址。要使其具有ISATAP功能,需要进行如下操作:

  1. 首先配置ISATAP隧道接口,这时会根据IPv4地址生成ISATAP类型的接口ID。
  2. 根据接口ID生成一个ISATAP链路本地IPv6地址,生成链路本地地址以后,主机就有了在本地链路上进行IPv6通信的能力。
  3. 进行自动配置,主机获得IPv6全球单播地址、ULA地址等。
  4. 当主机与其它IPv6主机进行通讯时,从隧道接口转发,将从报文的下一跳IPv6地址中取出IPv4地址作为IPv4封装的目的地址。如果目的主机在本站点内,则下一跳就是目的主机本身,如果目的主机不在本站点内,则下一跳为ISATAP路由器的地址。

6PE

6PE是一种IPv4到IPv6的过渡技术,ISP可以利用已有的IPv4骨干网为分散用户的IPv6网络提供接入能力。6PE的主要思想是:IPv6供应商边缘6PE(IPv6 Provider Edge)设备将用户的IPv6路由信息转换为带有标签的IPv6路由信息,并且通过内部边界网关协议IBGP(Internal Border Gateway Protocol)会话扩散到ISP的IPv4骨干网中。6PE设备转发IPv6报文时,首先会将进入骨干网隧道的数据流打上标签。隧道可以是GRE隧道或者MPLS LSP等。当ISP想利用自己原有的IPv4或MPLS网络,使其通过MPLS具有IPv6能力时,只需要升级PE设备。所以对于运营商来说,使用6PE技术作为IPv6过渡机制是一个高效的解决方案。

6PE的典型组网图如图9所示:

图9 6PE示例

6PE的原理请参见《S300, S500, S2700, S5700, S6700 V200R022C10 配置指南-MPLS》。

IPv6 over IPv4隧道配置注意事项

V200R022C10版本特性支持情况

仅如下款型支持IPv6 over IPv4隧道:

S5720I-SI、S5735-S、S5735S-S、S5735-S-I、S5735S-H、S5736-S、S5731-H、S5731-H-K、S5731-S、S5731S-H、S5731S-S、S5732-H、S5732-H-K、S6735-S、S6720-EI、S6720S-EI、S6730-H、S6730-H-K、S6730S-H、S6730-S和S6730S-S

如需了解交换机软件配套详细信息,请点击Info-Finder,在选择产品系列或产品型号后,在“硬件中心”进行查询。 

S5731-L和S5731S-L属于远端模块,不支持Web管理、YANG和命令行,仅支持通过中心交换机对其下发配置,相关操作请参见《S300, S500, S2700, S5700, S6700 V200R022C10 配置指南-设备管理》中的“智能极简园区网络配置(小行星方案)”。

特性依赖和限制

使能IPv6报文转发能力

背景信息

如果要使能接口对IPv6报文进行转发的功能,必须同时使能系统视图下和接口视图下的IPv6功能。

操作步骤

  1. 执行命令system-view,进入系统视图。
  2. 执行命令ipv6,使能IPv6报文转发能力。

    缺省情况下,设备不使能对IPv6报文的转发能力。

    如果要对IPv6报文进行转发,必须先在系统视图下使能设备的IPv6报文转发能力。否则即使在接口上配置有IPv6地址,设备无法转发IPv6的报文。

  3. 执行命令interface interface-type interface-number,进入需要使能IPv6功能的接口视图。
  4. 执行命令ipv6 enable,使能接口的IPv6功能。

    如果要在接口视图下进行IPv6的相关配置,必须先在接口视图下使能IPv6功能。

    缺省情况下,接口下不使能IPv6功能。

配置接口的IPv4和IPv6地址

背景信息

需要使能双协议栈的设备必须在IPv4网络侧和IPv6网络侧分别配置IPv4地址和IPv6地址。

操作步骤

  1. 执行命令system-view,进入系统视图。
  2. 执行命令interface vlanif vlan-id,进入IPv4网络侧的接口视图。
  3. 执行命令ip address ip-address { mask | mask-length },配置接口的IPv4地址。
  4. 执行命令quit,返回系统视图。
  5. 执行命令interface vlanif vlan-id,进入IPv6网络侧的接口视图。
  6. 请根据不同情况进行以下配置。
    • 配置接口的自动链路本地地址,请执行命令ipv6 address auto link-local

    • 配置接口的自定义链路本地地址,请执行命令ipv6 address ipv6-address link-local

    • 配置接口的全球单播地址,请执行命令ipv6 address { ipv6-address prefix-length | ipv6-address/prefix-length }。

    • 配置接口的IPv6 EUI-64格式地址,请执行命令ipv6 address { ipv6-address prefix-length | ipv6-address/prefix-length } eui-64

检查IPv4/IPv6双协议栈配置结果

操作步骤

  • 执行命令display ipv6 interface [ interface-type interface-number | brief ],查看接口的IPv6属性。

配置业务环回聚合接口

背景信息

配置业务环回聚合接口时,请注意以下情况:在整个设备上只需要一个业务环回聚合接口。此处做业务环回聚合的接口必须是空闲的,没有承载业务的接口。

操作步骤

  1. 执行命令system-view,进入系统视图。
  2. 执行命令interface eth-trunk trunk-id,进入Eth-Trunk接口视图。
  3. 执行命令service type tunnel,指定该接口为业务环回聚合接口。

    说明:

    同一Eth-Trunk接口下service type tunnel命令不能与URPF功能同时配置。

    使能业务环回聚合接口功能的Eth-Trunk接口,其STP功能自动去使能。去使能Eth-Trunk接口的业务环回聚合接口功能后,STP功能自动使能。

  4. 执行命令quit,返回系统视图。
  5. 执行命令interface interface-type interface-number,进入接口视图。
  6. 执行命令eth-trunk trunk-id,将当前接口加入到指定Eth-Trunk中。

检查配置结果

在Eth-Trunk接口视图下执行命令display this include-default,查看该Eth-Trunk接口是否配置为业务环回聚合接口。

配置IPv6 over IPv4手动隧道

背景信息

配置IPv6 over IPv4手动隧道时,请注意以下情况:

操作步骤

  1. 执行命令system-view,进入系统视图。
  2. 执行命令interface tunnel interface-number,创建Tunnel接口。
  3. 执行命令tunnel-protocol ipv6-ipv4,指定Tunnel为手动隧道模式。
  4. 执行命令eth-trunk trunk-id,将当前接口加入到指定Eth-Trunk中。
  5. 执行命令source { ip-address | interface-type interface-number },指定Tunnel的源地址或源接口。
  6. 执行命令destination dest-ip-address,指定Tunnel的目的地址。

    说明:

    Tunnel的目的地址可以是物理接口地址,也可以是Loopback接口的地址。

  7. 执行命令ipv6 enable,使能接口的IPv6功能。
  8. 执行命令ipv6 address { ipv6-address prefix-length | ipv6-address/prefix-length },设置Tunnel接口的IPv6地址。

    说明:

    此时指定的Tunnel接口的IPv6地址的前缀,应该与边界设备所属的IPv6网络的地址前缀相同。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

11.python设计模式【责任链模式】

内容:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。角色: 抽象处理者(Handler)具体处理…

【用户体验分析报告】 按需加载组件,导致组件渲染卡顿,影响交互体验?组件拆包预加载方案来了!

首先,我们看一些针对《如何提升应用首屏加载体验》的文章,提到的必不可少的措施,便是减少首屏幕加载资源的大小,而减少资源大小必然会想到按需加载措施。本文提到的便是一个基于webpack 插件与 react 组件实现的一套研发高度自定义…

索马里ECTN认证开船后办?都可以办的,

索马里ECTN认证开船后办?都可以办的,没有特别时间要求,可以在开船前办,也可以在开船后再办。因为索马里ECTN货物跟踪单看上去像是一份“证书”的文件,主要作用是用于目的港清关,所以很多客户习惯把它称为EC…

50条必背JAVA知识点(三)

31.面向对象中两个重要的概念:类:对一类事物的描述,是抽象的、概念上的定义对象:是实际存在的该类事物的每个个体,因而也称为实例(instance) 32.虚拟机栈,即为平时提到的栈结构。局部变量存储在栈结构中&am…

【数据动态填充到element表格;将带有标签的数据展示为文本格式】

一&#xff1a;数据动态填充到element表格&#xff1b; 二&#xff1a;将带有标签的数据展示为文本格式&#xff1b; 1、 <el-row><el-col :span"24"><el-tabs type"border-card"><el-tab-pane label"返回值"><el-…

IL汇编字符串连接

在此实现了一个基本的IL汇编程序&#xff1b; 了解MSIL汇编和IL汇编评估堆栈_bcbobo21cn的博客-CSDN博客 它用了下面两句来在屏幕输出字符串&#xff0c; ldstr "I am from the IL Assembly Language..." call void [mscorlib]System.Console::WriteLine (string) …

WMS是什么意思,WMS有什么功能

阅读本篇文章&#xff0c;您可以了解到&#xff1a;1、WMS的定义&#xff1b;2、WMS的功能&#xff1b;3、WMS的好处&#xff1b;4、WMS的未来。 一、WMS的定义 WMS全称为Warehouse Management System&#xff0c;即仓库管理系统&#xff0c;是一种用于管理和控制仓库操作的软…

day42-Live User Filter(实时用户过滤器)

50 天学习 50 个项目 - HTMLCSS and JavaScript day42-Live User Filter&#xff08;实时用户过滤器&#xff09; 效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport…

CTF PWN-攻防世界CGfsb格式化字符串漏洞

文章目录 前言格式化字符串漏洞格式化字符串漏洞基本原理简单典型案例 漏洞的危害与利用拒绝服务攻击内存数据读取内存数据覆盖 攻防世界&#xff1a;CGfsg题目思路简析任意地址覆写 总结 前言 距离 2021 年年底短暂接触学习 CTF PWN 相关知识&#xff08;CTF PWN-攻防世界XCT…

光伏储能行业MES系统解决方案

万界星空科技光伏储能行业mes解决方案连接起仓储物流、生产计划、制程管理、品质管理等各个模块&#xff0c;覆盖全厂的各个工序段&#xff0c;提供计划的执行、跟踪以及所有资源(人、设备、物料等)的当前状态&#xff0c;帮助企业实现产品质量、生产效率的提升。 万界星空平台…

灵雀云Alauda MLOps 现已支持 Meta LLaMA 2 全系列模型

在人工智能和机器学习领域&#xff0c;语言模型的发展一直是企业关注的焦点。然而&#xff0c;由于硬件成本和资源需求的挑战&#xff0c;许多企业在应用大模型时仍然面临着一定的困难。为了帮助企业更好地应对上述挑战&#xff0c;灵雀云于近日宣布&#xff0c;企业可通过Alau…

大数据实时链路备战 —— 数据双流高保真压测 | 京东云技术团队

一、大数据双流建设 1.1 数据双流 大数据时代&#xff0c;越来越多的业务依赖实时数据用于决策&#xff0c;比如促销调整&#xff0c;点击率预估、广告分佣等。为了保障业务的顺利开展&#xff0c;也为了保证整体大数据链路的高可用性&#xff0c;越来越多的0级系统建设双流&…

Leetcode-每日一题【剑指 Offer 66. 构建乘积数组】

题目 给定一个数组 A[0,1,…,n-1]&#xff0c;请构建一个数组 B[0,1,…,n-1]&#xff0c;其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]A[0]A[1]…A[i-1]A[i1]…A[n-1]。不能使用除法。 示例: 输入: [1,2,3,4,5]输出: [120,60,40,30,24] 提示&#xff1a; 所…

UVM重点归纳(快收藏 !)

factory机制 利用工厂机制的一般实现步骤&#xff1a; 1.继承 范式&#xff1a; class comp_type/obj_type extends uvm_component/uvm_object; 实例&#xff1a; class comp1/obj1 extends uvm_component/uvm_object; 2.注册 范式&#xff1a; uvm_component/object_utils…

组件开发系列--Apache Commons Chain

一、前言 Commons-chain是apache commons中的一个子项目,主要被使用在"责任链"的场景中,struts中action的调用过程,就是使用了"chain"框架做支撑.如果你的项目中,也有基于此种场景的需求,可以考虑使用它. 在责任链模式里&#xff0c;很多对象由每一个对象对…

Python中运行取消Python console模式

在Python里run的时候突然会发现&#xff0c;进入的不是run模式&#xff0c;而是console模式&#xff0c;这种运行模式能保留你每次的运行历史&#xff0c;因为会重开一个运行小页面&#xff0c;关闭操作如下&#xff1a;

opencv-18 什么是色彩空间?

1.什么是色彩空间类型&#xff1f; 色彩空间类型&#xff0c;也称为颜色空间类型或色彩模型&#xff0c;是一种表示图像中颜色的方式。在计算机图形学和数字图像处理中&#xff0c;有许多种色彩空间类型&#xff0c;每种类型有不同的表达方式和特点。 常见的色彩空间类型包括&a…

虹科新闻 | 虹科与Berghof正式建立合作伙伴关系

近日&#xff0c;虹科与德国Berghof公司达成战略合作&#xff0c;虹科正式成为Berghof Automation在大中华区的认证授权代理商。未来&#xff0c;虹科将携手Berghof一同为机器制造商、系统集成商和工业设备制造商提供先进的解决方案&#xff0c;从而在最小的空间内实现最高的性…

STM32使用HAL库BH1750光照度传感器

开发环境 单片机&#xff1a;STM32F103C8T6 光照度传感器&#xff1a;BH1750 IDE&#xff1a;KEILSTM32CUBEMX 单片机配置 1、STM32CUBEMX BH1750代码 1、头文件 /* ************************************************* BH1750光照数据计算&#xff08;LUX&#xff09; …

React Flow

// 创建项目 npm create vitelatest my-react-flow-app -- --template react // 安装插件 npm install reactflow // 运行项目 npm run dev 1、App.jsx import { useCallback, useState } from react; import ReactFlow, {addEdge,ReactFlowProvider,MiniMap,Controls,useNode…