6WINDGate-overview

news2024/10/1 9:40:29

6WINDGate Overview

Author:Once Day Date:2023年4月29日

本文是对6WIND官网文档的整理和翻译,仅供学习和研究之用,原始文章可参考下面文档

  • 6WINDGate Documentation - 6WIND
  • 6WINDGate Modules — 6WINDGate Modules 5.6.2 documentation

1.概述

6WIND通过帮助客户从昂贵的专有硬件迁移到软件网络设备,引领技术创新。在过去的十年中,全球客户依靠6WIND的路由、安全和TCP网络堆栈来设计业内性能最高的网络设备。

6WINDGate是下一代网络应用的基础(The Foundation for Next-Generation Networking Applications)。

6WINDGate provides the foundation for next-generation networking applications. Deployed in Tier 1 networks, 6WINDGate delivers the much-needed software solutions that enable OEMs to build networking products for 5G, SD-WAN, and IoT markets. This includes IP backhaul solutions, Unified Threat Management (UTM) products, universal Customer Premises Equipment (uCPE), Radio Access Network (RAN) solutions, and much more.

Tier 1网络是指只通过无结算对等连接运营的互联网服务提供商。在美国,Tier 1网络提供商包括:AT&T、Verizon等等。Tier 1网络提供商之间的流量交换是免费的,因为它们都有自己的网络,而且它们的网络之间的流量交换是相互平衡的。

6WINDGate提供急需的软件解决方案,使OEM厂家能够为5G, SD-WAN和物联网市场构建网络产品。这包括IP回程解决方案、统一威胁管理(UTM)产品、通用客户端设备(uCPE)、无线接入网(RAN)解决方案等等。

6WINDGate架构采用基于解决方案的方法,提供了构建各种网络应用所需的灵活性,具有通用代码库,可在x86和ARM平台上无缝部署裸机或虚拟化(虚拟机或容器)。6WINDGate还通过标准化的插件API提供扩展功能,使oem厂家能够通过加载特定的增强功能来构建定制的网络解决方案。

6WINDGate主要的特性如下:

  • A flexible design,灵活的设计
  • Fully supported and maintained solution,得到充分支持和维护的解决方案
  • Support for multiple architectures including Intel x86, AMD and ARM,支持多种架构,包括英特尔x86, AMD和ARM
  • Rich set of features and a complete networking solution,丰富的功能集和完整的网络解决方案
  • Hardware independence,硬件独立
  • Performance & Scalability,性能和可扩展性
  • Enhanced deployment capabilities (bare metal, virtual machines and containers),增强的部署功能(裸机、虚拟机和容器)
  • Extensible management and monitoring capabilities (NETCONF/YANG based),可扩展的管理和监控功能(基于NETCONF/YANG)

6WINDGate主要的应用场景如下:

  • Packet Inspection Applications (Next generation firewalls, UTM, DPI),下一代防火墙,威胁管理和内容审计。
  • Telecom Applications (EPC, NG-Core, RAN, NG-RAN, Security Gateways),电信应用,4G、5G、无线接入和安全网关。
  • Service Providers and Enterprise Applications (SDN/NFV, SD-WAN, SASE, VPN concentrators)服务提供商和企业应用程序。

6WINDGate官方问答网页如下:

  • FAQ - 6WINDGate - 6WIND
1.2 有关信息总结

(1)6WINDGate暂只支持在Linux上运行。

(2)除了TCP/UDP终止IPv4快速路径模块及其IPv6扩展需要与应用程序特定集成外,所有其他6WINDGate快速路径模块都支持与Linux的同步机制。

(3)异常机制(Exception Mechanism),在6WINDGate基于快速路径的解决方案中,快速路径接收系统中所有传入的数据包。它的目标是提供非常高的包处理性能。因此,它不会处理复杂、耗时的数据包,这些数据包只占总流量的一小部分。例如,需要状态机计算转发信息(如ARP或路由协议)的报文不在快速路径中处理。

当接收到的报文过于复杂,无法通过快速路径进行处理时,会将其作为异常报文发送给Linux,由Linux网络栈或控制平面处理。然后,由于连续同步机制,Linux中计算出来的信息会自动配置到快速路径上,使得同一流的下一个数据包可以在快速路径上处理。

