浅谈SRv6(一)

广域网技术——SRv6 SID讲解 SRv6中,直接ping End SID是ping不同的,由于报文中的Flag中O没有置位,End SID收到后是不会响应的,此时就需要End.OP SID,直接ping End.OP SID是可以ping通的。End.DT6 SID可以通过静态配置生成,也可以通过BGP在Locator的动态SID范围内自动分配,并通过IGP协议扩散到其他网元,全局可见,本地有效。解封装报文,并查找IPv6 VPN实例路由表转发(也可以解封转报文后直接查找IPv6路由表,不进入实例),去往实例还是非实例通过配置实现。 阅读详情

一、SRv6产生的背景:

  • 传统IP/MPLS网络的挑战:

        首先是IP承载网孤岛的问题。MPLS是在原有IP技术的基础上叠加新技术产生的,它解决了诸如路由隔离、大规模组网、流量工程等问题。经过20多年的发展,MPLS虽然统一承载各种协议,但在支持跨越不同自治域的VPN时,设备中可能同时运行LDP、RSVP、IGP、BGP等协议,导致业务部署和管理复杂。IPv4和MPLS网络已经不适合5G等大规模业务的部署。

        此外,MPLS还缺乏扩展能力,当前一些新业务(如5G、物联网和云)要求网络具备可扩展能力。然而MPLS标签长度固定只有20比特,并且标签字段固定,不可扩展,无法满足新业务的可扩展需求。

  • IPv4网络地址耗尽

        2019年11月25日,IPv4的地址全部耗尽,而目前就处于IPv4向IPv6过渡的阶段,虽然规模化部署IPv6是网络发展趋势,但IPv6如何替代传统的IPv4和MPLS网络仍是网络技术研究的热点。

        SRv6的出现解决了上述一系列问题,推动网络进入一个全新的时代。

二、SRv6带来的价值

  • 简化协议,管理简单

         SRv6不再使用LDP/RSVP-TE协议,也不需要MPLS标签,简化了协议,管理简单。EVPN和SRv6的结合,可以使得IP承载网简化归一。

  • 具有强大的可扩展能力

         SRv6可以自定义编排路径,能够灵活控制转发路径。还可以通过自定义功能,满足多种业务和应用的需要。

  • 用IP满足IP本身的需求

         SRv6基于IPv6转发,SRv6是通过扩展报文头来实现的,没有改变原有IPv6报文的封装结构,SRv6报文依然是IPv6报文,普通的IPv6设备也可以识别SRv6报文。SRv6设备能够和普通IPv6设备共同部署,对现有网络具有更好的兼容性,可以支撑业务快速上线,平滑演进。

三、SRv6原理简介

        SR(Segment Routing)是一种源路由技术。源路由机制使SR通过起始节点即可控制报文的转发路径。SR将转发路径切割为不同的分段,起始节点向报文插入多个路径分段,中间节点按照报文携带的路径分段信息进行转发。路径分段又称为“Segment”,并通过SID(Segment Identifier,段标识)来区分。

        SR技术支持应用在MPLS和IPv6两种转发平面。应用在MPLS转发平面的SR称为SR MPLS(Segment Routing MPLS),其SID就是MPLS标签。应用在IPv6转发平面的SR称为SRv6,其SID为IPv6地址形式。

        为基于IPv6转发平面实现SR技术,在IPv6路由扩展头新增SRH(Segment Routing Header)扩展头,该扩展头指定一个IPv6的显式路径,存储IPv6的Segment List信息。

        SRv6 SID用来区分路径分段。SRv6 SID是一个长度为128比特的值,其格式虽然和IPv6地址相同,但不同于传统意义上理解的IPv6地址。SRv6 SID由Locator、Function和Arguments三个部分组成。

  • Locator:具有定位功能。提供IPv6的路由能力,报文通过该字段实现寻址转发。此外,Locator对应的路由也是可聚合的。
  • Function:用来表达该设备指令要执行的转发动作,不同的转发行为由不同的Function来表达。
  • Arguments:可选字段,是对Function的补充,是指令在执行时对应的参数,这些参数可能包含流、服务或任何其他相关的信息。

        SRv6的可扩展能力来源于三部分:

  • SID可以将多个Segment组合起来,形成SRv6路径,即路径可编辑。
  • SRv6的每个Segment是128bit,可以灵活分为多段,每段功能和长度可以自定义,由此具备灵活编程能力,即业务可编辑。
  • SID之后的Optional TLV(Type-Length-Value)。报文在网络中传送时,需要在转发面封装一些非规则的信息,可以通过SRH中TLV的灵活组合来完成,即应用可编辑。

