22 Eylül 2017 Cuma

Stanag 4691 STU Header

STU Header 1
Slot Synchronization Pattern Alanı :
Transmit Node Alanı : ID of transmitter. Ağın dinamik yapısından dolayı bu alan gerekli. Dağıtık sistemlerdeki zor problemlerden birisi havuzdan aynı sayının farklı sistemler tarafından kullanılması. Dolayısıyla bu alan sistemin konfigürasyon dosyasından gelir.
Partition Identifier Alanı :
0 - 255 arasında değer alır. 255 broadcast adresi olduğu için bu numaraya sahip bir katılımcı olması mantıklı değil.
Bu alanın değerine göre Random Access Slot'ların hangileri olacağı hesaplanır. Random Generator için seed şöyle
Seed = PID * 1103515245 + 12345
Seed kullanılarak MAC Management PDU 'daki Number RA Slot sayısı kadar dönülür.
UTC Flag Alanı : Niçin mevcut bilmiyorum. Zaman kaynağı olarak GPS dışında bir şeyin kullanılabilmesi ihitmaline karşı mevcut diye düşünüyorum.
Sequence Number Alanı : STU numarası.  Bu sayı ile Link kalitesi hesaplanır. Yazıda link kalitesi ve sinyal kalitesini eş anlamlı gibi kullandım ancak sinyal kalitesi Inverse square law'a tabi. Dolayısıyla gerçek hayatta aynı şey değiller.
Link State'ler şöyledir. Link State ile MAC Management PDU'daki Neighbor Status alanları çok benziyorlar. Ancak Neighbor Status alanında Not heard değeri yok.
LS = 0 Not heard
LS = 1 Non-neighbor
LS = 2 Bad neighbor
LS = 3 Good neighbor
State'ler arasında geçiş için şöyle bir kural mevcut.
0 < L21 < L12 <= L32 < L23 < 1
Dolayısıyla şöyle bir çevrim kullanılır.
LS = 0 -> NS = 0 Non-neighbor
LS = 1 -> NS = 0 Non-neighbor
LS = 2 -> NS = 1 Bad neighbor
LS = 3 -> NS = 3 (Asymmetric Neighbor),
                NS = 4 (Symmetric Neighbor)
                NS = 5 (Symmetric Neighbor MLA)
Komşu 3 çevrim  (cycle) süresince STU göndermezse LS = 1 Non-neighbor olur.
Eğer 8 çevrim  (cycle) süresince STU göndermezse LS= 0 Not heard olur.
Cycle Number Alanı : 0 - 15 arasında değer alır. Ağın Cycle sayısı en baştan belirlenir. Bu sayıyı dinamik olarak değiştirmek sanırım mümkün değil.
Zaman kaynağımız GPS olduğu için bu alanın doldurulabilmesi için sistemin GPS ile senkronize olmuş olması gerekir. Diyelim ki GPS bize 15 döndürdü. Bir çevrim büyüklüğü 10 saniye ise ikinci çevrim içinde olduğumuz için bu alana 2 değeri atanır.
utc_seconds =
high_resolution_clock::now ().time_since_epoch () / seconds (1);
current_cycle = utc_seconds / (slot_length * slots_per_cycle);
current_cycle = current_cycle % 16;
Slot Number Alanı : 0 - 255 arasında değer alır. Aslında bu alanın gönderilmesi elzem değil. Tüm katılımcılar aynı zaman kaynağını kullandığı için gelen mesajın bu alanını çıkarabilir. Cycle ve slot süresi uzatılırsa paketler biriktirilerek gönderilir.
current_slot = utc_seconds / slot_length;
current_slot = current_slot % slots_per_cycle;

Slot Size : Milisaniye cinsinden slot büyüklüğünü belirtir. MAC Management PDU içindeki Number of Slots alanı kullanılarak bir cycle'in kaç ms. olduğu hesaplanabilir.
CRC Alanı : 16 bit CRC

STU Header 2
Spare Alanı : 1 bit
Extension Bit Alanı : Bir sonraki alan olan PDU count >= 64 ise 1 değeri alır.  Aksi halde 0'dır.
PDU Count Alanı : 6 veya 14 bit olabilir. Yani en fazla 63 veya 16.383 olabilir
Size (PDU #n) Alanı : 12 bit. Bir PDU en fazla 4.095 byte olabilir.
CRC Alanı : 16 bit CRC

Hiç yorum yok:

Yorum Gönder