这种异常机制,结合Linux的连续同步和快速路径,使6WINDGate可以处理任何类型的数据包,保证了整个系统的一致性。

(4)在标准的Linux体系结构中,控制平面为静态和动态配置更新Linux网络堆栈。当使用像6WINDGate这样的快速路径时,它还必须与相同的信息同步以具有一致的系统。6WINDGate架构旨在使这种同步完全透明。

(5)6WINDGate包处理软件运行在专用内核上,与Linux操作系统隔离。该软件由高性能网络堆栈、快速路径组成,旨在提供最高的吞吐量和最低的延迟。数据包处理从Linux操作系统中卸载。

(6)由于FPN-SDK,我们的大多数6WINDGate快速路径软件是通用的。然而,使用特定于处理器的资源(如用于QoS的硬件队列)是与处理器相关的。wind还实现了一些特定的低级优化,以最大限度地利用处理器。

(7)6WIND是dpdk.org开源项目的创始人。6WIND是该项目的主要贡献者之一。windgate在Intel和IBM Power架构中使用DPDK,两种架构的FPN-SDK是DPDK的接口。

(8)6WINDGate FPN-SDK是快速路径模块的执行环境。FPN-SDK依赖于硬件,由硬件体系结构标识。我们目前支持Intel、Cavium和IBM Power架构。Mellanox NPS和Kalray MPPA处理器的支持计划在我们的路线图中。FPN-SDK包括:

  • 通用抽象api用于实现独立于底层硬件的快速路径模块,开销为零,使用处理器SDK的服务。

  • Linux与快速路径的异常机制。

(9)由于连续同步机制,能够配置Linux内核路由(OSPF,BGP…)或IPsec信息的路由和IKE软件将明显受益于6WINDGate快速路径。

(10)RIP、RIPng、OSPFv2、OSPFv3和BGP支持虚拟路由。控制平面虚拟路由已与支持虚拟路由的快速路径转发模块集成并验证。

(11)6WINDGate管理架构非常灵活,可以为6WINDGate与现有管理系统的顺利集成提供不同的解决方案:

  • 调用您的6WINDGate管理系统,使用NETCONF或CLI集成6WINDGate带来的新功能的管理
  • 使用Linux直接调用
  • 扩展6WINDGate管理系统为您服务

(12)提供了一个命令行接口来与6WINDGate交互。它可用于配置、监控和故障排除。它提供了帮助和完成,以及配置文件的管理,以便在一个命令中保存和恢复完整和一致的配置。CLI实际上是一个NETCONF客户端,它与6WINDGate的基于yang的配置引擎通信。

(14)在单一多核体系结构的情况下,Linux网络堆栈和快速路径之间的同步是通过共享内存处理的。在双多核处理器体系结构中,Linux运行在一个处理器上,而快路径运行在另一个处理器上。Linux网络栈和快速路径之间没有共享内存。

在这种体系结构中,需要快速路径1CP - 1FP模块,它允许通过两个处理器之间的网络连接将Linux网络堆栈与远程快速路径同步。

因此,6WINDGate架构可以平等地部署在:

  • 一个多核处理器的共享核心,

  • 两个不同的多核处理器(一个分配给Linux,另一个分配给快速路径),

  • 一个多核处理器运行快速路径,另一个可能是非多核处理器运行Linux。

(15)我们大多数的6WINDGate软件都是通用的。然而,处理器特定资源(如以太网驱动程序、加密引擎)的使用依赖于处理器。为了实现一些特定的低级优化以充分利用处理器,6WIND使用周期级模拟器(当可用时)来优化周期的数量。处理器的性能计数器和分析工具也可以用来测量处理时间。

(16)与标准Linux相比,6WINDGate通常将数据包处理性能提高5到40倍。确切的值取决于不同的参数(哪个协议是加速的,数据包大小,硬件平台…)。为了得到更精确的答案,可以提供参考平台上详细的性能测试结果。

(17)6WINDGate具有流量检测/包捕获快速路径模块,可在快速路径中提供伯克利包过滤功能。它允许从控制平面监控快速路径流量。

2.具体介绍的文档

2.1 整体架构预览

相关参考文档:

  • 6WINDGate Documentation - 6WIND

  • https://www.6wind.com/wp-content/uploads/resources/6windgate/6WINDGate-Architecture-Overview-v3.0.pdf

  • https://www.6wind.com/wp-content/uploads/resources/6windgate/white-papers/6WINDGate-Architecture-Overview-Whitepaper-v3.0.pdf

