4691 etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
4691 etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

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

13 Eylül 2017 Çarşamba

Stanag 4691 - Router Interface

Giriş
Router Interface -RT bileşeninin açıklaması şöyle.
Communicates with the attached IP router.
Bu bileşen Ethernet Interface olarak adlandırılabilir. Ethernet Frame, IPV4 Header, IPV6 Header gibi yapıları okuyabilmelidir.

RTI Paket Alma Akış
Ethernet içindeki payload RF olarak gönderilecekse, Ethernet protokolünün eklediği padding'ler çıkarılır.
1.Ethernet Frame (ARP Request) --> Process Arp --> Is Reachable --> Arp Reply
2.Ethernet Frame (TCP)  --> TCP Proxy (Optional) --> RF
3. Ethernet Frame (UDP) --> RF

12 Eylül 2017 Salı

Stanag 4691 - Link Layer Control

Giriş
Link Layer Control - LLC bileşeninin açıklaması şöyle
Responsible for packet segmentation,reassembly, and duplicate detection. The LLC may also perform data compression and decompression using an open source algorithm.
Bu bileşen Kernel olarak adlandırılabilir.

LLC Paket İşleme
1. LLC Duplicate Detection
Duplicate Detection yazısına taşıdım.
2. LLC Akış
LLC gelen paketleri işlerken şu akışı izler.
1. Paket ->If Final Destination -> Defragment -> Decompress -> Process
2. Paket ->If Broadcast -> Defragment -> Decompress -> Process
3. Paket ->If Broadcast and Own Unit is MPR -> Relay -> Defragment Decompress -> Process
4. İleride gelecek Multicast için olası adımlar buraya eklenir.
Relay işleminde paketleri defragment etmeye gerek olup olmadığı LLC'nin nasıl çalıştığı ile ilgili. Şu seçenekler arasında tercih yapılmalıdır.
1. Yüksek verimlilik ve Fazla Gecikme
2. Düşük verimlilik ve Az Gecikme
Relay işleminden önce Hop Count alanı -1 azaltılır. Eğer Hop Count 0 ise, paket düşürülür yani gönderilmez.

LLC PDU - Layer 3
IP verisi yeni bir Layer 3 mesajı ile zarflanır. Bu zarf sadece 9 byte yük (overhead) getirir. Priority ve fragmentation yeteneği sağlar. Bazı sistemlerde kuyruk ortak bir zarf kullanmayan bir sürü farklı tipte mesaj göndermek zorundadır. Bu tür kuyruklar karışık bir yapıya sahip olurlar. Stanag 4691'de tüm paketler ortak LLC PDU ile zarflandığı için zarif bir yapı oluşmuştur. Bant genişliği fazla olmadığı için markup protokolleri taşımak çok iyi bir fikir değil.
Cellular carriers prefer that their IoT consumers use HTML, XML or JSON type of messages since they consume more Data. More Data means they can charge the consumers more money for the service.
Frame Type Alanı : 4 bit
IP Data = 2
Relay Control = 3
Vendor Specific = 12 - 15
Not used = 0,1,4 - 11
Priority Alanı : 4 bit
16 tane kuyruk var. Hangi paketin hangi kuyruğa girmesi gerektiği konusu açık bırakılmış. Wireshark filtresi gibi bir mantıkla paketin bazı alanlarına bakarak priority değerine karar verebilir. Aslında bu alan QoS alanı olarak kabul edilmeli. QoS'in açıklaması şöyle
QOS is something you will configure to treat some traffic (e.g. VOIP traffic) with priority better than other (WWW, monitoring ...)
Kuyruklar şöyle
15 -- Marlin Control Packets örneğin RC PDU
14 -- Not used
13 -- IP Routing Control Packets örneğin OSPF
12 -- Not used
11 -- LLC PDU
.
.
 1 -- LLC PDU
 0 -- Not Used
