FPGA——UDP包分片概述

一、概述

以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的.
这个1500字节被称为链路层的MTU(最大传输单元).
在实际使用中,单次UDP报文传输的数据量有可能会大于1500字节,因此需要用到UDP分片技术

二、UDP分片

(1)UDP封装

(2)IP首部

  • 分段标识:唯一确定一份IP数据报
  • DF:(Don’t Fragment)0表示允许分片,1表示不许分片
  • MF:除了最后一片外,其他每片都把该位置为1
  • 段偏移:指的是该片偏移原始数据报开始处的位置

(3)分片

  • 每片的总长度值要修改为该片的长度值
  • 任何传输层的首部都只出现在第一片数据中,除第一片外,其他片没有UDP首部

三、FPGA对于分片包的判断

always @(posedge clk or negedge rst_n)begin
    if(!rst_n)
        fragment_state <= 0;
    else if(cnt_dtlen == 30 & add_cnt_dtlen)begin
        if(fragment_info[12:0] == 0 & fragment_info[14:13] == 0)
            fragment_state <= 0;//不分片        (段偏移 == 0,   MF = 0)
        else if(fragment_info[12:0] == 0 & fragment_info[14:13] == 1)
            fragment_state <= 1;//分片第一段    (段偏移 == 0,   MF = 1,记下分段标识     )
        else if(fragment_info[12:0] != 0 & fragment_info[14:13] == 1)
            fragment_state <= 2;//分片中间段    (段偏移 != 0,   MF = 1,比较分段标识     )
        else if(fragment_info[12:0] != 0 & fragment_info[14:13] == 0)
            fragment_state <= 3;//分片最后一段  (段偏移 != 0,   MF = 0,比较分段标识     )
    end
end

四、参考链接

https://www.cnblogs.com/huahuahu/p/UDP-yuIP-fen-pian.html

posted @ 2022-03-30 23:20  AdriftCore  阅读(1274)  评论(1编辑  收藏  举报