基于Linux平台,在主流的处理器上都能运行,原生支持多种网络协议,提供基于YANG和NETCONF的管理系统。

在这里插入图片描述

与Linux同步的加速层2-4堆栈:

在这里插入图片描述

高度兼容的运行环境:

在这里插入图片描述

整体实现的细节架构:

在这里插入图片描述

标准的管理面架构:

在这里插入图片描述

2.2 Linux同步和异常处理机制

有两种方法可以实现高性能隔离快速路径与Linux控制和管理平面的集成

  • 重新设计控制和管理平面如何与数据平面交互,需要大量的工作来适应和验证大量复杂的协议
  • 依赖于Linux友好型数据平面的设计,让Fast Path作为Linux的透明解决方案。没有改变现有的Linux控制和管理平面,需要Linux Networking Stack和Fast Path之间的智能协作。

第二个选项已经在6WINDGate中成功实现,使用Linux - Fast Path同步,利用Linux eBPF强大的网络功能。

在这里插入图片描述

异常处理的策略如下

  • 由FastPath接收所有的包,但是部分包被送到Linux内核去处理:
    • Local destination,报文目的地址为设备本地接口地址
    • Missing processing information in Shared Memory (ARP, IPsec SA, etc.),共享内存中无有效处理信息
    • Unaccelerated protocol,无法加速的协议
  • 一些特殊的异常包也会送到Linux中去:
    • Basic exceptions for standard processing are sent to a TUN/TAP Linux driver。
    • Special exceptions for packets that have been preprocessed by the Fast Path are injected at the right place into the Linux Networking Stack thanks to an eBPF program

异常的类型有如下几种可能

  • 准备送给控制面处理的报文:
    • ICMP echo requests
    • Control Plane daemons (BGP, OSPF, IKE, etc.)
  • 无法处理的报文(缺失路由,邻居信息等等)
    • No L3 route available
    • No L2 address available for destination/gateway
    • No IPsec info (SP/SA)(Security Parameter/Security Association)
    • Missing conntrack info
  • 在Linux处理的协议报文
    • ARP/NDP
    • ICMP stack (TTL expiration)
2.3 eBPF(Extension Berkeley Packet Filter)

eBPF现在比较热门,各类论坛上也有很多资料,用于内核调试和网络过滤,时间追踪等等。

在6WINDGate产品上,通常用来进行包过滤处理

在这里插入图片描述

在这里插入图片描述

2.4 Linux和FastPath信息交换

在这里插入图片描述

主要依靠两个模块来实现:

  • Cache Manager (CM): cmgrd executable
  • Fast Path Manager (FPM): fpmd executable
  • Local or remote communication between CM and FPM is done by the Fast Path Control API (FPC API)

同步的路径有下面三条:

  • CM -> FPC -> FPM
  • FPM -> Shared Memory
  • FPM -> NETFPC -> Fast Path

缓存同步模块(Cache Manager(CM))主要的特性如下:

  • Runs as a Linux userland application
  • Listens to the Netlink socket, for kernel internal states (Control Plane and configuration updates)
  • Transforms Netlink messages into FPC messages
  • Control Plane modules (routing, IKE, PPP…) are not modified

FastPath管理模块的特性主要如下:

  • Runs as a Linux userland application
  • Translates FPC API messages to configure Fast Path modules using:
    • Read / write Shared Memory
    • Send / receive notifications to / from Fast Path through NETFPC

下面是共享内存的一些信息:

  • Contains structures for Physical ports、Forwarding table、Statistics、IPsec databases、etc.
  • Read/write access for:
    • FPM: writes local information received from CM through FPC messages
    • Fast Path: reads local information used for packet processing (L2/L3 entries, IPsec SAs, etc.) and writes statistics
    • FPS: reads statistics
  • Allocation is specific to processor architecture, contents are generic,POSIX shmem implementation。

NETFPC是一个RPC类的API调用,用于触发FastPath中来自Linux的事件,用于获取在快速路径执行环境中被调用的函数,通常用于通过快速路径的驱动更改网卡设置。

