Tech Kaizen

passion + usefulness = success .. change is the only constant in life

Search this Blog:

Service Discovery Protocols

Service Discovery is the automatic detection of devices and services offered by devices on a computer network. A service discovery protocol (SDP) is a network protocol that helps accomplish service discovery. 

Simple Service Discovery Protocol (SSDP) is a networkprotocol based on the Internet Protocol Suite for advertisement and discovery of network services and presence information. It accomplishes this without assistance of server-based configuration mechanisms, such as DHCP or DNS, and without special static configuration of a network host. SSDP is the basis of the discovery protocol of Universal Plug and Play (UPnP) and is intended for use in residential or small office environments. 

Multicast DNS(mDNS) protocol is published as RFC 6762, uses IP multicast UserDatagram Protocol(UDP) packets, and is implemented by the Apple Bonjour and open source Avahi software packages. Android contains an mDNS implementation. mDNS has also been implemented in Windows 10, but its use there is limited to discovering networked printers. mDNS can work in conjunction with DNS Service Discovery (DNS-SD), a companion zero-configuration technique specified separately in RFC 6763

DNS Service Discovery over Multicast DNS (DNS-SD/mDNS), made fashionable through Apple’s Bonjour. DNS Service Discovery over Multicast DNS (DNS-SD/mDNS) is a prevalent technique widely used for offering and requesting services in local networks without configuration. Using the upper two layers of the Zeroconf stack, namely DNS Service Discovery and Multicast DNS, it provides a great user experience. DNS-SD/mDNS is widely used. It runs on Linux (Avahi), Windows (Avahi, Bonjour), MacOS (Bonjour), Android (NSD), and iOS (Bonjour). Implementations for Internet of Things (IoT) operating systems, such as contiki, also exist.

Zeroconf stack provides configurationless means for all of addressing, name resolution, and service discovery. A huge advantage is that these layers are independent of each other. The name resolution mechanism - multicast DNS (mDNS) works with automatic  or static address configuration as well as with DHCP. The service discovery layer - DNS service discovery (DNS-SD)  works with standard DNS as well as mDNS.


ref:

Service Discovery - https://en.wikipedia.org/wiki/Service_discovery

Protocols for Device Discovery - https://www.bbc.co.uk/rd/blog/2014-07-protocols-for-device-discovery

Service Discovery using ZeroConf Stack(DNS-SD/mDNS) - https://pdfs.semanticscholar.org/0c62/d94cef19690d8f1fabc7e1f8bcf369dc49ce.pdf

SSDP(Simple Service Discovery Protocol) Protocol - https://en.wikipedia.org/wiki/Simple_Service_Discovery_Protocol

MultiCast DNS(mDNS) -
  • https://en.wikipedia.org/wiki/Multicast_DNS
  • http://www.multicastdns.org/ 
  • http://www.zeroconf.org
DNS-SD overview -  http://www.dns-sd.org/. https://en.wikipedia.org/wiki/Zero-configuration_networking#DNS-SD

Apple Bonjour-
  • Overview - https://developer.apple.com/bonjour/
  • Source code (tar ball) - https://opensource.apple.com/tarballs/mDNSResponder/
  • Bonjour Concepts (Documentation) - https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/NetServices/Articles/about.html
SSDP protocol opensource libraries-
  • https://github.com/kallisti5/libmicrossdp
  • https://github.com/zlargon/lssdp
  • https://github.com/troglobit/ssdp-responder
  • https://github.com/topics/ssdp
Multicast DNS(mDNS) & DNS-SD Overview - https://meetings.ripe.net/ripe-55/presentations/strotmann-mdns.pdf

Apple mDNS/ZeroConf "C" library: Bonjour (Apache License) - https://opensource.apple.com/source/mDNSResponder/mDNSResponder-214/mDNSCore/

Linux Avahi library source code (LGPL license) - https://github.com/lathiat/avahi

Google chromium mDNS source code - https://chromium.googlesource.com/chromium/src/+/68ea490084597d5d4640e782989c0a6a094dcd21/chrome/browser/extensions/api/mdns

