Bonjour,

je suis entrain de développer un protocol RTP sur une FPGA, mais j'ai un gros problème de padding.

En je manipule uniquement des valeurs en 32bits (big-endian) donc cela devrait être facile pour envoyer un paquet ... le problème c'est qu'il y a un d'ingénieur qui nous a fait l'encapsulation Ethernet pas aligné sur 32bits.

En effet on a mac destination (6 bytes) + mac source (6 bytes) + type (2 bytes) et directement après commence le protocol IP (si type=0x8000).
Donc on est aligné sur 14 bytes et non sur 16 bytes

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 -------------------------------------------
 || 00...07 | 08...15 | 16...23 | 24...32 ||
 -------------------------------------------
 ||              eha_dst[0-3]             ||
 -------------------------------------------
 ||  eha_dst[4-5]     |     eha_src[0-1]  ||
 -------------------------------------------
 ||              eha_src[2-5]             ||
 -------------------------------------------
 ||       type        |   IpHeader::vIHL  ||
 -------------------------------------------

Pour l'instant je suis obliger d'écrire les données IP/UDP/RTP dans un buffer puis de les copié en shiftant de 16 bits. Cependant cette operation n'est pas performante ... donc si qqun aurait une idée.