zynq实现二层网络加密转发
Posted HeroKern
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zynq实现二层网络加密转发相关的知识,希望对你有一定的参考价值。
二层网络加密转发是加密端将所有二层网络数据实现加密,然后发送出去,接收端接收到数据后解密,然后以二层报文发送出去。常规的网络加密仅仅局限于网络应用数据加密,对底层的ARP(IP地址到MAC地址的解析,可通过ARP广播包寻找MAC地址),ICMP(ping命令),IP(TCP和UDP的下一层)包通通实现加密传输。
本次设计选用了两块ZYNQ开发板,ZYNQ支持双千兆网卡,操作系统为linux。设计如下图所示。PC机A发起的请求应该原封不动的传输给PC机B,中间传输过程又不能被截获,所以设计出了如下方案。选用两块支持双网络的ZYNQ开发板,ZYNQ1和ZYNQ2之间采用UDP方式传输数据,方便不需要连接,直接转发数据。
上图中已经把PC机A向PC机B数据处理流程和注意事项列举出来了,下面在详细梳理一下流程,PC机A简称A,PC机B简称B。
A和B建立ARP关系列举流程。
- A发起ARP广播包
- ZYNQ1的eth0收到arp包后,将数据加密安装UDP协议通过eth1端口发送出去
- ZYNQ2的eth1收到数据后解密数据,并且解析数据类型,如果有arp包则将arp包的mac源地址设置为eth0的mac地址,并且通过eth0端口发送出去。
- 那么PC机A就被虚拟化到ZYNQ2的eth0端口上了,同理PC机B的MAC地址和ZYNQ1的eth0端口一致,如果没有这个虚拟化过程,A向B发起访问,B在应答时候填写的目的地址是A的MAC地址,那么ZYNQ2的eth0接口MAC会 过滤掉不是自己和广播的MAC地址。
- B向A发起访问与上述流程一样。
A和B建立ARP访问流程后,此时A的MAC地址和ZYNQ2 eth0端口MAC地址一致,B的MAC地址和ZYNQ1 eth0端口MAC地址一致,下面列举正常数据交互流程。
- A发起网络请求,目的MAC为ZYNQ1的eth0
- ZYNQ1解析数据,并且将数据按照UDP协议通过eth1接口发送给ZYNQ2的eth1接口
- ZYNQ2的eth1接口接收到数据后,解析数据,然后通过eth0发送出去,因为数据里面的源MAC地址和本端口一致,所以数据与B能够正常交互。
- B向A发起访问与上述流程一样
注意事项:A的MAC地址和ZYNQ2 eth0端口MAC地址一致,B的MAC地址和ZYNQ1 eth0端口MAC地址一致,这个过程是动态配置的,因为A和B的电脑MAC地址可能会更换,且电脑会定时发起ARP扫描电脑,所以对ARP解析后设置MAC地址需要酌情考虑。网络发送帧的源MAC和实际接口MAC地址不一样是不影响数据发送,但数据接收肯定会被过滤,所以才会去虚拟化MAC地址。
代码设计比较简单,这里只提供初始化原始帧socket和解析arp包代码。
获取原始值帧初始化函数:
数据解析函数:
本次分享网络二层加密转发功能是用CPU去设计的,CPU跑加密算法性能太低了,后期用FPGA去做算法运算。ZYNQ实现网络二层转发功能速率在18MB/s。
有需要技术支持的联系:yolov8
补充MAC和PHY关系知识点如下。
以上是关于zynq实现二层网络加密转发的主要内容,如果未能解决你的问题,请参考以下文章