Multicast DNS and DNS-SD for the Spark Core - https://github.com/mrhornsby/spark-core-mdns, https://community.particle.io/t/mdns-and-dns-service-discovery-library/9550/3

Apple Bonjour “C” library Posix Port - https://opensource.apple.com/source/mDNSResponder/mDNSResponder-541/mDNSPosix/

Apple Bonjour Test/Sample code - https://github.com/jevinskie/mDNSResponder

ZeroConf(mDNS) discovery in C++ - https://github.com/HBPVIS/Servus

mDNS opensource implementations - https://github.com/topics/mdns 

Open IOT LIbraries - https://github.com/Agile-IoT/awesome-open-iot 

Multicast DNS(mDNS) & DNS-SD - https://webscreens.github.io/openscreenprotocol/mdns.html

Android Bonjour mDNS responder - https://www.andriydruk.com/post/mdnsresponder/

DNS Service Discovery on Windows - https://marknelson.us/posts/2011/10/25/dns-service-discovery-on-windows.html

Bonjour overview - https://people.eecs.berkeley.edu/~johnw/cs294-97/papers/Bonjour%20-%20Overview.pdf

SIP URI Service Discovery using DNS-SD - https://tools.ietf.org/html/draft-lee-sip-dns-sd-uri-03

Light-weight multicast DNS and DNS-SD (lmDNS-SD) - https://www.researchgate.net/publication/261427432_Light-Weight_Multicast_DNS_and_DNS-SD_lmDNS-SD_IPv6-Based_Resource_and_Service_Discovery_for_the_Web_of_Things

Proxy support for service discovery using mDNS/DNS-SD in low power networks - http://www.win.tue.nl/~mstolikj/publications/IOTSOS2014.pdf

KDNSSD(Network service discovery using Zeroconf) - https://api.kde.org/frameworks/kdnssd/html/index.html

Labels: CLOUD COMPUTING, DATA SCIENCE, LATEST TECHNOLOGY

Machine Learning(ML) Overview

Machine learning is a Umbrella term. It is a type of artificial intelligence (AI) that provides computers with the ability to learn without being explicitly programmed. AI means making computers act intelligently. It is one of the major fields of study in computer science and encompasses sub-fields such as robotics, machine learning, expert systems, general intelligence and natural language processing.” Machine learning focuses on the development of computer programs that can teach themselves to grow and change when exposed to new data.

Machine learning is the sub field of computer science that "gives computers the ability to learn without being explicitly programmed" (Arthur Samuel, 1959). Evolved from the study of pattern recognition and computational learning theory in artificial intelligence, machine learning explores the study and construction of algorithms that can learn from and make predictions on data such algorithms overcome following strictly static program instructions by making data-driven predictions or decisions through building a model from sample inputs.


Machine learning is closely related to (and often overlaps with) computational statistics, which also focuses in prediction-making through the use of computers. It has strong ties to mathematical optimization, which delivers methods, theory and application domains to the field. Machine learning is sometimes conflated with Data Mining where the latter subfield focuses more on exploratory data analysis. Statistical Analysis is a component of data analytics. In the context of business intelligence (BI), statistical analysis involves collecting and scrutinizing every data sample in a set of items from which samples can be drawn.


Deep learning is a form of machine learning that uses a model of computing that's very much inspired by the structure of the brain. Hence we call this model a neural network. The basic foundation unit of a neural network is the neuron, which is actually conceptually quite simple.


Machine learning tasks are typically classified into three broad categories, depending on the nature of the learning "signal" or "feedback" available to a learning system. These are -


    1. Supervised learning: The computer is presented with example inputs and their desired outputs, given by a "teacher", and the goal is to learn a general rule that maps inputs to outputs.


    2. Unsupervised learning: No labels are given to the learning algorithm, leaving it on its own to find structure in its input. Unsupervised learning can be a goal in itself (discovering hidden patterns in data) or a means towards an end (feature learning).


    3. Reinforcement learning: A computer program interacts with a dynamic environment in which it must perform a certain goal (such as driving a vehicle), without a teacher explicitly telling it whether it has come close to its goal. Another example is learning to play a game by playing against an opponent.


