P4 实验---- ARP 转发

实验内容

这次实验的主要内容是如何让P4 交换机能支持处理ARP数据包。
我们在P4 tutorials的实验中都是提前把ARP记录写入了host缓存里,如果没有提前准备的ARP记录,
那么真实的h1 ping h2流程是:

  1. h1 发出ARP request广播询问网络中h2 IP地址所对应的Mac,
  2. h2 收到arp request后,发送 ARP replay单播回应h1,此时h2也知道h1 IP和Mac,
  3. h1 知道了h2的Mac就可以封装二层帧头,发送单播icmp request,
  4. h2收到icmp request后,单播回应icmp replay。

因为此时ARP request的目的Mac是广播地址,ARP replay和ping 包都是单播,所以我们的P4交换机必须能处理广播和单播。
ARP request 也有单播用于查询的情况,在后面测试时也会看到。

cast_grp
cast_grp:支持多播功能,当有多播数据包时,需要在ingress中写入此字段。值为0表示没有多播。此值必须是通过bmv2运行时接口配置的有效多播组之一。
对于使用 v1model 架构,以下字段(包括cast_grp)都是类型为 standard_metadata_t 的结构的一部分。
header_type intrinsic_metadata_t {
fields {
ingress_global_timestamp : 48;
egress_global_timestamp : 48;
mcast_grp : 16;
egress_rid : 16;
}
}
metadata intrinsic_metadata_t intrinsic_metadata;

实验拓扑

实验的拓扑比较简单,就是一台交换机连三个终端host。
在这里插入图片描述

h1:IP 10.0.1.1,Mac 08:00:00:00:01:11,接s1:port 1
h2:IP 10.0.1.2,Mac 08:00:00:00:01:22,接s1:port 2
h3:IP 10.0.1.3,Mac 08:00:00:00:01:33,接s1:port 3
加载s1时,安装cmd.txt 文件中的规则。

实验步骤

P4程序以及拓扑、交换机规则链接
因为都是一个局域网,所以只定义了ethernet header
在这里插入图片描述
parser也只有一个状态机提取ethernet
在这里插入图片描述
ingress,建立两个table和action支持单播和广播。如果命中mac_broadcast则做广播转发,
否则mac_forward做单播转发。

在这里插入图片描述
交换机的规则,安装cmd.txt安装。
在这里插入图片描述
定义多播组 mc_mgrp 1,定义mc_node 0 包含port 2和3,然后两者关联在一起。
广播转发时,如果port 1进的流量,从mc_mgrp 1送出去。依次类推配置。

测试

打开h1,h2,h3的终端,tcpdump
在这里插入图片描述
h1 ping h2
在这里插入图片描述
host终端上tcpdump显示
h1 上发出关于h2的arp request广播,收到h2的arp replay,
发出icmp request,
后面还收到了一个来自h2的单播查询arp request,发出arp replay。
在这里插入图片描述
h2上收到h1的arp request,回应arp replay,
收到icmp request,回应icmp replay,
随后向h1发送了一个单播的arp request,并收到h1 arp replay。
在这里插入图片描述
h3上只收到了h1发送的广播arp request。
在这里插入图片描述

补充

h2 icmp replay h1后,马上又向h1发送单播arp request比较有意思,我特地wireshark抓包看了一下,一开始忽略了arp request还有单播的情况。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值