SRv6简介(MPLS、SR-MPLS) SR+IPv6 阅读详情

相关推荐

1.3 SRv6 Segment 与 各类SID

如下图所示,如果想以A节点为起始节点,经过End.X SID 2001:DB8:A2::23,Ping节点D与节点E之间的End.X SID 2001:DB8:A4::45,则需要节点D处理并应答ICMPv6 Echo Request报文,此时节点A在构造Ping报文时需要插入节点D的End.OP SID 2001:DB8:A4::1。Function代表设备的指令(Instruction),这些指令都由设备预先设定,Function部分用于指示SRv6 SID的生成节点进行相应的功能操作。

m0_70976024的博客 4741

SRv6(Segment Routing IPv6)学习笔记

SRv6是基于源路由理念而设计的在网络上转发IPv6数据包的一种协议。SRv6通过在IPv6报文中插入一个路由扩展头SRH(Segment Routing Header),在SRH中压入一个显式的IPv6地址栈,并由中间节点不断的进行更新目的地址和偏移地址栈的操作来完成逐跳转发。

m0_59605653的博客 9130

浅谈智能DNS云解析(一)-中科三方

当用于表示HTTP请求的状态码大于400时,表示客户端出现错误,当状态码大于500时,表示服务端出现错误,其他,大于100时,表示接受的请求正在处理,大于300时,表示需要进行附加操作才能完成请求,只有当状态码为200时,才表示请求成功。通过其智能解析,健康监测,负载均衡,宕机切换等高可用性的功能特性,给客户带来快捷,安全,流畅的上网体验。DNS智能解析的实现依赖于解析线路的细分化,云服务的节点越多,客户可访问的解析线路就越多,解析的速度就会越快,用户上网体验愈加快捷流畅(表1, 云解析线路)。

m0_72559519的博客 481

SRv6----控制平面

SRv6 Locator TLV除了携带用于指导路由的信息外,IS-IS协议发布的SID如果不关联IS-IS邻居,则都在。IS-IS协议的另一个功能就是将SRv6 SID信息和SID对应的SRv6 Endpoint节点行为信息通过IS-IS协议的各类SID Sub-TLV扩散出去,用于路径/业务编程单元对网络进行编程。IS-IS协议通过两个TLV来发布Locator的路由信息:SRv6 Locator TLV和IPv6 Prefix Reachability TLV,这两个TLV具有不同的作用。

老网工的岁月独白 2320

Microsoft Teams 语音篇(四)--直接路由(Direct Routing)科普篇(一)

实现用teams的语音功能(打电话)有两种方式,这个之前也多次提到过 呼叫计划 直接路由 呼叫计划这种纯云的配置方式以前写过文章来讲解,总之纯云的配置方式都是非常容易的,涉及到本地就较为复杂了。 本篇我们就重点来看一下直接路由,但是步看配置,我们先从概念上梳理所有涵盖的专业名词以及知识点,理解了这些以后配置起来就比较得心应手了,除了问题也知道如何去排查。 因为考虑到可能会有零基础的人,所以首...

weixin_44669829的博客 2012

openstack底层创建虚拟机快照和导出快照、浅谈dashboard中主机聚合和可用域的关系

首先简单说下,主机聚合是干啥的,一般来说根据主机类型分类,比如cpu或内存一样的物理机,我们放到同一个聚合里面,那么在该聚合内创建的虚拟机,存放的计算节点,只能在主机聚合内的节点中,而且迁移的时候,同一个聚合主机里的虚拟机只能迁移到该聚合中另一台主机上,简单来说就是a聚合宿主机上的虚拟机不能迁移到b聚合宿主机上。然后可以通过该镜像创建虚拟机,虚拟机没问题以后,就可以准备导出镜像交付了。准备将快照导出~ 快照制作完毕以后,是可以到dashboard中看到格式的,可以看到快照是raw格式。

崔崇鑫的博客,你linux/云运维工作中的百科全书。 798

SRv6 TE Policy场景-原理浅谈及配置示例

EVPN L3VPN for IPv4 Over SRv6 TE Policy场景介绍;SRv6 TE policy原理介绍;RFC9256简介

fengxingzhe008的博客 5721

网络安全学习路线是怎样的?