Generalization refers to how well the concepts learned by a machine learning model apply to specific examples not seen by the model when it was learning. The goal of a good machine learning model is to generalize well from the training data to any data from the problem domain. This allows us to make predictions in the future on data the model has never seen. There is a terminology used in machine learning when we talk about how well a machine learning model learns and generalizes to new data, namely overfitting and underfitting.


Overfitting and underfitting are the two biggest causes for poor performance of machine learning algorithms. Overfitting refers to a model that models the training data too well. Overfitting happens when a model learns the detail and noise in the training data to the extent that it negatively impacts the performance on the model on new data. This means that the noise or random fluctuations in the training data is picked up and learned as concepts by the model. The problem is that these concepts do not apply to new data and negatively impact the models ability to generalize. 
Underfitting refers to a model that can neither model the training data not generalize to new data. An underfit machine learning model is not a suitable model and will be obvious as it will have poor performance on the training data. Underfitting is often not discussed as it is easy to detect given a good performance metric. The remedy is to move on and try alternate machine learning algorithms.


Supervised Learning:


Supervised learning is the machine learning task of inferring a function from labeled training data. The training data consist of a set of training examples. In supervised learning, each example is a pair consisting of an input object (typically a vector) and a desired output value (also called the supervisory signal). 
The majority of practical machine learning uses supervised learning. Supervised learning is where you have input variables (x) and an output variable (Y) and you use an algorithm to learn the mapping function from the input to the output.


Y = f(X)

The goal is to approximate the mapping function so well that when you have new input data (x) that you can predict the output variables (Y) for that data.


Supervised learning mainly has 2 categories:


    1. Classification - Target variable is categorical(yes/no). A classification problem is when the output variable is a category, such as “red” or “blue” or “disease” and “no disease”.

    2. Regression - Target variable is continuous. A regression problem is when the output variable is a real value, such as “dollars” or “weight”.

Some popular examples of supervised machine learning algorithms are:

    1. Linear regression for regression problems.
    2. Random forest for classification and regression problems.
    3. Support vector machines for classification problems.

Unsupervised Learning:


Unsupervised learning is the machine learning task of inferring a function to describe hidden structure from unlabeled data. Since the examples given to the learner are unlabeled, there is no error or reward signal to evaluate a potential solution - this distinguishes unsupervised learning from supervised learning and reinforcement learning. Unsupervised learning is closely related to the problem of density estimation in statistics. However, unsupervised learning also encompasses many other techniques that seek to summarize and explain key features of the data.


Unsupervised learning problems can be further grouped into clustering and association problems -


    1. Clustering: A clustering problem is where you want to discover the inherent groupings in the data, such as grouping customers by purchasing behavior.

    2. Association:  An association rule learning problem is where you want to discover rules that describe large portions of your data, such as people that buy X also tend to buy Y.

Some popular examples of unsupervised learning algorithms are:

    1. K-means for clustering problems.
    2. Apriori algorithm for association rule learning problems.


ref:







Wiki -

    1. Artificial Intelligence - https://en.wikipedia.org/wiki/Artificial_intelligence
    2. Machine Learning - https://en.wikipedia.org/wiki/Machine_learning
    3. Unsupervised Learning - https://en.wikipedia.org/wiki/Unsupervised_learning
    4. Supervised Learning - https://en.wikipedia.org/wiki/Supervised_learning
    5. Neural Networks - https://en.wikipedia.org/wiki/Artificial_neural_network

Deep Neural Networks - https://www.technologyreview.com/s/602344/the-extraordinary-link-between-deep-neural-networks-and-the-nature-of-the-universe/


Supervised and Unsupervised learning - http://machinelearningmastery.com/supervised-and-unsupervised-machine-learning-algorithms/


Machine Learning Algorithms - http://machinelearningmastery.com/a-tour-of-machine-learning-algorithms/


Machine Learning using Python - http://scikit-learn.org/

Misc -

    1. http://www.kdnuggets.com/2015/01/deep-learning-explanation-what-how-why.html
    2. http://machinelearningmastery.com/overfitting-and-underfitting-with-machine-learning-algorithms/
    3. http://math.stackexchange.com/questions/141381/regression-vs-classification

