<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>likizju</title>
        <link>https://paragraph.com/@likizju</link>
        <description>undefined</description>
        <lastBuildDate>Sun, 19 Jul 2026 19:59:10 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>likizju</title>
            <url>https://storage.googleapis.com/papyrus_images/895b0c5b54d423909f57b8a544f0e1fa03df46a6f283ba6775c6aa72d55cb990.jpg</url>
            <link>https://paragraph.com/@likizju</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[我的植物朋友作文300字——梅花]]></title>
            <link>https://paragraph.com/@likizju/300</link>
            <guid>g3blvKrXc2fwzDfmHXII</guid>
            <pubDate>Sun, 19 Feb 2023 11:49:05 GMT</pubDate>
            <description><![CDATA[冬天来了，我的植物朋友——梅花，在寒风中开放了。 梅花跟桃花长得差不多。它们的颜色一样，形状也差不多。但是，气味、花瓣的层次数，花蕊的浓度不一样。桃花的浓一点，梅花的淡一点。所以，它们还是有区别的。 梅花已经开了不少了。有的花瓣儿已经全部展开；有的只展开了两三片花瓣；有的还是花骨朵儿，很像害羞的小姑娘。梅花花瓣的层数不一。有的花瓣层数有两层；有的有三层；有的有四层。不过，花瓣是三层的居多，就像一条粉红色的，美丽的公主裙。花瓣儿的后面，有一种深粉色的花瓣儿，可真像公主裙的装饰品。 走近梅花，就可以闻到一阵又一阵的清香扑鼻而来。真是“遥知不是雪，为有暗香来”啊！ 我的植物朋友——梅花，我可真喜欢你那“凌寒独自开”的精神啊！]]></description>
            <content:encoded><![CDATA[<p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://www.ppzuowen.com/s/siji/dongtian/">冬天</a>来了，我的<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://www.ppzuowen.com/s/zhiwuzuowen/">植物</a><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://www.ppzuowen.com/s/xieren/pengyou/">朋友</a>——<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://www.ppzuowen.com/s/zhiwuzuowen/meihua/">梅花</a>，在寒风中开放了。</p><p>梅花跟<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://www.ppzuowen.com/s/zhiwuzuowen/taohua/">桃花</a>长得差不多。它们的颜色一样，形状也差不多。但是，气味、花瓣的层次数，花蕊的浓度不一样。<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://www.ppzuowen.com/s/zhiwuzuowen/taohua/">桃花</a>的浓一点，梅花的淡一点。所以，它们还是有区别的。</p><p>梅花已经开了不少了。有的花瓣儿已经全部展开；有的只展开了两三片花瓣；有的还是花骨朵儿，很像害羞的小姑娘。梅花花瓣的层数不一。有的花瓣层数有两层；有的有三层；有的有四层。不过，花瓣是三层的居多，就像一条粉红色的，美丽的公主裙。花瓣儿的后面，有一种深粉色的花瓣儿，可真像公主裙的装饰品。 </p><p>走近梅花，就可以闻到一阵又一阵的清香扑鼻而来。真是“遥知不是雪，为有暗香来”啊！ </p><p>我的植物朋友——梅花，我可真喜欢你那“凌寒独自开”的精神啊！</p>]]></content:encoded>
            <author>likizju@newsletter.paragraph.com (likizju)</author>
        </item>
        <item>
            <title><![CDATA[UCloud数据中心网络快速开局实践]]></title>
            <link>https://paragraph.com/@likizju/ucloud</link>
            <guid>oW6A330yVdGI7kmKhVy7</guid>
            <pubDate>Thu, 26 May 2022 01:27:03 GMT</pubDate>
            <description><![CDATA[从零建设一个可容纳万台服务器的数据中心网络需要多久 ?这更像是一个“要把大象装冰箱, 总共分几步 ?”的问题。 传统方式从零开始建设一个数据中心, 网络从建设到交付的过程像是“开荒”，繁琐的网络设备命令依赖工程师人工编写，费时又费力，并且交期与质量均无法得到保障。 为此我们设计了一款数据中心网络建设系统 —— Big Bang。将数据中心网络开局这一任务切分为 “架构规划” - “资源分配” - “配置生成及下发“ 三个步骤。每一步之间耦合松散而内部又高度内聚，实现低成本适配不同版本架构迭代、不同规模机房的小时级快速部署目标。 Big Bang 上线后支持了优刻得自建的乌兰察布大规模数据中心网络建设开局。至今已完成海内外多个机房的快速、高质量交付。 The Big Bang Theory : 宇宙是由一个致密炽热的奇点于一次大爆炸后膨胀形成的。上一代建设系统的不足在 Big Bang 之前 UCloud 物理网络团队已经在运营一代数据中心建设系统, 随着业务和架构的演进, 上一代系统的一些缺点逐渐暴露出来 : 对多平面的 Fabric 数据中心网络支持不够灵活； 架构规则描述不灵...]]></description>
            <content:encoded><![CDATA[<p>从零建设一个可容纳万台服务器的数据中心网络需要多久 ?这更像是一个“要把大象装冰箱, 总共分几步 ?”的问题。</p><p>传统方式从零开始建设一个数据中心, 网络从建设到交付的过程像是“开荒”，繁琐的网络设备命令依赖工程师人工编写，费时又费力，并且交期与质量均无法得到保障。</p><p>为此我们设计了一款数据中心网络建设系统 —— Big Bang。将数据中心网络开局这一任务切分为 “架构规划” - “资源分配” - “配置生成及下发“ 三个步骤。每一步之间耦合松散而内部又高度内聚，实现低成本适配不同版本架构迭代、不同规模机房的小时级快速部署目标。</p><p>Big Bang 上线后支持了优刻得自建的乌兰察布大规模数据中心网络建设开局。至今已完成海内外多个机房的快速、高质量交付。</p><p>The Big Bang Theory : 宇宙是由一个致密炽热的奇点于一次大爆炸后膨胀形成的。</p><ol><li><p>上一代建设系统的不足</p></li></ol><p>在 Big Bang 之前 UCloud 物理网络团队已经在运营一代数据中心建设系统, 随着业务和架构的演进, 上一代系统的一些缺点逐渐暴露出来 :</p><p>对多平面的 Fabric 数据中心网络支持不够灵活； 架构规则描述不灵活, 网络设计版本迭代后，需要再次投入大量研发人力适配，且存在需要研发理解网络业务设计的强耦合问题； 原子命令库方式组织的配置模板不直观，人工难以预测其生成的配置，导致维护成本过高，且修改后无测试，容易出错； 在建设海外机房时，由于网络延迟过高，基于编排器的配置下发方式出现了失败率快速攀升的问题。</p><p>通过上述问题的分析不难得出推论, 我们需要这样一款建设系统 :</p><p>灵活适配多版本、多形态、多平面的数据中心网络； 网络架构迭代不应需研发同学介入； 可以直观的修改配置模板，修改后可以自动化的低成本的进行测试； 低网络依赖，弱网条件下依然能好用。</p><ol><li><p>Big Bang 设计概要</p></li></ol><p>2.1 人肉运维之痛</p><p>在谈设计之前, 我们先来谈一下人工建设一个数据中心会遇到哪些挑战 ?</p><p>考察一个简单的两级 CLOS 架构 : 4 个 Spine, 32 个 Leaf 共 36 台设备构成一个业务专区, 这在 UCloud 数据中心中是很常见的 POD 规模。</p><p>建设这样一个网络, 首先需要给出设备接线表交由现场的同学进行布线。这张接线表要表达 “spine01.p1 接 leaf01.p49, 使用 QSFP28 100G 线缆” 这样的信息. 对于这个 POD 便产生了 4 * 32 = 128 个互联关系。</p><p>给出布线规则后, 我们再来考虑 IP 分配的问题。</p><p>图中每一条线均需要一对互联地址, 除此之外设备还需要分配管理地址、业务地址等。一个 POD 便需要 128 个互联网段、32 个业务网段、几十个管理地址。这些地址都需要工程师到 IP 管理系统中占用, 并与设备 ( 互联关系 ) 一一对应.</p><p>可以看到, 在 CLOS 架构下进行的互联计算、资源分配工作非常繁复, 并且数量会随着网元数量、接口数量的增加而急剧增加。</p><p>除此之外，还有一些要求会使这些挑战变得更加复杂：部分角色指定接线规则，如何分配端口？跨机房设备的线缆 / 模块如何选取对应物料？</p><p>Image 图1:数据中心网络示例</p><p>接下来考察实际的配置。</p><p>有些配置是所有角色共有的, 如生成树配置、AAA 配置等. 而有些配置又会根据设备角色的不同而有所区分, 如 DSCP 标记、三层接口等。</p><p>当引入了多设备厂商, 情况会变得更复杂：</p><p>接口名是 100GE 还是 Hundred Gigabit Ethernet ? slot / interface / index 是从 0 开始还是 1 开始 ? 去使能某个功能的关键字是用 undo 还是 no ?</p><p>建设团队的工程师会维护多角色、多厂商配置模版文件, 一般以 Excel / 文本文件的形式呈现。对某一特定设备开局时需要跳转多个文件, 进行不断的 copy / paste 来完成一个设备的配置编写。</p><p>如此, 完成一个几百台网络设备的数据中心网络开局, 可能需要 1 - 2 个人 / 周投入, 这显然不能满足业务快速扩展的需求。</p><p>2.2 Automate or die</p><p>不难发现, 整个开局过程中有大量繁复的计算和操作工作：</p><p>繁杂的接线分配、IP 地址分配工作 重复的配置文件的翻译工作 服务于架构角色的配置区分 人工进行这些繁复的工作，效率很低且容易出错, 而这正是程序擅长的。</p><p>2.3 系统分层设计</p><p>回到之前的问题 : 建设一个新的数据中心网络总共分几步 ?对整个建设过程进行考察和思索, 将过程抽象为如下三个过程, 对应大爆炸系统的三个组件 :</p><ol><li><p>规划 - 架构规划库</p></li></ol><p>类似《GB 50017-2017 钢结构设计标准》, 这是一个抽象的实施规范，如 UCloud 可支撑单可用区 320,000 服务器的数据中心网络系统设计。</p><ol><li><p>分配 - 资源分配器</p></li></ol><p>类似有建设需求后, 拿到了一块地开始计算需要哪些物料, 分配各项资源，并抽象生成连接图。</p><ol><li><p>建设 - 配置生成及刷入</p></li></ol><p>类似拿着图纸进行施工,直到把楼盖好交付，生成出所有设备的配置文件, 刷入设备中。</p><p>这样做的好处 :</p><p>耦合松散, 每一个模块只完成一个或几个功能, 彼此通过结构化的信息进行流转, 彼此屏蔽了内部细节； 当其中的一小部分发生变化时，只需要修改发生变化的部分。如机房现场需要更换接线表的格式，只需要发布一个新版的资源分配器。上下游不需要感知资源分配器发生变化。</p><ol><li><p>架构规划库</p></li></ol><p>如果需要程序来计算需要的设备、互联图、IP 段等信息，首先需要考虑的是:“应该如何抽象的表达一个架构？”</p><p>先退一步，我们应该如何描述一个机房的拓扑？</p><p>这要求我们描述一个图结构 :</p><p>点：有哪些设备 线：设备物理上是怎么互联的 点及线的属性：IP</p><p>基于此，我们再进行一次抽象，把具体每个设备的抽象为角色，把具体的 IP 变为可分配的 IP 段。然后得到我们需要描述的内容：</p><p>有哪些角色（设备） 有哪些 IP 段可供分配 角色之间是如何互联的 角色本身（如 loopback 口）要使用哪些 IP 段 互联要使用哪些 IP 段</p><p>因为：</p><p>一个较小的 IP 段肯定是由一个更大的 IP 段拆分而来，分出来的子 IP 段有关联。 我们需要多个角色通力合作才能连通网络，角色之间有关联。</p><p>基于上面这些假设，我们可以抽象出两棵树————设备树和 IP 段树，这二棵树各自扇出（fan out） ，最后在叶子节点上建立关联。</p><p>Image 图二 : 设备树与 IP 树</p><p>至此，我们已经表达了：</p><p>有哪些角色 有哪些 IP 段 角色本身（如 loopback 口）要使用哪些 IP 段 这三个信息点。</p><p>还剩下：</p><p>角色之间是如何互联的 角色之间的互联要使用哪个 IP 段 这两个信息点。</p><p>Image 图三 : 多平面网络</p><p>在数据中心网络演进到多平面的 Fabric 网络后，互联关系的种类呈现指数级上升。如何准确、易理解、低成本、低耦合的描述这些互联关系成为了摆在我们面前的巨大难题。</p><p>我们想到的第一个方案：预定义套餐，即预先定义出所有可选的互联方案。将这些逻辑固化到代码中去。如：笛卡尔积式互联，间隔互联，交叉互联等等。</p><p>我们迅速否决了这个方案，因为：</p><p>极高的理解成本：工程师很难从名字和描述等处获得足够的信息，需要配套大量的文档，相当于回退到了文档描述的时代。 极高的研发成本：每当新加一种互联类型，都需要大量研发资源投入适配，也需要研发同学深入的理解每种互联方案，再加上每种互联方案有大量的可调参数，如间隔步长等。 严重的跨模块耦合：当架构规划信息在“架构规划库” 和 “资源分配器” 之间传递时，需要为每个互联方案设计一种数据结构，相当于要求“架构规划库”和“资源分配器”都需要完全理解每一种互联方案。</p><p>我们从 tcpdump 工具中得到启发，当要描述特定领域内的复杂逻辑的时，可以尝试设计一种 领域特定语言（DSL）来解决。我们设计了一种描述互联的 DSL ---- UCLOUD DC CONNECT LANG 。语言短小精悍，说明文档约一页，描述一种互联关系只需要 10 个左右的字符，实践中，新员工只需要大约 1 天就可以理解这个语言，这个方案完全解决了预定义套餐产生的问题：</p><p>极低的理解和维护成本：只要理解了这个语言，就理解了所有的互联方案。 极低的研发成本：只需要实现了这个语言的逻辑，就可以覆盖所有的互联方案。所以，“资源分配器”只需要实现一次语言逻辑，终身免维护。 极低的耦合：架构规划库直接向资源分配器按 string 传递 DSL 原文即可，不再需要多种数据结构。</p><p>回到之前的“两棵树”上，给角色之间补充上互联信息和互联需要使用哪些 IP 地址段的信息。</p><p>Image 图四 : 图信息</p><p>至此，我们通过两棵树和一个三角形已经完整表达之前提到的五个信息点：</p><p>有哪些角色（设备） 有哪些 IP 段可供分配 角色之间是如何互联的 角色本身（如 loopback 口）要使用哪些 IP 段 角色之间的互联要使用哪些 IP 段</p><p>当然实际上还要稍微复杂一些，诸如 IP 段上会有业务标签，角色上会有端口分配规则等等。但这些本质上只是各个叶子节点的其他属性，只需要简单的加到叶子节点上即可。</p><ol><li><p>资源分配器</p></li></ol><p>架构规划库的信息流转到资源分配器后，资源分配器就要来分配资源。</p><p>那么第一个问题就是：它需要分配什么资源？</p><p>我们的答案：分配那些需要在全网资源池中获取的，与具体架构及具体路由协议无关的资源。</p><p>这样做的主要原因是我们希望资源分配器与网络架构设计完全解耦，否则会导致：</p><p>要么，需要持续投入研发人力跟踪实现数据中心内的动态路由协议从 OSPF 到 BGP 再到分布式数据库所需的各种资源分配逻辑。 （开发工具的同学不见得可以低成本、快速地理解网络设计上的细节。）</p><p>又或者，系统能力限制网络架构设计，若系统只支持 BGP AS 号分配，那架构设计只能使用 BGP 协议 那这些协议相关的逻辑资源怎么办？我们借鉴了“变量作用域”的概念。</p><p>资源分配器为每个角色分配一组局部（包括但不限于数据中心内、设备组内等）唯一的 ID 值，我们称之为 ID 组。在下一步配置生成中再根据 ID 组计算出这些资源。</p><p>这样的设计保证了：</p><p>局部唯一性 可计算性，互联两侧角色可以根据同样的参数和算法得到同样的逻辑资源，使得路由协议能正确协商</p><p>确定了需要分配的资源后，资源分配器根据架构规划库给出的架构信息，人工给出的规模信息，从 CMDB、IPAM 等资源池中获取设备、IP等资源，并计算出一个描述了整个数据中心拓扑的数据文件，称为连接图。</p><p>连接图中的信息主要包括两类：</p><p>1）设备信息（点）</p><p>上文提到的 ID 组 管理 IP … 2）互联信息（线）</p><p>两侧设备 两侧 IP 两侧端口 …</p><p>连接图信息将会继续传递给配置生成器。</p><ol><li><p>配置生成器</p></li></ol><p>至此, 我们已经有了基于架构规划库给出的规则分配好的资源(连接图信息), 这些信息如何转化成交换机可以理解的配置 ? 这就是配置生成器做的工作。</p><p>5.1 配置的生成</p><p>实际写到交换机上的命令可以分为三大类 :</p><p>全局一致的配置, 如 AAA 配置、安全策略配置等 与角色自身属性有关的配置 角色之间的互联配置，如 BGP peer address、BGP AS 、三层口 IP 等</p><p>一个配置例子：</p><p>hostname LAS.xxxxxx</p><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"></h1><p>interface HundredGigabitEthernet 0/1</p><p>no switchport</p><p>description To_LCS</p><p>ip address 10.68.176.53 255.255.255.254</p><p>可以发现，配置实际上是由一些固定的模板及变量组合而成的。而这些变量肯定来自于资源分配器的连接图中，点自身的属性，或者线的属性，又或者是与点连接的另外的点的属性。所以，只需要写好模板，再遍历连接图，我们就可以很轻松地得到整个机房所有设备的配置。</p><p>上文的配置在模版中的表现形式 ：</p><p>hostname {{ device_name }}</p><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"></h1><p>interface {{ pair[&quot;local_interface_name&quot;] }}</p><p>no switchport</p><p>description {{ conn[&quot;peer_device&quot;][&quot;device_name&quot;] }}</p><p>ip address {{ ip[&quot;ip&quot;] }} {{ ip[&quot;mask&quot;] }}</p><p>我们使用 jinja2 来帮助渲染模板，jinja2 支持模板的继承和组合，可以避免在每个角色的模板中重复写很多通用配置。同时，jinja2 模板非常的直观，简洁，所见即所得。替换为 jinja2 后大幅降低了配置命令的错误率。</p><p>我们还通过 git 管理模板，并围绕 git 构建了模板编写及修改工作流，引入了自动化测试机制，保证了对模板的修改有解释，有review，且经过测试，基本消除模板语法错误导致的沟通成本。</p><p>5.2 临门一脚</p><p>通过前述的资源分配等步骤, 至此我们已经完成了所有设备的配置生成工作, IDC 现场的同学也按系统给出的信息将设备完成上架、接线、开电。</p><p>至此我们只剩整个数据中心物理网络建设的“临门一脚”, 这些配置文件(以交换机 sn 命名的 txt 文件)如何下发到交换机上, 作为 startup config 启动并运行 ?</p><p>这里我们使用目前各主流厂商均支持的“零配置启动”功能 :</p><p>定义</p><p>ZTP（Zero Touch Provisioning）是指新出厂或空配置设备上电启动时采用的一种自动加载版本文件（包括系统软件、配置文件、License文件、补丁文件、自定义文件）的功能。</p><p>目的</p><p>在部署网络设备时，设备硬件安装完成后，需要管理员到安装现场对设备进行软件调试。当设备数量较多、分布较广时，管理员需要在每一台设备上进行手工配置，既影响了部署的效率，又需要较高的人力成本。</p><p>设备运行ZTP功能，可以从U盘或文件服务器获取版本文件并自动加载，实现设备的免现场配置、部署，从而降低人力成本，提升部署效率。</p><p>实际运行中, 我们会在新建的数据中心部署一台 PC (一个致密炽热的奇点)， 这台 PC 上运行了 DHCP、TFTP 服务以及存放了该数据中心所有设备的配置文件。</p><p>类比服务器的 PXE 装机过程, 我们利用 DHCP 服务器下发 TFTP Server 和 Bootfile, 交换机会自动执行该脚本, 而后从 TFTP 服务器下载其所需的配置文件。</p><p>在这里我们之前忽略了一个问题 : 同一数据中心内采购多厂商的设备, 如何解决生成 / 下发特定厂商配置文件的问题?</p><p>答案是不解决, 或者说不在前期考虑这个问题。</p><p>配置生成器不感知, 也不在乎上架使用的具体设备型号, 而是直接生成出所有可能厂商的配置文件. 例如某一特定角色共有 A、B、C 三个厂商的三份配置文件。</p><p>在交换机发送 DHCP Discover 报文时携带其厂牌信息, 如此奇点只要根据其厂牌返回不同的 TFTP 路径即可完成配置的下发。</p><p>通过以上几个步骤, 在现场完成上架、布线等工作后, 我们可以在小时级别将整个数据中心内的配置拉起, 完成开局。</p><p>5.3 one more thing</p><p>完成配置下发并不是结束, 我们还赋予了“奇点”一些其他功能 : 因为有了整网的连接图, 我们可以在最终交付给业务之前做一些检查, 确认我们的数据中心网络是可靠的。</p><p>通过对所有设备的连通性检查, 确认设备均已正确上线, 管理面均可达。 通过比对交换机的 startup config 与 running config , 确认全部配置下发正确。 通过 ZTP 功能, 我们可以指定上线设备的版本信息, 由系统自动升级为 DCN 指定的操作系统版本. 通过比对连接图中的 peer 关系与读取设备的 LLDP 信息, 确认全部接线正确。（在我们实际运行中此处常会检出一些错误 : 人工依然是不可靠的, 而工具可以检查和避免这种错误。） 6. 总结</p><p>从零建设一个可容纳万台服务器的数据中心网络需要多久 ?</p><p>答案是：几小时。</p><p>比起“交付时间压缩了多少”, 更大的价值更在于我们将目光聚焦在工程师擅长的地方, 将其从繁琐的表格、分配工作中解放, 更多精力去理解用户的工作流和关注点, 打造真正能输出业务价值的网络基础设施。</p><p>UCloud 物理网络团队坚信“连接的力量”, 为各公有云产品、为客户提供更稳定、更高效的网络服务。</p>]]></content:encoded>
            <author>likizju@newsletter.paragraph.com (likizju)</author>
        </item>
        <item>
            <title><![CDATA[5 opportunities on Arbitrum right now🔥]]></title>
            <link>https://paragraph.com/@likizju/5-opportunities-on-arbitrum-right-now</link>
            <guid>e8mdMOp0oVAcGQ4zKl0E</guid>
            <pubDate>Mon, 09 May 2022 01:32:10 GMT</pubDate>
            <description><![CDATA[Support Youth HIV/AIDS awareness with this NFT drop. 100% of proceeds go to the cause! Mint now Dear Bankless Nation, Last September we published the Essential Guide to Arbitrum—one of Ethereum’s leading scaling solutions that had just launched on mainnet. It was new and exciting, but at the time, there wasn’t really much to do. You could bridge over and use some of the leading DEXs like Uniswap, Balancer, and Sushi. That was it. It was early. Fast forward to today, and the ecosystem has grow...]]></description>
            <content:encoded><![CDATA[<br><p><em>Support Youth HIV/AIDS awareness with </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://bankless.cc/MAC"><em>this NFT drop</em></a><em>. 100% of proceeds go to the cause!</em></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://bankless.cc/MAC">Mint now</a></p><p>Dear Bankless Nation,</p><p>Last September we published the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://newsletter.banklesshq.com/p/the-essential-guide-to-arbitrum?s=r">Essential Guide to Arbitrum</a>—one of Ethereum’s leading scaling solutions that had just launched on mainnet.</p><p>It was new and exciting, but at the time, there wasn’t really much to do. You could bridge over and use some of the leading DEXs like Uniswap, Balancer, and Sushi. That was it.</p><p><em>It was early.</em></p><p>Fast forward to today, and the ecosystem has grown rapidly. There’s now over $6B in value locked across all Layer 2s, and Arbitrum represents over $4B of it—over 60% market share!</p><p>The network is also steadily approaching 1M unique addresses (<em>still early!!)</em></p><br><p>There’s more liquidity, more infrastructure, and <strong>more opportunities.</strong> Less than 9 months later and there’s now a vibrant ecosystem of applications on Arbitrum.</p><p>Low fees. More opportunities.</p><p>So today we’re revisiting the best opportunities on Arbitrum.</p><p>I wonder—could this make you eligible for an <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://newsletter.banklesshq.com/p/the-ultimate-guide-to-airdrops?s=w">airdrop someday</a>? 🤔</p><p>Let’s go.</p><p>- RSA</p><p>*P.S. Don’t miss our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://newsletter.banklesshq.com/p/alpha-report-april-2022">Alpha Report</a>! We dropped ***🔥 **<em>token ratings for BAL, SUSHI, MKR, TRIBE, and FXS. Premium subs can tap in now. Need access? </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://bankless.substack.com/subscribe"><em>Go premium.</em></a></p><p>🙏** Sponsor: ***<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://bankless.cc/Polygon">Polygon Studios—Fostering culture across Gaming, NFTs, and the Metaverse</a>✨*</p><h4 id="h-new-layer-zero" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">🎙️ <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://youtu.be/18vB70P2YE4"><strong>NEW LAYER ZERO</strong></a></h4><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://podcast.banklesshq.com/">Listen to podcast episode</a> | <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://podcasts.apple.com/us/podcast/bankless/id1499409058">Apple</a> | <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://open.spotify.com/show/41TNnXSv5ExcQSzEGLlGhy">Spotify</a> | <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://youtu.be/18vB70P2YE4">YouTube</a> | <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://shows.banklesshq.com/account/add-podcast">RSS Feed</a></p><h3 id="h-tactic-tuesday" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Tactic Tuesday</strong></h3><p><strong><em>Bankless Writer:</em></strong><em> </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/WPeaster"><em>William M. Peaster</em></a><em>, Bankless contributor and </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://metaversal.banklesshq.com/"><em>Metaversal</em></a><em> writer</em></p><br><p>Arbitrum One is currently the most popular layer 2 scaling solution for Ethereum, offering a range of L2 adventures and the best liquidity - at least for now.</p><p>This Bankless tactic covers a handful of the hottest Arbitrum opportunities you can consider trying today!</p><ul><li><p><strong>Goal</strong>: Explore cool Arbitrum projects</p></li><li><p><strong>Skill</strong>: Intermediate</p></li><li><p><strong>Effort</strong>: 1 hour</p></li><li><p><strong>ROI</strong>: Up to 60% APR at current rates</p></li></ul><h2 id="h-riding-the-rise-of-arbitrum-in-style" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Riding the rise of Arbitrum in style</strong></h2><h2 id="h-the-state-of-arbitrum" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>The state of Arbitrum</strong></h2><p>Per <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://l2beat.com/">L2BEAT</a>, there’s currently $6.7B worth of total value locked (TVL) across all of Ethereum’s most advanced scaling solutions. Accordingly, Arbitrum’s nearly $4B TVL at the moment means the scaling solution currently accounts for over 50% of the market share. </p><p>While the size of Arbitrum’s user base is still dwarfed by the size of Ethereum’s, the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://pro.nansen.ai/multichain/arbitrum">Nansen Arbitrum dashboard</a> indicates that the upstart L2 hosted an impressive ~150k unique active addresses over the last month and hosted nearly 50M addresses since its inception. For comparison, the Optimism L2 hosted ~40k addresses on the month and over 24M addresses to date. </p><br><p>Tap into <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.nansen.ai/?utm_source=Bankless&amp;utm_medium=Partnerships&amp;utm_campaign=BanklessNewsletter">Nansen </a>for more elite analytics</p><p>With regard to the L2’s roadmap, the creators of the scaling solution recently announced <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://medium.com/offchainlabs/introducing-anytrust-chains-cheaper-faster-l2-chains-with-minimal-trust-assumptions-31def59eb8d7">AnyTrust Chains</a>, which will operate along Arbitrum and offer ultra low-cost transactions, and the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://medium.com/offchainlabs/its-nitro-time-86944693bf29">nearing of Arbitrum Nitro</a>, which will optimize the L2’s network and drastically lower its transaction fees even further. </p><h2 id="h-arbitrum-starter-pack" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Arbitrum Starter Pack</strong></h2><p>*Here are some resources you can use to help you more easily navigate the Arbitrum ecosystem. *</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://newsletter.banklesshq.com/p/the-essential-guide-to-arbitrum?s=r">👉 Get Bankless’s Essential Guide to Arbitrum here 👈</a></p><h4 id="h-essential-tools" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">**Essential Tools: **</h4><ul><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://arbiscan.io/"><strong>Arbiscan</strong></a><strong>:</strong> Block explorer for analyzing Arbitrum transactions.</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://bridge.arbitrum.io/"><strong>Arbitrum Bridge</strong></a>: Official bridge for ETH and ERC20 token transfers between Arbitrum and Ethereum. <em>You can also use </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://app.hop.exchange/"><em>Hop Protocol</em></a><em> as a faster bridge!</em></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://portal.arbitrum.one/"><strong>Arbitrum One Portal:</strong></a> Application scanner to keep up to date with new DeFi and NFT projects. </p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://chainlist.org/"><strong>Chainlist</strong></a><strong>:</strong> Tool to add the Arbitrum network to your MetaMask wallet.</p></li></ul><br><h2 id="h-5-opportunities-on-arbitrum-right-now" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>5 🔥 opportunities on Arbitrum right now</strong></h2><p>*Below, I’ve curated a handful of what I consider to be the most compelling opportunities for adventurers on Arbitrum at the moment. *</p><h3 id="h-1-get-exposure-to-blue-chip-nfts-via-nfti" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>1. Get exposure to blue-chip NFTs via </strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.defipulse.com/blog/introducing-the-scalara-nft-index"><strong>NFTI</strong></a></h3><h4 id="h-what-you-need-to-know" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0"><strong>What you need to know</strong></h4><ul><li><p>In Feb. 2022, Scalara (<em>previously Pulse Inc.</em>) revealed the methodology for the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.defipulse.com/blog/introducing-the-scalara-nft-index">Scalara NFT Index</a>, or NFTI. Within a matter of days, someone used the methodology to launch the index through the index-tracking protocol Kuiper.</p></li><li><p>NFTI offers potential returns on the floor price performances of top NFT collections. Specifically, the index serves as an automated, weighted basket of xTokens from NFT liquidity protocol <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://nftx.io/">NFTX</a>. In addition, NFTX’s <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.nftx.io/introducing-nftx-inventory-staking/">inventory staking program</a> provides NFTI holders with additional yields unrelated to price performances. </p></li><li><p>Initially, NFTI tracks the CryptoPunks, CrypToadz, Chromie Squiggles, Cool Cats, Doodles, Meebits, and World of Women collections. Investors can now use a single ERC20 to get exposure to these blue-chip NFT projects on any budget. In comparison, investing in these collections by simultaneously paying their full floor prices would amount to hundreds of ETH right now. </p></li><li><p>Previously, the vast majority of blue-chip NFT liquidity has been siloed on Ethereum, so NFTI’s arrival on Arbitrum makes it possible to enjoy fast and inexpensive L2 transactions around some of the biggest NFT projects for the first time ever.</p></li></ul><br><h3 id="h-how-to-access-nfti" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>How to access NFTI</strong></h3><br><ol><li><p>Top up your Arbitrum wallet with ETH for gas if you haven’t already.</p></li><li><p>Then head to the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://app.uniswap.org/#/swap?outputCurrency=0xcfe3fbc98d80f7eca0bc76cd1f406a19dd425896&amp;chain=arbitrum">ETH-NFTI pool</a> on Uniswap V3’s Arbitrum deployment. </p></li><li><p>Use the “Swap” UI to input how much NFTI you’d like to trade for and complete the transaction with your wallet. <em>Beware of high slippage!</em></p></li><li><p>That’s it! You can hodl NFTI while you’re long and want exposure to its collections, or you can sell through the same Uniswap V3 pool whenever you’re ready to take your money off the table.</p></li></ol><br><h2 id="h-2-invest-with-yearns-l2-curve-tricrypto-vault" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>2. Invest with </strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://yearn.finance/#/vault/0x239e14A19DFF93a17339DCC444f74406C17f8E67"><strong>Yearn’s L2 Curve Tricrypto vault</strong></a></h2><h4 id="h-what-you-need-to-know" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0"><strong>What you need to know</strong></h4><ul><li><p>In Feb. 2022, the team behind the leading DeFi yield aggregator Yearn announced the protocol’s deployment to Arbitrum. Notably, this deployment marked the first L2 that Yearn supported. </p></li><li><p>The Yearn team decided to trial Arbitrum first because of the L2’s low costs, its confidence-inspiring TVL stats, and its compatibility with direct deposits/withdrawals via major crypto exchanges like Binance and FTX. </p></li><li><p>Yearn’s inaugural offering on Arbitrum is a Curve Tricrypto vault. Curve’s Tricrypto pool contains WBTC, WETH, and USDT, and depositors to this pool can take their liquidity provider (LP) tokens to Yearn’s vault to boost their earnings through an automated, Curve-centric DeFi strategy.</p></li></ul><br><h3 id="h-how-to-access-the-curves-l2-tricrypto-vault" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>How to access the Curve’s L2 Tricrypto vault</strong></h3><br><ol><li><p>Make a deposit to Curve’s <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://arbitrum.curve.fi/tricrypto/deposit">Tricrypto pool on Arbitrum</a>.</p></li><li><p>With your ensuing LP tokens, head back to the Curve <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://yearn.finance/#/vault/0x239e14A19DFF93a17339DCC444f74406C17f8E67">Tricrypto vault page</a>. </p></li><li><p>Use the “Deposit” UI to input how many crvTricrypto LP tokens you want to supply.</p></li><li><p>Complete an approval and then a deposit transaction, and you’re in. Right now the vault is generating ~7.4% APY.</p></li></ol><br><h2 id="h-3-provide-liquidity-on-stargate-finance" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>3. Provide liquidity on </strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://stargate.finance/"><strong>Stargate Finance</strong></a></h2><h4 id="h-what-you-need-to-know" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0"><strong>What you need to know</strong></h4><ul><li><p>Stargate, an “omnichain” bridging protocol, is the first project to launch atop <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://layerzero.network/">Layer Zero</a>, an interoperability solution that can make it easy for disparate blockchains to directly communicate with each other. </p></li><li><p>Stargate currently supports a series of stablecoin pools across multiple blockchains that are compatible with the Ethereum Virtual Machine (EVM). These chains include Arbitrum, Avalanche, BSC, and beyond. </p></li><li><p>By adding liquidity to Stargate’s liquidity pools, users stand to earn a small cut of every transfer made through Stargate. Additionally, it’s possible to stake Stargate LP tokens to earn further rewards denominated in STG, the native token of the protocol.</p></li></ul><br><h3 id="h-how-to-access-stargates-arbitrum-staking-opps" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>How to access Stargate’s Arbitrum staking opps</strong></h3><br><ol><li><p>Add some USDC or USDT to your Arbitrum wallet for LPing with. </p></li><li><p>Then head to the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://stargate.finance/pool">Stargate Pool page</a> and connect your wallet. </p></li><li><p>Click on the Arbitrum USDC pool or the Arbitrum USDT pool option and make your desired deposit amount. </p></li><li><p>With your new LP tokens, navigate to the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://stargate.finance/farm">Farming page</a> and click on the staking opportunity that applies to you. Input how many LP tokens you want to stake and then complete the staking transaction.</p></li><li><p>Voila! That’s how to join Stargate’s Arbitrum farms. Note the USDC and USDT farms are offering ~10% APY and ~9% APY respectively at the moment.</p></li></ol><br><h3 id="h-4-stake-on-gmx-to-earn-up-to-47percent-apr-at-current-rates" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>4. Stake on </strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://gmx.io/"><strong>GMX</strong></a><strong> to earn up to 47% APR at current rates</strong></h3><h4 id="h-what-you-need-to-know" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0"><strong>What you need to know</strong></h4><ul><li><p>GMX is a decentralized spot and perpetual exchange presently live on Arbitrum and AVAX. At the heart of the protocol lies a multi-asset pool, through which LPs can earn revenues via market making and supporting leveraged trading. </p></li><li><p>The eponymously named GMX token is the protocol’s native governance and utility token. Holders can stake GMX to earn <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://gmxio.gitbook.io/gmx/rewards">escrowed GMX</a> (esGMX) rewards and ETH earnings from swap fees over time.</p></li><li><p>GMX’s other central token, GLP, is the protocol’s native liquidity provider token. Simply put, GLP is an index of assets spanning the tokens that exist in GMX’s foundational multi-asset pool, and it’s possible to stake GLP to earn ETH and esGMX rewards.</p></li></ul><br><h4 id="h-how-to-access-gmx-or-glp-staking" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0"><strong>How to access GMX or GLP staking</strong></h4><ul><li><p>Go to the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://gmxio.gitbook.io/gmx/rewards">GMX Buy page</a> and follow the instructions to acquire your desired amount of GMX or GLP. </p></li><li><p>If you buy GLP, you’re already done because your GLP is automatically staked upon the purchase. You can then track your earnings or unwind your position through the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://gmx.io/earn">GMX Earn page</a>. Note, GLP staking is generating 47% APR <em>(27% in ETH + 20% in esGMX)</em> right now. </p></li><li><p>For GMX stakers, follow up by going to the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://gmx.io/earn">GMX Earn page</a> and connecting your wallet.</p></li><li><p>Then scroll down to the GMX staking UI and slick “Stake” to complete the transaction with your wallet. Keep in mind that GMX staking is presently yielding 28% APR (11% in ETH + 17% in esGMX).</p></li></ul><br><h2 id="h-5-earn-up-to-60percent-apr-on-vesta-liquidity-mining" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>5. Earn up to 60% APR on </strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://vestafinance.xyz/"><strong>Vesta</strong></a><strong> liquidity mining</strong></h2><h4 id="h-what-you-need-to-know" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0"><strong>What you need to know</strong></h4><ul><li><p>Similar to <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://newsletter.banklesshq.com/p/how-to-take-out-an-interest-free?s=w">Liquity</a>, Vesta is a “zero interest” lending protocol. </p></li><li><p>Yet while Liquity exists on Ethereum and only supports ETH collateral, Vesta is built on Arbitrum and supports multiple collateral types like ETH, renBTC, gOHM, and GMX.</p></li><li><p>The native dollar-pegged stablecoin of the protocol is VST, while the project’s native governance token is VSTA. In an effort to bootstrap liquidity around VSTA, the Vesta team is currently running a liquidity mining program centered on the ETH-VSTA pool on Balancer’s Arbitrum deployment. Accordingly, users can stake their LP tokens from this pool back on Vesta to earn 42% APR in VSTA rewards + 17% APR in BAL rewards right now.</p></li></ul><br><h3 id="h-how-to-access-vesta-liquidity-mining" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>How to access Vesta liquidity mining</strong></h3><br><ul><li><p>Supply liquidity to the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://arbitrum.balancer.fi/#/pool/0xc61ff48f94d801c1ceface0289085197b5ec44f000020000000000000000004d">VSTA-ETH pool</a> on Balancer.</p></li><li><p>Then go to Vesta’s <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://vestafinance.xyz/staking/liquidity">Liquidity Mining page</a> and click on the VSTA-ETH option, which will bring up the UI depicted in the image above. </p></li><li><p>Input how many VSTA-ETH LP tokens you want to stake, and then press “Stake” and complete the transaction with your wallet. Just keep in mind that your accrued staking rewards could be counteracted by impermanent loss in the underlying VSTA-ETH pool.</p></li></ul><br><h2 id="h-pioneering-the-frontier" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Pioneering The Frontier</strong></h2><p>The projects described above are pioneering around Arbitrum’s frontier and offer compelling opportunities for L2 adventurers to explore <em>today.</em></p><p>They all come with risks, though they typify how the era of rapid and inexpensive DeFi and NFT activities is already upon us — the world’s just in the process of catching up.  </p><h3 id="h-action-steps" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Action steps</strong></h3><ul><li><p>🔥 Check out <strong>NFTI</strong>, <strong>Yearn</strong>, <strong>Stargate</strong>, <strong>GMX</strong>, and **Vesta **on Arbitrum!</p></li><li><p>👀 Also check out our previous <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://newsletter.banklesshq.com/p/how-to-get-ready-for-l2-tokens?s=r"><strong>How to get ready for L2 tokens</strong></a> tactic</p></li></ul><h3 id="h-author-bio" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong><em>Author Bio</em></strong></h3><p><em>William M. Peaster is a professional writer and creator of </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://metaversal.substack.com/"><em>Metaversal</em></a><em>—a new Bankless newsletter focused on the emergence of NFTs in the cryptoeconomy. He’s also recently been contributing content to Bankless, JPG, and beyond!</em></p><p>Subscribe to <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://bankless.substack.com/about">Bankless</a>. $22 per mo. Includes <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://bankless.substack.com/archive?utm_source=menu-dropdown">archive access</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://bankless.substack.com/p/welcome-to-the-inner-circle-wave">Inner Circle</a> &amp; <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://bankless.substack.com/p/claim-your-bankless-token-badge-801">Badge</a>.</p><h4 id="h-thanks-to-our-sponsor" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">🙏<strong>Thanks to our sponsor</strong></h4><h2 id="h-polygon-studios" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://bankless.cc/Polygon"><strong>POLYGON STUDIOS</strong></a></h2><p>Polygon Studios is on a mission to help build digital culture, play-to-earn gaming, NFTs, and the Metaverse ecosystem on Polygon. Some of the key projects supported by Polygon Studios include The Sandbox, Skyweaver, Big Time, Crypto Unicorns, and Decentraland—among others. Polygon Studios also helps fundraising &amp; onboarding. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://bankless.cc/Polygon">Check it out here.</a></p><br><p><em>Stay updated on the latest amazing gaming, NFT, and metaverse projects:</em></p><p>👉 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/seWuCME64u">Join the Polygon Studios Discord</a></p><p>👉 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/polygonstudios">Follow Polygon Studios on Twitter</a></p><p><em>Want to </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://newsletter.banklesshq.com/about?sort=people"><em>get featured</em></a><em> on Bankless? Send your article to submissions@banklesshq.com</em></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://newsletter.banklesshq.com/p/write-for-bankless">Write for Bankless</a></p><p>***Not financial or tax advice. *<em>This newsletter is strictly educational and is not investment advice or a solicitation to buy or sell any assets or to make any financial decisions. This newsletter is not tax advice. Talk to your accountant. Do your own research.</em></p><p><strong><em>Disclosure.</em></strong><em> From time-to-time I may add links in this newsletter to products I use. I may receive commission if you make a purchase through one of these links. Additionally, the Bankless writers hold crypto assets. See our </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://newsletter.banklesshq.com/p/bankless-disclosures"><em>investment disclosures here</em></a><em>.</em></p>]]></content:encoded>
            <author>likizju@newsletter.paragraph.com (likizju)</author>
        </item>
        <item>
            <title><![CDATA[2022重点空投项目]]></title>
            <link>https://paragraph.com/@likizju/2022</link>
            <guid>FklEiut1Zpeo9rYAnuEK</guid>
            <pubDate>Mon, 09 May 2022 01:29:14 GMT</pubDate>
            <description><![CDATA[1、项目：HopProtocol推特：https://twitter.com/HopProtocol 网址：&#x3C;https://hop.exchange/> 2、项目：Connext 简介：EVM 链之间的另一个重要垮链平台 推特：&#x3C;https://twitter.com/ConnextNetwork> 网址：&#x3C;https://www.connext.network/> 3、项目：Element Finance 简介：Element 是用于固定和可变收益市场的开源协议。 推特：&#x3C;https://twitter.com/element_fi> 网址：&#x3C;https://www.element.fi/> 投资机构：A16z、Polychain、Republic等 4、项目：Eco 简介：一个兼顾消费、汇款、储蓄和赚钱的金融属性平台 推特：&#x3C;https://twitter.com/eco> 网址：&#x3C;https://www.eco.com/> 投资机构：Andreessen.horowitz、Founders Fund、A...]]></description>
            <content:encoded><![CDATA[<p>1、项目：HopProtocol</p><pre data-type="codeBlock" text="  简介：最有前景的 ETH L2 跨链桥之一，不同链之间的桥梁资产可在没有 IL 的池中提供流动性和股权资本
"><code></code></pre><p>推特：<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/HopProtocol">https://twitter.com/HopProtocol</a></p><pre data-type="codeBlock" text="  网址：&lt;https://hop.exchange/&gt;
"><code>  网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//hop.exchange/></span>
</code></pre><p>2、项目：Connext</p><pre data-type="codeBlock" text="  简介：EVM 链之间的另一个重要垮链平台

  推特：&lt;https://twitter.com/ConnextNetwork&gt;

  网址：&lt;https://www.connext.network/&gt;
"><code>  简介：EVM 链之间的另一个重要垮链平台

  推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/ConnextNetwork></span>

  网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//www.connext.network/></span>
</code></pre><p>3、项目：Element Finance</p><pre data-type="codeBlock" text="    简介：Element 是用于固定和可变收益市场的开源协议。

    推特：&lt;https://twitter.com/element_fi&gt;

     网址：&lt;https://www.element.fi/&gt;

     投资机构：A16z、Polychain、Republic等
"><code><span class="hljs-code">    简介：Element 是用于固定和可变收益市场的开源协议。
</span>
<span class="hljs-code">    推特：&#x3C;https://twitter.com/element_fi>
</span>
<span class="hljs-code">     网址：&#x3C;https://www.element.fi/>
</span>
<span class="hljs-code">     投资机构：A16z、Polychain、Republic等
</span></code></pre><p>4、项目：Eco</p><pre data-type="codeBlock" text="   简介：一个兼顾消费、汇款、储蓄和赚钱的金融属性平台

   推特：&lt;https://twitter.com/eco&gt;

    网址：&lt;https://www.eco.com/&gt;

    投资机构：Andreessen.horowitz、Founders Fund、Activant等
"><code>   简介：一个兼顾消费、汇款、储蓄和赚钱的金融属性平台

   推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/eco></span>

    网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//www.eco.com/></span>

    投资机构：Andreessen.horowitz、Founders Fund、Activant等
</code></pre><p>5、项目：Argent</p><pre data-type="codeBlock" text="   简介：最好的以太坊钱包之一，具有最佳的用户体验，并且已经与许多产品和 L2 集成

  推特：&lt;https://twitter.com/argentHQ&gt;

  网址：&lt;https://www.argent.xyz/&gt;

  投资机构：Paradigm、Index Ventures、Creandum
"><code>   简介：最好的以太坊钱包之一，具有最佳的用户体验，并且已经与许多产品和 L2 集成

  推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/argentHQ></span>

  网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//www.argent.xyz/></span>

  投资机构：Paradigm、Index Ventures、Creandum
</code></pre><p>6、项目：Aztec</p><pre data-type="codeBlock" text="   简介：web3 的可编程隐私层

  推特：&lt;https://twitter.com/aztecnetwork&gt;

  网址：&lt;https://aztec.network/&gt;
"><code>   简介：web3 的可编程隐私层

  推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/aztecnetwork></span>

  网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//aztec.network/></span>
</code></pre><p>7、项目：Foundation</p><pre data-type="codeBlock" text="  简介：一个新的创意经济的平台，NFT的交易创建平台

 推特：&lt;https://twitter.com/foundation&gt;

 网址：&lt;https://foundation.app/&gt;
"><code>  简介：一个新的创意经济的平台，NFT的交易创建平台

 推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/foundation></span>

 网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//foundation.app/></span>
</code></pre><p>8、项目：Polymarket</p><pre data-type="codeBlock" text="   简介：建立在马蹄上的一个去中心化的信息市场平台。

  推特：&lt;https://twitter.com/PolymarketHQ&gt;

  网址：&lt;https://polymarket.com/&gt;
"><code>   简介：建立在马蹄上的一个去中心化的信息市场平台。

  推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/PolymarketHQ></span>

  网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//polymarket.com/></span>
</code></pre><p>9、项目：Superfluid</p><pre data-type="codeBlock" text="  简介：以太坊社区上的可编程资金流，处理订阅、工资、奖励和任何价值流，每秒持续结算

 推特：&lt;https://twitter.com/Superfluid_HQ&gt;

 网址：&lt;https://www.superfluid.finance/home&gt;
"><code>  简介：以太坊社区上的可编程资金流，处理订阅、工资、奖励和任何价值流，每秒持续结算

 推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/Superfluid_HQ></span>

 网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//www.superfluid.finance/home></span>
</code></pre><p>10、项目：ZigZag Exchange</p><pre data-type="codeBlock" text="    简介：第一个在 zkSync 上运行的具有中央订单簿的 DEX

   推特：&lt;https://twitter.com/ZigZagExchange&gt;

   网址：&lt;https://trade.zigzag.exchange/&gt;

   充钱交互
"><code>    简介：第一个在 zkSync 上运行的具有中央订单簿的 DEX

   推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/ZigZagExchange></span>

   网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//trade.zigzag.exchange/></span>

   充钱交互
</code></pre><p>11、项目：OPYN</p><pre data-type="codeBlock" text="   简介：以太坊上构建 DeFi 原生衍生品和期权基础设施，最好的 DeFI 协议之一。

   推特：&lt;https://twitter.com/opyn_&gt;

   网址：&lt;https://www.opyn.co/&gt;

   投资机构：Paradigm领投
"><code>   简介：以太坊上构建 DeFi 原生衍生品和期权基础设施，最好的 DeFI 协议之一。

   推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/opyn_></span>

   网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//www.opyn.co/></span>

   投资机构：Paradigm领投
</code></pre><p>12、项目：Ondo Finance</p><pre data-type="codeBlock" text="    简介：Ondo 是一家提供结构化产品的去中心化投资银行，他们为那些想要租用流动性的 DAO 开发了一个解决方案。

  推特：&lt;https://twitter.com/OndoFinance&gt;

   网址：&lt;https://ondo.finance/&gt;
"><code>    简介：Ondo 是一家提供结构化产品的去中心化投资银行，他们为那些想要租用流动性的 DAO 开发了一个解决方案。

  推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/OndoFinance></span>

   网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//ondo.finance/></span>
</code></pre><p>13、项目：ZORA</p><pre data-type="codeBlock" text="     简介：在以太坊上购买、出售和管理 NFT 的开放协议。

    推特：&lt;https://twitter.com/ourZORA&gt;

    网址：&lt;https://zora.co/&gt;
"><code>     简介：在以太坊上购买、出售和管理 NFT 的开放协议。

    推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/ourZORA></span>

    网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//zora.co/></span>
</code></pre><p>14、项目：RENFT</p><pre data-type="codeBlock" text="    简介：他们正在为 NFT 构建金融层，推出了第一个通用租赁市场，并建立了第一个无抵押贷款/借款

   推特：&lt;https://twitter.com/renftlabs&gt;

    网址：&lt;https://withkoji.com/@reNFT&gt;
"><code>    简介：他们正在为 NFT 构建金融层，推出了第一个通用租赁市场，并建立了第一个无抵押贷款<span class="hljs-operator">/</span>借款

   推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/renftlabs></span>

    网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//withkoji.com/@reNFT></span>
</code></pre><p>15、项目：Mirror</p><pre data-type="codeBlock" text="     简介：用于共享和资助任何东西的基本 web3 工具包

    推特：&lt;https://twitter.com/viamirror&gt;

     网址：&lt;https://mirror.xyz/&gt;
"><code>     简介：用于共享和资助任何东西的基本 web3 工具包

    推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/viamirror></span>

     网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//mirror.xyz/></span>
</code></pre><p>16、项目：RabbitHole</p><pre data-type="codeBlock" text="    简介：通过发现和使用最新的加密应用程序来赚取加密货币的WEB3贡献者平台

   推特：&lt;https://twitter.com/rabbithole_gg&gt;

    网址：&lt;https://rabbithole.gg/&gt;
"><code>    简介：通过发现和使用最新的加密应用程序来赚取加密货币的WEB3贡献者平台

   推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/rabbithole_gg></span>

    网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//rabbithole.gg/></span>
</code></pre><p>17、项目：ZED RUN</p><pre data-type="codeBlock" text="     简介：ZED 是一款基于区块链技术的可证明公平的数字赛马游戏。

    推特：&lt;https://twitter.com/zed_run&gt;

     网址：&lt;https://zed.run/&gt;
"><code>     简介：ZED 是一款基于区块链技术的可证明公平的数字赛马游戏。

    推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/zed_run></span>

     网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//zed.run/></span>
</code></pre><p>18、项目：Euler</p><pre data-type="codeBlock" text="    简介：Euler 是一种资本效率高的无许可借贷协议，可帮助用户从其加密资产中赚取利息或对冲波动的市场。

   推特：&lt;https://twitter.com/eulerfinance&gt;

    网址：&lt;https://www.euler.finance/&gt;

    投资机构：Paradigm领投
"><code>    简介：Euler 是一种资本效率高的无许可借贷协议，可帮助用户从其加密资产中赚取利息或对冲波动的市场。

   推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/eulerfinance></span>

    网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//www.euler.finance/></span>

    投资机构：Paradigm领投
</code></pre><p>19、项目：Slingshot</p><pre data-type="codeBlock" text="     简介：Polygon、Arbitrum、Optimism 等链的Web3 交易平台

    推特：&lt;https://twitter.com/SlingshotCrypto&gt;

    网址：&lt;https://slingshot.finance/&gt;
"><code>     简介：Polygon、Arbitrum、Optimism 等链的Web3 交易平台

    推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/SlingshotCrypto></span>

    网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//slingshot.finance/></span>
</code></pre><p>20、项目：Morpho Labs</p><pre data-type="codeBlock" text="     简介：一个全新的Defi协议，通过点对点流动性改善您的供应和借入 APY

    推特：&lt;https://twitter.com/MorphoLabs&gt;

    网址：&lt;https://www.morpho.best/&gt;
"><code>     简介：一个全新的Defi协议，通过点对点流动性改善您的供应和借入 APY

    推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/MorphoLabs></span>

    网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//www.morpho.best/></span>
</code></pre><p>21、项目：Yield Protocol</p><pre data-type="codeBlock" text="    简介：ETH上的固定利率借贷

   推特：&lt;https://twitter.com/yield&gt;

   网址：&lt;https://yieldprotocol.com/&gt;

   投资机构：Paradigm、Framework领投
"><code>    简介：ETH上的固定利率借贷

   推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/yield></span>

   网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//yieldprotocol.com/></span>

   投资机构：Paradigm、Framework领投
</code></pre><p>22、项目：Pods</p><pre data-type="codeBlock" text="    简介：Pods 协议是一种去中心化的非托管期权协议，允许用户使用新的 Options AMM 进行买卖和提供流动性。

     推特：&lt;https://twitter.com/PodsFinance&gt;

    网址：&lt;https://www.pods.finance/&gt;

    投资机构：Framework领投
"><code><span class="hljs-code">    简介：Pods 协议是一种去中心化的非托管期权协议，允许用户使用新的 Options AMM 进行买卖和提供流动性。
</span>
<span class="hljs-code">     推特：&#x3C;https://twitter.com/PodsFinance>
</span>
<span class="hljs-code">    网址：&#x3C;https://www.pods.finance/>
</span>
<span class="hljs-code">    投资机构：Framework领投
</span></code></pre><p>23、项目：Potion Labs</p><pre data-type="codeBlock" text="    简介：价格保险 的DEFI，AMM 协议 ，使加密市场更加安全，提供对买卖双方都安全且可持续的风险产品。

   推特：&lt;https://twitter.com/PotionLabs&gt;

   网址：&lt;https://linktr.ee/PotionLabs&gt;

   合作机构：polychanCapital、Pantera等
"><code>    简介：价格保险 的DEFI，AMM 协议 ，使加密市场更加安全，提供对买卖双方都安全且可持续的风险产品。

   推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/PotionLabs></span>

   网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//linktr.ee/PotionLabs></span>

   合作机构：polychanCapital、Pantera等
</code></pre><p>24、项目：Kwenta</p><pre data-type="codeBlock" text="     简介：SNX的杠杆期权平台

    推特：&lt;https://twitter.com/kwenta_io&gt;

   网址：&lt;https://kwenta.io/&gt;
"><code>     简介：SNX的杠杆期权平台

    推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/kwenta_io></span>

   网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//kwenta.io/></span>
</code></pre><p>25、项目：DeFi Saver</p><pre data-type="codeBlock" text="    简介：DeFi Saver 是用于创建、管理和跟踪您的 DeFi 头寸的一站式仪表板

    推特：&lt;https://twitter.com/DeFiSaver&gt;

    网址：&lt;https://defisaver.com/&gt;
"><code>    简介：DeFi Saver 是用于创建、管理和跟踪您的 DeFi 头寸的一站式仪表板

    推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/DeFiSaver></span>

    网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//defisaver.com/></span>
</code></pre><p>26、项目：Set</p><pre data-type="codeBlock" text="     简介：资产管理协议，在 Set 的开源协议上构建市场领先的创新 DeFi 结构化产品

    推特：&lt;https://twitter.com/SetProtocol&gt;

     网址：&lt;https://www.tokensets.com/&gt;
"><code>     简介：资产管理协议，在 Set 的开源协议上构建市场领先的创新 DeFi 结构化产品

    推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/SetProtocol></span>

     网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//www.tokensets.com/></span>
</code></pre><p>27、项目：volmex.finance</p><pre data-type="codeBlock" text="    简介：以太坊、多边形和 Arbitrum 上的代币化波动率协议。

   推特：&lt;https://twitter.com/volmexfinance&gt;

   网址：&lt;https://volmex.finance/&gt;

  投资机构：CMS、三箭、D64等
"><code>    简介：以太坊、多边形和 Arbitrum 上的代币化波动率协议。

   推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/volmexfinance></span>

   网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//volmex.finance/></span>

  投资机构：CMS、三箭、D64等
</code></pre><p>28、项目：Sense Finance</p><pre data-type="codeBlock" text="     简介：固定利率的DEFI协议

    推特：&lt;https://twitter.com/senseprotocol&gt;

    网址：&lt;https://sense.finance/&gt;

    合作机构：Dragonfly Capital、BainCapital等
"><code><span class="hljs-code">     简介：固定利率的DEFI协议
</span>
<span class="hljs-code">    推特：&#x3C;https://twitter.com/senseprotocol>
</span>
<span class="hljs-code">    网址：&#x3C;https://sense.finance/>
</span>
<span class="hljs-code">    合作机构：Dragonfly Capital、BainCapital等
</span></code></pre><p>29、项目：zkSync</p><pre data-type="codeBlock" text="     简介：以太坊L2协议

     推特：&lt;https://twitter.com/zksync&gt;

     网址：&lt;https://zksync.io/&gt;

    投资机构：ETH foundation、A16Z、USV 等
"><code><span class="hljs-code">     简介：以太坊L2协议
</span>
<span class="hljs-code">     推特：&#x3C;https://twitter.com/zksync>
</span>
<span class="hljs-code">     网址：&#x3C;https://zksync.io/>
</span>
<span class="hljs-code">    投资机构：ETH foundation、A16Z、USV 等
</span></code></pre><p>30、项目：StarkWare</p><pre data-type="codeBlock" text="     简介：以太坊L2协议

     推特：&lt;https://twitter.com/StarkWareLtd&gt;

    网址：&lt;https://starkware.co/&gt;

    投资机构：Paradigm、Sequoia等
"><code><span class="hljs-code">     简介：以太坊L2协议
</span>
<span class="hljs-code">     推特：&#x3C;https://twitter.com/StarkWareLtd>
</span>
<span class="hljs-code">    网址：&#x3C;https://starkware.co/>
</span>
<span class="hljs-code">    投资机构：Paradigm、Sequoia等
</span></code></pre><p>31、项目：Optimism</p><pre data-type="codeBlock" text="   简介：以太坊L2协议

   推特：&lt;https://twitter.com/optimismPBC&gt;

   网址：&lt;https://www.optimism.io/&gt;

   投资机构：paradigm、A16Z领投
"><code>   简介：以太坊L2协议

   推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/optimismPBC></span>

   网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//www.optimism.io/></span>

   投资机构：paradigm、A16Z领投
</code></pre><p>32、项目：Arbitrum</p><pre data-type="codeBlock" text="     简介：以太坊L2协议

     推特：&lt;https://twitter.com/arbitrum&gt;

     网址：&lt;https://arbitrum.io/&gt;

    投资机构：Lightspeed、Pantera、Polychain Capital等
"><code><span class="hljs-code">     简介：以太坊L2协议
</span>
<span class="hljs-code">     推特：&#x3C;https://twitter.com/arbitrum>
</span>
<span class="hljs-code">     网址：&#x3C;https://arbitrum.io/>
</span>
<span class="hljs-code">    投资机构：Lightspeed、Pantera、Polychain Capital等
</span></code></pre><p>33、项目：Art Blocks</p><pre data-type="codeBlock" text="     简介：NFT创意平台，生成作品的独特迭代不可更改地托管在以太坊区块链上。

   推特：&lt;https://twitter.com/artblocks_io&gt;

    网址：&lt;https://www.artblocks.io/&gt;
"><code>     简介：NFT创意平台，生成作品的独特迭代不可更改地托管在以太坊区块链上。

   推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/artblocks_io></span>

    网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//www.artblocks.io/></span>
</code></pre><p>34、项目：DeBank</p><pre data-type="codeBlock" text="     简介：领先的 DeFi 投资组合跟踪器，支持 20 条链中数量最多的 DeFi 协议

    推特：&lt;https://twitter.com/DeBankDeFi&gt;

     网址：&lt;https://debank.com/&gt;
"><code>     简介：领先的 DeFi 投资组合跟踪器，支持 <span class="hljs-number">20</span> 条链中数量最多的 DeFi 协议

    推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/DeBankDeFi></span>

     网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//debank.com/></span>
</code></pre><p>35、项目：Zapper</p><pre data-type="codeBlock" text="     简介：web3 聚合DEX，包括NFT可投资组合

    推特：&lt;https://twitter.com/zapper_fi&gt;

    网址：&lt;https://zapper.fi/zh&gt;
"><code>     简介：web3 聚合DEX，包括NFT可投资组合

    推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/zapper_fi></span>

    网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//zapper.fi/zh></span>
</code></pre><p>36、项目：Zerion</p><pre data-type="codeBlock" text="     简介：用于 DeFi 和 NFT 能够在任何链上的任何钱包进行交换、质押、借入、借出

    推特：&lt;https://twitter.com/zerion_io&gt;

    网址：&lt;https://zerion.io/&gt;

    合作机构：Blockchain、Placeholder等
"><code><span class="hljs-code">     简介：用于 DeFi 和 NFT 能够在任何链上的任何钱包进行交换、质押、借入、借出
</span>
<span class="hljs-code">    推特：&#x3C;https://twitter.com/zerion_io>
</span>
<span class="hljs-code">    网址：&#x3C;https://zerion.io/>
</span>
<span class="hljs-code">    合作机构：Blockchain、Placeholder等
</span></code></pre><p>37、项目：Phantom</p><pre data-type="codeBlock" text="    简介：为 DeFi 和 NFT 打造的Solana 链上的优质钱包

  推特：&lt;https://twitter.com/phantom&gt;

  网址：&lt;https://phantom.app/&gt;
"><code>    简介：为 DeFi 和 NFT 打造的Solana 链上的优质钱包

  推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/phantom></span>

  网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//phantom.app/></span>
</code></pre><p>38、项目：MetaMask</p><pre data-type="codeBlock" text="     简介：WEB3钱包

     推特：&lt;https://twitter.com/MetaMask&gt;

   网址：&lt;https://metamask.io/&gt;
"><code>     简介：WEB3钱包

     推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/MetaMask></span>

   网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//metamask.io/></span>
</code></pre><p>39、项目：Showtime</p><pre data-type="codeBlock" text="     简介：web3 社交网络，创作者和收藏家在这里展示他们的 NFT，从数字艺术到照片和视频。

     推特：&lt;https://twitter.com/tryShowtime&gt;

   网址：&lt;https://showtime.io/&gt;
"><code>     简介：web3 社交网络，创作者和收藏家在这里展示他们的 NFT，从数字艺术到照片和视频。

     推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/tryShowtime></span>

   网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//showtime.io/></span>
</code></pre><p>40、项目：GALLERY</p><pre data-type="codeBlock" text="    简介：Gallery 是一个平台，可以在其中查看、策划、分享和发现您最喜爱的 NFT。 能够通过自己的作品表达自己，并与 NFT 社区中的其他成员建立联系。

  推特：&lt;https://twitter.com/GALLERY&gt;

  网址：&lt;https://gallery.so/&gt;
"><code>    简介：Gallery 是一个平台，可以在其中查看、策划、分享和发现您最喜爱的 NFT。 能够通过自己的作品表达自己，并与 NFT 社区中的其他成员建立联系。

  推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/GALLERY></span>

  网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//gallery.so/></span>
</code></pre><p>41、项目：Fractional</p><pre data-type="codeBlock" text="    简介：NFT碎片化铸造交易平台

    推特：&lt;https://twitter.com/fractional_art&gt;

  网址：&lt;https://fractional.art/&gt;

  投资机构：Paradigm、Variant等
"><code>    简介：NFT碎片化铸造交易平台

    推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/fractional_art></span>

  网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//fractional.art/></span>

  投资机构：Paradigm、Variant等
</code></pre><p>42、项目：ᴏɴᴄʏʙᴇʀ</p><pre data-type="codeBlock" text="     简介：3D 和 VR 体验式NFT一键展示平台

    推特：&lt;https://twitter.com/oncyber_io&gt;

  网址：&lt;https://oncyber.io/&gt;
"><code>     简介：3D 和 VR 体验式NFT一键展示平台

    推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/oncyber_io></span>

  网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//oncyber.io/></span>
</code></pre><p>43、项目：royal</p><pre data-type="codeBlock" text="     简介：音乐NFT平台

     推特：&lt;https://twitter.com/join_royal&gt;

     网址：&lt;https://royal.io/&gt;
"><code>     简介：音乐NFT平台

     推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/join_royal></span>

     网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//royal.io/></span>
</code></pre><p>44、项目：sound.xyz</p><pre data-type="codeBlock" text="     简介：音乐NFT平台，为艺术家构建 web3 工具

    推特：&lt;https://twitter.com/soundxyz_&gt;

    网址：&lt;https://www.sound.xyz/rubyred/too-late-to-call&gt;
"><code>     简介：音乐NFT平台，为艺术家构建 web3 工具

    推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/soundxyz_></span>

    网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//www.sound.xyz/rubyred/too-late-to-call></span>
</code></pre><p>45、项目：Arpeggi Labs</p><pre data-type="codeBlock" text="      简介：WEB3音乐创作平台

    推特：&lt;https://twitter.com/arpeggi_labs&gt;

    网址：&lt;https://www.arpeggi.io/&gt;
"><code>      简介：WEB3音乐创作平台

    推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/arpeggi_labs></span>

    网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//www.arpeggi.io/></span>
</code></pre><p>46、项目：Bonfida</p><pre data-type="codeBlock" text="     简介：sol 域名交易平台

     推特：&lt;https://twitter.com/bonfida&gt;

    网址：&lt;https://bonfida.org/#/&gt;

    合作机构：AKG、Alameda Research、Resident等
"><code><span class="hljs-code">     简介：sol 域名交易平台
</span>
<span class="hljs-code">     推特：&#x3C;https://twitter.com/bonfida>
</span>
<span class="hljs-code">    网址：&#x3C;https://bonfida.org/#/>
</span>
<span class="hljs-code">    合作机构：AKG、Alameda Research、Resident等
</span></code></pre><p>47、项目：Flowns</p><pre data-type="codeBlock" text="      简介：基于Flow构建的新一代去中心化域名服务平台。

     推特：&lt;https://twitter.com/flownsorg&gt;

      网址：&lt;https://www.flowns.org/zh&gt;
"><code>      简介：基于Flow构建的新一代去中心化域名服务平台。

     推特：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//twitter.com/flownsorg></span>

      网址：<span class="hljs-operator">&#x3C;</span>https:<span class="hljs-comment">//www.flowns.org/zh></span>
</code></pre><p>48、项目：unstoppable.x</p><pre data-type="codeBlock" text="      简介：NFT高级域名创建平台

      推特：&lt;https://twitter.com/unstoppableweb&gt;

     网址：&lt;https://linktr.ee/unstoppableweb&gt;

     投资机构：Draper、Coinbase、Ventures、Protocol Labs等
"><code><span class="hljs-code">      简介：NFT高级域名创建平台
</span>
<span class="hljs-code">      推特：&#x3C;https://twitter.com/unstoppableweb>
</span>
<span class="hljs-code">     网址：&#x3C;https://linktr.ee/unstoppableweb>
</span>
<span class="hljs-code">     投资机构：Draper、Coinbase、Ventures、Protocol Labs等
</span></code></pre>]]></content:encoded>
            <author>likizju@newsletter.paragraph.com (likizju)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/1d3bf8f6033f6ad6533fbb58deeffa5ca10ec5fcb5ecec559c5cd4402425f022.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[盘点2022年斩获大额融资的NFT平台]]></title>
            <link>https://paragraph.com/@likizju/2022-nft</link>
            <guid>gDnweY5YNNmF99EFdKZQ</guid>
            <pubDate>Wed, 23 Feb 2022 08:18:15 GMT</pubDate>
            <description><![CDATA[这些平台为何可以获得投资机构青睐，他们有什么共同点？原文标题：《一文概览新年至今拿到融资的 NFT 平台》原文作者：Jiawei（ Twitter: @Elegy4TheArcticMetaplexhttps://s3-us-west-2.amazonaws.com/secure.notion-static.com/ccf8bfeb-1b52-4416-b198-726701c07301/156c285e26089d6608b57c956e7893822b59b6ff.pngMetaplex 基金会于 1 月 18 日宣布获得 4600 万美元的战略投资，由 Multicoin Capital 和 Jump Crypto 领投。参投者包括 Solana Ventures、 Alameda Research、 Animoca Brands 等机构，以及包括 NBA 巨星乔丹、艾弗森在内的其他个人投资者。这笔资金将被用于扩大业务规模和为社区提供资金支持。 Metaplex 是 Solana 上的 NFT 基础设施协议，提供了一系列的工具和智能合约集成，旨在简化 NFT 的创建与发布。...]]></description>
            <content:encoded><![CDATA[<p>这些平台为何可以获得投资机构青睐，他们有什么共同点？</p><blockquote><p>原文标题：《一文概览新年至今拿到融资的 NFT 平台》</p></blockquote><blockquote><p>原文作者：Jiawei（</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/Elegy4TheArctic">Twitter: @Elegy4TheArctic</a></p></blockquote><h3 id="h-metaplex" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Metaplex</h3><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="">https://s3-us-west-2.amazonaws.com/secure.notion-static.com/ccf8bfeb-1b52-4416-b198-726701c07301/156c285e26089d6608b57c956e7893822b59b6ff.png</figcaption></figure><p>Metaplex 基金会于 1 月 18 日宣布获得 4600 万美元的战略投资，由 Multicoin Capital 和 Jump Crypto 领投。参投者包括 Solana Ventures、 Alameda Research、 Animoca Brands 等机构，以及包括 NBA 巨星乔丹、艾弗森在内的其他个人投资者。这笔资金将被用于扩大业务规模和为社区提供资金支持。</p><p>Metaplex 是 Solana 上的 NFT 基础设施协议，提供了一系列的工具和智能合约集成，旨在简化 NFT 的创建与发布。架构层面由 Token Metadata、Token Vault、Auction 和 Metaplex 四个合约集构成。主要提供如下产品：</p><ul><li><p>Storefront：通用的 NFT 标准，支持创建/铸造 NFT，一级/二级市场的 NFT 拍卖，以及钱包和 APP 中的 NFT 可视化。</p></li><li><p>Candy Machine v2：全链上的 NFT 分发程序，提供白名单管理、验证码集成等功能。</p></li></ul><p>此外，Metaplex 还支持公平启动、空投和 NFT 销毁等功能，在 GitHub 有 5,300 次 Fork。</p><p>Metaplex 于去年 6 月上线，迄今已有 85,000 个项目的 570 万个 NFT 被铸造，其中包括 Solana 上的热门 NFT 项目 Degen Ape Academy 和 Aurory，并有着超过 60 万的活跃藏家。将在今年推出 iOS 和 Android SDK。</p><h3 id="h-pixel-vault" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Pixel Vault</h3><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="">https://s3-us-west-2.amazonaws.com/secure.notion-static.com/0f689d3c-3857-4eee-9e92-a6b59ef0a0f0/dd4b5af508117287dfcbe45a8c3169947ce83069.png</figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="">https://s3-us-west-2.amazonaws.com/secure.notion-static.com/2c2c2164-5996-4b9f-882d-95f7360cb22c/4536d8c132840f492b21361f9582947a152ef342.png</figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="">https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b7b3170b-62c8-4e49-9432-4096b91ecebb/d0b7ff63e1cb174308b6033ef392914bd9eae28b.png</figcaption></figure><p>Pixel Vault 是一家 Web3 媒体公司，致力于为加密原生资产创作叙事，著名的 PUNKS Comic 和 MetaHero Universe 都是其打造的文化 IP。</p><p>PUNKS Comic 于去年 5 月 10 日上线，是首个基于 CryptoPunks 创作的 NFT 和数字漫画。目前在 OpenSea 上已有 5.3 万枚以太坊的交易量。</p><p>围绕 PUNKS Comic 还建立了对应的经济系统：</p><ul><li><p>销毁 PUNKS Comic NFT，获得 Pixel Vault Founder』s DAO NFT（目前地板价为 5 ETH，而 PUNKS Comic 的发售价仅为 0.2 ETH），享有其治理权和 Discord 的访问权限；</p></li><li><p>PUNKS Comic 持有者可以按 0.08 ETH 的价格购买 MintPass NFT，在推出新 IP MetaHero 时可直接进行一比一兑换。而 MetaHero 至今仍维持着接近 5 ETH 的地板价；</p></li><li><p>质押 PUNKS Comic 并获得 PUNKS Token，代表着漫画中出现的 16 个 CryptoPunks NFT 的部分所有权。</p></li></ul><p>Pixel Vault 于 2 月 2 日宣布完成 1 亿美元融资，本轮融资由 Velvet Sea Ventures 和 01 Advisors 参投。这笔资金将用于支持电视、电影和游戏项目的开发。</p><p>（01 Advisors 是一家由 Twitter 前首席执行官 Dick Costolo 和 Twitter 前首席运营官 Adam Bain 在 2018 年共同创立的风投公司。Velvet Sea Ventures 还投资了 Autograph 和 SuperRare）</p><h3 id="h-autograph" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Autograph</h3><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="">https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d88fad21-48e9-4b30-af83-9d82178ae915/ffe3caeb7aa68ce401ce2e5cf403509ddda4843e.png</figcaption></figure><p>Autograph 是一个集体育、娱乐和流行文化于一体的 NFT 平台，总部位于洛杉矶，由著名橄榄球球星、7 届超级碗冠军球员 Tom Brady 联合创办，致力于帮助体育运动员和艺人等发行他们的 NFT。</p><p>Tom Brady 持有一部分 FTX 的股份，自称加密货币的「big believer」，将加密社区的标志之一「激光眼」作为自己的推特头像。</p><p>这家 NFT 平台于今年 1 月 19 日获得 1.7 亿美元的 B 轮融资，由 a16z 和 Kleiner Perkins 领投，资金将被用于扩展 NFT 技术，并与体育和娱乐合作伙伴建立广泛的合作关系。</p><p>团队方面，Autograph 的 CEO Dillon Rosenblatt 来自 Apple Music，COO Ted Russell 担任过福克斯娱乐集团的执行副总裁，CMO Patrick Cassidy 是新百伦的品牌和市场总监。</p><p>Autograph 于 2021 年 4 月上线，与内容领域巨头狮门娱乐和体育娱乐公司 DraftKings 建立了合作关系，SBF 也在 Autograph 的执行董事会占有席位。去年 9 月底，高尔夫球巨星 Tiger Woods 就通过其平台发行了 10,000 枚 NFT。</p><h3 id="h-klktn" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">KLKTN</h3><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="">https://s3-us-west-2.amazonaws.com/secure.notion-static.com/817890ff-7bf4-4f67-aa92-17384a505a7f/3844a3479b166a584c277de4a435510c6c139528.png</figcaption></figure><p>KLKTN 于今年 1 月 26 日宣布完成 640 万美元融资，投资者包括 Animoca Brands、Dapper Labs 、软银前 CSO 兼董事会成员 Katsunori Sago 和 MIT 媒体实验室主管 Joi Ito 等。</p><p>KLKTN 是一个 NFT 艺术家平台和交易平台，总部设在香港，主打亚洲市场，旨在通过数字藏品连接音乐人、艺术家和粉丝，让音乐人和艺术家分享他们的幕后花絮和创作过程，并可以选择性地铸造成 NFT。去年 7 月，K-pop 明星禹成贤（Kevin Woo）在 KLKTN 上推出了单曲「Got it」。</p><p>团队方面，KLKTN 的 CEO Daisuke Iwase 是日本的金融科技企业家，毕业于哈佛商学院；首席创意官 Jeff Miyahara 是日韩唱片制作人和词曲作者；CTO Fabiano Soriani 曾在 Dapper 工作，参与了 CryptoKitties 和 Flow 的研发。</p><h3 id="h-closing-thoughts" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Closing Thoughts</h3><p>Metaplex 作为 Solana 上的 NFT 基础设施，提供 NFT 分发、白名单管理 Fair Launch 和空投等功能，几乎覆盖了 NFT 发行的全流程。在不少 DEX 推出一键发币/一键挖矿的功能之后，未来的 NFT 发行大概也会支持「低代码」或「无代码」的模式。</p><p>Pixel Vault 推出的经济激励使得旗下的 IP 除了文化传播效应之外，还创造了丰厚的回报。近期还与无聊猿合作，发行了限量版的第二期漫画。更多与头部 NFT 项目/社区的合作会使 IP 有着更丰富的外延和想象空间。</p><p>Autograph 和 KLKTN 均是 NFT 平台，分别专注于体育和艺术领域，在这两部分中有写到他们的核心团队背景。</p><p>因为 NFT 平台本身没有太多技术上的门槛，并且也不容易体现平台间的区分度，而更多需要回答「Why me」的问题。创始人和团队在体育和娱乐圈的资源无疑更加重要。</p><p>在调研以上项目信息时，偶然看到 a16z 合伙人 Chris Dixon 的一篇推文，其中提到「Web3 isn&apos;t just a tech movement. It&apos;s a cultural one」，深以为然。</p><p>本文介绍的四个项目中，Autograph 和 KLKTN 有着强劲的体育/娱乐背景，Pixel Vault 本身打造的就是加密社区的文化 IP，连基础设施层项目 Metaplex 背后也有乔丹和艾弗森的身影。</p><p>体育界与娱乐圈顶流纷纷投身于 NFT 领域，使 NFT「出圈」成为未来的必然趋势。</p><p><em>律动 BlockBeats 提醒，根据银保监会等五部门于 2018 年 8 月发布《关于防范以「虚拟货币」「区块链」名义进行非法集资的风险提示》的文件，请广大公众理性看待区块链，不要盲目相信天花乱坠的承诺，树立正确的货币观念和投资理念，切实提高风险意识；对发现的违法犯罪线索，可积极向有关部门举报反映。</em></p>]]></content:encoded>
            <author>likizju@newsletter.paragraph.com (likizju)</author>
        </item>
        <item>
            <title><![CDATA[Zebec raises $15 million to 'revolutionize payment processing' ]]></title>
            <link>https://paragraph.com/@likizju/zebec-raises-15-million-to-revolutionize-payment-processing</link>
            <guid>HY9mbqBELSV0hHcFdYHJ</guid>
            <pubDate>Wed, 23 Feb 2022 08:17:40 GMT</pubDate>
            <description><![CDATA[Zebec, a continuous settlement protocol on Solana, raised $15 million in Series A funding that included Solana Ventures, Coinbase and Circle Ventures. The funding round was led by Solana Ventures and Distributed Global. Other participants in the funding round include Lightspeed Venture Partners, Circle Ventures, Coinbase Ventures, Alameda Research, DST Global partners, Road Ventures, Global Founders Capital, BECO Capital, Greenoaks, GoldenTree, Asset Management, and 500 Startups. “We believe ...]]></description>
            <content:encoded><![CDATA[<p>Zebec, a continuous settlement protocol on Solana, raised $15 million in Series A funding that included Solana Ventures, Coinbase and Circle Ventures.</p><p>The funding round was led by Solana Ventures and Distributed Global. Other participants in the funding round include Lightspeed Venture Partners, Circle Ventures, Coinbase Ventures, Alameda Research, DST Global partners, Road Ventures, Global Founders Capital, BECO Capital, Greenoaks, GoldenTree, Asset Management, and 500 Startups.</p><p>“We believe Zebec is well-positioned to become a core primitive for a multitude of streaming money and payment applications,” said Johnny Steindorff, managing partner at Distributed Global. The capital raise comes just three months after the platform’s launch and seed round, bringing the total funding to $21 million.</p><h2 id="h-what-is-zebec" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What is Zebec?</h2><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://zebec.io/">Zebec</a> allows its users to stream payments. Something that was previously limited by our banking system because transactions were subject to fees and lumped together. This innovative way of processing payments opens up new possibilities. For example, authors can charge their readers by the page, and artists get paid instantly for every stream of their songs, but it’s not just beneficial for creators.</p><p>The ability to receive USDC by the second can also benefit hourly workers. The Protocol also offers workers the ability to cash out all of their money, automatically convert a portion of their pay check into major cryptocurrencies, or transfer funds to a compliant crypto IRA and 401k account. Since the protocol is built on Solana, transactions take only a few seconds, and the fees for a transaction are only a fraction of a cent.</p><h2 id="h-what-we-can-expect-in-2022" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What we can expect in 2022</h2><p>Sam Thapaliya, the founder of Zebec, was born during the civil war in Nepal and grew up without bank accounts. He hopes that with Zebec, he can help create a world where everyone has real-time access to capital. His efforts have not gone unnoticed, as Zebec recently became Solana’s first project to <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.solana.news/post/visa-enlists-zebec-to-its-fintech-fast-track-program">be accepted</a> into Visa’s prestigious FinTech Fast Track program, which supports innovative start-ups that are revolutionizing digital payments.</p><p>Thapaliya told Cryptonary that Zebec will use the funding to hire employees and create an ecosystem to help companies build on Zebec. More than 250 projects are already building various businesses on the Zebec protocol, but Thapaliya hopes to have doubled that number by the end of the year.</p>]]></content:encoded>
            <author>likizju@newsletter.paragraph.com (likizju)</author>
        </item>
        <item>
            <title><![CDATA[SFC/DISM]]></title>
            <link>https://paragraph.com/@likizju/sfc-dism</link>
            <guid>hxN9X5ZkyLCSZosuJoCh</guid>
            <pubDate>Sun, 09 Jan 2022 04:56:42 GMT</pubDate>
            <description><![CDATA[出现此情况前，您是否有执行任何操作，如果有请详细告知。 系统方面，建议您尝试执行以下方案扫描修复系统组件： 右击开始按钮>点击"命令提示符"（以管理员身份运行 ），输入： Dism /Online /Cleanup-Image /ScanHealth 这条命令将扫描全部系统文件并和官方系统文件对比，扫描计算机中的不一致情况。 Dism /Online /Cleanup-Image /CheckHealth 这条命令必须在前一条命令执行完以后，发现系统文件有损坏时使用。 DISM /Online /Cleanup-image /RestoreHealth 这条命令是把那些不同的系统文件还原成官方系统源文件。 完成后重启，无论以上是否成功，键入以下命令：sfc /SCANNOW]]></description>
            <content:encoded><![CDATA[<p>出现此情况前，您是否有执行任何操作，如果有请详细告知。</p><p>系统方面，建议您尝试执行以下方案扫描修复系统组件：</p><p>右击开始按钮&gt;点击&quot;命令提示符&quot;（以管理员身份运行 ），输入：</p><p>Dism /Online /Cleanup-Image /ScanHealth</p><p>这条命令将扫描全部系统文件并和官方系统文件对比，扫描计算机中的不一致情况。</p><p>Dism /Online /Cleanup-Image /CheckHealth</p><p>这条命令必须在前一条命令执行完以后，发现系统文件有损坏时使用。</p><p>DISM /Online /Cleanup-image /RestoreHealth</p><p>这条命令是把那些不同的系统文件还原成官方系统源文件。</p><p>完成后重启，无论以上是否成功，键入以下命令：sfc /SCANNOW</p>]]></content:encoded>
            <author>likizju@newsletter.paragraph.com (likizju)</author>
        </item>
        <item>
            <title><![CDATA[Linux Bonding配置手册

]]></title>
            <link>https://paragraph.com/@likizju/linux-bonding</link>
            <guid>vY79y0w1l5N8OvWGfpwk</guid>
            <pubDate>Thu, 11 Nov 2021 01:26:52 GMT</pubDate>
            <description><![CDATA[Linux Bonding配置手册bonding简介Linux bonding驱动提供了聚合多个网络接口成为一个单一逻辑接口的方法。对于重要的服务器， bonding可以通过hot standby来提供failover特性，提高系统的可靠性；而对于像文件服务器这样的对网络要求很高的场合,bonding可以极大的提高网络IO总带宽及性能。网络拓扑 |uplink uplink| +-----+----+ +-----+----+ | |堆叠 | | | switch A +--------------------------+ switch B | | | | | +-----+----+ +-----++---+ |port1 port1| | +-------+ | +-------------+ host1 +---------------+ eth0 +-------+ eth1 网络配置目前新版本Linux内核都已经内置bonding支持，只需要安装ifenslave后即可进行配置，以Debian为例。 106.2.49.195这台机器有2张网卡，现在需要做如下操作： e...]]></description>
            <content:encoded><![CDATA[<p>Linux Bonding配置手册</p><ol><li><p>bonding简介</p></li></ol><p>Linux bonding驱动提供了聚合多个网络接口成为一个单一逻辑接口的方法。对于重要的服务器， bonding可以通过hot standby来提供failover特性，提高系统的可靠性；而对于像文件服务器这样的对网络要求很高的场合,bonding可以极大的提高网络IO总带宽及性能。</p><ol><li><p>网络拓扑</p><pre data-type="codeBlock" text="         |uplink                         uplink|

   +-----+----+                          +-----+----+

   |          |堆叠                  |          |

   | switch A +--------------------------+ switch B |

   |          |                          |          |

   +-----+----+                          +-----++---+

         |port1                           port1|

         |             +-------+               |

         +-------------+ host1 +---------------+

                      eth0 +-------+ eth1
"><code>         <span class="hljs-operator">|</span>uplink                         uplink<span class="hljs-operator">|</span>

   <span class="hljs-operator">+</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">+</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">+</span>                          <span class="hljs-operator">+</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">+</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">+</span>

   <span class="hljs-operator">|</span>          <span class="hljs-operator">|</span>堆叠                  <span class="hljs-operator">|</span>          <span class="hljs-operator">|</span>

   <span class="hljs-operator">|</span> switch A <span class="hljs-operator">+</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">+</span> switch B <span class="hljs-operator">|</span>

   <span class="hljs-operator">|</span>          <span class="hljs-operator">|</span>                          <span class="hljs-operator">|</span>          <span class="hljs-operator">|</span>

   <span class="hljs-operator">+</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">+</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">+</span>                          <span class="hljs-operator">+</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">+</span><span class="hljs-operator">+</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">+</span>

         <span class="hljs-operator">|</span>port1                           port1<span class="hljs-operator">|</span>

         <span class="hljs-operator">|</span>             <span class="hljs-operator">+</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">+</span>               <span class="hljs-operator">|</span>

         <span class="hljs-operator">+</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">+</span> host1 <span class="hljs-operator">+</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">+</span>

                      eth0 <span class="hljs-operator">+</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">+</span> eth1
</code></pre></li><li><p>网络配置</p></li></ol><p>目前新版本Linux内核都已经内置bonding支持，只需要安装ifenslave后即可进行配置，以Debian为例。</p><p>106.2.49.195这台机器有2张网卡，现在需要做如下操作：</p><p>eth0和eth1 做bond，模式0 ，使用IP：106.2.49.195</p><p>编辑 /etc/network/interfaces ：</p><p>auto bond0</p><p>iface bond0 inet static</p><p>bond_slaves eth0 eth1</p><p>bond_mode balance-rr</p><p>bond_xmit_hash_policy layer2+3</p><p>bond_miimon 100</p><p>bond_downdelay 200</p><p>bond_updelay 200</p><p>address 106.2.49.195</p><p>netmask 255.255.255.0</p><p>gateway 106.2.49.1</p><p>重启网络后可以看到虚拟的网卡bond0， 在/sys/class/net/bond0/bonding下可以看到bond0的相关信息：如工作模式，当前状态等等。</p><ol><li><p>注意事项</p></li></ol><p>1）Bonding常用的模式有：</p><p>0或者balance-rr</p><p>1或者active-backup</p><p>4或者802.3ad</p><p>2）系统下做bonding时，要先将上联交换机对应端口配置成port-channel并且设定为对应的模式，不然无法正常工作。</p><p>downdelay</p><p>Specifies the time, in milliseconds, to wait before disabling</p><p>a slave after a link failure has been detected.This option</p><p>is only valid for the miimon link monitor.The downdelay</p><p>value should be a multiple of the miimon value; if not, it</p><p>will be rounded down to the nearest multiple.The default</p><pre data-type="codeBlock" text="     value is 0.
"><code>     <span class="hljs-keyword">value</span> <span class="hljs-keyword">is</span> <span class="hljs-number">0.</span>
</code></pre><p>lacp_rate</p><p>Option specifying the rate in which we&apos;ll ask our link partner</p><p>to transmit LACPDU packets in 802.3ad mode.Possible values</p><p>are:</p><p>slow or 0</p><pre data-type="codeBlock" text="      Request partner to transmit LACPDUs every 30 seconds
"><code>      Request partner <span class="hljs-selector-tag">to</span> transmit LACPDUs every <span class="hljs-number">30</span> seconds
</code></pre><p>fast or 1</p><pre data-type="codeBlock" text="      Request partner to transmit LACPDUs every 1 second
"><code>      Request partner <span class="hljs-keyword">to</span> transmit LACPDUs <span class="hljs-keyword">every</span> <span class="hljs-number">1</span> <span class="hljs-keyword">second</span>
</code></pre><p>The default is slow.</p><p>miimon</p><pre data-type="codeBlock" text="     Specifies the MII link monitoring frequency in milliseconds.

     This determines how often the link state of each slave is

     inspected for link failures.  A value of zero disables MII

     link monitoring.  A value of 100 is a good starting point.

     The use_carrier option, below, affects how the link state is

     determined.  See the High Availability section for additional

     information.  The default value is 0.
"><code>     Specifies the MII link monitoring frequency in milliseconds.

     This determines how often the link state of each slave <span class="hljs-keyword">is</span>

     inspected <span class="hljs-keyword">for</span> link failures.  A value of zero disables MII

     link monitoring.  A value of <span class="hljs-number">100</span> <span class="hljs-keyword">is</span> a good starting point.

     The use_carrier option, below, affects how the link state <span class="hljs-keyword">is</span>

     determined.  See the High Availability section <span class="hljs-keyword">for</span> additional

     information.  The default value <span class="hljs-keyword">is</span> <span class="hljs-number">0</span>.
</code></pre><p>mode</p><pre data-type="codeBlock" text="    Specifies one of the bonding policies. The default is
    balance-rr (round robin).  Possible values are:

    balance-rr or 0

           Round-robin policy: Transmit packets in sequential
           order from the first available slave through the
           last.  This mode provides load balancing and fault
           tolerance.

    active-backup or 1

           Active-backup policy: Only one slave in the bond is
           active.  A different slave becomes active if, and only
           if, the active slave fails.  The bond&apos;s MAC address is
           externally visible on only one port (network adapter)
           to avoid confusing the switch.

           In bonding version 2.6.2 or later, when a failover
           occurs in active-backup mode, bonding will issue one
           or more gratuitous ARPs on the newly active slave.
           One gratuitous ARP is issued for the bonding master
           interface and each VLAN interfaces configured above
           it, provided that the interface has at least one IP
           address configured.  Gratuitous ARPs issued for VLAN
           interfaces are tagged with the appropriate VLAN id.

           This mode provides fault tolerance.  The primary
           option, documented below, affects the behavior of this
           mode.

    balance-xor or 2

           XOR policy: Transmit based on the selected transmit
           hash policy.  The default policy is a simple [(source
            MAC address XOR&apos;d with destination MAC address XOR
           packet type ID) modulo slave count].  Alternate transmit
           policies may be selected via the xmit_hash_policy option,
           described below.

           This mode provides load balancing and fault tolerance.

    broadcast or 3

           Broadcast policy: transmits everything on all slave
           interfaces.  This mode provides fault tolerance.

    802.3ad or 4

           IEEE 802.3ad Dynamic link aggregation.  Creates
           aggregation groups that share the same speed and
           duplex settings.  Utilizes all slaves in the active
           aggregator according to the 802.3ad specification.

           Slave selection for outgoing traffic is done according
           to the transmit hash policy, which may be changed from
           the default simple XOR policy via the xmit_hash_policy
           option, documented below.  Note that not all transmit
           policies may be 802.3ad compliant, particularly in
           regards to the packet mis-ordering requirements of
           section 43.2.4 of the 802.3ad standard.  Differing
           peer implementations will have varying tolerances for
           noncompliance.

           Prerequisites:

           1. Ethtool support in the base drivers for retrieving
           the speed and duplex of each slave.

           2. A switch that supports IEEE 802.3ad Dynamic link
           aggregation.

           Most switches will require some type of configuration
           to enable 802.3ad mode.

    balance-tlb or 5

           Adaptive transmit load balancing: channel bonding that
           does not require any special switch support.

           In tlb_dynamic_lb=1 mode; the outgoing traffic is
           distributed according to the current load (computed
           relative to the speed) on each slave.

           In tlb_dynamic_lb=0 mode; the load balancing based on
           current load is disabled and the load is distributed
           only using the hash distribution.

           Incoming traffic is received by the current slave.
           If the receiving slave fails, another slave takes over
           the MAC address of the failed receiving slave.

           Prerequisite:

           Ethtool support in the base drivers for retrieving the
           speed of each slave.

    balance-alb or 6

           Adaptive load balancing: includes balance-tlb plus
           receive load balancing (rlb) for IPV4 traffic, and
           does not require any special switch support.  The
           receive load balancing is achieved by ARP negotiation.
           The bonding driver intercepts the ARP Replies sent by
           the local system on their way out and overwrites the
           source hardware address with the unique hardware
           address of one of the slaves in the bond such that
           different peers use different hardware addresses for
           the server.

           Receive traffic from connections created by the server
           is also balanced.  When the local system sends an ARP
           Request the bonding driver copies and saves the peer&apos;s
           IP information from the ARP packet.  When the ARP
           Reply arrives from the peer, its hardware address is
           retrieved and the bonding driver initiates an ARP
           reply to this peer assigning it to one of the slaves
           in the bond.  A problematic outcome of using ARP
           negotiation for balancing is that each time that an
           ARP request is broadcast it uses the hardware address
           of the bond.  Hence, peers learn the hardware address
           of the bond and the balancing of receive traffic
           collapses to the current slave.  This is handled by
           sending updates (ARP Replies) to all the peers with
           their individually assigned hardware address such that
           the traffic is redistributed.  Receive traffic is also
           redistributed when a new slave is added to the bond
           and when an inactive slave is re-activated.  The
           receive load is distributed sequentially (round robin)
           among the group of highest speed slaves in the bond.

           When a link is reconnected or a new slave joins the
           bond the receive traffic is redistributed among all
           active slaves in the bond by initiating ARP Replies
           with the selected MAC address to each of the
           clients. The updelay parameter (detailed below) must
           be set to a value equal or greater than the switch&apos;s
           forwarding delay so that the ARP Replies sent to the
           peers will not be blocked by the switch.

           Prerequisites:

           1. Ethtool support in the base drivers for retrieving
           the speed of each slave.

           2. Base driver support for setting the hardware
           address of a device while it is open.  This is
           required so that there will always be one slave in the
           team using the bond hardware address (the
           curr_active_slave) while having a unique hardware
           address for each slave in the bond.  If the
           curr_active_slave fails its hardware address is
           swapped with the new curr_active_slave that was
           chosen.
"><code>    Specifies one of the bonding policies. The default <span class="hljs-keyword">is</span>
    balance<span class="hljs-operator">-</span>rr (round robin).  Possible values are:

    balance<span class="hljs-operator">-</span>rr or <span class="hljs-number">0</span>

           Round<span class="hljs-operator">-</span>robin policy: Transmit packets in sequential
           order <span class="hljs-keyword">from</span> the first available slave through the
           last.  This mode provides load balancing and fault
           tolerance.

    active-backup or <span class="hljs-number">1</span>

           Active<span class="hljs-operator">-</span>backup policy: Only one slave in the bond <span class="hljs-keyword">is</span>
           active.  A different slave becomes active <span class="hljs-keyword">if</span>, and only
           <span class="hljs-keyword">if</span>, the active slave fails.  The bond<span class="hljs-string">'s MAC address is
           externally visible on only one port (network adapter)
           to avoid confusing the switch.

           In bonding version 2.6.2 or later, when a failover
           occurs in active-backup mode, bonding will issue one
           or more gratuitous ARPs on the newly active slave.
           One gratuitous ARP is issued for the bonding master
           interface and each VLAN interfaces configured above
           it, provided that the interface has at least one IP
           address configured.  Gratuitous ARPs issued for VLAN
           interfaces are tagged with the appropriate VLAN id.

           This mode provides fault tolerance.  The primary
           option, documented below, affects the behavior of this
           mode.

    balance-xor or 2

           XOR policy: Transmit based on the selected transmit
           hash policy.  The default policy is a simple [(source
            MAC address XOR'</span>d with destination MAC <span class="hljs-keyword">address</span> XOR
           packet <span class="hljs-keyword">type</span> ID) modulo slave count].  Alternate transmit
           policies may be selected via the xmit_hash_policy option,
           described below.

           This mode provides load balancing and fault tolerance.

    broadcast or <span class="hljs-number">3</span>

           Broadcast policy: transmits everything on all slave
           interfaces.  This mode provides fault tolerance.

    802.3ad or <span class="hljs-number">4</span>

           IEEE <span class="hljs-number">802</span>.3ad Dynamic link aggregation.  Creates
           aggregation groups that share the same speed and
           duplex settings.  Utilizes all slaves in the active
           aggregator according to the <span class="hljs-number">802</span>.3ad specification.

           Slave selection <span class="hljs-keyword">for</span> outgoing traffic <span class="hljs-keyword">is</span> done according
           to the transmit hash policy, which may be changed <span class="hljs-keyword">from</span>
           the default simple XOR policy via the xmit_hash_policy
           option, documented below.  Note that not all transmit
           policies may be <span class="hljs-number">802</span>.3ad compliant, particularly in
           regards to the packet mis<span class="hljs-operator">-</span>ordering requirements of
           section <span class="hljs-number">43.2</span><span class="hljs-number">.4</span> of the <span class="hljs-number">802</span>.3ad standard.  Differing
           peer implementations will have varying tolerances <span class="hljs-keyword">for</span>
           noncompliance.

           Prerequisites:

           <span class="hljs-number">1.</span> Ethtool support in the base drivers <span class="hljs-keyword">for</span> retrieving
           the speed and duplex of each slave.

           2. A switch that supports IEEE <span class="hljs-number">802</span>.3ad Dynamic link
           aggregation.

           Most switches will <span class="hljs-built_in">require</span> some <span class="hljs-keyword">type</span> of configuration
           to enable <span class="hljs-number">802</span>.3ad mode.

    <span class="hljs-built_in">balance</span>-tlb or <span class="hljs-number">5</span>

           Adaptive transmit load balancing: channel bonding that
           does not <span class="hljs-built_in">require</span> any special switch support.

           In tlb_dynamic_lb<span class="hljs-operator">=</span><span class="hljs-number">1</span> mode; the outgoing traffic <span class="hljs-keyword">is</span>
           distributed according to the current load (computed
           relative to the speed) on each slave.

           In tlb_dynamic_lb<span class="hljs-operator">=</span><span class="hljs-number">0</span> mode; the load balancing based on
           current load <span class="hljs-keyword">is</span> disabled and the load <span class="hljs-keyword">is</span> distributed
           only <span class="hljs-keyword">using</span> <span class="hljs-title">the</span> <span class="hljs-title">hash</span> <span class="hljs-title">distribution</span>.

           <span class="hljs-title">Incoming</span> <span class="hljs-title">traffic</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">received</span> <span class="hljs-title">by</span> <span class="hljs-title">the</span> <span class="hljs-title">current</span> <span class="hljs-title">slave</span>.
           <span class="hljs-title">If</span> <span class="hljs-title">the</span> <span class="hljs-title">receiving</span> <span class="hljs-title">slave</span> <span class="hljs-title">fails</span>, <span class="hljs-title">another</span> <span class="hljs-title">slave</span> <span class="hljs-title">takes</span> <span class="hljs-title">over</span>
           <span class="hljs-title">the</span> <span class="hljs-title">MAC</span> <span class="hljs-title"><span class="hljs-keyword">address</span></span> <span class="hljs-title">of</span> <span class="hljs-title">the</span> <span class="hljs-title">failed</span> <span class="hljs-title">receiving</span> <span class="hljs-title">slave</span>.

           <span class="hljs-title">Prerequisite</span>:

           <span class="hljs-title">Ethtool</span> <span class="hljs-title">support</span> <span class="hljs-title">in</span> <span class="hljs-title">the</span> <span class="hljs-title">base</span> <span class="hljs-title">drivers</span> <span class="hljs-title"><span class="hljs-keyword">for</span></span> <span class="hljs-title">retrieving</span> <span class="hljs-title">the</span>
           <span class="hljs-title">speed</span> <span class="hljs-title">of</span> <span class="hljs-title">each</span> <span class="hljs-title">slave</span>.

    <span class="hljs-title">balance</span><span class="hljs-operator">-</span><span class="hljs-title">alb</span> <span class="hljs-title">or</span> 6

           <span class="hljs-title">Adaptive</span> <span class="hljs-title">load</span> <span class="hljs-title">balancing</span>: <span class="hljs-title">includes</span> <span class="hljs-title">balance</span><span class="hljs-operator">-</span><span class="hljs-title">tlb</span> <span class="hljs-title">plus</span>
           <span class="hljs-title"><span class="hljs-keyword">receive</span></span> <span class="hljs-title">load</span> <span class="hljs-title">balancing</span> (<span class="hljs-title">rlb</span>) <span class="hljs-title"><span class="hljs-keyword">for</span></span> <span class="hljs-title">IPV4</span> <span class="hljs-title">traffic</span>, <span class="hljs-title">and</span>
           <span class="hljs-title">does</span> <span class="hljs-title">not</span> <span class="hljs-title"><span class="hljs-built_in">require</span></span> <span class="hljs-title">any</span> <span class="hljs-title">special</span> <span class="hljs-title">switch</span> <span class="hljs-title">support</span>.  <span class="hljs-title">The</span>
           <span class="hljs-title"><span class="hljs-keyword">receive</span></span> <span class="hljs-title">load</span> <span class="hljs-title">balancing</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">achieved</span> <span class="hljs-title">by</span> <span class="hljs-title">ARP</span> <span class="hljs-title">negotiation</span>.
           <span class="hljs-title">The</span> <span class="hljs-title">bonding</span> <span class="hljs-title">driver</span> <span class="hljs-title">intercepts</span> <span class="hljs-title">the</span> <span class="hljs-title">ARP</span> <span class="hljs-title">Replies</span> <span class="hljs-title">sent</span> <span class="hljs-title">by</span>
           <span class="hljs-title">the</span> <span class="hljs-title">local</span> <span class="hljs-title">system</span> <span class="hljs-title">on</span> <span class="hljs-title">their</span> <span class="hljs-title">way</span> <span class="hljs-title">out</span> <span class="hljs-title">and</span> <span class="hljs-title">overwrites</span> <span class="hljs-title">the</span>
           <span class="hljs-title">source</span> <span class="hljs-title">hardware</span> <span class="hljs-title"><span class="hljs-keyword">address</span></span> <span class="hljs-title">with</span> <span class="hljs-title">the</span> <span class="hljs-title">unique</span> <span class="hljs-title">hardware</span>
           <span class="hljs-title"><span class="hljs-keyword">address</span></span> <span class="hljs-title">of</span> <span class="hljs-title">one</span> <span class="hljs-title">of</span> <span class="hljs-title">the</span> <span class="hljs-title">slaves</span> <span class="hljs-title">in</span> <span class="hljs-title">the</span> <span class="hljs-title">bond</span> <span class="hljs-title">such</span> <span class="hljs-title">that</span>
           <span class="hljs-title">different</span> <span class="hljs-title">peers</span> <span class="hljs-title">use</span> <span class="hljs-title">different</span> <span class="hljs-title">hardware</span> <span class="hljs-title">addresses</span> <span class="hljs-title"><span class="hljs-keyword">for</span></span>
           <span class="hljs-title">the</span> <span class="hljs-title">server</span>.

           <span class="hljs-title">Receive</span> <span class="hljs-title">traffic</span> <span class="hljs-title"><span class="hljs-keyword">from</span></span> <span class="hljs-title">connections</span> <span class="hljs-title">created</span> <span class="hljs-title">by</span> <span class="hljs-title">the</span> <span class="hljs-title">server</span>
           <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">also</span> <span class="hljs-title">balanced</span>.  <span class="hljs-title">When</span> <span class="hljs-title">the</span> <span class="hljs-title">local</span> <span class="hljs-title">system</span> <span class="hljs-title">sends</span> <span class="hljs-title">an</span> <span class="hljs-title">ARP</span>
           <span class="hljs-title">Request</span> <span class="hljs-title">the</span> <span class="hljs-title">bonding</span> <span class="hljs-title">driver</span> <span class="hljs-title">copies</span> <span class="hljs-title">and</span> <span class="hljs-title">saves</span> <span class="hljs-title">the</span> <span class="hljs-title">peer</span>'<span class="hljs-title">s</span>
           <span class="hljs-title">IP</span> <span class="hljs-title">information</span> <span class="hljs-title"><span class="hljs-keyword">from</span></span> <span class="hljs-title">the</span> <span class="hljs-title">ARP</span> <span class="hljs-title">packet</span>.  <span class="hljs-title">When</span> <span class="hljs-title">the</span> <span class="hljs-title">ARP</span>
           <span class="hljs-title">Reply</span> <span class="hljs-title">arrives</span> <span class="hljs-title"><span class="hljs-keyword">from</span></span> <span class="hljs-title">the</span> <span class="hljs-title">peer</span>, <span class="hljs-title">its</span> <span class="hljs-title">hardware</span> <span class="hljs-title"><span class="hljs-keyword">address</span></span> <span class="hljs-title"><span class="hljs-keyword">is</span></span>
           <span class="hljs-title">retrieved</span> <span class="hljs-title">and</span> <span class="hljs-title">the</span> <span class="hljs-title">bonding</span> <span class="hljs-title">driver</span> <span class="hljs-title">initiates</span> <span class="hljs-title">an</span> <span class="hljs-title">ARP</span>
           <span class="hljs-title">reply</span> <span class="hljs-title">to</span> <span class="hljs-title"><span class="hljs-built_in">this</span></span> <span class="hljs-title">peer</span> <span class="hljs-title">assigning</span> <span class="hljs-title">it</span> <span class="hljs-title">to</span> <span class="hljs-title">one</span> <span class="hljs-title">of</span> <span class="hljs-title">the</span> <span class="hljs-title">slaves</span>
           <span class="hljs-title">in</span> <span class="hljs-title">the</span> <span class="hljs-title">bond</span>.  <span class="hljs-title">A</span> <span class="hljs-title">problematic</span> <span class="hljs-title">outcome</span> <span class="hljs-title">of</span> <span class="hljs-title"><span class="hljs-keyword">using</span></span> <span class="hljs-title">ARP</span>
           <span class="hljs-title">negotiation</span> <span class="hljs-title"><span class="hljs-keyword">for</span></span> <span class="hljs-title">balancing</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">that</span> <span class="hljs-title">each</span> <span class="hljs-title">time</span> <span class="hljs-title">that</span> <span class="hljs-title">an</span>
           <span class="hljs-title">ARP</span> <span class="hljs-title">request</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">broadcast</span> <span class="hljs-title">it</span> <span class="hljs-title">uses</span> <span class="hljs-title">the</span> <span class="hljs-title">hardware</span> <span class="hljs-title"><span class="hljs-keyword">address</span></span>
           <span class="hljs-title">of</span> <span class="hljs-title">the</span> <span class="hljs-title">bond</span>.  <span class="hljs-title">Hence</span>, <span class="hljs-title">peers</span> <span class="hljs-title">learn</span> <span class="hljs-title">the</span> <span class="hljs-title">hardware</span> <span class="hljs-title"><span class="hljs-keyword">address</span></span>
           <span class="hljs-title">of</span> <span class="hljs-title">the</span> <span class="hljs-title">bond</span> <span class="hljs-title">and</span> <span class="hljs-title">the</span> <span class="hljs-title">balancing</span> <span class="hljs-title">of</span> <span class="hljs-title"><span class="hljs-keyword">receive</span></span> <span class="hljs-title">traffic</span>
           <span class="hljs-title">collapses</span> <span class="hljs-title">to</span> <span class="hljs-title">the</span> <span class="hljs-title">current</span> <span class="hljs-title">slave</span>.  <span class="hljs-title">This</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">handled</span> <span class="hljs-title">by</span>
           <span class="hljs-title">sending</span> <span class="hljs-title">updates</span> (<span class="hljs-title">ARP</span> <span class="hljs-title">Replies</span>) <span class="hljs-title">to</span> <span class="hljs-title">all</span> <span class="hljs-title">the</span> <span class="hljs-title">peers</span> <span class="hljs-title">with</span>
           <span class="hljs-title">their</span> <span class="hljs-title">individually</span> <span class="hljs-title">assigned</span> <span class="hljs-title">hardware</span> <span class="hljs-title"><span class="hljs-keyword">address</span></span> <span class="hljs-title">such</span> <span class="hljs-title">that</span>
           <span class="hljs-title">the</span> <span class="hljs-title">traffic</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">redistributed</span>.  <span class="hljs-title">Receive</span> <span class="hljs-title">traffic</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">also</span>
           <span class="hljs-title">redistributed</span> <span class="hljs-title">when</span> <span class="hljs-title">a</span> <span class="hljs-title"><span class="hljs-keyword">new</span></span> <span class="hljs-title">slave</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">added</span> <span class="hljs-title">to</span> <span class="hljs-title">the</span> <span class="hljs-title">bond</span>
           <span class="hljs-title">and</span> <span class="hljs-title">when</span> <span class="hljs-title">an</span> <span class="hljs-title">inactive</span> <span class="hljs-title">slave</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">re</span><span class="hljs-operator">-</span><span class="hljs-title">activated</span>.  <span class="hljs-title">The</span>
           <span class="hljs-title"><span class="hljs-keyword">receive</span></span> <span class="hljs-title">load</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">distributed</span> <span class="hljs-title">sequentially</span> (<span class="hljs-title">round</span> <span class="hljs-title">robin</span>)
           <span class="hljs-title">among</span> <span class="hljs-title">the</span> <span class="hljs-title">group</span> <span class="hljs-title">of</span> <span class="hljs-title">highest</span> <span class="hljs-title">speed</span> <span class="hljs-title">slaves</span> <span class="hljs-title">in</span> <span class="hljs-title">the</span> <span class="hljs-title">bond</span>.

           <span class="hljs-title">When</span> <span class="hljs-title">a</span> <span class="hljs-title">link</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">reconnected</span> <span class="hljs-title">or</span> <span class="hljs-title">a</span> <span class="hljs-title"><span class="hljs-keyword">new</span></span> <span class="hljs-title">slave</span> <span class="hljs-title">joins</span> <span class="hljs-title">the</span>
           <span class="hljs-title">bond</span> <span class="hljs-title">the</span> <span class="hljs-title"><span class="hljs-keyword">receive</span></span> <span class="hljs-title">traffic</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">redistributed</span> <span class="hljs-title">among</span> <span class="hljs-title">all</span>
           <span class="hljs-title">active</span> <span class="hljs-title">slaves</span> <span class="hljs-title">in</span> <span class="hljs-title">the</span> <span class="hljs-title">bond</span> <span class="hljs-title">by</span> <span class="hljs-title">initiating</span> <span class="hljs-title">ARP</span> <span class="hljs-title">Replies</span>
           <span class="hljs-title">with</span> <span class="hljs-title">the</span> <span class="hljs-title">selected</span> <span class="hljs-title">MAC</span> <span class="hljs-title"><span class="hljs-keyword">address</span></span> <span class="hljs-title">to</span> <span class="hljs-title">each</span> <span class="hljs-title">of</span> <span class="hljs-title">the</span>
           <span class="hljs-title">clients</span>. <span class="hljs-title">The</span> <span class="hljs-title">updelay</span> <span class="hljs-title">parameter</span> (<span class="hljs-title">detailed</span> <span class="hljs-title">below</span>) <span class="hljs-title">must</span>
           <span class="hljs-title">be</span> <span class="hljs-title">set</span> <span class="hljs-title">to</span> <span class="hljs-title">a</span> <span class="hljs-title">value</span> <span class="hljs-title">equal</span> <span class="hljs-title">or</span> <span class="hljs-title">greater</span> <span class="hljs-title">than</span> <span class="hljs-title">the</span> <span class="hljs-title">switch</span>'<span class="hljs-title">s</span>
           <span class="hljs-title">forwarding</span> <span class="hljs-title">delay</span> <span class="hljs-title">so</span> <span class="hljs-title">that</span> <span class="hljs-title">the</span> <span class="hljs-title">ARP</span> <span class="hljs-title">Replies</span> <span class="hljs-title">sent</span> <span class="hljs-title">to</span> <span class="hljs-title">the</span>
           <span class="hljs-title">peers</span> <span class="hljs-title">will</span> <span class="hljs-title">not</span> <span class="hljs-title">be</span> <span class="hljs-title">blocked</span> <span class="hljs-title">by</span> <span class="hljs-title">the</span> <span class="hljs-title">switch</span>.

           <span class="hljs-title">Prerequisites</span>:

           1. <span class="hljs-title">Ethtool</span> <span class="hljs-title">support</span> <span class="hljs-title">in</span> <span class="hljs-title">the</span> <span class="hljs-title">base</span> <span class="hljs-title">drivers</span> <span class="hljs-title"><span class="hljs-keyword">for</span></span> <span class="hljs-title">retrieving</span>
           <span class="hljs-title">the</span> <span class="hljs-title">speed</span> <span class="hljs-title">of</span> <span class="hljs-title">each</span> <span class="hljs-title">slave</span>.

           2. <span class="hljs-title">Base</span> <span class="hljs-title">driver</span> <span class="hljs-title">support</span> <span class="hljs-title"><span class="hljs-keyword">for</span></span> <span class="hljs-title">setting</span> <span class="hljs-title">the</span> <span class="hljs-title">hardware</span>
           <span class="hljs-title"><span class="hljs-keyword">address</span></span> <span class="hljs-title">of</span> <span class="hljs-title">a</span> <span class="hljs-title">device</span> <span class="hljs-title"><span class="hljs-keyword">while</span></span> <span class="hljs-title">it</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">open</span>.  <span class="hljs-title">This</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span>
           <span class="hljs-title">required</span> <span class="hljs-title">so</span> <span class="hljs-title">that</span> <span class="hljs-title">there</span> <span class="hljs-title">will</span> <span class="hljs-title">always</span> <span class="hljs-title">be</span> <span class="hljs-title">one</span> <span class="hljs-title">slave</span> <span class="hljs-title">in</span> <span class="hljs-title">the</span>
           <span class="hljs-title">team</span> <span class="hljs-title"><span class="hljs-keyword">using</span></span> <span class="hljs-title">the</span> <span class="hljs-title">bond</span> <span class="hljs-title">hardware</span> <span class="hljs-title"><span class="hljs-keyword">address</span></span> (<span class="hljs-title">the</span>
           <span class="hljs-title">curr_active_slave</span>) <span class="hljs-title"><span class="hljs-keyword">while</span></span> <span class="hljs-title">having</span> <span class="hljs-title">a</span> <span class="hljs-title">unique</span> <span class="hljs-title">hardware</span>
           <span class="hljs-title"><span class="hljs-keyword">address</span></span> <span class="hljs-title"><span class="hljs-keyword">for</span></span> <span class="hljs-title">each</span> <span class="hljs-title">slave</span> <span class="hljs-title">in</span> <span class="hljs-title">the</span> <span class="hljs-title">bond</span>.  <span class="hljs-title">If</span> <span class="hljs-title">the</span>
           <span class="hljs-title">curr_active_slave</span> <span class="hljs-title">fails</span> <span class="hljs-title">its</span> <span class="hljs-title">hardware</span> <span class="hljs-title"><span class="hljs-keyword">address</span></span> <span class="hljs-title"><span class="hljs-keyword">is</span></span>
           <span class="hljs-title">swapped</span> <span class="hljs-title">with</span> <span class="hljs-title">the</span> <span class="hljs-title"><span class="hljs-keyword">new</span></span> <span class="hljs-title">curr_active_slave</span> <span class="hljs-title">that</span> <span class="hljs-title">was</span>
           <span class="hljs-title">chosen</span>.
</code></pre><p>updelay</p><pre data-type="codeBlock" text="    Specifies the time, in milliseconds, to wait before enabling a
    slave after a link recovery has been detected.  This option is
    only valid for the miimon link monitor.  The updelay value
    should be a multiple of the miimon value; if not, it will be
    rounded down to the nearest multiple.  The default value is 0.
"><code>    Specifies the time, in milliseconds, to wait before enabling a
    slave after a link recovery has been detected.  This option <span class="hljs-keyword">is</span>
    only valid <span class="hljs-keyword">for</span> the miimon link monitor.  The updelay value
    should be a multiple of the miimon value; <span class="hljs-keyword">if</span> not, it will be
    rounded down to the nearest multiple.  The default value <span class="hljs-keyword">is</span> <span class="hljs-number">0</span>.
</code></pre><p>use_carrier</p><pre data-type="codeBlock" text="    Specifies whether or not miimon should use MII or ETHTOOL
    ioctls vs. netif_carrier_ok() to determine the link
    status. The MII or ETHTOOL ioctls are less efficient and
    utilize a deprecated calling sequence within the kernel.  The
    netif_carrier_ok() relies on the device driver to maintain its
    state with netif_carrier_on/off; at this writing, most, but
    not all, device drivers support this facility.

    If bonding insists that the link is up when it should not be,
    it may be that your network device driver does not support
    netif_carrier_on/off.  The default state for netif_carrier is
    &quot;carrier on,&quot; so if a driver does not support netif_carrier,
    it will appear as if the link is always up.  In this case,
    setting use_carrier to 0 will cause bonding to revert to the
    MII / ETHTOOL ioctl method to determine the link state.

    A value of 1 enables the use of netif_carrier_ok(), a value of
    0 will use the deprecated MII / ETHTOOL ioctls.  The default
    value is 1.
"><code>    Specifies whether or not miimon should use MII or ETHTOOL
    ioctls vs. netif_carrier_ok() to determine the link
    status. The MII or ETHTOOL ioctls are less efficient and
    utilize a deprecated calling sequence within the kernel.  The
    netif_carrier_ok() relies on the device driver to maintain its
    state with netif_carrier_on<span class="hljs-operator">/</span>off; at <span class="hljs-built_in">this</span> writing, most, but
    not all, device drivers support <span class="hljs-built_in">this</span> facility.

    If bonding insists that the link <span class="hljs-keyword">is</span> up when it should not be,
    it may be that your network device driver does not support
    netif_carrier_on<span class="hljs-operator">/</span>off.  The default state <span class="hljs-keyword">for</span> netif_carrier <span class="hljs-keyword">is</span>
    <span class="hljs-string">"carrier on,"</span> so <span class="hljs-keyword">if</span> a driver does not support netif_carrier,
    it will appear <span class="hljs-keyword">as</span> <span class="hljs-keyword">if</span> the link <span class="hljs-keyword">is</span> always up.  In <span class="hljs-built_in">this</span> case,
    setting use_carrier to <span class="hljs-number">0</span> will cause bonding to <span class="hljs-keyword">revert</span> to the
    MII <span class="hljs-operator">/</span> ETHTOOL ioctl method to determine the link state.

    A value of <span class="hljs-number">1</span> enables the use of netif_carrier_ok(), a value of
    <span class="hljs-number">0</span> will use the deprecated MII <span class="hljs-operator">/</span> ETHTOOL ioctls.  The default
    value <span class="hljs-keyword">is</span> <span class="hljs-number">1.</span>
</code></pre><p>xmit_hash_policy</p><pre data-type="codeBlock" text="    Selects the transmit hash policy to use for slave selection in
    balance-xor, 802.3ad, and tlb modes.  Possible values are:

    layer2

           Uses XOR of hardware MAC addresses and packet type ID
           field to generate the hash. The formula is

           hash = source MAC XOR destination MAC XOR packet type ID
           slave number = hash modulo slave count

           This algorithm will place all traffic to a particular
           network peer on the same slave.

           This algorithm is 802.3ad compliant.

    layer2+3

           This policy uses a combination of layer2 and layer3
           protocol information to generate the hash.

           Uses XOR of hardware MAC addresses and IP addresses to
           generate the hash.  The formula is

           hash = source MAC XOR destination MAC XOR packet type ID
           hash = hash XOR source IP XOR destination IP
           hash = hash XOR (hash RSHIFT 16)
           hash = hash XOR (hash RSHIFT 8)
           And then hash is reduced modulo slave count.

           If the protocol is IPv6 then the source and destination
           addresses are first hashed using ipv6_addr_hash.

           This algorithm will place all traffic to a particular
           network peer on the same slave.  For non-IP traffic,
           the formula is the same as for the layer2 transmit
           hash policy.

           This policy is intended to provide a more balanced
           distribution of traffic than layer2 alone, especially
           in environments where a layer3 gateway device is
           required to reach most destinations.

           This algorithm is 802.3ad compliant.

    layer3+4

           This policy uses upper layer protocol information,
           when available, to generate the hash.  This allows for
           traffic to a particular network peer to span multiple
           slaves, although a single connection will not span
           multiple slaves.

           The formula for unfragmented TCP and UDP packets is

           hash = source port, destination port (as in the header)
           hash = hash XOR source IP XOR destination IP
           hash = hash XOR (hash RSHIFT 16)
           hash = hash XOR (hash RSHIFT 8)
           And then hash is reduced modulo slave count.

           If the protocol is IPv6 then the source and destination
           addresses are first hashed using ipv6_addr_hash.

           For fragmented TCP or UDP packets and all other IPv4 and
           IPv6 protocol traffic, the source and destination port
           information is omitted.  For non-IP traffic, the
           formula is the same as for the layer2 transmit hash
           policy.

           This algorithm is not fully 802.3ad compliant.  A
           single TCP or UDP conversation containing both
           fragmented and unfragmented packets will see packets
           striped across two interfaces.  This may result in out
           of order delivery.  Most traffic types will not meet
           this criteria, as TCP rarely fragments traffic, and
           most UDP traffic is not involved in extended
           conversations.  Other implementations of 802.3ad may
           or may not tolerate this noncompliance.

    encap2+3

           This policy uses the same formula as layer2+3 but it
           relies on skb_flow_dissect to obtain the header fields
           which might result in the use of inner headers if an
           encapsulation protocol is used. For example this will
           improve the performance for tunnel users because the
           packets will be distributed according to the encapsulated
           flows.

    encap3+4

           This policy uses the same formula as layer3+4 but it
           relies on skb_flow_dissect to obtain the header fields
           which might result in the use of inner headers if an
           encapsulation protocol is used. For example this will
           improve the performance for tunnel users because the
           packets will be distributed according to the encapsulated
           flows.

    The default value is layer2.  This option was added in bonding
    version 2.6.3.  In earlier versions of bonding, this parameter
    does not exist, and the layer2 policy is the only policy.  The
    layer2+3 value was added for bonding version 3.2.2.
"><code>    Selects the transmit hash policy to use <span class="hljs-keyword">for</span> slave selection in
    balance<span class="hljs-operator">-</span>xor, <span class="hljs-number">802</span>.3ad, and tlb modes.  Possible values are:

    layer2

           Uses XOR of hardware MAC addresses and packet <span class="hljs-keyword">type</span> ID
           field to generate the hash. The formula <span class="hljs-keyword">is</span>

           hash <span class="hljs-operator">=</span> source MAC XOR destination MAC XOR packet <span class="hljs-keyword">type</span> ID
           slave number <span class="hljs-operator">=</span> hash modulo slave count

           This algorithm will place all traffic to a particular
           network peer on the same slave.

           This algorithm <span class="hljs-keyword">is</span> <span class="hljs-number">802</span>.3ad compliant.

    layer2+<span class="hljs-number">3</span>

           This policy uses a combination of layer2 and layer3
           protocol information to generate the hash.

           Uses XOR of hardware MAC addresses and IP addresses to
           generate the hash.  The formula <span class="hljs-keyword">is</span>

           hash <span class="hljs-operator">=</span> source MAC XOR destination MAC XOR packet <span class="hljs-keyword">type</span> ID
           hash <span class="hljs-operator">=</span> hash XOR source IP XOR destination IP
           hash <span class="hljs-operator">=</span> hash XOR (hash RSHIFT <span class="hljs-number">16</span>)
           hash <span class="hljs-operator">=</span> hash XOR (hash RSHIFT <span class="hljs-number">8</span>)
           And then hash <span class="hljs-keyword">is</span> reduced modulo slave count.

           If the protocol <span class="hljs-keyword">is</span> IPv6 then the source and destination
           addresses are first hashed <span class="hljs-keyword">using</span> <span class="hljs-title">ipv6_addr_hash</span>.

           <span class="hljs-title">This</span> <span class="hljs-title">algorithm</span> <span class="hljs-title">will</span> <span class="hljs-title">place</span> <span class="hljs-title">all</span> <span class="hljs-title">traffic</span> <span class="hljs-title">to</span> <span class="hljs-title">a</span> <span class="hljs-title">particular</span>
           <span class="hljs-title">network</span> <span class="hljs-title">peer</span> <span class="hljs-title">on</span> <span class="hljs-title">the</span> <span class="hljs-title">same</span> <span class="hljs-title">slave</span>.  <span class="hljs-title">For</span> <span class="hljs-title">non</span><span class="hljs-operator">-</span><span class="hljs-title">IP</span> <span class="hljs-title">traffic</span>,
           <span class="hljs-title">the</span> <span class="hljs-title">formula</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">the</span> <span class="hljs-title">same</span> <span class="hljs-title"><span class="hljs-keyword">as</span></span> <span class="hljs-title"><span class="hljs-keyword">for</span></span> <span class="hljs-title">the</span> <span class="hljs-title">layer2</span> <span class="hljs-title">transmit</span>
           <span class="hljs-title">hash</span> <span class="hljs-title">policy</span>.

           <span class="hljs-title">This</span> <span class="hljs-title">policy</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">intended</span> <span class="hljs-title">to</span> <span class="hljs-title">provide</span> <span class="hljs-title">a</span> <span class="hljs-title">more</span> <span class="hljs-title">balanced</span>
           <span class="hljs-title">distribution</span> <span class="hljs-title">of</span> <span class="hljs-title">traffic</span> <span class="hljs-title">than</span> <span class="hljs-title">layer2</span> <span class="hljs-title">alone</span>, <span class="hljs-title">especially</span>
           <span class="hljs-title">in</span> <span class="hljs-title">environments</span> <span class="hljs-title">where</span> <span class="hljs-title">a</span> <span class="hljs-title">layer3</span> <span class="hljs-title">gateway</span> <span class="hljs-title">device</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span>
           <span class="hljs-title">required</span> <span class="hljs-title">to</span> <span class="hljs-title">reach</span> <span class="hljs-title">most</span> <span class="hljs-title">destinations</span>.

           <span class="hljs-title">This</span> <span class="hljs-title">algorithm</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> 802.3<span class="hljs-title">ad</span> <span class="hljs-title">compliant</span>.

    <span class="hljs-title">layer3</span><span class="hljs-operator">+</span>4

           <span class="hljs-title">This</span> <span class="hljs-title">policy</span> <span class="hljs-title">uses</span> <span class="hljs-title">upper</span> <span class="hljs-title">layer</span> <span class="hljs-title">protocol</span> <span class="hljs-title">information</span>,
           <span class="hljs-title">when</span> <span class="hljs-title">available</span>, <span class="hljs-title">to</span> <span class="hljs-title">generate</span> <span class="hljs-title">the</span> <span class="hljs-title">hash</span>.  <span class="hljs-title">This</span> <span class="hljs-title">allows</span> <span class="hljs-title"><span class="hljs-keyword">for</span></span>
           <span class="hljs-title">traffic</span> <span class="hljs-title">to</span> <span class="hljs-title">a</span> <span class="hljs-title">particular</span> <span class="hljs-title">network</span> <span class="hljs-title">peer</span> <span class="hljs-title">to</span> <span class="hljs-title">span</span> <span class="hljs-title">multiple</span>
           <span class="hljs-title">slaves</span>, <span class="hljs-title">although</span> <span class="hljs-title">a</span> <span class="hljs-title">single</span> <span class="hljs-title">connection</span> <span class="hljs-title">will</span> <span class="hljs-title">not</span> <span class="hljs-title">span</span>
           <span class="hljs-title">multiple</span> <span class="hljs-title">slaves</span>.

           <span class="hljs-title">The</span> <span class="hljs-title">formula</span> <span class="hljs-title"><span class="hljs-keyword">for</span></span> <span class="hljs-title">unfragmented</span> <span class="hljs-title">TCP</span> <span class="hljs-title">and</span> <span class="hljs-title">UDP</span> <span class="hljs-title">packets</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span>

           <span class="hljs-title">hash</span> <span class="hljs-operator">=</span> <span class="hljs-title">source</span> <span class="hljs-title">port</span>, <span class="hljs-title">destination</span> <span class="hljs-title">port</span> (<span class="hljs-title"><span class="hljs-keyword">as</span></span> <span class="hljs-title">in</span> <span class="hljs-title">the</span> <span class="hljs-title">header</span>)
           <span class="hljs-title">hash</span> <span class="hljs-operator">=</span> <span class="hljs-title">hash</span> <span class="hljs-title">XOR</span> <span class="hljs-title">source</span> <span class="hljs-title">IP</span> <span class="hljs-title">XOR</span> <span class="hljs-title">destination</span> <span class="hljs-title">IP</span>
           <span class="hljs-title">hash</span> <span class="hljs-operator">=</span> <span class="hljs-title">hash</span> <span class="hljs-title">XOR</span> (<span class="hljs-title">hash</span> <span class="hljs-title">RSHIFT</span> 16)
           <span class="hljs-title">hash</span> <span class="hljs-operator">=</span> <span class="hljs-title">hash</span> <span class="hljs-title">XOR</span> (<span class="hljs-title">hash</span> <span class="hljs-title">RSHIFT</span> 8)
           <span class="hljs-title">And</span> <span class="hljs-title">then</span> <span class="hljs-title">hash</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">reduced</span> <span class="hljs-title">modulo</span> <span class="hljs-title">slave</span> <span class="hljs-title">count</span>.

           <span class="hljs-title">If</span> <span class="hljs-title">the</span> <span class="hljs-title">protocol</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">IPv6</span> <span class="hljs-title">then</span> <span class="hljs-title">the</span> <span class="hljs-title">source</span> <span class="hljs-title">and</span> <span class="hljs-title">destination</span>
           <span class="hljs-title">addresses</span> <span class="hljs-title">are</span> <span class="hljs-title">first</span> <span class="hljs-title">hashed</span> <span class="hljs-title"><span class="hljs-keyword">using</span></span> <span class="hljs-title">ipv6_addr_hash</span>.

           <span class="hljs-title">For</span> <span class="hljs-title">fragmented</span> <span class="hljs-title">TCP</span> <span class="hljs-title">or</span> <span class="hljs-title">UDP</span> <span class="hljs-title">packets</span> <span class="hljs-title">and</span> <span class="hljs-title">all</span> <span class="hljs-title">other</span> <span class="hljs-title">IPv4</span> <span class="hljs-title">and</span>
           <span class="hljs-title">IPv6</span> <span class="hljs-title">protocol</span> <span class="hljs-title">traffic</span>, <span class="hljs-title">the</span> <span class="hljs-title">source</span> <span class="hljs-title">and</span> <span class="hljs-title">destination</span> <span class="hljs-title">port</span>
           <span class="hljs-title">information</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">omitted</span>.  <span class="hljs-title">For</span> <span class="hljs-title">non</span><span class="hljs-operator">-</span><span class="hljs-title">IP</span> <span class="hljs-title">traffic</span>, <span class="hljs-title">the</span>
           <span class="hljs-title">formula</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">the</span> <span class="hljs-title">same</span> <span class="hljs-title"><span class="hljs-keyword">as</span></span> <span class="hljs-title"><span class="hljs-keyword">for</span></span> <span class="hljs-title">the</span> <span class="hljs-title">layer2</span> <span class="hljs-title">transmit</span> <span class="hljs-title">hash</span>
           <span class="hljs-title">policy</span>.

           <span class="hljs-title">This</span> <span class="hljs-title">algorithm</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">not</span> <span class="hljs-title">fully</span> 802.3<span class="hljs-title">ad</span> <span class="hljs-title">compliant</span>.  <span class="hljs-title">A</span>
           <span class="hljs-title">single</span> <span class="hljs-title">TCP</span> <span class="hljs-title">or</span> <span class="hljs-title">UDP</span> <span class="hljs-title">conversation</span> <span class="hljs-title">containing</span> <span class="hljs-title">both</span>
           <span class="hljs-title">fragmented</span> <span class="hljs-title">and</span> <span class="hljs-title">unfragmented</span> <span class="hljs-title">packets</span> <span class="hljs-title">will</span> <span class="hljs-title">see</span> <span class="hljs-title">packets</span>
           <span class="hljs-title">striped</span> <span class="hljs-title">across</span> <span class="hljs-title">two</span> <span class="hljs-title">interfaces</span>.  <span class="hljs-title">This</span> <span class="hljs-title">may</span> <span class="hljs-title">result</span> <span class="hljs-title">in</span> <span class="hljs-title">out</span>
           <span class="hljs-title">of</span> <span class="hljs-title">order</span> <span class="hljs-title">delivery</span>.  <span class="hljs-title">Most</span> <span class="hljs-title">traffic</span> <span class="hljs-title">types</span> <span class="hljs-title">will</span> <span class="hljs-title">not</span> <span class="hljs-title">meet</span>
           <span class="hljs-title"><span class="hljs-built_in">this</span></span> <span class="hljs-title">criteria</span>, <span class="hljs-title"><span class="hljs-keyword">as</span></span> <span class="hljs-title">TCP</span> <span class="hljs-title">rarely</span> <span class="hljs-title">fragments</span> <span class="hljs-title">traffic</span>, <span class="hljs-title">and</span>
           <span class="hljs-title">most</span> <span class="hljs-title">UDP</span> <span class="hljs-title">traffic</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">not</span> <span class="hljs-title">involved</span> <span class="hljs-title">in</span> <span class="hljs-title">extended</span>
           <span class="hljs-title">conversations</span>.  <span class="hljs-title">Other</span> <span class="hljs-title">implementations</span> <span class="hljs-title">of</span> 802.3<span class="hljs-title">ad</span> <span class="hljs-title">may</span>
           <span class="hljs-title">or</span> <span class="hljs-title">may</span> <span class="hljs-title">not</span> <span class="hljs-title">tolerate</span> <span class="hljs-title"><span class="hljs-built_in">this</span></span> <span class="hljs-title">noncompliance</span>.

    <span class="hljs-title">encap2</span><span class="hljs-operator">+</span>3

           <span class="hljs-title">This</span> <span class="hljs-title">policy</span> <span class="hljs-title">uses</span> <span class="hljs-title">the</span> <span class="hljs-title">same</span> <span class="hljs-title">formula</span> <span class="hljs-title"><span class="hljs-keyword">as</span></span> <span class="hljs-title">layer2</span><span class="hljs-operator">+</span>3 <span class="hljs-title">but</span> <span class="hljs-title">it</span>
           <span class="hljs-title">relies</span> <span class="hljs-title">on</span> <span class="hljs-title">skb_flow_dissect</span> <span class="hljs-title">to</span> <span class="hljs-title">obtain</span> <span class="hljs-title">the</span> <span class="hljs-title">header</span> <span class="hljs-title">fields</span>
           <span class="hljs-title">which</span> <span class="hljs-title">might</span> <span class="hljs-title">result</span> <span class="hljs-title">in</span> <span class="hljs-title">the</span> <span class="hljs-title">use</span> <span class="hljs-title">of</span> <span class="hljs-title">inner</span> <span class="hljs-title">headers</span> <span class="hljs-title"><span class="hljs-keyword">if</span></span> <span class="hljs-title">an</span>
           <span class="hljs-title">encapsulation</span> <span class="hljs-title">protocol</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">used</span>. <span class="hljs-title">For</span> <span class="hljs-title">example</span> <span class="hljs-title"><span class="hljs-built_in">this</span></span> <span class="hljs-title">will</span>
           <span class="hljs-title">improve</span> <span class="hljs-title">the</span> <span class="hljs-title">performance</span> <span class="hljs-title"><span class="hljs-keyword">for</span></span> <span class="hljs-title">tunnel</span> <span class="hljs-title">users</span> <span class="hljs-title">because</span> <span class="hljs-title">the</span>
           <span class="hljs-title">packets</span> <span class="hljs-title">will</span> <span class="hljs-title">be</span> <span class="hljs-title">distributed</span> <span class="hljs-title">according</span> <span class="hljs-title">to</span> <span class="hljs-title">the</span> <span class="hljs-title">encapsulated</span>
           <span class="hljs-title">flows</span>.

    <span class="hljs-title">encap3</span><span class="hljs-operator">+</span>4

           <span class="hljs-title">This</span> <span class="hljs-title">policy</span> <span class="hljs-title">uses</span> <span class="hljs-title">the</span> <span class="hljs-title">same</span> <span class="hljs-title">formula</span> <span class="hljs-title"><span class="hljs-keyword">as</span></span> <span class="hljs-title">layer3</span><span class="hljs-operator">+</span>4 <span class="hljs-title">but</span> <span class="hljs-title">it</span>
           <span class="hljs-title">relies</span> <span class="hljs-title">on</span> <span class="hljs-title">skb_flow_dissect</span> <span class="hljs-title">to</span> <span class="hljs-title">obtain</span> <span class="hljs-title">the</span> <span class="hljs-title">header</span> <span class="hljs-title">fields</span>
           <span class="hljs-title">which</span> <span class="hljs-title">might</span> <span class="hljs-title">result</span> <span class="hljs-title">in</span> <span class="hljs-title">the</span> <span class="hljs-title">use</span> <span class="hljs-title">of</span> <span class="hljs-title">inner</span> <span class="hljs-title">headers</span> <span class="hljs-title"><span class="hljs-keyword">if</span></span> <span class="hljs-title">an</span>
           <span class="hljs-title">encapsulation</span> <span class="hljs-title">protocol</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">used</span>. <span class="hljs-title">For</span> <span class="hljs-title">example</span> <span class="hljs-title"><span class="hljs-built_in">this</span></span> <span class="hljs-title">will</span>
           <span class="hljs-title">improve</span> <span class="hljs-title">the</span> <span class="hljs-title">performance</span> <span class="hljs-title"><span class="hljs-keyword">for</span></span> <span class="hljs-title">tunnel</span> <span class="hljs-title">users</span> <span class="hljs-title">because</span> <span class="hljs-title">the</span>
           <span class="hljs-title">packets</span> <span class="hljs-title">will</span> <span class="hljs-title">be</span> <span class="hljs-title">distributed</span> <span class="hljs-title">according</span> <span class="hljs-title">to</span> <span class="hljs-title">the</span> <span class="hljs-title">encapsulated</span>
           <span class="hljs-title">flows</span>.

    <span class="hljs-title">The</span> <span class="hljs-title">default</span> <span class="hljs-title">value</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">layer2</span>.  <span class="hljs-title">This</span> <span class="hljs-title">option</span> <span class="hljs-title">was</span> <span class="hljs-title">added</span> <span class="hljs-title">in</span> <span class="hljs-title">bonding</span>
    <span class="hljs-title">version</span> 2.6.3.  <span class="hljs-title">In</span> <span class="hljs-title">earlier</span> <span class="hljs-title">versions</span> <span class="hljs-title">of</span> <span class="hljs-title">bonding</span>, <span class="hljs-title"><span class="hljs-built_in">this</span></span> <span class="hljs-title">parameter</span>
    <span class="hljs-title">does</span> <span class="hljs-title">not</span> <span class="hljs-title">exist</span>, <span class="hljs-title">and</span> <span class="hljs-title">the</span> <span class="hljs-title">layer2</span> <span class="hljs-title">policy</span> <span class="hljs-title"><span class="hljs-keyword">is</span></span> <span class="hljs-title">the</span> <span class="hljs-title">only</span> <span class="hljs-title">policy</span>.  <span class="hljs-title">The</span>
    <span class="hljs-title">layer2</span><span class="hljs-operator">+</span>3 <span class="hljs-title">value</span> <span class="hljs-title">was</span> <span class="hljs-title">added</span> <span class="hljs-title"><span class="hljs-keyword">for</span></span> <span class="hljs-title">bonding</span> <span class="hljs-title">version</span> 3.2.2.
</code></pre><h2 id="h-creating-and-destroying-bonds" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Creating and Destroying Bonds</h2><p>To add a new bond foo:</p><h1 id="h-echo-foo-greater-sysclassnetbondingmasters" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">echo +foo &gt; /sys/class/net/bonding_masters</h1><p>To remove an existing bond bar:</p><h1 id="h-echo-bar-greater-sysclassnetbondingmasters" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">echo -bar &gt; /sys/class/net/bonding_masters</h1><p>To show all existing bonds:</p><h1 id="h-cat-sysclassnetbondingmasters" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">cat /sys/class/net/bonding_masters</h1><p>Ref: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.kernel.org/doc/Documentation/networking/bonding.txt">https://www.kernel.org/doc/Documentation/networking/bonding.txt</a></p><p>bonding的模式：0-6，即：7种模式</p><p>第一种模式：mod=0 ，即：(balance-rr) Round-robin policy（平衡抡循环策略） 特点：传输数据包顺序是依次传输（即：第1个包走eth0，下一个包就走eth1....一直循环下去，直到最后一个传输完毕）， 此模式提供负载平衡和容错能力；但是我们知道如果一个连接或者会话的数据包从不同的接口发出的话，中途再经过不同的链路，在客户端很有可能会出现数据包无序到达的问题，而无序到达的数据包需要重新要求被发送，这样网络的吞吐量就会下降</p><p>第二种模式：mod=1，即： (active-backup) Active-backup policy（主-备份策略） 特点：只有一个设备处于活动状态，当 一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得，从外面看来，bond的MAC地址是唯一的，以避免switch(交换机)发生混乱。此模式只提供了容错能力；由此可见此算法的优点是可以提供高网络连接的可用性，但是它的资源利用率较低，只有一个接口处于工作状态，在有 N 个网络接口的情况下，资源利用率为1/N</p><p>第三种模式：mod=2，即：(balance-xor) XOR policy（平衡策略） 特点：基于指定的传输HASH策略传输数据包。缺省的策略是：(源MAC地址 XOR 目标MAC地址) % slave数量。其他的传输策略可以通过xmit_hash_policy选项指定，此模式提供负载平衡和容错能力</p><p>第四种模式：mod=3，即：broadcast（广播策略） 特点：在每个slave接口上传输每个数据包，此模式提供了容错能力</p><p>第五种模式：mod=4，即：(802.3ad) IEEE 802.3ad Dynamic link aggregation（IEEE 802.3ad 动态链接聚合） 特点：创建一个聚合组，它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。 外 出流量的slave选举是基于传输hash策略，该策略可以通过xmit_hash_policy选项从缺省的XOR策略改变到其他策略。需要注意的是， 并不是所有的传输策略都是802.3ad适应的，尤其考虑到在802.3ad标准43.2.4章节提及的包乱序问题。不同的实现可能会有不同的适应性。 必要条件： 条件1：ethtool支持获取每个slave的速率和双工设定 条件2：switch(交换机)支持IEEE 802.3ad Dynamic link aggregation 条件3：大多数switch(交换机)需要经过特定配置才能支持802.3ad模式</p><p>第六种模式：mod=5，即：(balance-tlb) Adaptive transmit load balancing（适配器传输负载均衡） 特点：不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载（根据速度计算）分配外出流量。如果正在接受数据的slave出故障了，另一个slave接管失败的slave的MAC地址。 该模式的必要条件：ethtool支持获取每个slave的速率</p><p>第七种模式：mod=6，即：(balance-alb) Adaptive load balancing（适配器适应性负载均衡） 特点：该模式包含了balance-tlb模式，同时加上针对IPV4流量的接收负载均衡(receive load balance, rlb)，而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答，并把源硬件地址改写为bond中某个slave的唯一硬件地址，从而使得不同的对端使用不同的硬件地址进行通信。 来 自服务器端的接收流量也会被均衡。当本机发送ARP请求时，bonding驱动把对端的IP信息从ARP包中复制并保存下来。当ARP应答从对端到达 时，bonding驱动把它的硬件地址提取出来，并发起一个ARP应答给bond中的某个slave。使用ARP协商进行负载均衡的一个问题是：每次广播 ARP请求时都会使用bond的硬件地址，因此对端学习到这个硬件地址后，接收流量将会全部刘翔当前的slave。这个问题通过给所有的对端发送更新 （ARP应答）来解决，应答中包含他们独一无二的硬件地址，从而导致流量重新分布。当新的slave加入到bond中时，或者某个未激活的slave重新 激活时，接收流量也要重新分布。接收的负载被顺序地分布（round robin）在bond中最高速的slave上 当某个链路被重新接上，或者 一个新的slave加入到bond中，接收流量在所有当前激活的slave中全部重新分配，通过使用指定的MAC地址给每个 client发起ARP应答。下面介绍的updelay参数必须被设置为某个大于等于switch(交换机)转发延时的值，从而保证发往对端的ARP应答 不会被switch(交换机)阻截。 必要条件： 条件1：ethtool支持获取每个slave的速率； 条件2：底层驱动支持设置 某个设备的硬件地址，从而使得总是有个slave(curr_active_slave)使用bond的硬件地址，同时保证每个bond 中的slave都有一个唯一的硬件地址。如果curr_active_slave出故障，它的硬件地址将会被新选出来的 curr_active_slave接管 其实mod=6与mod=0的区别：mod=6，先把eth0流量占满，再占eth1，....ethX；而mod=0的话，会发现2个口的流量都很稳定，基本一样的带宽。而mod=6，会发现第一个口流量很高，第2个口只占了小部分流量</p><p>来源： <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://wushank.blog.51cto.com/3489095/1147864">http://wushank.blog.51cto.com/3489095/1147864</a></p>]]></content:encoded>
            <author>likizju@newsletter.paragraph.com (likizju)</author>
        </item>
        <item>
            <title><![CDATA[Linux 使用SR-IOV时PF VF重命名解决方法
]]></title>
            <link>https://paragraph.com/@likizju/linux-sr-iov-pf-vf</link>
            <guid>xGCaN2J7OkoB4sW3jq4Y</guid>
            <pubDate>Thu, 11 Nov 2021 01:25:15 GMT</pubDate>
            <description><![CDATA[#Linux 使用SR-IOV时PF VF重命名解决方法 [TOC] ##背景 DELL R620 一块板载Broadcom网卡（双千兆，双万兆光口） 2块外接的INTEL PCIE双光口万兆网卡root@hk4-31:~# lspci -nn|grep -i net 01:00.0 Ethernet controller [0200]: Broadcom Corporation NetXtreme II BCM57800 1/10 Gigabit Ethernet [14e4:168a] (rev 10) 01:00.1 Ethernet controller [0200]: Broadcom Corporation NetXtreme II BCM57800 1/10 Gigabit Ethernet [14e4:168a] (rev 10) 01:00.2 Ethernet controller [0200]: Broadcom Corporation NetXtreme II BCM57800 1/10 Gigabit Ethernet [14e4:168a] (rev ...]]></description>
            <content:encoded><![CDATA[<p>#Linux 使用SR-IOV时PF VF重命名解决方法 [TOC] ##背景 DELL R620 一块板载Broadcom网卡（双千兆，双万兆光口） 2块外接的INTEL PCIE双光口万兆网卡</p><pre data-type="codeBlock" text="root@hk4-31:~# lspci -nn|grep -i net
01:00.0 Ethernet controller [0200]: Broadcom Corporation NetXtreme II BCM57800 1/10 Gigabit Ethernet [14e4:168a] (rev 10)
01:00.1 Ethernet controller [0200]: Broadcom Corporation NetXtreme II BCM57800 1/10 Gigabit Ethernet [14e4:168a] (rev 10)
01:00.2 Ethernet controller [0200]: Broadcom Corporation NetXtreme II BCM57800 1/10 Gigabit Ethernet [14e4:168a] (rev 10)
01:00.3 Ethernet controller [0200]: Broadcom Corporation NetXtreme II BCM57800 1/10 Gigabit Ethernet [14e4:168a] (rev 10)
04:00.0 Ethernet controller [0200]: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection [8086:10fb] (rev 01)
04:00.1 Ethernet controller [0200]: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection [8086:10fb] (rev 01)
41:00.0 Ethernet controller [0200]: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection [8086:10fb] (rev 01)
41:00.1 Ethernet controller [0200]: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection [8086:10fb] (rev 01)
"><code>root@hk4<span class="hljs-number">-31</span>:<span class="hljs-operator">~</span># lspci <span class="hljs-operator">-</span>nn<span class="hljs-operator">|</span>grep <span class="hljs-operator">-</span>i net
01:00<span class="hljs-number">.0</span> Ethernet controller [0200]: Broadcom Corporation NetXtreme II BCM57800 <span class="hljs-number">1</span><span class="hljs-operator">/</span><span class="hljs-number">10</span> Gigabit Ethernet [<span class="hljs-number">14e4</span>:168a] (rev <span class="hljs-number">10</span>)
01:00<span class="hljs-number">.1</span> Ethernet controller [0200]: Broadcom Corporation NetXtreme II BCM57800 <span class="hljs-number">1</span><span class="hljs-operator">/</span><span class="hljs-number">10</span> Gigabit Ethernet [<span class="hljs-number">14e4</span>:168a] (rev <span class="hljs-number">10</span>)
01:00<span class="hljs-number">.2</span> Ethernet controller [0200]: Broadcom Corporation NetXtreme II BCM57800 <span class="hljs-number">1</span><span class="hljs-operator">/</span><span class="hljs-number">10</span> Gigabit Ethernet [<span class="hljs-number">14e4</span>:168a] (rev <span class="hljs-number">10</span>)
01:00<span class="hljs-number">.3</span> Ethernet controller [0200]: Broadcom Corporation NetXtreme II BCM57800 <span class="hljs-number">1</span><span class="hljs-operator">/</span><span class="hljs-number">10</span> Gigabit Ethernet [<span class="hljs-number">14e4</span>:168a] (rev <span class="hljs-number">10</span>)
04:00<span class="hljs-number">.0</span> Ethernet controller [0200]: Intel Corporation 82599ES <span class="hljs-number">10</span><span class="hljs-operator">-</span>Gigabit SFI<span class="hljs-operator">/</span>SFP<span class="hljs-operator">+</span> Network Connection [<span class="hljs-number">8086</span>:10fb] (rev 01)
04:00<span class="hljs-number">.1</span> Ethernet controller [0200]: Intel Corporation 82599ES <span class="hljs-number">10</span><span class="hljs-operator">-</span>Gigabit SFI<span class="hljs-operator">/</span>SFP<span class="hljs-operator">+</span> Network Connection [<span class="hljs-number">8086</span>:10fb] (rev 01)
<span class="hljs-number">41</span>:00<span class="hljs-number">.0</span> Ethernet controller [0200]: Intel Corporation 82599ES <span class="hljs-number">10</span><span class="hljs-operator">-</span>Gigabit SFI<span class="hljs-operator">/</span>SFP<span class="hljs-operator">+</span> Network Connection [<span class="hljs-number">8086</span>:10fb] (rev 01)
<span class="hljs-number">41</span>:00<span class="hljs-number">.1</span> Ethernet controller [0200]: Intel Corporation 82599ES <span class="hljs-number">10</span><span class="hljs-operator">-</span>Gigabit SFI<span class="hljs-operator">/</span>SFP<span class="hljs-operator">+</span> Network Connection [<span class="hljs-number">8086</span>:10fb] (rev 01)
</code></pre><p>现在想使用其中一块外接INTEL网卡做VF给KVM虚拟机使用，要解决：</p><ul><li><p>只启用指定网卡的SR-IOV</p></li><li><p>VF产生后会和系统的网卡顺序混淆，使用时非常难找，因此需要重命名</p></li></ul><p>##VT-d及VF配置</p><ul><li><p>安装sysfsutils,并且指定外接其中一块网卡的2个端口才启用VF：</p></li></ul><pre data-type="codeBlock" text="bus/pci/devices/0000:04:00.0/sriov_numvfs = 8
bus/pci/devices/0000:04:00.1/sriov_numvfs = 8
"><code>bus<span class="hljs-operator">/</span>pci<span class="hljs-operator">/</span>devices<span class="hljs-operator">/</span>0000:04:00<span class="hljs-number">.0</span><span class="hljs-operator">/</span>sriov_numvfs <span class="hljs-operator">=</span> <span class="hljs-number">8</span>
bus<span class="hljs-operator">/</span>pci<span class="hljs-operator">/</span>devices<span class="hljs-operator">/</span>0000:04:00<span class="hljs-number">.1</span><span class="hljs-operator">/</span>sriov_numvfs <span class="hljs-operator">=</span> <span class="hljs-number">8</span>
</code></pre><ul><li><p>启用INTEL的VT-d，除了BIOS启用外还要修改GRUB启动参数</p></li></ul><pre data-type="codeBlock" text="GRUB_CMDLINE_LINUX=&quot;intel_iommu=on&quot;
"><code><span class="hljs-attr">GRUB_CMDLINE_LINUX</span>=<span class="hljs-string">"intel_iommu=on"</span>
</code></pre><p>后更新grub:</p><pre data-type="codeBlock" text="update-grub
"><code><span class="hljs-keyword">update</span><span class="hljs-operator">-</span>grub
</code></pre><p>重启后即可以看到：</p><pre data-type="codeBlock" text="01:00.0 Ethernet controller [0200]: Broadcom Corporation NetXtreme II BCM57800 1/10 Gigabit Ethernet [14e4:168a] (rev 10)
01:00.1 Ethernet controller [0200]: Broadcom Corporation NetXtreme II BCM57800 1/10 Gigabit Ethernet [14e4:168a] (rev 10)
01:00.2 Ethernet controller [0200]: Broadcom Corporation NetXtreme II BCM57800 1/10 Gigabit Ethernet [14e4:168a] (rev 10)
01:00.3 Ethernet controller [0200]: Broadcom Corporation NetXtreme II BCM57800 1/10 Gigabit Ethernet [14e4:168a] (rev 10)
04:00.0 Ethernet controller [0200]: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection [8086:10fb] (rev 01)
04:00.1 Ethernet controller [0200]: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection [8086:10fb] (rev 01)
04:10.0 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
04:10.1 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
04:10.2 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
04:10.3 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
04:10.4 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
04:10.5 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
04:10.6 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
04:10.7 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
04:11.0 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
04:11.1 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
04:11.2 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
04:11.3 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
04:11.4 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
04:11.5 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
04:11.6 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
04:11.7 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
41:00.0 Ethernet controller [0200]: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection [8086:10fb] (rev 01)
41:00.1 Ethernet controller [0200]: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection [8086:10fb] (rev 01)
"><code>01:00.0 Ethernet controller <span class="hljs-section">[0200]</span>: Broadcom Corporation NetXtreme II BCM57800 1/10 Gigabit Ethernet <span class="hljs-section">[14e4:168a]</span> (rev 10)
01:00.1 Ethernet controller <span class="hljs-section">[0200]</span>: Broadcom Corporation NetXtreme II BCM57800 1/10 Gigabit Ethernet <span class="hljs-section">[14e4:168a]</span> (rev 10)
01:00.2 Ethernet controller <span class="hljs-section">[0200]</span>: Broadcom Corporation NetXtreme II BCM57800 1/10 Gigabit Ethernet <span class="hljs-section">[14e4:168a]</span> (rev 10)
01:00.3 Ethernet controller <span class="hljs-section">[0200]</span>: Broadcom Corporation NetXtreme II BCM57800 1/10 Gigabit Ethernet <span class="hljs-section">[14e4:168a]</span> (rev 10)
04:00.0 Ethernet controller <span class="hljs-section">[0200]</span>: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection <span class="hljs-section">[8086:10fb]</span> (rev 01)
04:00.1 Ethernet controller <span class="hljs-section">[0200]</span>: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection <span class="hljs-section">[8086:10fb]</span> (rev 01)
04:10.0 Ethernet controller <span class="hljs-section">[0200]</span>: Intel Corporation 82599 Ethernet Controller Virtual Function <span class="hljs-section">[8086:10ed]</span> (rev 01)
04:10.1 Ethernet controller <span class="hljs-section">[0200]</span>: Intel Corporation 82599 Ethernet Controller Virtual Function <span class="hljs-section">[8086:10ed]</span> (rev 01)
04:10.2 Ethernet controller <span class="hljs-section">[0200]</span>: Intel Corporation 82599 Ethernet Controller Virtual Function <span class="hljs-section">[8086:10ed]</span> (rev 01)
04:10.3 Ethernet controller <span class="hljs-section">[0200]</span>: Intel Corporation 82599 Ethernet Controller Virtual Function <span class="hljs-section">[8086:10ed]</span> (rev 01)
04:10.4 Ethernet controller <span class="hljs-section">[0200]</span>: Intel Corporation 82599 Ethernet Controller Virtual Function <span class="hljs-section">[8086:10ed]</span> (rev 01)
04:10.5 Ethernet controller <span class="hljs-section">[0200]</span>: Intel Corporation 82599 Ethernet Controller Virtual Function <span class="hljs-section">[8086:10ed]</span> (rev 01)
04:10.6 Ethernet controller <span class="hljs-section">[0200]</span>: Intel Corporation 82599 Ethernet Controller Virtual Function <span class="hljs-section">[8086:10ed]</span> (rev 01)
04:10.7 Ethernet controller <span class="hljs-section">[0200]</span>: Intel Corporation 82599 Ethernet Controller Virtual Function <span class="hljs-section">[8086:10ed]</span> (rev 01)
04:11.0 Ethernet controller <span class="hljs-section">[0200]</span>: Intel Corporation 82599 Ethernet Controller Virtual Function <span class="hljs-section">[8086:10ed]</span> (rev 01)
04:11.1 Ethernet controller <span class="hljs-section">[0200]</span>: Intel Corporation 82599 Ethernet Controller Virtual Function <span class="hljs-section">[8086:10ed]</span> (rev 01)
04:11.2 Ethernet controller <span class="hljs-section">[0200]</span>: Intel Corporation 82599 Ethernet Controller Virtual Function <span class="hljs-section">[8086:10ed]</span> (rev 01)
04:11.3 Ethernet controller <span class="hljs-section">[0200]</span>: Intel Corporation 82599 Ethernet Controller Virtual Function <span class="hljs-section">[8086:10ed]</span> (rev 01)
04:11.4 Ethernet controller <span class="hljs-section">[0200]</span>: Intel Corporation 82599 Ethernet Controller Virtual Function <span class="hljs-section">[8086:10ed]</span> (rev 01)
04:11.5 Ethernet controller <span class="hljs-section">[0200]</span>: Intel Corporation 82599 Ethernet Controller Virtual Function <span class="hljs-section">[8086:10ed]</span> (rev 01)
04:11.6 Ethernet controller <span class="hljs-section">[0200]</span>: Intel Corporation 82599 Ethernet Controller Virtual Function <span class="hljs-section">[8086:10ed]</span> (rev 01)
04:11.7 Ethernet controller <span class="hljs-section">[0200]</span>: Intel Corporation 82599 Ethernet Controller Virtual Function <span class="hljs-section">[8086:10ed]</span> (rev 01)
41:00.0 Ethernet controller <span class="hljs-section">[0200]</span>: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection <span class="hljs-section">[8086:10fb]</span> (rev 01)
41:00.1 Ethernet controller <span class="hljs-section">[0200]</span>: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection <span class="hljs-section">[8086:10fb]</span> (rev 01)
</code></pre><p>##UDEV修改解决网卡重命名问题 脚本，用于查看系统网卡及udev:</p><pre data-type="codeBlock" text="#!/bin/sh

nets=$(ifconfig -a|grep -E &apos;eth|vf|pf&apos; |awk &apos;{print $1}&apos;)

for i in $nets
do
        driver=$(ethtool -i $i|grep driver)
        bus=$(ethtool -i $i|grep bus-in)
        link=$(ethtool $i | grep &apos;Link det&apos;)
        speed=$(ethtool  $i|grep &apos;Speed&apos;)
        echo &quot;$i        $driver         $bus    $link   $speed&quot;
done | column -t



regexp=&apos;looking at parent device.*\/devices\/pci[0-9]+:[0-9]+\/[0-9]+:[0-9]+:[0-9]+.[0-9]+\/[0-9]+:[0-9]+:[0-9]+\.[0-9]+&apos;
nics=$(ls -d /sys/class/net/eth* /sys/class/net/pf* /sys/class/net/vf*)
for nic in $nics
do
        udevadm info -a $nic | grep -A3 -E &quot;$regexp&quot;|tail -n3|tr &apos;\n&apos; &apos;\t&apos;
        i=$(echo $nic | cut -d &apos;/&apos; -f5)
        echo &quot;NAME=\&quot;$i\&quot;&quot;
done
"><code>#<span class="hljs-operator">!</span><span class="hljs-operator">/</span>bin<span class="hljs-operator">/</span>sh

nets<span class="hljs-operator">=</span>$(ifconfig <span class="hljs-operator">-</span>a<span class="hljs-operator">|</span>grep <span class="hljs-operator">-</span>E <span class="hljs-string">'eth|vf|pf'</span> <span class="hljs-operator">|</span>awk <span class="hljs-string">'{print $1}'</span>)

<span class="hljs-keyword">for</span> i in $nets
do
        driver<span class="hljs-operator">=</span>$(ethtool <span class="hljs-operator">-</span>i $i<span class="hljs-operator">|</span>grep driver)
        bus<span class="hljs-operator">=</span>$(ethtool <span class="hljs-operator">-</span>i $i<span class="hljs-operator">|</span>grep bus<span class="hljs-operator">-</span>in)
        link<span class="hljs-operator">=</span>$(ethtool $i <span class="hljs-operator">|</span> grep <span class="hljs-string">'Link det'</span>)
        speed<span class="hljs-operator">=</span>$(ethtool  $i<span class="hljs-operator">|</span>grep <span class="hljs-string">'Speed'</span>)
        echo <span class="hljs-string">"$i        $driver         $bus    $link   $speed"</span>
done <span class="hljs-operator">|</span> column <span class="hljs-operator">-</span>t



regexp<span class="hljs-operator">=</span><span class="hljs-string">'looking at parent device.*\/devices\/pci[0-9]+:[0-9]+\/[0-9]+:[0-9]+:[0-9]+.[0-9]+\/[0-9]+:[0-9]+:[0-9]+\.[0-9]+'</span>
nics<span class="hljs-operator">=</span>$(ls <span class="hljs-operator">-</span>d <span class="hljs-operator">/</span>sys<span class="hljs-operator">/</span>class<span class="hljs-operator">/</span>net<span class="hljs-operator">/</span>eth<span class="hljs-operator">*</span> <span class="hljs-operator">/</span>sys<span class="hljs-operator">/</span>class<span class="hljs-operator">/</span>net<span class="hljs-operator">/</span>pf<span class="hljs-operator">*</span> <span class="hljs-operator">/</span>sys<span class="hljs-operator">/</span>class<span class="hljs-operator">/</span>net<span class="hljs-operator">/</span>vf<span class="hljs-operator">*</span>)
<span class="hljs-keyword">for</span> nic in $nics
do
        udevadm info <span class="hljs-operator">-</span>a $nic <span class="hljs-operator">|</span> grep <span class="hljs-operator">-</span>A3 <span class="hljs-operator">-</span>E <span class="hljs-string">"$regexp"</span><span class="hljs-operator">|</span>tail <span class="hljs-operator">-</span>n3<span class="hljs-operator">|</span>tr <span class="hljs-string">'\n'</span> <span class="hljs-string">'\t'</span>
        i<span class="hljs-operator">=</span>$(echo $nic <span class="hljs-operator">|</span> cut <span class="hljs-operator">-</span>d <span class="hljs-string">'/'</span> <span class="hljs-operator">-</span>f5)
        echo <span class="hljs-string">"NAME=\"$i\""</span>
done
</code></pre><p>查看目前的结果：</p><pre data-type="codeBlock" text="eth0    driver: bnx2x           bus-info: 0000:01:00.0          Speed: 10000Mb/s
eth1    driver: bnx2x           bus-info: 0000:01:00.1          Speed: 10000Mb/s
eth3    driver: bnx2x           bus-info: 0000:01:00.2          Speed: 1000Mb/s
eth4    driver: bnx2x           bus-info: 0000:01:00.3          Speed: 1000Mb/s
eth8    driver: ixgbevf         bus-info: 0000:04:11.0          Speed: Unknown!
eth9    driver: ixgbevf         bus-info: 0000:04:10.2          Speed: Unknown!
eth10   driver: ixgbevf         bus-info: 0000:04:10.4          Speed: Unknown!
eth11   driver: ixgbevf         bus-info: 0000:04:10.6          Speed: Unknown!
eth12   driver: ixgbevf         bus-info: 0000:04:10.0          Speed: Unknown!
eth13   driver: ixgbevf         bus-info: 0000:04:11.2          Speed: Unknown!
eth14   driver: ixgbevf         bus-info: 0000:04:11.4          Speed: Unknown!
eth15   driver: ixgbevf         bus-info: 0000:04:11.6          Speed: Unknown!
eth16   driver: ixgbevf         bus-info: 0000:04:10.1          Speed: Unknown!
eth17   driver: ixgbevf         bus-info: 0000:04:10.3          Speed: Unknown!
eth18   driver: ixgbevf         bus-info: 0000:04:10.5          Speed: Unknown!
eth19   driver: ixgbevf         bus-info: 0000:04:10.7          Speed: Unknown!
eth20   driver: ixgbevf         bus-info: 0000:04:11.1          Speed: Unknown!
eth21   driver: ixgbevf         bus-info: 0000:04:11.3          Speed: Unknown!
eth22   driver: ixgbevf         bus-info: 0000:04:11.5          Speed: Unknown!
eth23   driver: ixgbevf         bus-info: 0000:04:11.7          Speed: Unknown!
"><code>eth0    driver: bnx2x           bus<span class="hljs-operator">-</span>info: 0000:01:00<span class="hljs-number">.0</span>          Speed: 10000Mb<span class="hljs-operator">/</span>s
eth1    driver: bnx2x           bus<span class="hljs-operator">-</span>info: 0000:01:00<span class="hljs-number">.1</span>          Speed: 10000Mb<span class="hljs-operator">/</span>s
eth3    driver: bnx2x           bus<span class="hljs-operator">-</span>info: 0000:01:00<span class="hljs-number">.2</span>          Speed: 1000Mb<span class="hljs-operator">/</span>s
eth4    driver: bnx2x           bus<span class="hljs-operator">-</span>info: 0000:01:00<span class="hljs-number">.3</span>          Speed: 1000Mb<span class="hljs-operator">/</span>s
eth8    driver: ixgbevf         bus<span class="hljs-operator">-</span>info: 0000:04:<span class="hljs-number">11.0</span>          Speed: Unknown<span class="hljs-operator">!</span>
eth9    driver: ixgbevf         bus<span class="hljs-operator">-</span>info: 0000:04:<span class="hljs-number">10.2</span>          Speed: Unknown<span class="hljs-operator">!</span>
eth10   driver: ixgbevf         bus<span class="hljs-operator">-</span>info: 0000:04:<span class="hljs-number">10.4</span>          Speed: Unknown<span class="hljs-operator">!</span>
eth11   driver: ixgbevf         bus<span class="hljs-operator">-</span>info: 0000:04:<span class="hljs-number">10.6</span>          Speed: Unknown<span class="hljs-operator">!</span>
eth12   driver: ixgbevf         bus<span class="hljs-operator">-</span>info: 0000:04:<span class="hljs-number">10.0</span>          Speed: Unknown<span class="hljs-operator">!</span>
eth13   driver: ixgbevf         bus<span class="hljs-operator">-</span>info: 0000:04:<span class="hljs-number">11.2</span>          Speed: Unknown<span class="hljs-operator">!</span>
eth14   driver: ixgbevf         bus<span class="hljs-operator">-</span>info: 0000:04:<span class="hljs-number">11.4</span>          Speed: Unknown<span class="hljs-operator">!</span>
eth15   driver: ixgbevf         bus<span class="hljs-operator">-</span>info: 0000:04:<span class="hljs-number">11.6</span>          Speed: Unknown<span class="hljs-operator">!</span>
eth16   driver: ixgbevf         bus<span class="hljs-operator">-</span>info: 0000:04:<span class="hljs-number">10.1</span>          Speed: Unknown<span class="hljs-operator">!</span>
eth17   driver: ixgbevf         bus<span class="hljs-operator">-</span>info: 0000:04:<span class="hljs-number">10.3</span>          Speed: Unknown<span class="hljs-operator">!</span>
eth18   driver: ixgbevf         bus<span class="hljs-operator">-</span>info: 0000:04:<span class="hljs-number">10.5</span>          Speed: Unknown<span class="hljs-operator">!</span>
eth19   driver: ixgbevf         bus<span class="hljs-operator">-</span>info: 0000:04:<span class="hljs-number">10.7</span>          Speed: Unknown<span class="hljs-operator">!</span>
eth20   driver: ixgbevf         bus<span class="hljs-operator">-</span>info: 0000:04:<span class="hljs-number">11.1</span>          Speed: Unknown<span class="hljs-operator">!</span>
eth21   driver: ixgbevf         bus<span class="hljs-operator">-</span>info: 0000:04:<span class="hljs-number">11.3</span>          Speed: Unknown<span class="hljs-operator">!</span>
eth22   driver: ixgbevf         bus<span class="hljs-operator">-</span>info: 0000:04:<span class="hljs-number">11.5</span>          Speed: Unknown<span class="hljs-operator">!</span>
eth23   driver: ixgbevf         bus<span class="hljs-operator">-</span>info: 0000:04:<span class="hljs-number">11.7</span>          Speed: Unknown<span class="hljs-operator">!</span>
</code></pre><pre data-type="codeBlock" text=" KERNELS==&quot;0000:01:00.0&quot; SUBSYSTEMS==&quot;pci&quot; DRIVERS==&quot;bnx2x&quot; NAME=&quot;eth0&quot;
KERNELS==&quot;0000:01:00.1&quot; SUBSYSTEMS==&quot;pci&quot; DRIVERS==&quot;bnx2x&quot; NAME=&quot;eth1&quot;
KERNELS==&quot;0000:04:10.4&quot; SUBSYSTEMS==&quot;pci&quot; DRIVERS==&quot;ixgbevf&quot; NAME=&quot;eth10&quot;
KERNELS==&quot;0000:04:10.6&quot; SUBSYSTEMS==&quot;pci&quot; DRIVERS==&quot;ixgbevf&quot; NAME=&quot;eth11&quot;
KERNELS==&quot;0000:04:11.2&quot; SUBSYSTEMS==&quot;pci&quot; DRIVERS==&quot;ixgbevf&quot; NAME=&quot;eth13&quot;
KERNELS==&quot;0000:04:11.4&quot; SUBSYSTEMS==&quot;pci&quot; DRIVERS==&quot;ixgbevf&quot; NAME=&quot;eth14&quot;
KERNELS==&quot;0000:04:11.6&quot; SUBSYSTEMS==&quot;pci&quot; DRIVERS==&quot;ixgbevf&quot; NAME=&quot;eth15&quot;
KERNELS==&quot;0000:04:10.1&quot; SUBSYSTEMS==&quot;pci&quot; DRIVERS==&quot;ixgbevf&quot; NAME=&quot;eth16&quot;
KERNELS==&quot;0000:04:10.3&quot; SUBSYSTEMS==&quot;pci&quot; DRIVERS==&quot;ixgbevf&quot; NAME=&quot;eth17&quot;
KERNELS==&quot;0000:04:10.5&quot; SUBSYSTEMS==&quot;pci&quot; DRIVERS==&quot;ixgbevf&quot; NAME=&quot;eth18&quot;
KERNELS==&quot;0000:04:10.7&quot; SUBSYSTEMS==&quot;pci&quot; DRIVERS==&quot;ixgbevf&quot; NAME=&quot;eth19&quot;
KERNELS==&quot;0000:04:00.0&quot; SUBSYSTEMS==&quot;pci&quot; DRIVERS==&quot;ixgbe&quot; NAME=&quot;eth2&quot;
KERNELS==&quot;0000:04:11.1&quot; SUBSYSTEMS==&quot;pci&quot; DRIVERS==&quot;ixgbevf&quot; NAME=&quot;eth20&quot;
KERNELS==&quot;0000:04:11.3&quot; SUBSYSTEMS==&quot;pci&quot; DRIVERS==&quot;ixgbevf&quot; NAME=&quot;eth21&quot;
KERNELS==&quot;0000:04:11.5&quot; SUBSYSTEMS==&quot;pci&quot; DRIVERS==&quot;ixgbevf&quot; NAME=&quot;eth22&quot;
KERNELS==&quot;0000:04:11.7&quot; SUBSYSTEMS==&quot;pci&quot; DRIVERS==&quot;ixgbevf&quot; NAME=&quot;eth23&quot;
KERNELS==&quot;0000:01:00.2&quot; SUBSYSTEMS==&quot;pci&quot; DRIVERS==&quot;bnx2x&quot; NAME=&quot;eth3&quot;
KERNELS==&quot;0000:01:00.3&quot; SUBSYSTEMS==&quot;pci&quot; DRIVERS==&quot;bnx2x&quot; NAME=&quot;eth4&quot;
KERNELS==&quot;0000:04:00.1&quot; SUBSYSTEMS==&quot;pci&quot; DRIVERS==&quot;ixgbe&quot; NAME=&quot;eth5&quot;
KERNELS==&quot;0000:41:00.0&quot; SUBSYSTEMS==&quot;pci&quot; DRIVERS==&quot;ixgbe&quot; NAME=&quot;eth6&quot;
KERNELS==&quot;0000:41:00.1&quot; SUBSYSTEMS==&quot;pci&quot; DRIVERS==&quot;ixgbe&quot; NAME=&quot;eth7&quot;
KERNELS==&quot;0000:04:10.2&quot; SUBSYSTEMS==&quot;pci&quot; DRIVERS==&quot;ixgbevf&quot; NAME=&quot;eth9&quot;
"><code> KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:01:00.0"</span> SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span> DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"bnx2x"</span> NAME<span class="hljs-operator">=</span><span class="hljs-string">"eth0"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:01:00.1"</span> SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span> DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"bnx2x"</span> NAME<span class="hljs-operator">=</span><span class="hljs-string">"eth1"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:10.4"</span> SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span> DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbevf"</span> NAME<span class="hljs-operator">=</span><span class="hljs-string">"eth10"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:10.6"</span> SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span> DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbevf"</span> NAME<span class="hljs-operator">=</span><span class="hljs-string">"eth11"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:11.2"</span> SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span> DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbevf"</span> NAME<span class="hljs-operator">=</span><span class="hljs-string">"eth13"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:11.4"</span> SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span> DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbevf"</span> NAME<span class="hljs-operator">=</span><span class="hljs-string">"eth14"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:11.6"</span> SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span> DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbevf"</span> NAME<span class="hljs-operator">=</span><span class="hljs-string">"eth15"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:10.1"</span> SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span> DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbevf"</span> NAME<span class="hljs-operator">=</span><span class="hljs-string">"eth16"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:10.3"</span> SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span> DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbevf"</span> NAME<span class="hljs-operator">=</span><span class="hljs-string">"eth17"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:10.5"</span> SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span> DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbevf"</span> NAME<span class="hljs-operator">=</span><span class="hljs-string">"eth18"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:10.7"</span> SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span> DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbevf"</span> NAME<span class="hljs-operator">=</span><span class="hljs-string">"eth19"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:00.0"</span> SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span> DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbe"</span> NAME<span class="hljs-operator">=</span><span class="hljs-string">"eth2"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:11.1"</span> SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span> DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbevf"</span> NAME<span class="hljs-operator">=</span><span class="hljs-string">"eth20"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:11.3"</span> SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span> DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbevf"</span> NAME<span class="hljs-operator">=</span><span class="hljs-string">"eth21"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:11.5"</span> SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span> DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbevf"</span> NAME<span class="hljs-operator">=</span><span class="hljs-string">"eth22"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:11.7"</span> SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span> DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbevf"</span> NAME<span class="hljs-operator">=</span><span class="hljs-string">"eth23"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:01:00.2"</span> SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span> DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"bnx2x"</span> NAME<span class="hljs-operator">=</span><span class="hljs-string">"eth3"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:01:00.3"</span> SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span> DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"bnx2x"</span> NAME<span class="hljs-operator">=</span><span class="hljs-string">"eth4"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:00.1"</span> SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span> DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbe"</span> NAME<span class="hljs-operator">=</span><span class="hljs-string">"eth5"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:41:00.0"</span> SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span> DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbe"</span> NAME<span class="hljs-operator">=</span><span class="hljs-string">"eth6"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:41:00.1"</span> SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span> DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbe"</span> NAME<span class="hljs-operator">=</span><span class="hljs-string">"eth7"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:10.2"</span> SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span> DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbevf"</span> NAME<span class="hljs-operator">=</span><span class="hljs-string">"eth9"</span>
</code></pre><p>由于VF的MAC地址有不确定性，所以这里我们选择以PCI BUS ID来作为命名依据： <code>vi /etc/udev/rules.d/99-pfvf-net.rules</code> 并且去掉默认生成的net.rules里这几个网卡的内容</p><pre data-type="codeBlock" text="KERNELS==&quot;0000:04:00.0&quot;         SUBSYSTEMS==&quot;pci&quot;       DRIVERS==&quot;ixgbe&quot;    NAME=&quot;pf-hk&quot;
KERNELS==&quot;0000:04:00.1&quot;         SUBSYSTEMS==&quot;pci&quot;       DRIVERS==&quot;ixgbe&quot;    NAME=&quot;pf-cmcc&quot;
KERNELS==&quot;0000:04:10.0&quot;         SUBSYSTEMS==&quot;pci&quot;       DRIVERS==&quot;ixgbevf&quot;  NAME=&quot;vf0-hk&quot;
KERNELS==&quot;0000:04:10.2&quot;         SUBSYSTEMS==&quot;pci&quot;       DRIVERS==&quot;ixgbevf&quot;  NAME=&quot;vf1-hk&quot;
KERNELS==&quot;0000:04:10.4&quot;         SUBSYSTEMS==&quot;pci&quot;       DRIVERS==&quot;ixgbevf&quot;  NAME=&quot;vf2-hk&quot;
KERNELS==&quot;0000:04:10.6&quot;         SUBSYSTEMS==&quot;pci&quot;       DRIVERS==&quot;ixgbevf&quot;  NAME=&quot;vf3-hk&quot;
KERNELS==&quot;0000:04:11.0&quot;         SUBSYSTEMS==&quot;pci&quot;       DRIVERS==&quot;ixgbevf&quot;  NAME=&quot;vf4-hk&quot;
KERNELS==&quot;0000:04:11.2&quot;         SUBSYSTEMS==&quot;pci&quot;       DRIVERS==&quot;ixgbevf&quot;  NAME=&quot;vf5-hk&quot;
KERNELS==&quot;0000:04:11.4&quot;         SUBSYSTEMS==&quot;pci&quot;       DRIVERS==&quot;ixgbevf&quot;  NAME=&quot;vf6-hk
KERNELS==&quot;0000:04:11.6&quot;         SUBSYSTEMS==&quot;pci&quot;       DRIVERS==&quot;ixgbevf&quot;  NAME=&quot;vf7-hk&quot;
KERNELS==&quot;0000:04:10.1&quot;         SUBSYSTEMS==&quot;pci&quot;       DRIVERS==&quot;ixgbevf&quot;  NAME=&quot;vf0-cmcc&quot;
KERNELS==&quot;0000:04:10.3&quot;         SUBSYSTEMS==&quot;pci&quot;       DRIVERS==&quot;ixgbevf&quot;  NAME=&quot;vf1-cmcc&quot;
KERNELS==&quot;0000:04:10.5&quot;         SUBSYSTEMS==&quot;pci&quot;       DRIVERS==&quot;ixgbevf&quot;  NAME=&quot;vf2-cmcc&quot;
KERNELS==&quot;0000:04:10.7&quot;         SUBSYSTEMS==&quot;pci&quot;       DRIVERS==&quot;ixgbevf&quot;  NAME=&quot;vf3-cmcc&quot;
KERNELS==&quot;0000:04:11.1&quot;         SUBSYSTEMS==&quot;pci&quot;       DRIVERS==&quot;ixgbevf&quot;  NAME=&quot;vf4-cmcc&quot;
KERNELS==&quot;0000:04:11.3&quot;         SUBSYSTEMS==&quot;pci&quot;       DRIVERS==&quot;ixgbevf&quot;  NAME=&quot;vf5-cmcc&quot;
KERNELS==&quot;0000:04:11.5&quot;         SUBSYSTEMS==&quot;pci&quot;       DRIVERS==&quot;ixgbevf&quot;  NAME=&quot;vf6-cmcc&quot;
KERNELS==&quot;0000:04:11.7&quot;         SUBSYSTEMS==&quot;pci&quot;       DRIVERS==&quot;ixgbevf&quot;  NAME=&quot;vf7-cmcc&quot;
"><code>KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:00.0"</span>         SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span>       DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbe"</span>    NAME<span class="hljs-operator">=</span><span class="hljs-string">"pf-hk"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:00.1"</span>         SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span>       DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbe"</span>    NAME<span class="hljs-operator">=</span><span class="hljs-string">"pf-cmcc"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:10.0"</span>         SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span>       DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbevf"</span>  NAME<span class="hljs-operator">=</span><span class="hljs-string">"vf0-hk"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:10.2"</span>         SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span>       DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbevf"</span>  NAME<span class="hljs-operator">=</span><span class="hljs-string">"vf1-hk"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:10.4"</span>         SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span>       DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbevf"</span>  NAME<span class="hljs-operator">=</span><span class="hljs-string">"vf2-hk"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:10.6"</span>         SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span>       DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbevf"</span>  NAME<span class="hljs-operator">=</span><span class="hljs-string">"vf3-hk"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:11.0"</span>         SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span>       DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbevf"</span>  NAME<span class="hljs-operator">=</span><span class="hljs-string">"vf4-hk"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:11.2"</span>         SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span>       DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbevf"</span>  NAME<span class="hljs-operator">=</span><span class="hljs-string">"vf5-hk"</span>
KERNELS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"0000:04:11.4"</span>         SUBSYSTEMS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"pci"</span>       DRIVERS<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-string">"ixgbevf"</span>  NAME<span class="hljs-operator">=</span><span class="hljs-string">"vf6-hk
KERNELS=="</span>0000:04:<span class="hljs-number">11.6</span><span class="hljs-string">"         SUBSYSTEMS=="</span>pci<span class="hljs-string">"       DRIVERS=="</span>ixgbevf<span class="hljs-string">"  NAME="</span>vf7<span class="hljs-operator">-</span>hk<span class="hljs-string">"
KERNELS=="</span>0000:04:<span class="hljs-number">10.1</span><span class="hljs-string">"         SUBSYSTEMS=="</span>pci<span class="hljs-string">"       DRIVERS=="</span>ixgbevf<span class="hljs-string">"  NAME="</span>vf0<span class="hljs-operator">-</span>cmcc<span class="hljs-string">"
KERNELS=="</span>0000:04:<span class="hljs-number">10.3</span><span class="hljs-string">"         SUBSYSTEMS=="</span>pci<span class="hljs-string">"       DRIVERS=="</span>ixgbevf<span class="hljs-string">"  NAME="</span>vf1<span class="hljs-operator">-</span>cmcc<span class="hljs-string">"
KERNELS=="</span>0000:04:<span class="hljs-number">10.5</span><span class="hljs-string">"         SUBSYSTEMS=="</span>pci<span class="hljs-string">"       DRIVERS=="</span>ixgbevf<span class="hljs-string">"  NAME="</span>vf2<span class="hljs-operator">-</span>cmcc<span class="hljs-string">"
KERNELS=="</span>0000:04:<span class="hljs-number">10.7</span><span class="hljs-string">"         SUBSYSTEMS=="</span>pci<span class="hljs-string">"       DRIVERS=="</span>ixgbevf<span class="hljs-string">"  NAME="</span>vf3<span class="hljs-operator">-</span>cmcc<span class="hljs-string">"
KERNELS=="</span>0000:04:<span class="hljs-number">11.1</span><span class="hljs-string">"         SUBSYSTEMS=="</span>pci<span class="hljs-string">"       DRIVERS=="</span>ixgbevf<span class="hljs-string">"  NAME="</span>vf4<span class="hljs-operator">-</span>cmcc<span class="hljs-string">"
KERNELS=="</span>0000:04:<span class="hljs-number">11.3</span><span class="hljs-string">"         SUBSYSTEMS=="</span>pci<span class="hljs-string">"       DRIVERS=="</span>ixgbevf<span class="hljs-string">"  NAME="</span>vf5<span class="hljs-operator">-</span>cmcc<span class="hljs-string">"
KERNELS=="</span>0000:04:<span class="hljs-number">11.5</span><span class="hljs-string">"         SUBSYSTEMS=="</span>pci<span class="hljs-string">"       DRIVERS=="</span>ixgbevf<span class="hljs-string">"  NAME="</span>vf6<span class="hljs-operator">-</span>cmcc<span class="hljs-string">"
KERNELS=="</span>0000:04:<span class="hljs-number">11.7</span><span class="hljs-string">"         SUBSYSTEMS=="</span>pci<span class="hljs-string">"       DRIVERS=="</span>ixgbevf<span class="hljs-string">"  NAME="</span>vf7<span class="hljs-operator">-</span>cmcc<span class="hljs-string">"
</span></code></pre><p>需要注意的是， vf的pci id并不是连续的， 在2个PF的情况下，这些VF交叉出现</p><p>现在让命名生效，先卸载PF和VF的驱动：</p><pre data-type="codeBlock" text="modprobe -r ixgbe
modprobe -r ixgbevf
"><code>modprobe <span class="hljs-operator">-</span>r ixgbe
modprobe <span class="hljs-operator">-</span>r ixgbevf
</code></pre><p>更新 udev设备名:</p><pre data-type="codeBlock" text="udevadm trigger  --action=add
"><code>udevadm trigger  <span class="hljs-operator">-</span><span class="hljs-operator">-</span>action<span class="hljs-operator">=</span>add
</code></pre><p>然后重新加载驱动，即可以看到想要的顺序了：</p><pre data-type="codeBlock" text="eth0      driver:  bnx2x    bus-info:  0000:01:00.0  Link  detected:  yes  Speed:  10000Mb/s
eth1      driver:  bnx2x    bus-info:  0000:01:00.1  Link  detected:  yes  Speed:  10000Mb/s
eth3      driver:  bnx2x    bus-info:  0000:01:00.2  Link  detected:  yes  Speed:  1000Mb/s
eth4      driver:  bnx2x    bus-info:  0000:01:00.3  Link  detected:  yes  Speed:  1000Mb/s
eth6      driver:  ixgbe    bus-info:  0000:41:00.0  Link  detected:  yes  Speed:  10000Mb/s
eth7      driver:  ixgbe    bus-info:  0000:41:00.1  Link  detected:  yes  Speed:  10000Mb/s
pf-cmcc   driver:  ixgbe    bus-info:  0000:04:00.1  Link  detected:  no   Speed:  10000Mb/s
pf-hk     driver:  ixgbe    bus-info:  0000:04:00.0  Link  detected:  no   Speed:  10000Mb/s
vf0-cmcc  driver:  ixgbevf  bus-info:  0000:04:10.1  Link  detected:  no   Speed:  Unknown!
vf0-hk    driver:  ixgbevf  bus-info:  0000:04:10.0  Link  detected:  no   Speed:  Unknown!
vf1-cmcc  driver:  ixgbevf  bus-info:  0000:04:10.3  Link  detected:  no   Speed:  Unknown!
vf1-hk    driver:  ixgbevf  bus-info:  0000:04:10.2  Link  detected:  no   Speed:  Unknown!
vf2-cmcc  driver:  ixgbevf  bus-info:  0000:04:10.5  Link  detected:  no   Speed:  Unknown!
vf2-hk    driver:  ixgbevf  bus-info:  0000:04:10.4  Link  detected:  no   Speed:  Unknown!
vf3-cmcc  driver:  ixgbevf  bus-info:  0000:04:10.7  Link  detected:  no   Speed:  Unknown!
vf3-hk    driver:  ixgbevf  bus-info:  0000:04:10.6  Link  detected:  no   Speed:  Unknown!
vf4-cmcc  driver:  ixgbevf  bus-info:  0000:04:11.1  Link  detected:  no   Speed:  Unknown!
vf4-hk    driver:  ixgbevf  bus-info:  0000:04:11.0  Link  detected:  no   Speed:  Unknown!
vf5-cmcc  driver:  ixgbevf  bus-info:  0000:04:11.3  Link  detected:  no   Speed:  Unknown!
vf5-hk    driver:  ixgbevf  bus-info:  0000:04:11.2  Link  detected:  no   Speed:  Unknown!
vf6-cmcc  driver:  ixgbevf  bus-info:  0000:04:11.5  Link  detected:  no   Speed:  Unknown!
vf6-hk    driver:  ixgbevf  bus-info:  0000:04:11.4  Link  detected:  no   Speed:  Unknown!
vf7-cmcc  driver:  ixgbevf  bus-info:  0000:04:11.7  Link  detected:  no   Speed:  Unknown!
vf7-hk    driver:  ixgbevf  bus-info:  0000:04:11.6  Link  detected:  no   Speed:  Unknown!
"><code>eth0      driver:  bnx2x    bus<span class="hljs-operator">-</span>info:  0000:01:00<span class="hljs-number">.0</span>  Link  detected:  yes  Speed:  10000Mb<span class="hljs-operator">/</span>s
eth1      driver:  bnx2x    bus<span class="hljs-operator">-</span>info:  0000:01:00<span class="hljs-number">.1</span>  Link  detected:  yes  Speed:  10000Mb<span class="hljs-operator">/</span>s
eth3      driver:  bnx2x    bus<span class="hljs-operator">-</span>info:  0000:01:00<span class="hljs-number">.2</span>  Link  detected:  yes  Speed:  1000Mb<span class="hljs-operator">/</span>s
eth4      driver:  bnx2x    bus<span class="hljs-operator">-</span>info:  0000:01:00<span class="hljs-number">.3</span>  Link  detected:  yes  Speed:  1000Mb<span class="hljs-operator">/</span>s
eth6      driver:  ixgbe    bus<span class="hljs-operator">-</span>info:  0000:<span class="hljs-number">41</span>:00<span class="hljs-number">.0</span>  Link  detected:  yes  Speed:  10000Mb<span class="hljs-operator">/</span>s
eth7      driver:  ixgbe    bus<span class="hljs-operator">-</span>info:  0000:<span class="hljs-number">41</span>:00<span class="hljs-number">.1</span>  Link  detected:  yes  Speed:  10000Mb<span class="hljs-operator">/</span>s
pf<span class="hljs-operator">-</span>cmcc   driver:  ixgbe    bus<span class="hljs-operator">-</span>info:  0000:04:00<span class="hljs-number">.1</span>  Link  detected:  no   Speed:  10000Mb<span class="hljs-operator">/</span>s
pf<span class="hljs-operator">-</span>hk     driver:  ixgbe    bus<span class="hljs-operator">-</span>info:  0000:04:00<span class="hljs-number">.0</span>  Link  detected:  no   Speed:  10000Mb<span class="hljs-operator">/</span>s
vf0<span class="hljs-operator">-</span>cmcc  driver:  ixgbevf  bus<span class="hljs-operator">-</span>info:  0000:04:<span class="hljs-number">10.1</span>  Link  detected:  no   Speed:  Unknown<span class="hljs-operator">!</span>
vf0<span class="hljs-operator">-</span>hk    driver:  ixgbevf  bus<span class="hljs-operator">-</span>info:  0000:04:<span class="hljs-number">10.0</span>  Link  detected:  no   Speed:  Unknown<span class="hljs-operator">!</span>
vf1<span class="hljs-operator">-</span>cmcc  driver:  ixgbevf  bus<span class="hljs-operator">-</span>info:  0000:04:<span class="hljs-number">10.3</span>  Link  detected:  no   Speed:  Unknown<span class="hljs-operator">!</span>
vf1<span class="hljs-operator">-</span>hk    driver:  ixgbevf  bus<span class="hljs-operator">-</span>info:  0000:04:<span class="hljs-number">10.2</span>  Link  detected:  no   Speed:  Unknown<span class="hljs-operator">!</span>
vf2<span class="hljs-operator">-</span>cmcc  driver:  ixgbevf  bus<span class="hljs-operator">-</span>info:  0000:04:<span class="hljs-number">10.5</span>  Link  detected:  no   Speed:  Unknown<span class="hljs-operator">!</span>
vf2<span class="hljs-operator">-</span>hk    driver:  ixgbevf  bus<span class="hljs-operator">-</span>info:  0000:04:<span class="hljs-number">10.4</span>  Link  detected:  no   Speed:  Unknown<span class="hljs-operator">!</span>
vf3<span class="hljs-operator">-</span>cmcc  driver:  ixgbevf  bus<span class="hljs-operator">-</span>info:  0000:04:<span class="hljs-number">10.7</span>  Link  detected:  no   Speed:  Unknown<span class="hljs-operator">!</span>
vf3<span class="hljs-operator">-</span>hk    driver:  ixgbevf  bus<span class="hljs-operator">-</span>info:  0000:04:<span class="hljs-number">10.6</span>  Link  detected:  no   Speed:  Unknown<span class="hljs-operator">!</span>
vf4<span class="hljs-operator">-</span>cmcc  driver:  ixgbevf  bus<span class="hljs-operator">-</span>info:  0000:04:<span class="hljs-number">11.1</span>  Link  detected:  no   Speed:  Unknown<span class="hljs-operator">!</span>
vf4<span class="hljs-operator">-</span>hk    driver:  ixgbevf  bus<span class="hljs-operator">-</span>info:  0000:04:<span class="hljs-number">11.0</span>  Link  detected:  no   Speed:  Unknown<span class="hljs-operator">!</span>
vf5<span class="hljs-operator">-</span>cmcc  driver:  ixgbevf  bus<span class="hljs-operator">-</span>info:  0000:04:<span class="hljs-number">11.3</span>  Link  detected:  no   Speed:  Unknown<span class="hljs-operator">!</span>
vf5<span class="hljs-operator">-</span>hk    driver:  ixgbevf  bus<span class="hljs-operator">-</span>info:  0000:04:<span class="hljs-number">11.2</span>  Link  detected:  no   Speed:  Unknown<span class="hljs-operator">!</span>
vf6<span class="hljs-operator">-</span>cmcc  driver:  ixgbevf  bus<span class="hljs-operator">-</span>info:  0000:04:<span class="hljs-number">11.5</span>  Link  detected:  no   Speed:  Unknown<span class="hljs-operator">!</span>
vf6<span class="hljs-operator">-</span>hk    driver:  ixgbevf  bus<span class="hljs-operator">-</span>info:  0000:04:<span class="hljs-number">11.4</span>  Link  detected:  no   Speed:  Unknown<span class="hljs-operator">!</span>
vf7<span class="hljs-operator">-</span>cmcc  driver:  ixgbevf  bus<span class="hljs-operator">-</span>info:  0000:04:<span class="hljs-number">11.7</span>  Link  detected:  no   Speed:  Unknown<span class="hljs-operator">!</span>
vf7<span class="hljs-operator">-</span>hk    driver:  ixgbevf  bus<span class="hljs-operator">-</span>info:  0000:04:<span class="hljs-number">11.6</span>  Link  detected:  no   Speed:  Unknown<span class="hljs-operator">!</span>
</code></pre><p>##注意事项 别忘记在<code>/etc/network/interfaces</code>里添加pf自启动，不需要配置ip，但是如果PF是DOWN的，VF在虚拟机里将不能使用</p><pre data-type="codeBlock" text="auto pf-cmcc
iface pf-cmcc inet manual
up ip link  set pf-cmcc up

auto pf-hk
iface pf-hk inet manual
up ip link set pf-hk up
"><code>auto pf<span class="hljs-operator">-</span>cmcc
iface pf<span class="hljs-operator">-</span>cmcc inet manual
up ip link  set pf<span class="hljs-operator">-</span>cmcc up

auto pf<span class="hljs-operator">-</span>hk
iface pf<span class="hljs-operator">-</span>hk inet manual
up ip link set pf<span class="hljs-operator">-</span>hk up
</code></pre>]]></content:encoded>
            <author>likizju@newsletter.paragraph.com (likizju)</author>
        </item>
        <item>
            <title><![CDATA[KMS]]></title>
            <link>https://paragraph.com/@likizju/kms</link>
            <guid>Ak8pX0JOHmIEaCTR98Up</guid>
            <pubDate>Sat, 09 Oct 2021 11:21:08 GMT</pubDate>
            <description><![CDATA[KMS激活方法： WIN+x a slmgr /skms x.x.x.x slmgr /ato slmgr /xpr Office/Project/Visio 2013(2010换下安装路径) 激活命令： 32位：CD “%ProgramFiles(x86)%\MICROSOFT OFFICE\OFFICE15″ 64位：CD “%ProgramFiles%\MICROSOFT OFFICE\OFFICE15″ CSCRIPT OSPP.VBS /SETHST:123.58.180.4 CSCRIPT OSPP.VBS /ACT CSCRIPT OSPP.VBS /DSTATUS]]></description>
            <content:encoded><![CDATA[<p>KMS激活方法：</p><p>WIN+x a</p><p>slmgr /skms x.x.x.x</p><p>slmgr /ato</p><p>slmgr /xpr</p><p>Office/Project/Visio 2013(2010换下安装路径) 激活命令：</p><p>32位：CD “%ProgramFiles(x86)%\MICROSOFT OFFICE\OFFICE15″</p><p>64位：CD “%ProgramFiles%\MICROSOFT OFFICE\OFFICE15″</p><p>CSCRIPT OSPP.VBS /SETHST:123.58.180.4</p><p>CSCRIPT OSPP.VBS /ACT</p><p>CSCRIPT OSPP.VBS /DSTATUS</p>]]></content:encoded>
            <author>likizju@newsletter.paragraph.com (likizju)</author>
        </item>
    </channel>
</rss>