Source Address Alanı :  8 bit
Bu PDU'yu gönderen katılımcı.

Destination Address Alanı : 8 bit
Unicast veya broadcast olabilir. Broadcast için 255 kullanılır. Multicast paket gönderimi mümkün değil. Eğer bu alan bir liste şeklinde olsaydı belki multicast mümkün olurdu. Multicast için aklıma şöyle bir çözüm geliyor.

1. Herkesin bildiği belli bir Multicast Grup numarası olsun. Örneğin 254 ve bu numara katılımcılar tarafından kullanılmasın. Bu numaraya gönderilen paketlerin 20 ve 21 numaralı katılımcılara gitmesini istiyor olalım. MAC Data PDU paketindendeki Next Hop alanına 5 tane değer yazabiliyor olalım. Bu rakamı rastgele seçtim. Belki dinamik bile olabilir. Bu durumda şöyle yaparız.
A -> B -> C (20)
   -> D  -> E (21)
A hem B ve D'yi Next Hop olarak belirler ve gönderir.B kendine gelen paketi alır ve C'ye gönderir. D ise kendine gelen paketi alır E'ye gönderir.

2. MAC Data PDU mesajına Next Hop + Destination Address ikilisini yazmak
A -> B -> C
            -> D
    -> E -> F
A MAC Data PDU Alanına şöyle yazar.
Next Hop = B , Final Destination B + C + D
Next Hop = E , Final Destination F
PDU ID Alanı : 16 bit .
Her PDU için yeni bir ID verilir

PDU Length Alanı : 16 bit

Hop Count Alanı : 5 bit

Compress Flag Alanı : 1 bit
Fragment Flag Alanı : 1 bit
1. Yüksek verimlilik Fazla Gecikme
Bu durumda şöyle yapılır. Parçalama işlemi gönderme esnasında gerçekleşir. Parçaları alan katılımcı röle veya hedef bile olsa birleştirme işleminden sonra paketi işler. Böylece bant genişliği en yüksek şekilde kullanılır. Bu seçenek TCP gibi gecikmeye hassas protokolleri olumsuz etkileyebilir.

2. Düşük verimlilik Az Gecikme
Bu durumda şöyle yapılır. Bir fragmentation büyüklüğü belirlenir. Belirlenen sayıdan büyük her paket bu sayıya sığacak şekilde parçalanır.

Spare Alanı : 1 bit
Fragmentation Offset Alanı : 8 bit
IP zarfında offset 8 byte cinsindendir. Burada da aynı şekilde 8 byte cinsindendir.

6 Eylül 2017 Çarşamba

Stanag 4691 - Relay Control

Giriş
Relay Control - RC bileşenin açıklaması şöyle
Monitors the LOS network topology to determine network membership and shortest paths to desired destinations. This helper protocol provides Layer 2 routing when required.
Bu bileşen Kernel olarak adlandırılabilir. Çalışma şekli olarak OLSR yönlendirme algoritmasına benziyor ancak işletim sisteminin tablolarına müdahale etmez. Sebebi ise ağa gönderilen paketin IP olmaması.

RC ve Dynamic Link Exchange Protocol
Stanag 4691 Dynamic Link Exchange Protocol - DLEP ile ilgili bir şey söylemiyor ancak yönlendirmeyi iyileştirmek için kullanılabilir.

One-Hope Neighbors
Her katılımcı tüm "good two-way" komşularını bilir. Bu komşular ve ETX (Expected Transmission Count) değerleri MAC alt bileşeni tarafından belirlenir.
MAC -> Good Neighbors + ETX -> RC
ETX değeri double cinsindendir ve [1.0 - infinity) aralığındadır. Bir tablo kullanılarak "Link Cost" değerine dönüştürülür. "Link Cost" [0 - 15] aralığındadır. 15 çok iyi 0 ise çok kötüdür.