Labels: AI (Artificial Intelligence), AI/ML, CLOUD COMPUTING, DATA SCIENCE, PYTHON PROGRAMMING

Porting Linux Applications to VxWorks RTOS

Tips for Porting Linux Application to VxWorks: 

1. There is no notion of a process (in the POSIX sense), there is no notion of sharing of locks (mutexes) and condition variables between processes.  As a result, the POSIX symbol _POSIX_THREAD_PROCESS_SHARED is not defined in this implementation, and the routines pthread_condattr_getpshared( ), pthread_condattr_setpshared( ), pthread_mutexattr_getpshared( ) are not implemented.

2. There are NO processes in VxWorks, fork( ), wait( ), and pthread_atfork( ) are unimplemented. If you need to spawn a task for that using the 'taskSpawn' routine.

3. VxWorks does NOT have password, user, or group databases, therefore there are no implementations of getlogin( ), getgrgid( ), getpwnam( ), getpwuid( ), getlogin_r( ), getgrgid_r( ), getpwnam_r( ), and getpwuid_r( )

4. VxWorks programming discourages to use global variables and if in case you need to use the global variables ( global scope ,file scope ) make sure you initialize those before your application program starts and make sure use to use the unique variable names.This is because of the fact that vxWorks memory model is flat,so you need to be extra careful in using the global variables.

5. The 'main' routine does not work in vxWorks case, We need to write your own wrapper function to parse the command line arguments that you pass to your program from the interactive shell.

6. It is recommended to use the separate memory partition for your application if your application demands more frequent use of dynamic memory allocations and frees.

7. It is better to use the static memory for small memory allocations because vxWorks mem library does not use best fit  algorithm for its memory allocations and it can lead to memory fragmentation.

ref:

http://www.vxdev.com/docs/vx55man/vxworks/ref/pthreadLib.html

https://groups.google.com/forum/#!topic/comp.os.vxworks/PVGKsSaGxtw

Porting RTOS drivers to Linux - http://www.linuxjournal.com/article/7355

VxWorks API to Linux - http://v2lin.sourceforge.net/

Migrating legacy VxWorks applications to Linux - http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.466.7007&rep=rep1&type=pdf

Labels: 5G, EMBEDDED SYSTEMS, LINUX
Newer Posts Older Posts Home
Subscribe to: Posts (Atom)

The Verge - YOUTUBE

Loading...

Google - YOUTUBE

Loading...

Microsoft - YOUTUBE

Loading...

MIT OpenCourseWare - YOUTUBE

Loading...

FREE CODE CAMP - YOUTUBE

Loading...

NEET CODE - YOUTUBE

Loading...

GAURAV SEN INTERVIEWS - YOUTUBE

Loading...

Y Combinator Discussions

Loading...

SUCCESS IN TECH INTERVIEWS - YOUTUBE

Loading...

IGotAnOffer: Engineering YOUTUBE

Loading...

Tanay Pratap YOUTUBE

Loading...

Ashish Pratap Singh YOUTUBE

Loading...

Questpond YOUTUBE

Loading...

Kantan Coding YOUTUBE

Loading...

CYBER SECURITY - YOUTUBE

Loading...

CYBER SECURITY FUNDAMENTALS PROF MESSER - YOUTUBE

Loading...

DEEPLEARNING AI - YOUTUBE

Loading...

STANFORD UNIVERSITY - YOUTUBE

Loading...

NPTEL IISC BANGALORE - YOUTUBE

Loading...

NPTEL IIT MADRAS - YOUTUBE

Loading...

NPTEL HYDERABAD - YOUTUBE

Loading...

MIT News

Loading...

MIT News - Artificial intelligence

Loading...

The Berkeley Artificial Intelligence Research Blog

Loading...

Microsoft Research

Loading...

MachineLearningMastery.com

Loading...

Harward Business Review(HBR)

Loading...

Wharton Magazine

Loading...
My photo
Krishna Kishore Koney
View my complete profile
" It is not the strongest of the species that survives nor the most intelligent that survives, It is the one that is the most adaptable to change "

View krishna kishore koney's profile on LinkedIn

