#reed-solomon #2d #erasure #codec

rs2d

一个用于在二维Reed-Solomon矩阵中编码和解码数据的crate

1 个不稳定版本

0.1.0 2023年4月20日

#14 in #reed-solomon

MIT 许可证

10KB
148

rs2d

Crates 文档 依赖状态 一个用于在二维Reed-Solomon矩阵中编码和解码数据的crate。

灵感来源于Mustafa Al-Bassam的文章.

算法

sd = digest
cr = columnRoot
r = rowRoot
shard = [0u8;1280]
block = [shard;23]
s = data shard
p = horizontal parity
s' = veritical data parity
p' = vertical erasure parity

数据矩阵

s1  s2  s3  s4  s5 -> d1
s6  s7  s8  s9  s10 -> d2
s11 s12 s13 s14 s15 -> d3
s16 s17 s18 s19 s20 -> d4
s21 s22 s23 sd  sd -> d5

纠删码矩阵

s1  s2   s3   s4   s5  -> p1  p2  p3  p4  p5 ->  r1
s6  s7   s8   s9   s10 -> p6  p7  p8  p9  p10 -> r2
s11 s12  s13  s14  s15 -> p11 p12 p13 p14 p15 -> r3
s16 s17  s18  s19  s20 -> p16 p17 p18 p19 p20 -> r4
s21 s22  s23  sd   sd  -> p21 p22 p23 p24 p25 -> r5
 |   |    |    |    |
 v   v    v    v    v  
s1'  s2'  s3'  s4'  s5'  -> p1'  p2'  p3'  p4'  p5' ->  r6
s6'  s7'  s8'  s9'  s10' -> p6'  p7'  p8'  p9'  p10' -> r7
s11' s12' s13' s14' s15' -> p11' p12' p13' p14' p15' -> r8
s16' s17' s18' s19' s20' -> p16' p17' p18' p19' p20' -> r9
s21' s22' s23' sd'  sd'  -> p21' p22' p23' p24' p25' -> r10
|    |    |    |    |       |    |    |    |    |
cr1  cr2  cr3  cr4  cr5     cr6  cr7  cr8  cr9  cr10

当前限制

  • 只有当n和k相同时才有效。
  • 没有性能优化。
  • 数据分片必须是字节数组。

待办事项

  • 编码函数
  • 解码/验证函数
  • 测试用例
  • 基准测试

依赖项

~17-26MB
~425K SLoC