VRF(Virtual Routing and Forwarding)虚拟路由转发的相关情况如下:

  • IP technology that allows multiple instances of a routing table to work simultaneously within the same router。
  • In Linux, VRFs are configured using network namespaces (netns)。
  • Userland API: libvrf,This library allows to manage and monitor 6WINDGate VRFs from any Linux userland process。
  • Cache Manager makes use of libvrf to synchronize netns-VRF in Fast Path VRF

Fast Path Statistics (FPS)快速路径统计信息如下:

  • Reports Fast Path statistics into the Linux Networking Stack
    • Fast Path modules update the Shared Memory with statistics
    • FPS daemon reads Shared Memory statistics periodically
    • Statistics are updated in Linux Networking Stack via NETLINK e.g. XFRM family for IPsec
  • 接口统计数据和IP MIB数据无法同步,当前无用户空间API可以实现。
  • Well-known tools like iproute2, SNMP, bmon use NETLINK to get statistics,FPS provides a library transparently catching NETLINK requests for statistics (IFLA_STATS attribute) and updating the answer with Fast Path statistics。

一些常见的工具,如IP(iproute2)命令,SNMP简单网管协议等等都是通过netlink来获取数据,因此FPS通过捕获netlink请求来返回FastPath的统计数据。其他的一些命令,如ifconfig不走netlink,则无法获取数据。

Hitflags(命令标记)信息同步如下:

  • 当数据包经过Fast Path时,内核对象状态不会更新:
    • Fast path relies on Linux slow path for ARP, conntracks, 快速路径依赖于Linux,慢速路径用于ARP,连接
    • When not used, these entries will expire and get removed by Linux, 当不使用时,这些条目将过期并被Linux删除
    • The synchronization will raise periodic waves of packet exceptions, 同步将引发数据包异常的周期性波动
  • Fast Path Hitflags守护进程负责更新内核状态
    • Fast Path module writes the hitflag field into the Shared Memory when the entry is used, 当条目被使用时,快速路径模块将hitflag字段写入共享内存.
    • Hitflags daemon scans the Shared Memory entries (ARP for example) periodically, Hitflags守护进程定期扫描共享内存项(例如ARP).
    • Entries marked by Fast Path are updated in Linux Networking Stack via NETLINK, 标记为快速路径的条目通过NETLINK在Linux网络堆栈中更新.
  • 数据包流现在保持稳定在快速路径,在Linux中,Fast Path中的使用项仍然存在
2.5 FPN-SDK快速路径软件开发工具包

在这里插入图片描述

FastPath所在的基础软件开发工具包,分成两类:

  • 硬件抽象层,对FastPath提供硬件无关的抽象。
  • 硬件依赖层,一般是DPDK需要特定的硬件依赖。

TCP Segmentation Offload (TSO)和Large Receive Offload (LRO)是一种网络卸载技术,用于卸载TCP/IP协议栈的工作,以减轻CPU的负担。TSO是一种由网卡卸载TCP数据包分段的技术,而LRO则将传入的网络数据包重新组装成更大的缓冲区,并将结果更大但更少的数据包传输到主机或虚拟机的网络堆栈。

在这里插入图片描述

2.6 报文处理和异常路径

参考文章:

  • 5.1 GRO(Generic Receive Offload)_Remy1119的博客-CSDN博客
  • 怎么提高网络应用性能?让DPDK GRO和GSO来帮你! - 腾讯云开发者社区-腾讯云 (tencent.com)
  • Open vSwitch 入门实践(1)简介 - 知乎 (zhihu.com)
  • OpenvSwitch(OVS)全面解读_lonely_geek的博客-CSDN博客
  • 什么是MPLS?有何特点?与SD-WAN有何区别? - 知乎 (zhihu.com)
  • MPLS的概念、原理与作用 - 知乎 (zhihu.com)
  • Linux 虚拟网卡技术:Macvlan - 腾讯云开发者社区-腾讯云 (tencent.com)
  • 什么是VXLAN - 华为 (huawei.com)

在这里插入图片描述