Monthly Blog Archives

  • ►  2025 (2)
    • ►  May (1)
    • ►  April (1)
  • ►  2024 (18)
    • ►  December (1)
    • ►  October (2)
    • ►  September (5)
    • ►  August (10)
  • ►  2022 (2)
    • ►  December (2)
  • ►  2021 (2)
    • ►  April (2)
  • ►  2020 (17)
    • ►  November (1)
    • ►  September (7)
    • ►  August (1)
    • ►  June (8)
  • ►  2019 (18)
    • ►  December (1)
    • ►  November (2)
    • ►  September (3)
    • ►  May (8)
    • ►  February (1)
    • ►  January (3)
  • ▼  2018 (3)
    • ▼  November (1)
      • Service Discovery Protocols
    • ►  October (1)
      • Machine Learning(ML) Overview
    • ►  January (1)
      • Porting Linux Applications to VxWorks RTOS
  • ►  2017 (2)
    • ►  November (1)
    • ►  March (1)
  • ►  2016 (5)
    • ►  December (1)
    • ►  April (3)
    • ►  February (1)
  • ►  2015 (15)
    • ►  December (1)
    • ►  October (1)
    • ►  August (2)
    • ►  July (4)
    • ►  June (2)
    • ►  May (3)
    • ►  January (2)
  • ►  2014 (13)
    • ►  December (1)
    • ►  November (2)
    • ►  October (4)
    • ►  August (5)
    • ►  January (1)
  • ►  2013 (5)
    • ►  September (2)
    • ►  May (1)
    • ►  February (1)
    • ►  January (1)
  • ►  2012 (19)
    • ►  November (1)
    • ►  October (2)
    • ►  September (1)
    • ►  July (1)
    • ►  June (6)
    • ►  May (1)
    • ►  April (2)
    • ►  February (3)
    • ►  January (2)
  • ►  2011 (20)
    • ►  December (5)
    • ►  August (2)
    • ►  June (6)
    • ►  May (4)
    • ►  April (2)
    • ►  January (1)
  • ►  2010 (41)
    • ►  December (2)
    • ►  November (1)
    • ►  September (5)
    • ►  August (2)
    • ►  July (1)
    • ►  June (1)
    • ►  May (8)
    • ►  April (2)
    • ►  March (3)
    • ►  February (5)
    • ►  January (11)
  • ►  2009 (113)
    • ►  December (2)
    • ►  November (5)
    • ►  October (11)
    • ►  September (1)
    • ►  August (14)
    • ►  July (5)
    • ►  June (10)
    • ►  May (4)
    • ►  April (7)
    • ►  March (11)
    • ►  February (15)
    • ►  January (28)
  • ►  2008 (61)
    • ►  December (7)
    • ►  September (6)
    • ►  August (1)
    • ►  July (17)
    • ►  June (6)
    • ►  May (24)
  • ►  2006 (7)
    • ►  October (7)

Blog Archives Categories

  • .NET DEVELOPMENT (38)
  • 5G (5)
  • AI (Artificial Intelligence) (9)
  • AI/ML (4)
  • ANDROID DEVELOPMENT (7)
  • BIG DATA ANALYTICS (6)
  • C PROGRAMMING (7)
  • C++ PROGRAMMING (24)
  • CAREER MANAGEMENT (6)
  • CHROME DEVELOPMENT (2)
  • CLOUD COMPUTING (45)
  • CODE REVIEWS (3)
  • CYBERSECURITY (12)
  • DATA SCIENCE (4)
  • DATABASE (14)
  • DESIGN PATTERNS (9)
  • DEVICE DRIVERS (5)
  • DOMAIN KNOWLEDGE (14)
  • EDGE COMPUTING (4)
  • EMBEDDED SYSTEMS (9)
  • ENTERPRISE ARCHITECTURE (10)
  • IMAGE PROCESSING (3)
  • INTERNET OF THINGS (2)
  • J2EE PROGRAMMING (10)
  • KERNEL DEVELOPMENT (6)
  • KUBERNETES (19)
  • LATEST TECHNOLOGY (18)
  • LINUX (9)
  • MAC OPERATING SYSTEM (2)
  • MOBILE APPLICATION DEVELOPMENT (14)
  • PORTING (4)
  • PYTHON PROGRAMMING (6)
  • RESEARCH AND DEVELOPMENT (1)
  • SCRIPTING LANGUAGES (8)
  • SERVICE ORIENTED ARCHITECTURE (SOA) (10)
  • SOFTWARE DESIGN (13)
  • SOFTWARE QUALITY (5)
  • SOFTWARE SECURITY (23)
  • SYSTEM and NETWORK ADMINISTRATION (3)
  • SYSTEM PROGRAMMING (4)
  • TECHNICAL MISCELLANEOUS (31)
  • TECHNOLOGY INTEGRATION (5)
  • TEST AUTOMATION (5)
  • UNIX OPERATING SYSTEM (4)
  • VC++ PROGRAMMING (44)
  • VIRTUALIZATION (8)
  • WEB PROGRAMMING (8)
  • WINDOWS OPERATING SYSTEM (13)
  • WIRELESS DEVELOPMENT (5)
  • XML (3)

