背景描述
在P4实现的L2基本交换机的基础上,当L2交换机在表中无法查询到MAC地址或目的MAC地址为ff:ff:ff:ff:ff:ff时,泛洪至各交换机
本按钮使用两种方式进行实现:
- 首先搭建基本框架:泛洪至全部交换机(All-Port部分),即仅设置1个组播组
- 随后继续完善:泛洪至除源交换机外的各交换机(Other-Port部分)
拓扑图像
All-Port方式
拓扑配置JSON
|
|
配置文件中设置auto_arp_tables
为false
,使得mininet不自动向主机下发ARP表
P4程序
|
|
运行测试
https://www.jianshu.com/p/c9e2303f33e4
s1-commands-all-ports.txt
命令文件中,配置以下规则:
- 添加L2转发表:在dmac表中添加MAC地址与转发端口的映射,匹配成功后执行动作forward
- 设置dmac表格的默认动作为broadcast
- 使用
mc_mgrp_create
创建组播组ID=1 mc_node_create
:创建多播节点组0,组中包含2、3、4端口mc_node_associate
:将多播节点组0与组播组1关联
mc_mgrp_create
与mc_node_create
与mc_node_associate
为bmv2提供的RunTime CLI命令
|
|
ping前主机的ARP表:
ping后,主机学习到ARP表:
Other-Port
该方式中,当泛洪时,不向入端口进行转发
拓扑配置JSON
与All-Port方式一致
P4程序
|
|
运行测试
s1-commands-other-ports.txt
中:
- 添加L2转发表:在dmac表中添加MAC地址与转发端口的映射,匹配成功后执行动作forward
- 创建多播节点组0、1、2、3:例如多播节点组0包含端口2、3、4
- 创建组播组,并将多播节点组与组播组关联
- 添加映射关系:在select_mcast_grp中添加入端口号与组播组ID的映射,匹配成功后执行动作set_mcast_grp,例如从端口1进入的数据包通过组播组1发送出去
|
|