iptables命令简介

news2024/11/15 15:46:04

922986fb19308399a6af70fb39253d01.gif

正文共:3456 字 22 图,预估阅读时间:3 分钟

iptables/ip6tables命令,用于在Linux内核中设置、维护和检查IPv4和IPv6数据包过滤规则的表,从而实现IPv4/IPv6数据包过滤和NAT的管理工具。它可以定义多个不同的表,每个表中包含多个预定义的链,也可能包含用户自定义的链。每个链都是一个规则列表,用来匹配一组数据包,每个规则都指定如何处理匹配到的数据包,也被称为“目标”,它可能是跳转到同一个表中用户自定义的链。

本文基于iptables 1.4.21进行介绍。

f77a6db305446a50f4aa92949abb1485.png

匹配规则

e998a720ba244ffab9c9c5764473ac53.png

防火墙规则指定数据包和目标的标准。如果数据包不匹配,则检查链中的下一条规则;如果匹配,则下一个规则由目标的值指定,该值可以是用户自定义的链的名称、iptables扩展中描述的目标之一,或者特殊值ACCEPT、DROP或RETURN之一。

ACCEPT(接受)意味着让数据包通过,DROP(丢弃)的意思是把数据包丢弃,RETURN(返回)表示停止遍历此链,并在上一个(调用)链中的下一个规则处继续。如果到达了预定义链的末端,或者与目标为RETURN的预定义链中的规则匹配,则链策略指定的目标将决定数据包的命运。

91f8d65b97ce82be4d99e9abf08258b6.png

命令简介

iptables [-t table] {-A|-C|-D} chain rule-specification
ip6tables [-t table] {-A|-C|-D} chain rule-specification
iptables [-t table] -I chain [rulenum] rule-specification
iptables [-t table] -R chain rulenum rule-specification
iptables [-t table] -D chain rulenum
iptables [-t table] -S [chain [rulenum]]
iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]
iptables [-t table] -N chain
iptables [-t table] -X [chain]
iptables [-t table] -P chain target
iptables [-t table] -E old-chain-name new-chain-name
rule-specification = [matches...] [target]
match = -m matchname [per-match-options]
target = -j targetname [per-target-options]

ad1bc49aef00c8da6af287421741b9cf.png

07c780b0f60b7e896cb9b73074bcd9ed.png

目前有五个独立的表(哪些表随时存在,取决于内核配置选项和存在哪些模块)。

-t, --table table

此选项指定命令应操作的数据包匹配表。如果内核配置了自动模块加载,则会尝试为该表加载适当的模块(如果该表尚未存在)。

各表如下:

00355740ef87a9e66926274746639235.png

filter

filter是默认表(如果未传递-t选项)。它包含预定义链INPUT(用于发往本地套接字的数据包)、FORWARD(用于通过设备路由的数据包)以及OUTPUT(用于本地生成的数据包)。

2838ffc9f673f8d4e2137be32ddbb82c.png

c122a6829fd2fb46fdcc0e3a365dd09f.png

nat

当遇到创建新连接的数据包时,将查阅此表。它由三个内置组件组成:PREROUTING(用于在数据包进入时立即更改数据包)、OUTPUT(用于在路由之前更改本地生成的数据包)和POSTROUTING(用于在即将离开时更改数据包)。IPv6 NAT支持从内核3.7开始提供。

3aa9afa09887003984f846776b4fe6f2.png

5bc71fa9ff158fb64951268546287916.png

mangle

此表用于专用数据包更改。在内核2.4.17之前,它有两个预定义链:PREROUTING(用于在路由之前更改传入数据包)和OUTPUT(用于在路由之前更改本地生成的数据包)。自内核2.4.18以来,还支持其他三个预定义链:INPUT(用于进入设备本身的数据包)、FORWARD(用于更改通过设备路由的数据包)和POSTROUTING(用于在数据包即将出去时更改数据包)。

d5d14365eb01193ec9ed7372789ef79a.png

b7871addfa32c93773b0b3f64f134812.png

raw