Popular Posts

  • Observer Pattern - Push vs Pull Model
  • AI Agent vs AI Workflow
  • Microservices Architecture ..
  • SSCLI(Shared Source Common Language Infrastructure)

My Other Blogs

  • Career Management: Invest in Yourself
  • Color your Career
  • Attitude is everything(in Telugu language)
WINNING vs LOSING

Hanging on, persevering, WINNING
Letting go, giving up easily, LOSING

Accepting responsibility for your actions, WINNING
Always having an excuse for your actions, LOSING

Taking the initiative, WINNING
Waiting to be told what to do, LOSING

Knowing what you want and setting goals to achieve it, WINNING
Wishing for things, but taking no action, LOSING

Seeing the big picture, and setting your goals accordingly, WINNING
Seeing only where you are today, LOSING

Being determined, unwilling to give up WINNING
Gives up easily, LOSING

Having focus, staying on track, WINNING
Allowing minor distractions to side track them, LOSING

Having a positive attitude, WINNING
having a "poor me" attitude, LOSING

Adopt a WINNING attitude!

Total Pageviews

who am i

My photo
Krishna Kishore Koney

Blogging is about ideas, self-discovery, and growth. This is a small effort to grow outside my comfort zone.

Most important , A Special Thanks to my parents(Sri Ramachandra Rao & Srimathi Nagamani), my wife(Roja), my lovely daughter (Hansini) and son (Harshil) for their inspiration and continuous support in developing this Blog.

... "Things will never be the same again. An old dream is dead and a new one is being born, as a flower that pushes through the solid earth. A new vision is coming into being and a greater consciousness is being unfolded" ... from Jiddu Krishnamurti's Teachings.

Now on disclaimer :
1. Please note that my blog posts reflect my perception of the subject matter and do not reflect the perception of my Employer.

2. Most of the times the content of the blog post is aggregated from Internet articles and other blogs which inspired me. Due respect is given by mentioning the referenced URLs below each post.

Have a great time

My LinkedIn Profile
View my complete profile

Failure is not falling down, it is not getting up again. Success is the ability to go from failure to failure without losing your enthusiasm.

Where there's a Will, there's a Way. Keep on doing what fear you, that is the quickest and surest way to to conquer it.

Vision is the art of seeing what is invisible to others. For success, attitude is equally as important as ability.

Favourite RSS Syndications ...

Google Developers Blog

Loading...

Blogs@Google

Loading...

Berklee Blogs » Technology

Loading...

Martin Fowler's Bliki

Loading...

TED Blog

Loading...

TEDTalks (video)

Loading...

Psychology Today Blogs

Loading...

Aryaka Insights

Loading...

The Pragmatic Engineer

Loading...

Stanford Online

Loading...

MIT Corporate Relations

Loading...

AI at Wharton

Loading...

OpenAI

Loading...

AI Workshop

Loading...

Hugging Face - Blog

Loading...

BYTE BYTE GO - YOUTBUE

Loading...

Google Cloud Tech

Loading...

3Blue1Brown

Loading...

Bloomberg Originals

Loading...

Dwarkesh Patel Youtube Channel

Loading...

Reid Hoffman

Loading...

Aswath Damodaran

Loading...