 <p>A comparison of the M2M protocols based on characteristics, like any other comparisons, should be made in a certain context. In this case, the context refers to the domain or the application domain you are using for building the comparison. </p> <p>An application for a certain domain usually has a set of requirements that need to be met. Building a list of common requirements is a sensible thing to do. Not only it will improve the structure of the article, but it will also offer the possibility to expand/improve the article as new requirements are being discovered. By analysing these requirements you can find some fine-grained criteria that you can choose to discuss.</p> <p><strong>Functional requirements</strong></p> <ol> <li>Interoperability</li> <li>Interface for: device - gateway, device - network application server, device - device</li> <li>Protocol load: information volume, connectionless/connection- oriented</li> <li>Routing capability</li> <li>IP based/non IP based</li> <li>Communication patterns</li> <li>Resource discovery</li> <li>Resource management</li> <li>Stateful/Stateless</li> </ol> <p><strong>Non-functional requirements</strong></p> <ol> <li>Scalability</li> <li>Security</li> <li>Privacy</li> <li>Lightweight</li> <li>Real-time</li> <li>Expandability</li> <li>Usability</li> <li>Openness</li> <li>Reliability</li> </ol>