axum--代码案例

9 月 22 日
阅读 4 分钟
1k
Form(input) 这是对传入参数的一种解构方法,将 Form 提取为 Form(input),并进一步解构为 input,这里 Form 是一个提取器(extractor)。

rust解惑--文件读取

9 月 21 日
阅读 3 分钟
503
{代码...}

rust 相当于好一点的文章

9 月 20 日
阅读 1 分钟
728
clone与copy解构crossbeamfuture读取本地文件生命周期

rust解惑--并发

9 月 20 日
阅读 7 分钟
552
crossbeam 是一个并发包, 还是挺好用的。 {代码...} AtomicCell: 线程安全的可变容器。crossbeam-channel: 多生产者多消费者通道。crossbeam-deque: 工作窃取双端队列。crossbeam-queue: 无锁队列(SegQueue 和 ArrayQueue)。crossbeam-skiplist: 并发跳表。crossbeam-epoch: 基于世代的内存回收机制。有界通道(Bound...

onos-- 基本概念

9 月 20 日
阅读 9 分钟
175
PortNumber 是 ONOS 中用于表示网络设备端口的一个类。它封装了端口的标识符,并提供了一些常用的端口常量和方法。IN_PORT:表示数据包的输入端口。当数据包需要发送回它进入的端口时使用。TABLE:表示数据包需要发送到下一张流表进行处理。用于多表流水线处理。NORMAL:表示数据包需要按照交换机的正常处理路径进行处理。...

rust解惑--解构

9 月 20 日
阅读 2 分钟
786
元组解构: {代码...} 结构体解构 {代码...} 枚举解构: {代码...} 闭包中的解构模式: {代码...} 捕获引用的闭包参数中的解构使用 & 符号来模式匹配引用类型的闭包参数。 {代码...} 捕获部分数据你可以只解构某部分数据,而忽略其他部分。 {代码...} 匹配一个范围内的值: {代码...} 通配符模式(Wildcard Patterns) {...

rust嵌入式开发-- stm32f1xx-hal 基础使用03

9 月 16 日
阅读 6 分钟
1.2k
功能:输入: GPIO 可以配置为输入模式,读取外部信号的状态(例如按钮、开关或传感器)。输出: GPIO 可以配置为输出模式,向外部设备发送信号(例如点亮 LED、驱动继电器)。可编程: GPIO 的功能可以通过软件进行配置,可以根据需要设置为输入或输出,并可以选择不同的逻辑电平。中断: 一些 GPIO 引脚可以配置为中断源,...

rust嵌入式开发--cortex-m使用 02

9 月 16 日
阅读 3 分钟
677
画龙点睛:不依赖任何硬件的,可以按照硬件的规范去封装包依赖: {代码...} 代码案例: {代码...} 编写代码以配置定时器和中断服务程序来切换 GPIO 引脚状态: {代码...}

rust嵌入式开发--学习概览01

9 月 16 日
阅读 2 分钟
572
embedded-hal 的设计是为了提供一个统一的硬件抽象层(HAL)接口,使得开发者能够更加方便地与各种嵌入式硬件进行交互。它可以应用于多个场景,以下是一些主要的应用场景:

软件定义网络-- 10 BGP(边界网关协议)

9 月 10 日
阅读 3 分钟
194
BGP 消息类型及其格式:BGP(边界网关协议)消息有四种主要类型:OPEN、UPDATE、NOTIFICATION 和 KEEPALIVE。每种消息类型都有其特定的功能和格式

软件定义网络--09(sdn数据结构)

9 月 10 日
阅读 2 分钟
112
设备ID设备ID是网络中唯一标识一个网络设备(如交换机或路由器)的标识符。它通常是一个字符串或数字,如 "of:0000000000000001"。

软件定义网络--08(客户端怎么上报数据)

9 月 9 日
阅读 3 分钟
111
客户端上报数据通常是指网络设备(如交换机和路由器)向控制器发送各种状态信息和事件。这些信息和事件可以包括流量统计、端口状态、链路状态等。具体的上报机制取决于所使用的 SDN 协议和控制器实现。以下是一些常见的上报机制和方法:

软件定义网络--07(putao-sdn)

9 月 9 日
阅读 4 分钟
83
Atomix 是一个强大的分布式协调和一致性框架,独立于 ONOS 也可以使用。它提供了多种分布式数据结构和工具,可以帮助开发者实现分布式应用。以下是一个简单的指南,展示如何单独使用 Atomix 来构建分布式应用。

软件定义网络--06(OpenFlow协议)

9 月 7 日
阅读 4 分钟
372
OFPT_FEATURES_REPLY:交换机响应 OFPT_FEATURES_REQUEST,报告其能力和资源信息。格式:包含交换机的 datapath ID、缓冲区数量、流表数量、能力标志和端口信息。

软件定义网络--05(ryu +onos 案例目录)

9 月 7 日
阅读 5 分钟
149
ryu 源码的一些案例bmpstation.pycbench.py说明: 用于性能测试的应用,通常与 Cbench 工具一起使用来测试 OpenFlow 控制器的性能。conf_switch_key.py说明: 配置交换机密钥的示例应用,可能用于交换机与控制器之间的安全通信。example_switch_13.py说明: OpenFlow 1.3 版本的示例交换机应用,展示了基本的交换机功能。gu...

软件定义网络--04( 交换机)

9 月 6 日
阅读 9 分钟
249
设置 OVS 交换机和虚拟接口 {代码...} 创建网络命名空间并移动接口 {代码...} 运行 Ryu 控制器 {代码...} 测试网络连接 {代码...} 验证流表你可以使用 ovs-ofctl 工具查看 OVS 交换机的流表,验证 Ryu 控制器是否成功安装了流表项。 {代码...} 应该看到类似以下的输出,表示两个接口之间的连接正常,并且流量通过 OVS 交...

软件定义网络--03 (P4 语言, 以及rust进行交互)

9 月 6 日
阅读 6 分钟
298
数据包解析(Parsing):定义如何从数据包中提取字段。表匹配(Table Matching):定义如何根据数据包字段进行匹配和查找。数据包处理(Processing):定义如何对匹配结果进行处理和修改。数据包转发(Forwarding):定义如何将处理后的数据包转发到适当的端口。

软件定义网络--02《 linux 开源网络全栈详解》阅读记录(VXLAN等)

9 月 6 日
阅读 5 分钟
292
FlowVisor 是一种网络虚拟化平台,专为软件定义网络(SDN)环境设计。它允许多个独立的控制器同时管理同一个物理网络,而不会相互干扰。FlowVisor 的主要功能是将网络资源划分成多个逻辑视图(slices),每个视图都可以由不同的控制器独立管理。这种虚拟化使得网络资源可以更灵活地进行分配和管理。

软件定义网络--01 (OVS+ ryu + Mininet 环境准备)

9 月 6 日
阅读 3 分钟
263
创建新的网络命名空间: {代码...} 创建一对 veth 接口:(连接2个不同的命名空间) {代码...} 将 veth1 移动到命名空间 ns1,将 veth2 移动到命名空间 ns2: {代码...} 在 ns1 中配置 veth1 接口: {代码...} 在 ns2 中配置 veth2 接口: {代码...} 在 ns1 中配置路由: {代码...} 查看某个命名空间的网络接口: {代码......

ebpf--入门06(lsm 应用场景)

9 月 5 日
阅读 3 分钟
294
ebpf不仅可以用于网络数据包过滤和性能监控,还可以应用于安全领域,特别是在与 LSM(Linux Security Modules)结合使用时。通过 eBPF 和 LSM 的结合,可以实现更灵活和高效的安全策略,包括访问控制、安全审计和入侵检测等。

ebpf--入门06( kprobe, socket ,Tracepoint, perf event 使用案例)

9 月 5 日
阅读 7 分钟
328
过滤和监控 socket 层的数据包socket 类型的 eBPF 程序,返回值类型是 int,并且返回值用于决定如何处理捕获的数据包。返回 0 表示丢弃数据包,返回非零值表示接受数据包。

ebpf--入门05(流量控制)

9 月 5 日
阅读 5 分钟
331
队列管理器(qdisc)队列管理器是 tc 的核心组件,用于管理数据包的队列。不同的 qdisc 实现了不同的流量控制策略,如 FIFO、TBF(Token Bucket Filter)、HTB(Hierarchical Token Bucket)等。FIFO(First In, First Out):最简单的队列管理器,按照数据包到达的顺序进行处理。TBF(Token Bucket Filter):用于流量...

ebpf--入门04(支持的各种钩子以及同时使用多个ebpf 插件)

9 月 5 日
阅读 3 分钟
251
可以将多个 eBPF 程序加载到不同的钩子点,或者在同一个钩子点上串联多个 eBPF 程序。例如,可以在 XDP 层同时加载 URL 过滤、IPv6 过滤和 Cookie 过滤程序。场景01:

ebpf--入门03(网络应用各种场景)

9 月 5 日
阅读 15 分钟
200
bpf_cmd: {代码...} bpf_map_type {代码...} {代码...} {代码...} 如果是tcp 通信的话,XDP_DROP 了之后, 客户端会收到通知吗 ? {代码...} 过滤掉特定端口的数据包例如丢弃所有目的端口为 80(HTTP)的数据包。基于地理位置过滤, 获取 IP 地址的地理位置数据库:需要一个包含 IP 地址和对应地理位置的数据库,如 Max...

ebpf--入门02(常见的命令)

9 月 4 日
阅读 1 分钟
174
{代码...}

ebpf--入门01 (数据结构+入门案例)

9 月 4 日
阅读 4 分钟
274
获取进程信息bpf_get_current_uid_gid:获取当前进程的用户 ID 和组 ID。返回值:高 32 位是 GID,低 32 位是 UID。

pd虚拟机磁盘扩容

9 月 4 日
阅读 1 分钟
111
{代码...}

dpvs源码分析03--调度前准备工作分析

9 月 2 日
阅读 4 分钟
179
模块之一: dpvs_scheduler_init负责任务调度和负载均衡的初始化和终止。调度器管理不同处理器核心上的任务分配和执行初始化一个二维数组用来维护全局的任务: {代码...} 几种角色: {代码...} 任务类型: {代码...} 每一个任务的具体结构 {代码...} dpvs_lcore_job_register:添加一个任务到全局数据结构当中。 dpvs_lc...

dpvs源码分析02

9 月 1 日
阅读 5 分钟
240
最熟悉的还是IP协议。 找到入手点。再去延伸。src/main:系统的入口modules_init(); 这里用来加载模块,这里不能忽略。 各种模块的初始化。dpdk的主从启动?模块之一:inet (初始化和管理 IP 协议栈,处理 IPv4 和 IPv6 数据包的路由和转发) {代码...} neigh_init函数(arp相关)ARP(Address Resolution Protocol) {...

dpvs源码分析01

9 月 1 日
阅读 4 分钟
238
Packet Processing(数据包处理)描述Packet Reception:通过 DPDK 从网络接口接收数据包。Packet Parsing:解析数据包,提取 L2/L3/L4 头部信息。Packet Classification:根据数据包类型进行分类(如 TCP、UDP、ICMP 等)。Packet Dispatch:将数据包分发到相应的处理模块(如 NAT、Load Balancing 等)。