Document

LoRaWAN® Fragmented Data Block Transport Specification v1.0.0

Issue link: https://read.uberflip.com/i/1428356

Contents of this Issue

Navigation

Page 16 of 29

LoRaWAN Fragmented Data Block Transport v1.0.0 Specification ©2018 LoRa Alliance™ Page 17 of 30 The authors reserve the right to change specifications without notice. 7 Fragment error coding 415 416 The initial data block that needs to be transported must first be fragmented into M data 417 fragments of arbitrary but equal length. The length of those fragments has to be chosen to 418 be compatible with the maximum applicative payload size available. 419 The actual applicative payload length will be: 420 fragLen + 2 bytes 421 422 Where fragLen is the byte length of each fragment plus 2 bytes of fragmentation header 423 (containing Index & N, see 3.4) 424 425 Those original data fragments are named uncoded fragments and are noted Bn 426 427 The full data block to be transported consists therefore of the concatenation of the Bn 428 uncoded fragments [B1 : B2 :… :Bm] 429 430 The coded fragments are noted P M N and are derived from the uncoded fragments. 431 P M N is the Nth coded fragment from a fragmentation session containing M (B1 to Bm) 432 uncoded fragments. The coded fragments P M N all have exactly the same byte length than the 433 uncoded (Bn) fragments. 434 To allow the original uncoded fragments reconstruction on the receiving end of the link even 435 in presence of arbitrary packet loss, the transmitter (performing the fragmentation) adds 436 redundancy. Therefore N might be greater than M, meaning that the sender may send more 437 coded fragments than the total number of uncoded fragments to enable the reconstruction 438 on the receiving end in presence of packet loss. The ratio between M and the number of 439 actually sent coded fragments is called coding ratio (or redundancy factor) and noted CR 440 441 The coded fragments P M N are constructed by performing a bit per bit Xor operation between 442 different subset of the uncoded fragments. The Xor operator is noted +. 443 444 445 Each coded fragment is defined as : 446 P M N = (1). 1 + (2). 2 + . . + ( ). 447 448 Where ( ) is a function of M,N and i and whose value is either 0 or 1. 449 • 0. 1 is a binary word of the same length than the fragment 1 with all bits = 0. 450 • 1. 1 is equal to 1 451 452 The binary vector ( , ) = [ (1), (2), . . . , ( )] of M bits is a function of M and N and 453 is given by a function matrix_line(M,N) which will be described later. 454 455 It is sufficient to know that this function generates either: 456 • If N<=M , a vector of length M with a single one at position N, all other bits = 0 457 • If N>M : a parity check vector containing statistically as many zeros as ones in a 458 pseudo-random order. 459 The parity check matrix, as defined by Gallager in his 1963 thesis, is an MxN matrix 460 containing the on column i and line N. 461 462 The following picture illustrates an example of such a matrix generated by the proposed 463 function for M=26 and with a coding ratio CR=1/2 , this matrix has 26/CR = 52 lines. Id, it 464 allows the creation of 52 coded fragments from the 26 original uncoded fragments. 465

Articles in this issue

view archives of Document - LoRaWAN® Fragmented Data Block Transport Specification v1.0.0