Bu komşular RC PDU ile diğer katılımcılara bildirilir. Eğer komşuluk yapısında veya link kalitesinde değişiklik varsa, RC Reporting Interval beklenmeden hemen RC PDU gönderilir. Açıklaması şöyle
Each node will generate a RC PDU whenever a topology change leads to a change in its two-way neighbor list,  and at least once every RC Reporting Interval, usually equal to one cycle time.
Algoritma şöyle
1. Shortest Path'i hesapla. Hesaplama esnasında MPR'ları seç.
2. RC PDU' gönder.

RC Reporting Interval Nedir
Normal şartlar altında "Reporting Interval" her çevrim (cycle)'de 1 keredir. Eğer topolojiyi değiştirecek bir olay olduysa, örneğin komşuluk durumu veya link cost değişirse, RC PDU hemen gönderilir. Reporting Interval timer sabit tutulabilir veya her topoloji değişikliğinden sonra tekrar başlatılabilir.

RC Hold Time Nedir
3 "Reporting Interval" suresidir. Bir katılımcıdan 3 Hold Time yani 3 çevrim boyunca RC PDU gelmezse, o katılımcı ve bildirdiği bağlantılar silinir. Katılımcı başına bir timer kullanılması 254 tane timer açılması anlamına gelebilir.

Yazılım
Klasik routing gerçekleştirimlerinde olduğu gibi "Control Plane" ve "Data Plane" olarak bakmak gerekir. "Control Plane" RC PDU'nun oluşturulması ve gelenlerin işlenmesidir. "Data Plane" ise topoloji üzerinde sorgu yapmaktır.

Servisler
Relay Control PDU almak ve vermek dışında diğer bileşenlere şu servisleri sağlar. Bu servisler "Data Plane" ile ilgilidir.

1. Bağlantı olup olmadığı.
bool isConnected ()  ;
Seçenekler şöyle
a. RT ARP isteklerine cevap vermeden önce bağlantı olup olmadığını kontrol edebilir. Bağlantı yoksa ARP isteğine cevap vermez.
b. MAC paketi göndermeden önce bağlantı olup olmadığını kontrol edebilir. Bağlantı yoksa paketi göndermekten vazgeçebilir.

2. Hedef IP adresine ulaşmak için hangi yolun kullanması gerektiği
int getNextHop (int destinationNode);
Seçenekler şöyle
a. LC paketi hazırlarken bu bilgiyi de MAC'e verir.
b. MAC gönderim esnasında bu bilgisi RC'den  isteyebilir.

3. Broadcast paketlerin röle edilip edilmeyeceği sorgulanır.
bool isMPRSForNode (int sourceNode);
4. Lokal ve röle edilecek paketler arasında denge sağlamak için beni kaç tane katılımcının beni röle olarak seçtiği sorgulanır. Her bir lokal pakete karşılık MPRS yani beni röle seçen katılımcı sayısı kadar röle paket gönderilir. Eğer MPRS sayısı 1 ise her bir lokal pakete karşılık 1 paket röle edilecek demektir. Eğer MPRS sayısı 3 ise her bir lokal pakete karşılık 3 paket röle edilecek anlamına gelir.
int  getMPRSCount ();

5. MAC bileşeni Random Access slot'ları belirlemek için Partition Identifier (PID) sayısına ihtiyaç duyar. PID routing topolojisindeki en küçük Node ID sayısıdır. Eğer PID değişmiş ise MAC kendi içinde bir algoritma başlatır. RC PID olarak kendi Node ID değerimi de döndürebilir.

int  getPID (); veya void notifyPIDChange ();
Seçenekler şöyle
a. MAC PID'in değişip değişmediğini anlamak için bu sorguyu yapar
b. RC PID bilgisini takip eder ve bu bilgi değişince MAC'e bildirir.


RC PDU
Bu PDU bir düğümünün tüm komşularını içerir. Bazı kablosuz ağ tasarımları sadece değişiklikleri göndererek bu ve benzeri PDU'ları küçültüyor. Ancak bu PDU tasarlanırken gerek görülmemiş.

