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关系列举流程。

  1. A发起ARP广播包
  2. ZYNQ1的eth0收到arp包后,将数据加密安装UDP协议通过eth1端口发送出去
  3. ZYNQ2的eth1收到数据后解密数据,并且解析数据类型,如果有arp包则将arp包的mac源地址设置为eth0的mac地址,并且通过eth0端口发送出去。
  4. 那么PC机A就被虚拟化到ZYNQ2的eth0端口上了,同理PC机B的MAC地址和ZYNQ1的eth0端口一致,如果没有这个虚拟化过程,A向B发起访问,B在应答时候填写的目的地址是A的MAC地址,那么ZYNQ2的eth0接口MAC会 过滤掉不是自己和广播的MAC地址。
  5. B向A发起访问与上述流程一样。

        A和B建立ARP访问流程后,此时A的MAC地址和ZYNQ2 eth0端口MAC地址一致,B的MAC地址和ZYNQ1 eth0端口MAC地址一致,下面列举正常数据交互流程。

  1. A发起网络请求,目的MAC为ZYNQ1的eth0
  2. ZYNQ1解析数据,并且将数据按照UDP协议通过eth1接口发送给ZYNQ2的eth1接口
  3. ZYNQ2的eth1接口接收到数据后,解析数据,然后通过eth0发送出去,因为数据里面的源MAC地址和本端口一致,所以数据与B能够正常交互。
  4. 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实现二层网络加密转发的主要内容,如果未能解决你的问题,请参考以下文章

zynq实现二层网络加密转发

zynq实现二层网络加密转发

zynq实现二层网络加密转发

openstack网络基础

二层转发

二层转发原理