路径描述大概如下:

  1. 通过DPDK PMD驱动从网卡收包,然后送入fp_process_input处理。

  2. fp_process_input里面可以进行GRO处理,网络协议处理中的GRO是Generic Receive Offload的缩写,它的功能是将多个TCP数据包聚合在一个skb结构,然后作为一个大数据包交付给上层的网络协议栈,以减少上层协议栈处理skb的开销,提高系统接收TCP数据包的性能。GRO是一种在协议栈接收报文时进行减负的处理方式,它可以支持多种协议报文,如TCP/IPv4、VxLAN和GRE。

  3. OVS(Open vswitch)是一个多层的虚拟交换机软件,可以作为第2层或第3层交换机,支持多种协议和功能,如OpenFlow、NetFlow、VXLAN、IPsec等。Linux Bridge是一个简单的第2层交换机软件,只支持基本的功能,如STP、VLAN、GRE等。

  4. 网络协议中的MPLS是多协议标签交换(Multi-Protocol Label Switching)的缩写,它是一种使用标签来指定数据转发决策的数据包转发技术,它可支持多种网络层协议(如IP、IPv6、IPX等)且兼容多种链路层技术(如ATM、帧中继、以太网、PPP等),一般在位于第二层(数据链路层)和第三层(网络层)网络之间的以太网交换机和路由器上进行运行。

    MPLS的主要特点有以下几点:

    • MPLS可以实现高效的数据包转发,提高网络性能,因为它只在网络边缘分析IP报文头,而不用在每一跳都分析IP报文头,节约了处理时间。
    • MPLS可以实现灵活的流量工程,优化网络资源利用率,因为它可以根据流量需求和网络状况动态地建立和拆除标签交换路径(LSP),并且可以支持多路径负载均衡和快速重路由等功能。
    • MPLS可以实现多种业务的集成和隔离,提高网络安全性和可靠性,因为它可以利用标签栈来构建虚拟专用网(VPN)、QoS(服务质量)、MPLS-TE(流量工程)等业务,并且可以保证不同业务之间的逻辑隔离。
    • MPLS可以实现多种网络协议的互通,提高网络兼容性和扩展性,因为它可以支持多种网络层协议,并且可以使用任意二层介质传输网络分组。
  5. MACVLAN 是 Linux 的一种虚拟网络接口。它允许您在主机的一个网络接口上配置多个虚拟的网络接口,这些网络接口有自己独立的 MAC 地址,也可以配置上 IP 地址进行通信。MACVLAN 下的虚拟机或者容器网络和主机在同一个网段中,共享同一个广播域。

  6. SVTI 是 Cisco IOS 提供的一种解决方案,它推荐在 IOS 12.4 以后的路由器上配置。它可以直接采用 IPsec 创建 VTI 隧道接口,相比与 GRE 节省了 GRE 的带宽开销。VTI 相比与 GRE 节省了 GRE 的带宽开销

  7. VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网),是由IETF定义的NVO3(Network Virtualization over Layer 3)标准技术之一,是对传统VLAN协议的一种扩展。 VXLAN的特点是将L2的以太帧封装到UDP报文(即L2 over L4)中,并在L3网络中传输。 VXLAN本质上是一种隧道技术,在源网络设备与目的网络设备之间的IP网络上,建立一条逻辑隧道,将用户侧报文经过特定的封装后通过这条隧道转发。

在这里插入图片描述

2.7 FastPath虚拟接口

Interface Between Fast Path And Linux Networking Stack: FPVI

  • Provides NIC representor in Linux for standard configuration (e.g. iproute2)
  • Implemented using FPN-SDK
  • For DPDK, it is using Linux tun/tap + DPDK PMD virtio-user

Fast path -> Linux : receive exception path

  • Basic exception: packets are sent unmodified to get a standard processing by the Linux Networking stack

  • Special exception: packets have been preprocessed by the Fast Path and are injected at the right place into the Linux

  • Networking Stack, thanks to an eBPF program

Linux -> Fast path : transmit exception path

  • Packets are sent out the physical ports by the Fast Path which owns NIC drivers

在这里插入图片描述

2.8 FastPath插件

快速路径插件可以在不修改原始快速路径模块的情况下自定义快速路径应用程序的某些部分,有三类插件:

  • Replace a Fast Path module with custom processing
  • Replace input and output functions on specific interfaces
  • Handle a new protocol on top of IP

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.9 TCP/UDP终端

在这里插入图片描述

实现机制:

  • Redesigned and fully optimized for multi-core execution environments
  • Highly scalable processing of parallel establishment / shutdown of TCP connections
  • High performance data exchanges on a huge number of TCP/UDP sockets on established TCP connections
  • Event driven notifications from the stack to the application
  • Plugin support for custom TCP/UDP applications including bridged and routed transparent proxy support with configurable IP bypass lists