Originator ID Alanı :Bu PDU'yu gönderen katılımcı. Aynı bilgi LLC PDU içinde de var. Neden buraya da konulmuş bilmiyorum.

Sequence Number Alanı : 0 - 255 arasında değer alır. PDU'nun elimizdekinden daha eski olup olmadığını anlamak için kullanılır. Eski PDU'lar gecikmeli olarak gelebilir. Bu sayı başa döndüğü için hangi PDU eski, hangisi yeni diye anlamak biraz zor.

Eldeki sayı 10 gelen sayı 20 olsun -> Paketi işle
Eldeki sayı 10 gelen sayı 255 olsun -> Paketi işle
Eldeki sayı 255 gelen sayı 5 olsun -> Paketi işle
Eldeki sayı 10 gelen sayı 9 olsun -> Paketi işleme

Yani gelen sayı küçük ise ve abs (eldeki sayı - gelen sayı) < 5 ise paket eskidir

Neighbor ID #1 Alanı :

Link Cost #1 Alanı : 0 - 15 arasında değer alır. MAC tarafından belirtilen ETX değeri, bir tablo kullanılarak sayısallaştırılır.

Neighbor Status #1 Alanı : Şu değerleri alabilir.
Status = 0 Neigbor  (but neither MPR or MPRS)
Status = 1 MPR (but not MPRS)
Status = 2 MPRS (but not MPR)
Status = 3 MPR + MPRS
MPR (Multi-Point Relay) benim röle olarak seçtiğim katılımcı. MPRS (Multi-Point Relay Selector) ise beni MPR seçen katılımcı. MPR broadcast paketler için röle görevi görür. Tüm ağa kimin MPR veya MPRS olduğunu bildirmenin açıklaması şöyle.
When data packets of a single priority are considered, packets to be relayed shoulder generally be sent before locally generated packets, except that each node may send one locally generated packet for every K relayed packets,  where K is the number of neighbors that have selected the node as a Multi-Point-Relay  (MPR). Remotely generated traffic is generally preferred to local traffic, as network resources have already been employed in moving the remote traffic at least one hop from source to destination. However, the 1 of K rule just described can be used to prevent local starvation of a relay node when network load exceeds capacity.



Stanag 4691 - Physical Interface

Giriş
Physical Interface yani kısaca PI katmanının açıklaması şöyle
Connects to the on-air bearer.
Modem
Bu bileşen Modem Interface olarak adlandırılabilir. Modem de telsiz ile bağlantılıdır. Modem ile konuşmak için genellikle "seri" veya "senkron seri" bağlantı kullanılır.

Modemlerin marka ve kumanda protokolleri farklılık gösterdiği için bu katmanda konuyla ilgili bir şey belirtilmiyor.

Modem Bağlantısı
Yazılım açısından Channel isimli bir arayüz ve bu arayüzden kalıtan bir sınıf kullanmak iyi olur. Böylece farklı iletişim ihtiyaçları için yeni stratejiler kullanılabilir. Örneğin gerçek modem'in mevcut olmadığı test senaryolarında TCP, UDP gibi bağlantılar kullanılabilir.

Telsiz
UHF telsiz kullanıldığı için telsizlerin çıkış gücü ile ilgili bir şey standartta yok. HF kullanımda telsizin çıkış gücü değiştirilerek verideki bozulmanın azaltılması mümkün. Ancak UHF kullanımda zaten mesafe kısa olduğu için sanırım gerek görülmemiş.

