# p4进阶 **Repository Path**: magges/p4-advanced ## Basic Information - **Project Name**: p4进阶 - **Description**: p4进阶作业 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-03-30 - **Last Updated**: 2025-03-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # p4进阶 > 系统综合实践结对作业 ### 1.2.1 - 在basic实验中,去掉topology.json文件中已经为每台主机定义的arp转发选项,将arp功能实现到现有basic.p4中。 ### 1.2.2 - 在p4runtime实验中,针对mycontroller.py的缺陷,将功能补充完整,要求所有主机均能互通,且 每条链路可以双向计数,并将实时统计的各条链路的计数信息分别存入相关文件。 ### 1.2.3 - 程序1:改写ecn的流规则静态下发方式,实现P4Runtime的动态下发,且由用户(控制面)配置 下发交换机队列长度阈值,从而标记ECN字段。如下图所示为例,控制面设置更小的交换机队列阈 值,从而更快地触发数据面对数据包ecn字段的修改。 - 程序2:改写mri的流规则静态下发方式,实现P4Runtime的动态下发。 - 程序3:在程序1的基础上,实现数据平面和控制平面的信息交互 [参考](https://github.com/nsg-ethz/p4-learning/tree/master/exercises/04-L2_Learning/p4runtime),如果交换机检测到网络拥塞,主动上报通知控制面,再由控制面下发新的运行时规则,或由控制面发出提示消息。(需要用到P4的clone实现克隆数据包到控制器,或者digest机制发送数据包摘要到控制器,还要查一下目前控制面p4runtime相关的封装机制)。如下图示例,运行控制面代码,输入队列阈值后,进入网络拥塞监控过程,当数据面上报的ECN值为3时,就显示出拥塞。 ### 1.2.4 - 程序1:改写source_routing实验使得交换机同时支持ipv4转发和源路由 - 程序2:改写source_routing实验使得第一跳交换机添加转发路径,源路由对终端主机透明 - 程序3:改写load_balance官方实验,同时支持ecmp负载均衡和ipv4转发 ### 1.2.5 - 程序1:完成练习[访问控制](https://gitee.com/fjlinww/P4-Practice/tree/master) - 程序2:在前面实验用到的pod-topo拓扑中运行程序1的acl.p4程序,且用p4runtime改写控制面规则 - 程序3:改写link_monitor的流规则静态下发方式,实现P4Runtime的动态下发