套接字API:

  • Full support of TCP and UDP sockets over IPv4 and IPv6
  • POSIX-compliant socket API and Zero-copy based socket APIs
  • VRF-aware sockets
  • Netstat like support to dump state and statistics of the sockets

在这里插入图片描述

2.10 管理面扩展

在这里插入图片描述

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

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

相关文章

武忠祥老师每日一题||定积分基础训练(三)

常用的基本不等式&#xff1a; sin ⁡ x < x < t a n x , x ∈ ( 0 , π 2 ) \sin x<x<\ tan x,x\in(0,\frac{\pi}{2}) sinx<x< tanx,x∈(0,2π​) e x ≥ 1 x , x ∈ ( − ∞ , ∞ ) e^x\ge1x,x\in(-\infty,\infty) ex≥1x,x∈(−∞,∞) x 1 x ≤ ln …

Ubuntu20.04 交叉编译Paddle-OCR

第一步&#xff1a;交叉编译Paddle-Lite 参考链接&#xff1a;https://blog.csdn.net/sz76211822/article/details/130466597?spm1001.2014.3001.5501 第二步&#xff1a;交叉编译opencv4.x 参考链接&#xff1a;https://blog.csdn.net/sz76211822/article/details/13046168…

浅聊AIOT

引言 IoT是(Internet of Things)的简称&#xff0c;也就是人们常说的物联网&#xff1b;随着智能硬件的发展和推广&#xff0c;制造成本也随之下降&#xff0c;很多的厂家也慢慢地拥抱网络互联&#xff0c;逐步实现设备互联&#xff0c;也就进入了人们常说的万物互联时代。虽然…

linux网络统计指令:netstat

这里写自定义目录标题 一 netstat的作用以及安装命令1.1 作用1.2 安装命令 二 基本语法1.1 netstat -a1.2 netstat -e1.3 netstat -anp 三 查看指定端口的使用状况 一 netstat的作用以及安装命令 1.1 作用 主要用于显示IP和TCP、UDP与ICMP相关的统计数据&#xff0c;一般用于…

C++笔记——第十五篇 C++11来了 (上)

目录 1. C11简介 2. 列表初始化 2.1 C98中{}的初始化问题 2.2 内置类型的列表初始化 2.3 自定义类型的列表初始化 1. 标准库支持单个对象的列表初始化 2. 多个对象的列表初始化 3. 变量类型推导 3.1 为什么需要类型推导 3.2 decltype类型推导 3.2.1 为什么需要dec…

微服务全链路追踪选型:Zipkin、Pinpoint、SkyWalking、CAT

基于微服务架构&#xff0c;由于服务拆分粒度比较细&#xff0c;并且服务复用范围增大&#xff0c;不太可能再通过人工登记的方式进行接口调用情况的管理&#xff0c;因此对于每个请求的调用情况追踪将成为不可忽视的问题。追踪请求的调用情况&#xff0c;主要有几个作用&#…

分布式一致性Hash算法原理及实现【负载均衡】

文章目录 一致性Hash原理提高容错性和和扩展性一致性Hash实现思路代码 一致性Hash原理 简单来说&#xff0c;一致性Hash算法将整个哈希值空间组织成一个虚拟的圆环&#xff0c; 如假设某哈希函数 H 的值空间为 0 ~ 2^32-1&#xff08;即哈希值是一个32位无符号整形&#xff09;…

什么是POTDR?POTDR在光缆线路维护中有哪些应用

1 引言 OTDR&#xff08;Optical Time Domain Reflectometer&#xff0c;光时域反射仪&#xff09;是光缆线路工程及维护中的常用仪表&#xff0c;是利用光信号在光纤中传输时的瑞利散射和菲涅尔反射&#xff0c;通过反射曲线来了解光纤沿长度的损耗分布情况&#xff0c;可测量…

基于C#编程建立泛型Matrix数据类型及对应处理方法

一、简介 上一篇文档中描述了如何写一个Vector<T>类&#xff0c;本次在上一篇文档基础上&#xff0c;撰写本文&#xff0c;介绍如何书写一个泛型Matrix&#xff0c;可以应用于int、double、float等C#数值型的matrix。 本文所描述的Matrix<T>是一个泛型&#xff0c;…

