basic.p4
文件包含了一个骨架P4程序,其中关键逻辑部分被TODO注释替换。你的实现应该遵循这个文件中给出的结构——用逻辑来替换每个TODO,实现缺失的部分。
一个完整的basic.p4
将包含以下组件:
- 以太网(
ethernet_t
)和IPv4(ipv4_t
)的头部类型定义。 - TODO:解析器,用于填充
ethernet_t
和ipv4_t
字段。 - 一个使用
mark_to_drop()
来丢弃数据包的动作。 - TODO:一个名为
ipv4_forward
的动作,它应该:- 设置下一跳的出口端口。
- 更新以太网目的地址为下一跳的地址。
- 更新以太网源地址为交换机的地址。
- 减少TTL。
- 一个控制块,其中包括:
- 定义一个表,用于读取IPv4目标地址,并调用
drop
或ipv4_forward
。 - 一个应用块,应用该表。
- 定义一个表,用于读取IPv4目标地址,并调用
- TODO:一个解封装器,选择插入到传出数据包中的字段的顺序。
- 一个包实例,包含解析器、控制和解封装器。
通常,一个包还需要校验和验证和重新计算控制的实例。但这些对于本教程来说不是必需的,并且被空控制的实例所替换。
Step 3: Run your solution
按照第一步的指示操作。这一次,你应该能够成功地在拓扑中的任意两个主机之间进行ping。
思考
你的解决方案的“测试套件”——在拓扑中的主机之间发送ping包——不够健壮。你还应该测试什么才能确保你的实现是正确的呢?
虽然Python的scapy库超出了本教程的范围,但它可以用于生成测试用的数据包。send.py文件展示了如何使用它。
其他需要考虑的问题:
如何改进你的程序来响应ARP请求?
如何改进你的程序以支持traceroute?
如何改进你的程序以支持下一跳?
这个程序足以替代路由器吗?还缺少什么?
故障排除
在开发过程中可能会出现几个问题:
basic.p4可能无法编译。在这种情况下,make run将报告编译器发出的错误并停止。
basic.p4可能会编译通过,但不能支持make run尝试使用P4Runtime安装的s1-runtime.json到s3-runtime.json文件中的控制平面规则。在这种情况下,如果无法安装控制平面规则,make run将报告错误。使用这些错误消息来修复你的basic.p4实现。
basic.p4可能会编译通过,并且控制平面规则可能已经安装,但交换机可能无法以期望的方式处理数据包。logs/sX.log文件包含了每个交换机如何处理每个数据包的详细日志。输出是详细的,可以帮助确定你的实现中的逻辑错误。
清理Mininet
在上述后两种情况下,make run可能会留下一个正在后台运行的Mininet实例。使用以下命令清理这些实例:
make stop
The Use of Gateway (gw) and ARP Commands in topology.json
网关(gw)命令:route add default gw命令用于为主机设置默认网关。这告诉主机,如果目标IP不在同一个子网上,应该将数据包发送到哪个IP地址。对于主机来说,了解其默认网关对于与本地网络外的设备通信非常重要。
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
opics/618653875)
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!