各位游戏大佬大家好,今天小编为大家分享关于gg修改器未root能用吗_gg修改器用不用root的内容,轻松修改游戏数据,赶快来一起来看看吧。
在这篇文章中,将带您了解 FRR DOCA 数据平面插件的创建过程,并向您展示如何使用全新的 DOCA flow 库卸载 PBR 规则。在上一篇文章中,您了解了使用 DPDK rte_flow 库创建 FRR 数据平面插件,以加速 BlueField 上的 PBR 规则。有关内容,请参见使用 NVIDIA BlueField DPU 和 DPDK 开发应用程序。
仍然使用 DPDK API 进行硬件初始化,但随后使用 DOCA flow API 来设置数据平面流管道。为此,必须将 DPDK (libdpdk.pc)和 DOCA flow(doca-flow.pc)共享库链接到 DOCA 数据平面插件。
root@dpu-arm:~# export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/mellanox/dpdk/lib/aarch
64-linux-gnu/pkgconfig
root@dpu-arm:~# pkg-config --libs doca-flow
-ldoca_flow
root@dpu-arm:~# pkg-config --cflags doca-flow
-DALLOW_EXPERIMENTAL_API -include rte_config.h -mcpu=cortex-a72 -DALLOW_EXPERIMENTAL_API -I/opt/mellanox/dpdk/include/dpdk -I/opt/mellanox/dpdk/include/dpdk/../aarch64-linux-gnu/dpdk -I/opt/mellanox/dpdk/include/dpdk -I/usr/include/libnl3
root@dpu-arm:~#
在 FRR makefile(configure.ac)中为 DPDK 和 DOCA flow 添加了 pkg check-and-define 宏。
if test "$enable_dp_doca" = "yes"; then
PKG_CHECK_MODULES([DOCA], [libdpdk doca-flow], [
AC_DEFINE([HAVE_DOCA], [1], [Enable DOCA backend])
DOCA=true
], [
AC_MSG_ERROR([configuration specifies --enable-dp-doca but DOCA libs were not found])
])
fi
将 DPDK 和 DOCA flow 库及 cflags 都包含在 zebra-dp-doca make 宏(zebra/subdir.am)中。
zebra_zebra_dplane_doca_la_CFLAGS = $(DOCA_CFLAGS)
zebra_zebra_dplane_doca_la_LIBADD = $(DOCA_LIBS)
使用 /etc/frr/daemons 启动 FRR 服务时,可以启用 DOCA 数据平面插件。
zebra_options= " -M dplane_doca -A 127.0.0.1"]
使用 DPDK API、rte_eal_init 和 rte_eth_dev_info_get 初始化硬件,并设置 Zebra 接口到 DPDK 端口映射。此工作流与上一节中的 DPDK 数据平面插件相同。
root@dpu-arm:~# vtysh -c "show dplane doca port"
Total ports: 6 cores: 8
Port Device IfName IfIndex sw,domain,port
0 0000:03:00.0 p0 4 0000:03:00.0,0,65535
1 0000:03:00.0 pf0hpf 6 0000:03:00.0,0,4095
2 0000:03:00.0 pf0vf0 15 0000:03:00.0,0,4096
3 0000:03:00.0 pf0vf1 16 0000:03:00.0,0,4097
4 0000:03:00.1 p1 5 0000:03:00.1,1,65535
5 0000:03:00.1 pf1hpf 7 0000:03:00.1,1,20479
root@dpu-arm:~#
为了使用 doca-flow 编写 PBR 规则,必须初始化 doca-flow 和 doca-flow-port 数据库。此初始化是在使用 rte_eal_init 初始化硬件后完成的。
使用 doca_flow_init 通过配置流和队列计数来初始化 doca-flow 库。
struct doca_flow_cfg flow_cfg;
memset(&flow_cfg, 0, sizeof(flow_cfg));
flow_cfg.total_sessions = ZD_DOCA_FLOW_MAX;
flow_cfg.queues = doca_ctx->nb_cores; doca_flow_init (&flow_cfg, &err);
当使用 DPDK 设置硬件端口时,必须使用 dpdk_port-id 将它们安装到 doca-flow-port 数据库中。
struct doca_flow_port_cfg port_cfg;
memset(&port_cfg, 0, sizeof(port_cfg));
port_cfg.port_id = dpdk_port_id;
port_cfg.type = DOCA_FLOW_PORT_DPDK_BY_ID;
snprintf(port_id_str, ZD_PORT_STR_MAX, "%u", port_cfg.port_id);
port_cfg.devargs = port_id_str;
doca_port = doca_flow_port_start (&port_cfg, &err);
通过一系列用于匹配、动作、转发和监控属性的数据结构来对 DOCA 流进行编程。
struct doca_flow_match match, match_mask;
struct doca_flow_actions actions;
struct doca_flow_fwd fwd;
struct doca_flow_monitor monitor;
这被指定为匹配和匹配掩码。匹配掩码是可选的,如果未指定,则由 doca-flow 库自动填充。
memset(&match, 0, sizeof(match));
memset(&match_mask, 0, sizeof(match_mask));
match.out_src_ip.type = DOCA_FLOW_IP4_ADDR;
match.out_src_ip.ipv4_addr = src_ip;
match_mask.out_src_ip.ipv4_addr = src_ip_mask;
match.out_dst_ip.type = DOCA_FLOW_IP4_ADDR;
match.out_dst_ip.ipv4_addr = dst_ip;
match_mask.out_src_ip.ipv4_addr = dst_ip_mask;
match.out_l4_type = ip_proto;
match.out_src_port = RTE_BE16 (l4_src_port);
match_mask.out_src_port = UINT16_MAX;
match.out_dst_port = RTE_BE16 (l4_dst_port);
match_mask.out_dst_port = UINT16_MAX;
我跳过填充 eth 或 eth-mask 等字段。
这是因为 doca-flow 库可以基于其他匹配字段 dst_ip 或 src_ip 自动将此类字段填充到 RTE_ETHER_TYPE_IPV4 或 RTE_ETHER_TYPE_IPV6。
为了路由数据包,必须将目标 MAC 地址更改为网关(leaf2) MAC ,减少 TTL ,并更改源 MAC 地址。这一点最初在上一篇文章中讨论,使用 NVIDIA BlueField DPU 和 DPDK 开发应用程序。
memset(&actions, 0, sizeof(actions)); actions.dec_ttl = true;
memcpy(actions.mod_src_mac, uplink_mac, DOCA_ETHER_ADDR_LEN);
memcpy(actions.mod_dst_mac, gw_mac, DOCA_ETHER_ADDR_LEN);
然后,输出端口设置为上行链路。
memset(&fwd, 0, sizeof(fwd));
fwd.type = DOCA_FLOW_FWD_PORT;
fwd.port_id = out_port_id;
设置流量计数器进行故障排除。
memset(&monitor, 0, sizeof(monitor)); monitor.flags |= DOCA_FLOW_MONITOR_COUNT;
流程创建分为两步:
第一步是为查找阶段创建软件模板。第二步使用模板在硬件中的流进行编程。
当您必须对许多类似的流进行编程时,管道非常有用。对于这种情况,可以设置单个匹配模板(管道),并指示在创建流条目时必须更新哪个匹配字段(例如,第 4 层目标端口)。后续的流条目只需要填充与管道(第 4 层目标端口)不同的匹配字段。
对于 PBR ,每个流模式都是唯一的,所以使用已经填充的流属性为每个 PBR 规则创建了一个单独的管道和条目。
struct doca_flow_pipe_cfg pipe_cfg;
pipe_cfg.name = "pbr";
pipe_cfg.port = in_dport->doca_port;
pipe_cfg.match = &match
pipe_cfg.match_mask = &match_mask;
pipe_cfg.actions = &actions
pipe_cfg.monitor = &monitor
pipe_cfg.is_root = true;
flow_pipe = doca_flow_create_pipe (&pipe_cfg, &fwd, NULL, &err);
flow_entry = doca_flow_pipe_add_entry (0, flow_pipe, &match, &actions, &monitor, &fwd, &err);
流管道和条目创建 API 返回管道和流指针,这些指针必须被缓存以供后续删除。
doca_flow_pipe_rm_entry( 0, flow_entry);
doca_flow_destroy_pipe (port_id, flow_pipe);
在创建流时,设置 DOCA_FLOW_MONITOR_COUNT 标志。
使用 doca_flow_query 查询流统计数据。
struct doca_flow_query query ;
// hit counters – query.total_pkts and query.total_bytes
memset(&query, 0, sizeof(query));
doca_flow_query (flow_entry, &query);
FRR-PBR 规则配置和流量生成与 dpdk-plugin 相同。流量按预期由 DPU 硬件转发,并可使用流计数器进行验证。
root@dpu-arm:~# vtysh -c "show dplane doca pbr flow"
Rules if pf0vf0
Seq 1 pri 300
SRC IP Match: 172.20.0.8/32
DST IP Match: 172.30.0.8/32
IP protocol Match: 17
DST Port Match: 53
Tableid: 10000
Action: nh: 192.168.20.250 intf: p0
Action: mac: 00:00:5e:00:01:fa
DOCA flow: installed 0xffff28005150
DOCA stats: packets 202 bytes 24644
root@dpu-arm:~#
还可以使用硬件条目进行验证:
root@dpu-arm:~# ~/mlx_steering_dump/mlx_steering_dump_parser.py -p `pidof zebra` -
f /tmp/dpdkDump
domain 0xe294002, table 0xaaab07648b10, matcher 0xffff28012c30, rule 0xffff28014040
match: outer_l3_type: 0x1, outer_ip_dst_addr: 172.30.0.8, outer_l4_type: 0x2, metadata_reg_c_0: 0x00030000, outer_l4_dport: 0x0035, outer_ip_src_addr: 172.20.0.8
action: MODIFY_HDR(hdr(dec_ip4_ttl)), rewrite index 0x0 & VPORT, num 0xffff & CTR(hits(352), bytes(42944)), index 0x806200
通过使用 doca-flow ,FRR 现在具有了第二个数据平面插件,可用于 PBR 规则的硬件加速。
在本系列文章中,您了解了如何使用 rte_flow 或 doca_flow 通过四个步骤对 DPU 网络应用程序进行硬件加速:
随着越来越多的元素卸载到 DPU 上,及源代码行( SLOC )的增加,开发过程可能会变得复杂。而这正是 DOCA 抽象库可以帮助解决的:
图 1. 融合加速器
你准备好让你的应用程序开发达到令人敬仰的高度了吗?报名参加 DOCA 提前进入开发商计划今天开始建设。
有关更多信息,请参阅以下参考资料:
以上就是关于gg修改器未root能用吗_gg修改器用不用root的全部内容,游戏大佬们学会了吗?
gg修改器保护root_gg修改器保护程序如何进行 分类:免root版 6,181人在玩 各位游戏大佬大家好,今天小编为大家分享关于gg修改器保护root_gg修改器保护程序如何进行的内容,轻松修改游戏数据,赶快来一起来看看吧。 在data的文件下还有一个data继续打开 ……
下载用gg修改器无root怎么飞行,软件下载:使用GG修改器无Root实现飞行 分类:免root版 4,822人在玩 如果你想在游戏中尽情地飞行,但是又不愿意进行Root操作,那么使用GG修改器就是一个不错的选择。GG修改器是一款常用的非Root手机游戏修改工具,可以帮助你在游戏中获得更多资源、解……
下载gg修改器教学怎么获取root,下载一个高效的 GG修改器,轻松获取 ROOT 权限 分类:免root版 5,177人在玩 如果你是 Android 系统的用户,那么你一定知道有些应用需要 ROOT 权限才能使用。然而,想要获得 ROOT 权限并不是一件容易的事情。但是,有了 GG修改器,这个问题就变得非常简单了。……
下载gg修改器闪退root_gg修改器闪退造梦西游ol 分类:免root版 5,153人在玩 各位游戏大佬大家好,今天小编为大家分享关于gg修改器闪退root_gg修改器闪退造梦西游ol的内容,轻松修改游戏数据,赶快来一起来看看吧。 索尼PS4 Remote Play破解:安卓手机都能玩 ……
下载gg免root修改器特别,下载GG免Root修改器,让你的手机无Root也能玩转! 分类:免root版 3,307人在玩 作为安卓系统用户,我们都知道要想享受更多的功能,需要进行Root操作。但是这个过程对于不懂技术的人来说十分困难,而且容易导致手机出现安全隐患。然而,现在有了GG免Root修改器,……
下载gg软件修改器免root版,下载GG软件修改器免root版,轻松修改游戏体验 分类:免root版 4,164人在玩 GG软件修改器是一款非常有用的工具,它可以帮助玩家修改游戏数据,让你在游戏中轻松获得更好的体验。而且,与其他类似工具相比,GG软件修改器免root版使用起来也非常简单方便。 无……
下载gg 修改器免root框架,下载一个神奇的软件!gg修改器 分类:免root版 4,923人在玩 在现代社会中,移动设备已经成为人们生活不可或缺的一部分。但是我们常常遇到一些限制,例如,我们无法自由地删除手机厂商预装的应用程序,或者在游戏中想要更快地获得胜利。这时,……
下载免root框架gg修改器,下载免root框架gg修改器,轻松实现游戏修改 分类:免root版 4,425人在玩 您是否曾经为游戏中的繁琐操作而感到烦恼?您是否想过要修改游戏来获得更好的体验?那么,免root框架gg修改器将是您的最佳选择。 功能强大的免root框架 免root框架gg修改器是一款……
下载gg修改器不root如何使用,软件下载:使用gg修改器不root 分类:免root版 4,921人在玩 GG修改器是一款非常知名的游戏辅助工具,它可以在不需要Root手机的情况下实现修改游戏数据和变量,为玩家带来更好的游戏体验。在过去,大多数的玩家都需要通过Root手机才能使用GG修……
下载如何root gg修改器,软件推荐:如何root gg修改器 分类:免root版 4,956人在玩 如果你是一名游戏玩家,那么你一定知道gg修改器的重要性。它可以让你轻松地修改游戏数据,比如修改金币、经验值等等。然而,为了使用gg修改器,你需要root你的安卓设备。今天我要介……
下载