为什么要学习安全? 近几年网络安全事件层出不穷,相信大家哪怕没遇到过,但也听过不少了吧。如服务器遭受入侵被黑,用户帐号被盗;被钓鱼、勒索病毒等,这些一旦发生,对企业而言都是不小的打击。因此,网络安全不容忽视,同时随着时代的不断发展,公司对于运维及网络工程师要求也越来越严格。未来越来越吃香的一定是技能方向广的复合型人才。网络安全可以说是一条非常好的发展道路。 今年两会期间,全国政协委员,360集团创始人、董事长周鸿祎提交了关于网络安全行业特殊人才的提案,为广大白帽子人员争取更好...

网安技术分享 8696

SRv6扩展阅读:故障保护LFA+G-SRv6+Flex-Algo+网络切片

SRv6扩展功能介绍:TI-LFA拓扑独立无环备份,Flex-Algo灵活算法,G-SRv6 Segment List压缩,SRv6的网络切片(HBH方案+源地址方案)

fengxingzhe008的博客 7357

微生物测序分析LEfSe

LEfse分析定义 LEfse分析即LDA Effect Size分析,可以实现多个分组之间的比较,还进行分组比较的内部进行亚组比较分析,从而找到组间在丰度上有显著差异的物种(即biomaker);

宁生信 5万+

VS2022离线环境下的NuGet包管理:从本地源到依赖项全解析

本文详细解析了在VS2022离线环境下如何高效管理NuGet包,包括搭建本地NuGet源的两种方案(本地文件夹源和私有NuGet服务器)、获取离线包的三大渠道以及依赖项处理的实战技巧。通过自动化脚本和依赖树分析工具,帮助开发者解决离线环境中的依赖项黑洞问题,提升开发效率。

5f4d3s2a1q的博客 1060

浅谈SRv6技术

SR技术核心思想是将报文转发路径切割为不同的分段,并在路径起始点往报文中插入分段信息,中间节点只需要按照报文里携带的分段信息转发即可。它通过SID来标识。基于IPv6转发平面的SR技术,在IPv6路由扩展头新增SRH(Segment Routing Header)扩展头,该扩展头用于存储IPv6的Segment List信息。Segment List即对段和网络节点进行有序排列得到的一条转发路径。

andre1918的博客 345

从零开始用QP框架开发STM32:事件驱动编程实战指南(附状态机设计技巧)

本文详细介绍了如何使用QP框架在STM32上实现事件驱动编程,包括状态机设计技巧和嵌入式开发实践。通过对比传统前后台系统和RTOS,展示了QP框架在资源占用、实时性和代码可维护性方面的优势,并提供了从环境搭建到高级状态机设计的完整指南。

h6i7j8的博客 1173

SRv6(BE)-原理介绍+报文解析+配置示例

SRv6原理,BE场景介绍,报文分析,SR Policy介绍

fengxingzhe008的博客 2万+

Apifox 自动化测试新增流程控制条件,复杂测试场景不再是问题

在 if 条件后的输入框填写请求接口得到的变量 viewed ,选择条件为「小于」,输入比较数值 10 ,并在 if 条件下添加「宠物下架处理」步骤。借助新增的自动化测试流程控制条件,测试人员就可以使用 Apifox 去实现更深层更多样的测试应用场景,帮助提升测试效率,减少复杂场景的测试操作。「查询新建宠物」、「修改宠物状态为已售出」和「查询宠物状态是否修改」步骤为当前在售宠物信息盘点的三个标准步骤,所以将这三个步骤合成一组。在循环中添加「查询在售宠物」和「修改宠物状态」步骤;

877

5分钟搞定!用OpenCV实现全景图像柱面展开的保姆级教程(附完整代码)

本文提供了一份使用OpenCV实现全景图像柱面展开的详细教程。通过清晰的数学原理讲解和分步代码演示,指导读者快速掌握从等距柱状投影全景图到平面展开图的核心转换方法,并涵盖性能优化、参数调整及透视视图扩展等实用技巧,适合图像处理爱好者和开发者实践。

sony5的博客 571

数据中心网络学习资料

数据中心网络学习资料整理

tushanpeipei的博客 1098

37、免驱动USB双目同步测距3D活体深度检测和RV1126结合V4L开发USB摄像头使用

基本思想:需要使用双目摄像头在rv1126上进行活体检测,然后将画面实时返回到桌面上,记录一下。第二步:刷机rv1126开发板系统和ssh远程连接,见参考目录。第一步:购买可见光的红外摄像头,见参考连接,在PC端测试可用。

sxj731533730 2620

2021年一月文章导读