Time Slot Bileşenleri
Tüm slot uzunluğu 380 ms. olsun.
1.Tg/2 (10 ms)- Guard time /2
2.Tr - Time required for a transmitter to ramp up to 80% of its transmit power.
3.Tc - Time required for crypto synchronization. Harici link kriptosu kullanılır.
4.Tu - Unoptimized delay. Modemin veriyi işlemesi için geren süre.
5.Td - Time during which data is transmitted. STU bu zamanda gönderilir.
6.Tg/2 (10 ms)- Guard time/2
Gönderen katılımcı kendi time slot'ı dışına taşmamalı.
Fundamentally, the transmitter must ensure that its on-air transmission does not extend beyond the defined slot boundaries.

4 Eylül 2017 Pazartesi

Stanag 4691

Giriş
Mevcut telsizleri kullanarak IP tabanlı iletişim altyapısı kurma fikri yeni değil.

İlâveten piyasada bu işi yapan ticari ürünler hâlihazırda var. Ancak bu ürünler belli bir standarda dayanmıyor.

Ülkemizde Aselsan'ın 4700 serisi sayısal kripto özellikli telsizleriyle SAHMUS, JEMUS sistemleri kullanılıyor.

Aynı amacı hedefleyen iki tane Stanag yazılmış. Bunlar Stanag 4691 ve Stanag 5066.

Stanag 4691
Stanag 4691 nisbeten yeni, Stanag 5066 ise oldukça eski bir geçmişe sahip.

Stanag 4691 Nato Unclassified statüsünde. Aslında ilk olarak Rockwell Collins şirketi tarafından geliştirilmiş. Daha sonra Stanag hâline gelmiş. Stanag'ın tam adi şöyle.
Multi-Hop Networking With Legacy UHF Radios : Mobile Ad Hoc Relay Line Of Sight Networking (MARLIN).
Iki Annex'ten oluşuyor. Annex A'nın başlığı şöyle
Mobile Ad Hoc Relay Line Of Sight Networking  (MARLIN) Profile.
Yani Marlin'in çalışma prensiplerinin anlatıldığı belge. Annex B'nin başlığı şöyle
Technical Specifications To Ensure Interoperability Of Serial Waveforms For 25 KHz Bandwidth Line Of Sight VHF And UHF Radio Data Communications.
Yani dalga şekillerinin anlatıldığı belge.

Stanag 4691 atıl durumda bulunan (örneğin askeri gemilerdeki gemi hava haberleşmesi için kullanılan UHF telsizler genelde atıldır) UHF telsizleri kullanarak IP haberleşme altyapısı kurmayı hedefliyor. Stanag 4691 Operator Specific Services ile ilgili bir açıklama vermiyor. Operator Specific Service için açıklama şöyle
OSSs is the set of services which are not covered by standardized GSM services

The Services could be very specific to the particular Operator like Caller Tunes,IVR responses and any set of service provided by the operator which is not a standard one with respect to GSM standard.

Stanag 5066
Benzer bir amaç güden Stanag 5066 yani tam ismiyle
Profile For HF Radio Data Communications
HF telsizleri kullanarak IP haberleşme altyapısı kurmayı hedefliyor. Aralarında önemli farklar var. Stanag 4691 ad hoc yani tasarsız bir ağ kullanılıyor. Stanag 5066 ise Token Ring bir yapı kullanıyor.

Bir diğer önemli fark, Stanag 5066 ile uygulamaların birbirlerine göbekten bağlı olmaları. Stanag 5066 uygulamaları bile tanımlıyor. Uygulama mesaj göndermek için Stanag 5066'nın talep ettiği protokole uymak zorunda. Stanag 4691 ise OSI katmanlarını yani Ethetnet'i kullandığı için IP kullanan herhangi bir uygulama ile çalışabilir.

HF haberleşmede modem veya telsiz Stanag 4538 Automatic Link Establishment  (ALE) destekliyorsa  SNR değerine göre kanal degişimi yapılabilir. Bu frekans atlama (frequency hopping) değildir. UHF haberleşmede böyle bir standart mevcut değil.

Signal to Noise Ratio - SNR
SNR yazısına taşıdım.