一个人在家怎么赚钱?普通人如何通过网络实现在家就能赚钱

近年来&#xff0c;随着互联网的飞速发展&#xff0c;嗅觉敏锐的人只要使用互联网就可以快乐地赚钱。一般来说&#xff0c;网上赚钱的投资较少&#xff0c;有时有一台能上网的电脑或手机就够了&#xff0c;所以大家有时称其为“无成本或低成本网赚”。今天就分享一个人在家如何…

23种设计模式第一章:单例模式

这里写自定义目录标题 一 单例模式1 静态常量饿汉式2 静态代码块饿汉式3 线程不安全懒汉式4 线程安全懒汉式线程安全&#xff0c;同步方法线程安全&#xff0c;同步代码块 5 doubleCheck&#xff08;双重检查&#xff0c;推荐使用&#xff09;6 静态内部类7 枚举 一 单例模式 …

K8s 安全是云安全的未来

导语 到 2025 年&#xff0c;保护 Kubernetes (K8s) 将被认为是云安全最重要的方面。 在最成功的组织中&#xff0c;CTO 和 CISO 已经意识到 Kubernetes 安全的重要性。 但是&#xff0c;虽然 Kubernetes 已经占 CTO 云支出的很大一部分&#xff0c;但 CISO 仍然有所落后。 大…

基于web的课程重难点掌握情况分析系统

1&#xff0e;系统登录&#xff1a;系统登录是用户访问系统的路口&#xff0c;设计了系统登录界面&#xff0c;包括用户名、密码和验证码&#xff0c;然后对登录进来的用户判断身份信息&#xff0c;判断是管理员用户还是普通用户。 2&#xff0e;系统用户管理&#xff1a;不管是…

19.考虑柔性负荷的综合能源系统日前优化调度模型

说明书 MATLAB代码&#xff1a;考虑柔性负荷的综合能源系统日前优化调度模型 关键词&#xff1a;柔性负荷 需求响应 综合需求响应 日前优化调度 综合能源系统 参考文档&#xff1a;《考虑用户侧柔性负荷的社区综合能源系统日前优化调度》参考柔性负荷和基础模型部分&#xf…

脑电信号特征提取方法与应用

前言 脑电图(EEG)信号在理解与脑功能和脑相关疾病的电活动方面发挥着重要作用。典型的脑电信号分析流程如下&#xff1a;(1)数据采集&#xff1b;(2)数据预处理&#xff1b;(3)特征提取&#xff1b;(4)特征选择&#xff1b;(5)模型训练与分类&#xff1b;(6)性能评估。当信号分…

SpringClouid学习笔记(正在更新中...)

目录 SpringCloud1、微服务1.1、定义1.2、特性单体应用微服务应用 1.3、微服务架构演变&#xff08;RPC&#xff09;1.4、微服务解决方案 2、SpringCloud2.1、什么是SpringCloud官方定义DemoSpringCloud版本和SpringBoot版本选择 3、环境搭建环境说明构建方式开始构建 4、服务注…

全注解下的SpringIoc 续3-属性文件的使用

在Spring Boot中使用属性文件&#xff0c;可以采用默认的application.properties文件&#xff0c;也可以使用自定义的配置文件&#xff0c;下面让我们一起来看看这两个的使用。 使用默认的application.properties文件 这个配置文件是Spring Boot默认会加载的&#xff0c;所以…

自动抓取QQ好友列表?Windows UIA教你轻松实现

目录&#xff1a;导读 引言 选择Windows UIA框架进行自动化测试的原因 查找窗口 读取QQ软件的好友列表 结语 引言 每个使用QQ的人都有自己的好友列表&#xff0c;但是如果你想要查看所有好友信息&#xff0c;手动一个个点击会非常浪费时间。那么有没有什么快速获取好友列…

【openGauss实战12】表空间管理

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

【总线】IIC学习笔记

【总线】IIC学习笔记 参考链接IIC总线介绍IIC总线时序1.空闲信号2. 启动信号与停止信号3.数据的有效性4.应答信号5.七位地址传输 IIC读写过程&#xff08;AT24C02举例&#xff09;IIC读过程IIC写过程 正点原子IIC驱动问题1、IIC停止信号问题2、IIC-AT24C02的器件地址发送的疑惑…