Swap;listen()系统调用backlog;三层交换机;TCP;ARM Cortex-A9中断;中断;PCI驱动;页表的块映射;SRv6;percpu;DirtyCow;RMAP;watchdog;GFP_ATOMIC;eBPF ;accept();IOMMU;VFIO; PCI驱动;MSI/MSIX;TLS;CMA;进程优先级;NAPI机制;高速缓存;SVE;5G承载网;ARP 协议;虚拟文件系统;I/O多路复用;缓存池;RISC-V架构; 《Linux Swap 介绍》https://mp.we

RToax 614

用生成式AI自动生成测试用例的完整教程

本文旨在帮助测试工程师、开发人员快速掌握“生成式AI自动生成测试用例”的核心技术,覆盖从概念理解、工具选择到实战落地的全流程。无论是Web应用、API接口还是移动端功能测试,你都能找到可复用的方法。本文将按照“概念→原理→实战→避坑”的逻辑展开:先通过生活案例理解生成式AI如何生成测试用例,再拆解核心算法原理,接着用Python代码演示完整生成流程,最后分享实际应用中的优化技巧和未来趋势。生成式AI:能“创造内容”的AI模型(如ChatGPT、CodeLlama),像会写作文的智能笔。测试用例。

AIGC应用创新大全的博客 1580

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

浅谈什么是ORAN及其未来展望

这带来了众多技术和运营上的优势,无论RRU(远程射频单元)、DU(分布式单元)和CU(中央单元)是像现有的NodeB RRU/BBU实现一样共置于5GNodeB(gNB)内,还是CU被物理部署到更集中的位置。过去的RAN创新,如云RAN(cRAN),已经实现了运营效率的提升,但这些进步并未使运营商摆脱对供应商的依赖。为了兑现O-RAN降低运营支出(OPEX)和总拥有成本(TCO)的承诺,运营商必须承担起管理多供应商、解耦元素的责任,并确保它们能够协同工作,以维持用户体验质量(QoE)标准。

weixin_49761275的博客 2033

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Kubernetes(k8s)浅谈 Service 和 DNS

简单了解 k8s Service 为什么需要Service 云原生,指的就是快速扩缩容,适应动态变化等,这样的机制就会使得pod的IP不是固定的,每次重启,都会变动 由于pod对应的IP容易变动,因为pod的重启,其IP就会和原来不同,如果相关联服务,采用pod IP,那每次pod 重启就需要修改使用此服务的IP 因此 k8s Service 提供了一个稳定访问的机制,提供稳定的IP Service 的机制 Service的命名机制{service name}.{service names

叮当猫的喵i 2866

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

5G承载网络技术发展趋势

导读 随着5G建设的日渐加快,5G与云网融合共生互促,推动承载网络技术不断发展演进,云网融合必将成为行业高质量发展的必然趋势。当前云网融合面临着新需求与新挑战,5G承载网络技术在确定性保障、定制化服务和智能管控运维等技术方面也面临着新的发展趋势。只有产业各方加强协同研究,才能共同推进5G承载网络新技术研发和试点验证,助力5G+垂直行业的应用推广。 云网融合驱动5G承载网络技术发展 最新数据显示,我国已累计建设5G基站79.2万座,实现了所有地级市的5G网络覆盖,建成了全球规模最大的5G网络。

llawliet0001的专栏 3万+

Kubernetes StatefulSet

TIPS POD重新调度之后,The Pods’ ordinals, hostnames, SRV records, and A record names have not changed, but the IP addresses associated with the Pods may have changed. In the cluster used for this tutorial, ...

来啊 快活啊 1319

浅谈ROS消息与服务——搭建简单的服务端和客户端

首先自定义消息和服务类型 本文创建一个用于接收两整型数据并返回其和,消息和服务的方法可以看这个文章,个人建议使用RobWare Stduio环境,学习ros开发神器。https://www.cnblogs.com/cv-pr/p/4838177.html 客户端程序,本人学习时疑惑的地方已经加了备注,如理解有误请见谅 #include "ros/ros.h" #include ...

谁话沉香的博客 1007

DNS [学习笔记]

学习网址:1)浅谈DNS体系结构:DNS系列之一: http://yuelei.blog.51cto.com/202879/1062282)详解DNS的常用记录(上):DNS系列之二: http://yuelei.blog.51cto.com/202879/1069213)详解DNS的常用记录(下):DNS系列之三: http://yuelei.blog.51cto.com/20287

vvu 609
上一篇: BGP/MPLS IP VPN
下一篇: Flutter 快速入门3-构建
云开发者联盟
博客等级 码龄5年 546粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值