Telsizler
Her iki Stanag eski (legacy) telsizler için tasarlanmış. Yeni moda Cognitive Radio, Software Defined Radio veya frekans atlamalı cihazlarla çalışma konusunda birşey söylenmiyor.

Operasyonel Konsept
UHF telsizlerin denizdeki LOS menzili 20 deniz mili civarında. Sadece UHF kullanarak - arada röle olsa bile - gemileri 20 nm arayla yerleştirmek gerekir.
Gemi1 <-- >Gemi2 <--> Gemi 3
Bu çok kullanışlı değil.  Bu yüzden
1.Karadaki yüksek bir mevkiide UHF telsiz bulundurmak.
2. AWACS benzeri bir hava aracı kullanmak
3. Geniş bant HF (wideband HF), Extended Wideband HF kullanmak
diğer seçenekler.

TCP
TCP  high-loss ve high-latency ortamlarda yani MARLIN ortamında iyi çalışmıyor.
Latency özellikle TCP Three Way Handshake hızlı cevap beklediği için bağlantının kurulamamasına sebep olur.
Linux'ta bu ayarları değiştirmek için şöyle yaparız
/proc/sys/net/ipv4/tcp_synretries
/proc/sys/net/ipv4/tcp_synack_retries
dosyalarındaki rakamlar artırılır.
Ayarların kalıcı olması için /etc/sysctl.conf dosyasına
net.ipv4.tcp_syn_retries=6
yazılır.

High-loss için açıklama şöyle.
In wired networks congestion is the predominant cause of paket loss. As a result,  TCP dramatically reduces the size of its congestion window in presence of missing or lost packets to avoid further congestion of the network. However,  in wireless networks where radio frequency  (RF) impairments are often the cause of packet loss, TCP erroneously reduces its congestion window after packets are lost as a precaution against network congestion. This reduced congestion window size leads to an average transmission rate that is much less than the available bandwidth in the network.

Stanag 4691 Annex A'yı Gerçekleştiren Ürünler
1. Rockwell Collins şirketinin SNC-2050 ürünü.
2. Polonyalı CTM şirketinin RNC 8201 ürünü. Ayrıca bu şirketin Annex B'yi gerçekleştiren MRM-1201 telsizi de mevcut.

Akış
Kabaca şöyle. Kullanılacak Router tipi için herhangi bir kısıtlama yok. OSPF olması muhtemel deniyor sadece.
Router1 -> RT1 -> LC1 -> MAC1 ->SSI ->Crypto->Modem1->Radio1->RF - |
Router2 <- RT2 <- LC2 <- MAC2 <-SSI <-Modem2 <-Crypto<-Radio2<-RF- |
SSI (Synchronous Serial Interface) ihtiyaca bağlı. Eğer telsiz hızlı değilse SSI'ye gerek yok. Eğer telsiz çok hızlı ise, RS-232 veya türevi seri iletişimi hızlandırmak için kullanılır.
Crypto yine ihtiyaca bağlı.

Stanag 4691 Yazılım Bileşenleri
Yazılım bileşeni olarak tariflenmeyen ancak Figure A-2'de gösterilen "Management System" muhtemelen tüm yazılımı ilgilendiren yönetimsel şeyleri kapsıyor.

Router Interface - RT
Stanag 4691 - Router Interface yazısına taşıdım.

Link Layer Control - LLC
Stanag 4691 - Link Layer Control yazısına taşıdım.

Relay Control - RC
Stanag 4691 Relay Control yazısına taşıdım.

Media Access Control - MAC
Coordinates transmission on the shared channel using a synhronous TDMA scheme, allocating time slots in proportion to reported requirements. In addition,  the MAC increases reliability of data transfer by implementing automatic repeat request  (ARQ)
Bu bileşen DTMA Interface olarak adlandırılabilir. TDMA yapısının başlıca sebebi frekansların az olması. Eğer herkese ayrı bir frekans tahsis edilebilseydi TDMA yapısına gerek kalmazdı.