此表主要用于结合NOTRACK目标配置连接跟踪豁免。它以较高的优先级在netfilter挂钩处注册,因此在ip_contrack或任何其他ip表之前调用。它提供以下预定义链:PREROUTING(用于通过任何网络接口到达的数据包)、OUTPUT(用于本地进程生成的数据包。

04f0cff29da8b3f888db3ef932ee5984.png

6891a9484eb6a45914d93c44794b4c9f.png

security

此表用于强制访问控制(Mandatory Access Control,MAC)网络规则,如SECMARK和CONNSECMARK目标启用的规则。强制访问控制由Linux安全模块(如SELinux)实现。security表在filter表之后调用,允许filter表中的所有任意访问控制(Discretionary Access Control,DAC)规则在MAC规则之前生效。该表提供了以下预定义链:INPUT(用于进入设备本身的数据包)、OUTPUT(用于在路由之前更改本地生成的数据包)以及FORWARD(用于更改通过设备路由的数据包)。

1113af6eda5e6eb6c38f1cffc29f3d8a.png

eacf1cc088881a1a4a4dadbf2513886a.png

操作选项

91043ac3f17781ff17c7c178bab8ce4e.png

iptables和ip6tables识别的选项可以分为几个不同的组。

fdf0450028891e0ae41042877918a173.png

命令

这些选项指定要执行的所需操作。除非下面另有说明,否则只能在命令行中指定其中一个。对于命令和选项名称的长版本,您只需要使用足够的字母,以确保iptables可以将其与所有其他选项区分开来。

-A, --append chain rule-specification

将一个或多个规则附加到选定链的末端。当源和/或目标名称解析为多个地址时,将为每个可能的地址组合添加一个规则。

-C, --check chain rule-specification

检查所选链中是否存在与规范匹配的规则。该命令使用与-D相同的逻辑来查找匹配条目,但不会更改现有的iptables配置,并使用其退出代码来指示成功或失败。

-D, --delete chain rule-specification
-D, --delete chain rulenum

从选定链中删除一个或多个规则。此命令有两个版本:规则可以指定为链中的数字(第一个规则从1开始)或要匹配的规则。

-I, --insert chain [rulenum] rule-specification

在选定的链中插入一个或多个规则作为给定的规则编号。因此,如果规则号为1,则在链的开头插入一条或多条规则。如果未指定规则编号,则使用默认值。

-R, --replace chain rulenum rule-specification

替换选定链中的规则。如果源和/或目标名称解析为多个地址,则该命令将失败。规则编号从1开始。

-L, --list [chain]

列出选定链中的所有规则。如果未选择任何链,则会列出所有链。

bf423ae05a1a6bab2bc1912363d50a6c.png

与其他所有iptables命令一样,它适用于指定的表(默认是filter),如果要查看NAT规则表,则使用命令iptables -t nat -n -L。

56d666393a8c76989978e8926ace8320.png

请注意,它通常与-n选项一起使用,以避免长时间反向DNS查找。指定-Z(零)选项也是合法的,在这种情况下,链将自动列出并归零。确切的输出受其他给定参数的影响。确切的规则将被抑制,除非使用iptables -L -v命令。

227c0b709c3f00cdff3b6188472567f4.png

-S, --list-rules [chain]

打印选定链中的所有规则。如果没有选择链,则所有链都会像iptables-save一样打印。与其他所有iptables命令一样,它适用于指定的表(默认为filter)。

2a496541bad242197c5eebcaa4638e35.png

-F, --flush [chain]

刷新选定的链(如果未给出任何链,则表中的所有链)。这相当于逐个删除所有规则。

dac1448d9c12e351f81d93956de4ee49.png

-Z, --zero [chain [rulenum]]

将所有链中的数据包和字节计数器归零,或者只将给定链归零,或只将给定规则归零。也可以指定-L,--list(list)选项,以便在计数器被清除之前立即查看计数器。

234d86d99fd27b7c1ced049bc3b350fe.png

-N, --new-chain chain

按给定名称创建新的用户自定义链。必须没有该名称的目标。

1946aa03120036a802da331abdaa8394.png

-X, --delete-chain [chain]

删除指定的可选用户自定义链。不能有对链的引用。如果存在,则必须删除或替换引用规则,然后才能删除链。链必须为空,即不包含任何规则。如果没有给出参数,它将尝试删除表中的每个非预定义链。

7f272575cb5e8502e7fffb71ad7c05fb.png

-P, --policy chain target

将链的策略设置为给定的目标。只有内置(非用户自定义)链才能有策略,预定义链和用户自定义链都不能是策略目标。

-E, --rename-chain old-chain new-chain

将用户指定的链重命名为用户提供的名称。这是装饰性的,对表的结构没有影响。

38345cd9e54bfbeb31b02700ac8c7bbf.png

-h Help

给出命令语法的描述(目前非常简短)。

ecf106837bb65727c4e8b374e35dc633.png

1ec0b8daebabdf68731669e034c9175c.png

参数

dc1392ec69f655fdd2e9853d2090c037.png

以下参数构成了规则规范(在add、delete、insert、replace和append命令中使用)。

-4, --ipv4

此选项在iptables和iptables-restore中无效。如果使用-4选项的规则与ip6tables restore一起插入(并且仅与),它将被默默忽略。任何其他使用都会引发错误。

此选项允许将IPv4和IPv6规则放在一个规则文件中,用于iptables-restore和ip6tables restore。

-6, --ipv6

如果使用-6选项的规则与iptables-restore(并且仅与iptables-restore)一起插入,它将被默默忽略。任何其他使用都会引发错误。此选项允许将IPv4和IPv6规则放在一个规则文件中,用于iptables-restore还原和ip6tables-restore。此选项在ip6tables和ip6tables-restore中无效。

[!] -p, --protocol protocol

要检查的规则或数据包的协议。指定的协议可以是tcp、udp、udplite、icmp、icmpv6、esp、ah、sctp、mh或特殊关键字“all”中的一个,也可以是表示这些协议之一或不同协议的数值。还允许使用/etc/protocols中的协议名称。协议前面带“!”参数反转测试。数字0等于所有。

“all”将与所有协议匹配,如果省略此选项,则默认为“all”。请注意,在ip6tables中,不允许使用除esp之外的IPv6扩展头。esp和ipv6-nonext可以与内核2.6.11或更高版本一起使用。数字0等于全部,这意味着您不能直接测试协议字段的值0。要在HBH头上匹配,即使是最后一个,也不能使用-p 0,但始终需要-m HBH。

c2381ed28ee78cdb2c7ca4566eaf6dbe.png

[!] -s, --source address[/mask][,...]

指定源地址。地址可以是网络名称、主机名、网络IP地址(带/mask)或普通IP地址。在规则提交给内核之前,主机名将只解析一次。请注意,使用远程查询(如DNS)指定要解析的任何名称是一个非常糟糕的主意。掩码可以是ipv4网络掩码(用于iptables),也可以是掩码位数(在网络掩码的左侧指定1的数目)。因此,iptables掩码24等于255.255.255.0。指定地址之前的“!”参数表示反转地址。标志--src是此选项的别名。可以指定多个地址,但这将扩展到多个规则(使用-A添加时),或将导致多个规则被删除(使用-D)。

7ecb706946a907efd1caf938df745da5.png

[!] -d, --destination address[/mask][,...]

指定目的地址。有关语法的详细描述,请参见-s(source)标志的描述。标志--dst是此选项的别名。

ca3937008312bda29d86101a7d65eec6.png

-m, --match match

指定要使用的匹配项,即测试特定属性的扩展模块。匹配集构成了调用目标的条件。匹配将按照命令行上的指定先求值后求值,并以短路方式工作,即如果一个扩展产生错误,求值将停止。

-j, --jump target

这指定了规则的目标;例如,如果数据包与之匹配,该怎么办。目标可以是一个用户自定义的链(除了此规则所在的链)、一个立即决定数据包命运的特殊内置目标或一个扩展(参见下面的扩展)。如果在规则中省略了这个选项(并且没有使用-g),那么匹配规则将不会影响数据包的转发,但是规则上的计数器将增加。

-g, --goto chain

这指定处理应在用户指定的链中继续。与--jump选项不同,返回不会在这个链中继续处理,而是在通过--jump调用我们的链中继续。

[!] -i, --in-interface name

接收数据包的接口名称(仅适用于进入INPUT、FORWARD和PREROUTING链的数据包)。当“!”参数在接口名称之前使用,意义颠倒。如果接口名称以“+”结尾,则以该名称开头的任何接口都将匹配。如果省略此选项,则任何接口名称都将匹配。

0d8f428ad105f54b14afd2a390baecdd.png

[!] -o, --out-interface name

将通过其发送数据包的接口的名称(对于进入FORWARD、OUTPUT和POSTROUTING链的数据包)。当“!”参数在接口名称之前使用,意义颠倒。如果接口名称以“+”结尾,则以该名称开头的任何接口都将匹配。如果省略此选项,则任何接口名称都将匹配。

42cb35dd8c6c98ff7175162c4269bc71.png

[!] -f, --fragment

这意味着该规则只涉及分段数据包的第二个和更多的IPv4片段。由于无法告知此类数据包(或ICMP类型)的源端口或目的端口,因此此类数据包将与指定它们的任何规则不匹配。当“!”参数位于“-f”标志之前,则该规则将仅匹配头部片段或未分段的数据包。此选项特定于IPv4,在ip6tables中不可用。

-c, --set-counters packets bytes

这使管理员能够初始化规则的数据包和字节计数器(在INSERT、APPEND和REPLACE操作期间)。

558ae36a4d67a8c326b41aaf947a7bd8.png

其它选项

可以指定以下附加选项:

-v, --verbose

详细输出。此选项使list命令显示接口名称、规则选项(如果有)和TOS掩码。还列出了数据包和字节计数器,后缀“K”、“M”或“G”分别表示1000、1000000和1000000000乘数(但请参见-x标志以更改此情况)。对于附加、插入、删除和替换,这将导致打印规则的详细信息。可以多次指定-v参数以可能发出更详细的调试语句。

7e5ddcf2c16897ff2c8281f3369dab15.png

-w, --wait [seconds]

等待xtables锁定。为了防止程序的多个实例同时运行,将尝试在启动时获得独占锁。默认情况下,如果无法获得锁,程序将退出。此选项将使程序等待(无限期或可选秒),直到可以获得独占锁。

-W, --wait-interval microseconds

每次迭代的等待间隔。当运行对延迟敏感的应用程序时,等待xtables锁延长持续时间可能是不可接受的。此选项将使每次迭代占用指定的时间。默认间隔为1秒。此选项仅适用于-w。

-n, --numeric

数字输出。IP地址和端口号将以数字格式打印。默认情况下,程序将尝试将它们显示为主机名、网络名或服务(只要适用)。

-x, --exact

展开数字。显示数据包和字节计数器的精确值,而不是仅以K(1000的倍数)、M(1000K的倍数)或G(1000M的倍数)表示的四舍五入数。此选项仅与-L命令相关。

--line-numbers

列出规则时,将行号添加到每个规则的开头,对应于该规则在链中的位置。

b98094a87f64ee5d461838188293a404.png

--modprobe=command

在链中添加或插入规则时,使用命令加载任何必要的模块(目标、匹配扩展等)。

35c3049e63edbf352124a13fe44aba78.png

匹配和目标模块扩展

iptables可以使用扩展包匹配和目标模块,请参考iptables-extensions手册页中提供的列表信息。

5160f91cd8082411177fe9c5daaf5889.png

诊断信息

将各种错误消息打印为标准错误。退出代码为0,表示正常工作。似乎由无效或滥用的命令行参数引起的错误导致退出代码为2,其他错误导致退出码为1。

ef195e1fecef849bcab07afcec01149e.png

与IPCHAINS的兼容性

这个iptables与Rusty Russell的ipchains非常相似。主要的区别是,链INPUT和OUTPUT仅针对分别进入本地主机和来自本地主机的数据包进行遍历。因此,每个数据包只通过三个链中的一个(环回口流量除外,环回流量同时涉及INPUT和OUTPUT链);之前,转发的分组将通过所有三个。

另一个主要区别是-i表示输入接口,-o表示输出接口,两者都可用于进入FORWARD链的数据包。

各种形式的NAT已被分离出来;当使用默认的“filter”表时,iptables是一个纯数据包过滤器,带有可选的扩展模块。这应该可以简化以前对IP伪装和数据包过滤组合的混淆。因此,以下选项的处理方式不同:

-j MASQ
-M -S
-M -L

4a802f280d09291f139cfe159deaaec2.png

相关命令

0ad93308987f07ee7a88b1de8eb1a9a3.png

iptables-apply、iptables-save、iptables-restore、iptables-extensions。

packet-filtering-HOWTO详细说明了iptables在数据包过滤中的使用,NAT-HOWTO详细说明了NAT,netfilter-extensions-HOWTO详细介绍了不在标准发行版中的扩展,而netfilter-hacking-HOWTO详细描述了netfilter内部。可以参阅:http://www.netfilter.org/。

45566619e4ef24d57d081d9dbc4e6d94.gif

长按二维码
关注我们吧

3601aaac49575f6ee6e8a3209d466da4.jpeg

317091a028afb7c84563199945ded488.png

Wireguard配置文件详解

Wireshark如何解密IPSec报文?

听说你想收集HCL的设备版本?好吧,成全你!

Ubuntu 18.04开启远程桌面连接

还在到处找Win11镜像?自己动手,丰衣足食!

某国产化台式机产品介绍及维护(上)

某国产化台式机产品介绍及维护(下)

strongSwan之ipsec.secrets配置手册

基于TCP的DNS传输:实施要求

什么是NaaS?哪里冒出来的网络即服务?

基于TCP的DNS传输:操作要求

互联网密钥交换 (IKEv2) 协议中的多重认证交换

配置Wireguard的几个进阶玩法

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

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

相关文章

CH341A/B USB转USART/I2C/SPI介绍

CH341A/B USB转USART/I2C/SPI介绍 📍CH341官方文档:https://www.wch.cn/downloads/CH341DS2_PDF.html CH341A/B是一个USB总线的转接芯片,通过USB总线提供异步串口、打印口、并口以及常用的2线和4线等同步串行接口。 🍁芯片封装&a…

基于Springboot的社区疫情返乡管控系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的社区疫情返乡管控系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系…

uni-app为图片添加自定义水印(升级版)

前置内容 uni-app为图片添加自定义水印&#xff08;解决生成图片不全问题&#xff09; UI 升级 现在水印样式变成这样了&#xff1a; 代码 <template><canvas v-if"waterMarkParams.display" canvas-id"waterMarkCanvas" :style"canv…

【001_IoT/物联网通信协议基础: HTTP、Websocket、MQTT、AMQP、COAP、LWM2M一文搞懂】

001_IoT/物联网通信协议基础: HTTP、Websocket、MQTT、AMQP、COAP、LWM2M一文搞懂 文章目录 001_IoT/物联网通信协议基础: HTTP、Websocket、MQTT、AMQP、COAP、LWM2M一文搞懂创作背景通信模型ISO/OSI七层模型 和 TCP/IP四层模型网络通信数据包格式&#xff08;Ethernet II&…

Swift-20-基础数据类型

数据定义 语法规则 先来看下下面的代码 import Cocoavar num1 "four" //a var num2: String "four" //b var num3 4 //c var num4: Int 4 //d上面的几行代码都能正常运行&#xff0c;其中a和b行等价&#xff0c;c和d行等价。区另就在于是否声…

docker-compose 安装MongoDB续:创建用户及赋权

文章目录 1. 问题描述2. 分析2.1 admin2.2 config2.3 local 3. 如何连接3.解决 1. 问题描述 在这一篇使用docker-compose创建MongoDB环境的笔记里&#xff0c;我们创建了数据库&#xff0c;但是似乎没有办法使用如Robo 3T这样的工具去连接数据库。连接的时候会返回这样的错误&…

关系抽取与属性补全

文章目录 实体关系抽取的任务定义机器学习框架属性补全 实体关系抽取的任务定义 从文本中抽取出两个或者多个实体之间的语义关系&#xff1b;从文本获取知识图谱三元组的主要技术手段&#xff0c;通常被用于知识图谱的补全。美丽的西湖坐落于浙江省的省会城市杭州的西南面。&am…

IDEA中SVN 的使用

文章目录 前言一、svn安装二、IDEA集成SVN总结 前言 svn可以老牌的代码仓库了 说实话svn还是和git无法相比的,毕竟git有本地仓库的概念,可以很好的处理冲突,然而svn是没有本地仓库的概念的,所以只能拉取别人的代码,然后处理冲突后,才能提交代码; 由于最近的工作换成了用svn仓…

el-menu 有一级二级三级菜单

效果如下 菜单代码如下 <el-menu:default-active"menuDefaultActive"class"el-menu-box":text-color"menuTextColor":active-text-color"menuActiveTextColor":unique-opened"true"><!-- 一级菜单 --><tem…

线程池的核心参数有哪些???

线程池的核心参数包括以下七个&#xff1a; corePoolSize&#xff1a; 这是线程池中的核心线程数&#xff0c;即池中会保留的最少线程数。当提交任务时&#xff0c;如果当前线程数小于核心线程数&#xff0c;线程池会创建新的线程来执行任务。如果当前线程数等于或大于核心线程…

Docker - 简介

原文地址&#xff0c;使用效果更佳&#xff01; Docker - 简介 | CoderMast编程桅杆https://www.codermast.com/dev-tools/docker/docker-introduce.html Docker是什么&#xff1f; Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从 Apache2.0 协议开源。 D…

css-Echarts图表初始显示异常非完全显示

1.echarts图表初始加载异常 2.问题原因 初次加载时&#xff0c;由于外层使用%比 echarts dom元素没有完全加载完成&#xff0c;canvas绘画继承本身宽高&#xff0c;造成Echarts图表初始显示异常非完全显示。 3.使用echarts图表可参考以下代码&#xff08;实现一定的自适应&am…

stm32开发之threadx+emwin+awizard使用记录

前言 图形化开发界面选择(awizard)emwin使用的版本是6.10芯片采用的是stm32f407zgt6这里使用的开发板是普中麒麟f4系列的 lcd驱动文件&#xff08;基于提供的源码修改&#xff09; 1、这里是剔除了很多兼容其他显示屏部分的代码&#xff0c;只保留具体信号的代码,把一些全局…

Java实现AVL树

AVI树 如果一颗二叉搜索树不平衡,那么搜索效率会受影响 二叉搜索树如果不是这种不平衡的情况,时间复杂度可以达到O(logn) 但是像图中的这种不平衡情况时间复杂度为O(n),那么如何解决呢? 可以通过旋转解决 旋转之后并不会破坏二叉搜索树的特性 判断是否平衡有一个规则:如果一…

如何进行景气分析

景气分析是一种短期经济分析方法。主要分析短时间内&#xff08;一般指一年内&#xff0c; 或几个月内&#xff09;经济运行的态势&#xff0c;包括当前的状态和未来的趋势。景气分析可以为宏观经济政策提供重要的决策与参考信息&#xff0c;例如根据经济运行的方向、强弱可建议…

【AI开发:音频】二、GPT-SoVITS使用方法和过程中出现的问题(GPU版)

1.FileNotFoundError: [Errno 2] No such file or directory: logs/guanshenxxx/2-name2text-0.txt 这个问题中包含了两个&#xff1a; 第一个&#xff1a;No module named pyopenjtalk 我的电脑出现的就是这个 解决&#xff1a;pip install pyopenjtalk 第二个&#xff1a…

数据结构练习-数据结构概述

----------------------------------------------------------------------------------------------------------------------------- 1. 在数据结构中&#xff0c;从逻辑上可以把数据结构分成( )。 A. 动态结构和静态结构 B. 紧凑结构和非紧凑结构 C. 线性结…

初识ansible变量及实例配置

目录 1、为什么要使用变量 2、变量分类 3、 变量详解 3.1 vars,vars_files , group_vars 3.1 .1 vars 剧本中定义变量 3.1.2 vars_file 将变量存放到一个文件中&#xff0c;并在剧本中引用 3.1.3 group_vars 创建一个变量文件给某个组使用 实例1-根据不同的主机…

CGLIB动态代理

文章目录 前言概要SpringBoot中使用小结 前言 当我们需要在Java中实现动态代理时&#xff0c;通常会考虑使用 JDK原生动态代理 或者 CGLIB动态代理。 我这里说一下CGLIB动态代理&#xff0c;并给出一个例子。 概要 CGLIB&#xff08;Code Generation Library&#xff09;是一…

无损以太网的ROCE革命,队列的缓存空间优化分析

ROCE无损以太网&#xff0c;队列的缓存空间优化 多级缓存架构优化芯片性能&#xff1a;* 缓存空间细分为芯片级、端口级和队列级&#xff0c;实现精细管理。* 无损队列引入Headroom缓存空间&#xff0c;确保数据完整性。 在芯片层面&#xff1a; 静态缓存为端口提供保证的缓存空…