![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
p4
文章平均质量分 91
ζั͡ޓއއއ坏尐絯
备战CCIEing
展开
-
P4学习(七)实验四:Explicit Congestion Notification
如果在 ingress 或 parse 阶段进行标记,每个进入交换机的数据包都需要经过拥塞检测处理,即使这些数据包可能不会遇到任何拥塞。:如果在 ingress 阶段进行标记,随着数据包经过网络中的多个交换机,每个交换机都可能基于自身的状态对数据包进行重新标记,导致标记的不一致性。:Egress 阶段更接近于数据包实际离开交换机的时刻,因此在这个点进行标记可以基于最新的网络状态信息(如队列长度、传输速率等)。0x1:我们取的是tos的后两位作为cen的filed字段,所以这里的ecn=1;原创 2024-01-25 12:38:25 · 962 阅读 · 0 评论 -
P4学习(六)实验三:a Control Plane using P4Runtime
翻译自官网这个目录包含了几个Python文件,每个文件都承担着特定的角色以支持P4网络设备的控制和管理。helper.py包含类,用于解析p4info文件。提供从实体名称到ID号以及从ID号到实体名称的转换方法。构建与P4程序相关的P4Runtime表项的部分。switch.py包含类,负责获取gRPC客户端存根并建立与交换机的连接。提供辅助方法来构造P4Runtime协议缓冲消息,并执行P4Runtime gRPC服务调用。bmv2.py包含类,它扩展了。原创 2024-01-22 22:16:14 · 1255 阅读 · 1 评论 -
P4学习(五)实验二:Basic Tunneling
我们可以看到只要带上了隧道标签的数据包的type字段都被处理成0x1212(我们自定义的一个值用于标签),同时最后dst_ip为h3的但带上了隧道标签也走了隧道,证明了我们在parse里的解析逻辑是正确的。原创 2024-01-19 16:09:55 · 874 阅读 · 0 评论 -
P4学习(四)实验一:Basic Forwarding
"make"是linux的一个工具,通过读取文件makefile来执行操作。会发现全部ping不通,也就代表basic.p4中的丢弃所有的包是成功的。①先从start这个state开始,直接跳到解析etherHead的部分。①emit 用于将头部字段添加到正在构建的数据包中。②从数据包里提取出Ethernet header。②写与Parse的extract的反逻辑就行。Match-Action 的流水线集合。③判断包头中的Type是否为Ipv4。Parse采用状态机风格。所以本段code的思路是。原创 2024-01-18 18:27:41 · 1034 阅读 · 0 评论 -
P4学习(三)基础
但需要更长的时间的是,你知道你必须更新你的交换芯片ASIC,以支持新的数据平面协议。当然,如果你想添加一个新功能,例如在你的系统中支持一个新的协议,你需要改变固定功能的芯片,这在最好的情况下可能需要4年的时间!4年后,你可能已经找到了一种方法来绕过它,或者如果你决定仍然需要它,那么你必须更换所有的硬件,这是非常昂贵的,而且可能是很大的痛苦。当然,如果你想添加一个新功能,例如在你的系统中支持一个新的协议,你需要改变固定功能的芯片,这在最好的情况下可能需要4年的时间!此外,这种方法提供了有限的可编程性。原创 2024-01-08 22:51:23 · 923 阅读 · 0 评论 -
P4学习(二) 阅读《P4: Programming Protocol-Independent Packet Processors》论文
相较于不停地扩展首部字段长度,为了避免规范的首部字段泛滥现象。P4被提出用于解析数据包和匹配报头字段图一 P4与现有API的关系新的“OpenFlow 2.0”API被配置用于灵活的机制来解析数据包和匹配报头字段可编程解析器:数据包首先通过一个可编程解析器。与OpenFlow假设的固定解析器不同,P4的模型支持可编程解析器,这允许定义新的报头格式,从而增加处理不同类型数据包的灵活性。匹配+动作阶段:经过解析器处理后,数据包进入多个匹配+动作阶段。这些阶段可以是串行的、并行的,或者两者的结合。原创 2024-01-08 17:23:22 · 815 阅读 · 0 评论 -
P4学习(一) 环境搭建
本文仅用作记录实验过程借鉴了这些。原创 2024-01-07 14:19:23 · 1404 阅读 · 0 评论