Physical Interface - PI
Stanag 4691 Pysical Interface yazısına taşıdım

STU
Slot Transmission Unit (STU) Time Division Multiple Access (TDMA) iletişimde kullanılır. Gönderme zamanı gelen katılımcı, her şeyi STU paketine doldurur ve gönderir.

Yapısı
Şöyledir.
STU Header 1 + STU Header 2 + MAC Management PDU + Diğer PDU'lar
Diğer PDU'lar
Şunlar olabilir.
1. MAC ACK PDU
2. MAC Data PDU
3. LLC PDU
4. Relay Control PDU
STU Header 1
Stanag 4691 STU Header yazısına taşıdım.

STU Header 2
Stanag 4691 STU Header yazısına taşıdım.

MAC Management PDU
Bu PDU her zaman diliminde gönderildiği için sistem Dynamic TDMA ile gelen kapasite paylaşımını hızlı yerine getirir. Eğer bu paketin gönderilmesi yavaşlatılırsa kapasite paylaşımı dolayısıyla yük değişimine verilen tepki de yavaşlar.
Giriş
Type Alanı :
Request Flag Alanı :
Interferer Flag Alanı :
Number of RA Slots Alanı  : 1 - 4 tane Random Access Slot olabilir. Bu alan 0 olsa bile 1 RA var kabul edilir.
Number of Slots Alanı : 1 - 256.  Bir çevrimde (cycle) kaç zaman dilimi  (slot) olduğunu belirtir.
Number of RA Slots ve Number of Slots alanları ile katılmak istenilen ağın Ağ Çevrim Yapısı  (Network Cycle Structure) öğrenilebilir. Slot süresi bilgisi gönderilmiyor. Bu bilginin tüm katılımcılarda aynı olduğunu varsayarsak, farklı yapılar kullan ağlar otomatik olarak birleşebilir (merge).
Demand : 0 - 255. Gönderenin demand değeri.
Total Demand : Gönderenin ve direkt komşularının toplam demand değeri.

Neighbors Tablosu
Bu tablo neighbor graph'ın oluşturulması için kullanılır. 2 hop'a kadar komşuluk ilişkisi bu sayede bulunabilir.
Neighbor ID#N Alanı : 8 bit.
Neighbor Status#N Alanı : 8 bit.
Ilk 3 bit status içindir
0 = Non-neighbor
1 = Bad neighbor
2 = Asymmetric  (one-way) neighbor
3 = Symmetric  (good,two-way neighbor)
4 = MAC Layer Arbiter. Aynı zamanda good neighbor. MLA aynı MPR gibi flooding için kullanılabilir.
Arbiter hakem anlamına gelir. Örneğin satrançta son sözü söyleyen kişi arbiter olarak adlandırılır.
MongoDB terminolojisinde ise oylamaya katılan kişidir. Açıklaması şöyle
An arbiter participates in elections but does not hold data 
Sonraki 1 bit bu komşunun SOT tablosunda mevcut olup olmadığını belirtir.
Sonraki 4 bit Link Quality değerini belirtir. LQ değeri bir tablo kullanılarak sayısallaştırılır. 0 - 15 arasında değer alır. Bir komşudan ilk defa paket alınınca LQ (2) yani asymmetric komşu kabul edilir? LQ değeri belli bir sayı ile başlatılır.  Örneğin 0.7. Bu alan hesaplanırken komşunun "Radio Silent" olup olmadığı konusuna hiç değinilmemiş. Radio Silent EMCON seviyelerinden bir tanesi. Komşudan paket gelmezse LQ hep azaltılıyor. Bir katılımcı "Radio Silent" olup diğer katılımcılar açısından ağdan düşse bile direkt komşusu olanları duyabilir. Ancak röle veya broadcast her paketi alacak garantisi verilemez. Şöyle bir ağ düşünelim.
A -> B -> C.
C artık Radio Silent olmaya karar verir. B artık MPR olmayacağı için C broadcast paketleri alamaz.

