5.12.07
25.11.07
Essentials of writing a protocol layer
A layer in protocol stack is an interface between its next higher layer and lower layer. It provides interface to send and receive data to and from these layers, generally referred to as Data Entity of the layer. It also provides another interface to manage the layer itself, generally referred to as Management Entity.
To write a layer, there are five major tasks to be handled:
- Initialization
- Cleanup
- Timers
- Data primitives
- Management primitives
Initialization would involve providing initial default values to various parameters related to the layer. This is performed once during the setup of the layer. Some or whole of this may be performed on receiving special management primitive to reset the layer.
Cleanup is freeing up the data which the layer might be using. It might also involve canceling all on-going operations at the layer after informing relevant layers/entities.
A timer handling function would be invoked whenever a timer expires. These timers are either repetitive or one-time. These are set during initialization or while handling data and management primitives. Expiration of timers may indicate erroneous condition, eg. non-receipt of a reply. Timers are set with their 'type' and some meta data. 'Type' is checked to invoke correct handler. Meta data is additional data that might be helpful in handling the timer.
Data primitives are interface functions used as data traverses through different layers. The general data primitives are request, confirm and indication. A request is sent by next higher layer to the layer to send the PDU. A confirm is the answer to this request. An indication is made from the layer to the next higher layer of the peer entity to which PDU has been sent.
Management primitives help in managing the layer. These generally involve getting and setting certain key parameters of the layer. Others could be suspending, resetting or restarting the layer. These primitives are specific to the layer.
[The above is a small article based on my little experience in protocol writing. This is only an overview of the protocol writing. I'll try to update the same if and when I get further experience/time.]
To write a layer, there are five major tasks to be handled:
- Initialization
- Cleanup
- Timers
- Data primitives
- Management primitives
Initialization would involve providing initial default values to various parameters related to the layer. This is performed once during the setup of the layer. Some or whole of this may be performed on receiving special management primitive to reset the layer.
Cleanup is freeing up the data which the layer might be using. It might also involve canceling all on-going operations at the layer after informing relevant layers/entities.
A timer handling function would be invoked whenever a timer expires. These timers are either repetitive or one-time. These are set during initialization or while handling data and management primitives. Expiration of timers may indicate erroneous condition, eg. non-receipt of a reply. Timers are set with their 'type' and some meta data. 'Type' is checked to invoke correct handler. Meta data is additional data that might be helpful in handling the timer.
Data primitives are interface functions used as data traverses through different layers. The general data primitives are request, confirm and indication. A request is sent by next higher layer to the layer to send the PDU. A confirm is the answer to this request. An indication is made from the layer to the next higher layer of the peer entity to which PDU has been sent.
Management primitives help in managing the layer. These generally involve getting and setting certain key parameters of the layer. Others could be suspending, resetting or restarting the layer. These primitives are specific to the layer.
[The above is a small article based on my little experience in protocol writing. This is only an overview of the protocol writing. I'll try to update the same if and when I get further experience/time.]
11.11.06
Wanna get my self connected...
With Netgear's (cheap :D) 802.11g wireless router, my home is now a wi-fi hotspot. Feels great to browse the net without wires.
13.8.06
Beejnaagri and BeejU8
एक कदम डिजीटल स्वतंत्रता की ओर
६०वें स्वतंत्रता दिवस के शुभ अवसर पर, बीजनागरी व बीजू८ की घोषणा।
बीजनागरी एक यूनीकोड रूपांतरण फॉर्मेट (UTF) है । एक १२ बिट कूटलेखन कला जो स्वर, मात्रा व व्यंजन का अलग अलग कोडन की जगह अक्षर कोडन करता है ।
बीजनागरी, देवनागरी को यूटीएफ८ से लगभग ५०-६०% संक्षिप्त करता है । समान तकनीक अन्य भारतीय लिपियों पर भी लागू हो सकती है ।
बीजू८, बीजनागरी व यूटीएफ८ के बीच का रुपान्तरण प्रदर्शित करता है । ये लिनक्स के लिए निर्मित है ।
कृप्या http://beejnaagri.sourceforge.net/ से डाउनलोड करके इन्हें परखें व अपनी बहुमूल्य राय दें ।
संदीप गुप्ता
A step towards Digital Independence
Announcing the release of Beejnaagri and BeejU8 on the occasion of 60th Independence day.
Beejnaagri is a Unicode Transformation Fromat (UTF) for Devanagari. It is a 12-bit encoding technique which encodes akshars rather than swar, vyanjan and maatra separately.
Beejnaagri is expected to compress Devanagri text by 50-60% over UTF-8. A similar technique can be applied to other Indic scripts.
BeejU8 v0.1 demonstrates the conversion between Beejnaagri and UTF-8. It requires *nix environment. It has been tested on Ubuntu 6.06 with very good results.
Please visit http://beejnaagri.sourceforge.net/ . It would be highly appreciated if you can comment on Beejnaagri and test BeejU8 on your systems and provide your valuable feedback.
Sandeep Gupta
23.7.06
Towards dumb terminals
Web is gaining new powers. YouOS is a complete web-based OS.
Get a good browser (read firefox) and enjoy.
Get a good browser (read firefox) and enjoy.
2.6.06
Mpatrol
A great, open source, memory debugging tool. It can also be used even though the original program might not have been compiled with the library.
Has very good support for various systems like (various)linux, tru64, windows etc.
Have been able to compile the same for Tru64 on Alpha machine. Though, still not been able to get it working properly but seems to be pretty good. Can give Insure++ a run for money.
Has very good support for various systems like (various)linux, tru64, windows etc.
Have been able to compile the same for Tru64 on Alpha machine. Though, still not been able to get it working properly but seems to be pretty good. Can give Insure++ a run for money.
25.4.06
Gnu/Linux species chart ;)
An excellent mindmapped view of current state and origin of various Gnu/Linux distributions :
http://photos1.blogger.com/blogger
/3370/2500/1600/GNULinuxupdatedw4.0.jpg
The story here.
http://photos1.blogger.com/blogger
/3370/2500/1600/GNULinuxupdatedw4.0.jpg
The story here.