Neighbor Reporting Tablosu
SOT Neighbor#N :
Summary SOT for Interferers :
Kötü kalite bile olsa sinyal olması muhtemel zaman dilimlerini belirtir. Yeni zaman dilimi talebinde öncelik interferer olmayan dilimlerden başlayacak şekildedir.

CRC : 16 bit. Bu alan tüm MAC PDU'larında olduğu gibi tüm paket için.

MAC ACK PDU - Layer 2
1.Tekrar Gönderim
Tüm kuyruk dolaşılır.
Acknowledgement PDU'nun gelmesi için 2 cycle beklenir. Eğer gelmezse MAC Data PDU en az bir kere tekrar gönderilir. Örneğin Slot 21 bizim olsun. Slot 1'de gönderilen paket acknowledgment gelmezse Slot 21'de tekrar gönderilir.

2. Zaman Aşımı
Önümüzde iki seçenek var. İlki bir timer kurmak ve örneğin 3 cycle beklemek. Eğer paket 3 cycle yani Slot 30'a kadar gönderilemezse düşürülür.
İkinci seçenek ise timer kurmadan tüm bir ağ döngüsünce beklemek. Yeni cycle + slot'ta ekleme yapmadan eski paketler silinir. Bunun kötü tarafı kuyrukta çok paket varmış gibi görünebilir.

3. Acknowledgement'ı İşlemek
Eğer gelen acknowledgment positive ise paket teslim edilmiştir ve silinir. Eğer acknowledgment negatif ise paket 1 cycle beklemeden ilk firsatta tekrar gönderilir.
1 cycle = 10 slot
----------------------------------------------------------------
^                ^                  ^                 ^               ^
|                |                  |                 |               |
Slot #1 ACK PDU      Slot#20      Slot#21    Slot#30
Başı                            Başı
+                                  
Transmission        

Type Alanı: 3
Cycle Alanı :
Slot Alanı :
Transmitter ID Alanı:
SACK Flag Alanı:
Cumulative Ack = 0
Selective Ack = 1
PDU Number Alanı:
Eğer Cumulative Ack tipi ise en son başarıyla alınan PDU numarasını belirtir. Eğer Selective Ack ise SACK bit-vector'de kaç tane eleman olduğunu belirtir.
SACK bit-vector Alanı :
Şöyledir . LSB biti ilk PDU içindir. MSB biti slot içindeki en son bit içindir.
1 1 0 1 1
CRC Alanı: 16 bit. Bu alan tüm MAC PDU'larında olduğu gibi tüm paket için.

MAC Data PDU - Layer 2
Layer 2'de komşular arası haberleşme için kullanılır. Wifi standardında Layer 2 zarfında taşınan Layer 3 paketinin şifreli olup olmadığını belirten bir alan mevcut. Bu PDU kriptonun arkasında olduğu için böyle bir alana lüzum görülmemiş.

Her katılımcı tüm MAC Data PDU'ları açar ve LLC katmanına gönderir. LLC katmanında şu adımlar gerçekleşir.

1. Veri tekrar rölenebilir. Unicast trafiktir.
2. Hem rölenebilir hem de işlenir. Broadcast trafiktir ve biz MPR seçilmişizdir.
3. Sadece işlenir. Broadcast trafiktir ve biz MPR seçilmemişizdir.
3. Kendisine adreslenmiş ise sadece işlenir.
Type Alanı : 4 bit
Reserved Alanı : 3 bit
Reliability Flag Alanı : 1 bit
Bu alan MAC seviyesinde yeniden gönderim için kullanılır.
Next Hop ID Alanı : 8 bit
Data Payload Alanı : Değişken
CRC : 16 bit. Bu alan tüm MAC PDU'larında olduğu gibi tüm paket için. Böylece LLC PDU'da CRC alanına gerek kalmıyor.