Wednesday, February 17, 2010

MLSN Protocol User Session Diagram

MLSN Protocol User Session Diagram

A Simple User Session

Scenario: User wants to know the status of a property listing in the downtown Orlando zip code, 32801, located in the United States.

A user starts a session on a client desktop. He enters the following MLS Number URL at the prompt:

user>mlsn 1.1.1@32801.840/status

The mlsn client application sends the MLSN URL via port 32801 over tcp through the internet to an MLSN Messaging Server which accepts the text string via port 32801.

The MLSN Server routes the URL text string to an application server which parses and creates a query for the database which returns a result.

The result is sent from the application server back to the MLSN Messaging Server which sends the result via port 32801 over tcp back through the Internet cloud.

Finally, the client desktop receives the result via port 32801 and displays the results to the user:



Friday, February 12, 2010

Multiple Listing Service Network Protocol v0.5

The Numbering Problem

One of the problems in the Real Estate Industry revolves around the numbers assigned to listings by Multiple Listing Services. Six, seven, eight, or more numerical digits may be assigned to an individual MLS listing number along with possible alphanumeric characters preceding the number.

From my research, listed below are ten randomly selected, real world MLS numbers I extracted from a daily Google Alert listening for text string 'MLS#':

  • MLS# 829710

  • MLS# 90035087

  • MLS# 4240855

  • MLS# H740907

  • MLS# 9088503

  • MLS# 100006059

  • MLS# M1366719

  • MLS# MC5555362

  • MLS# H741473

  • MLS# 4334588

Lacking Visual Meaning

The problem with these numbers and others is that they have no visual value or meaning to a user. MLS numbers are stored and generated within datatbases by MLS providers. Since these numbers are required to be unique, a field type of serial is assigned to the field which increments the next unique MLS number by 1 to enforce a primary key's uniqueness. However, this system does not benefit the user from deciphering where the listing is located nor any other details.

Duplication Misery

Another problem is that there are hundreds of MLS's in existence and the probability of the same number assigned to two different listings in two different MLS databases is highly probably. If a user only has the number to reference, which listing number is which? And how much time is lost trying to figure out which listing corresponds to which MLS database?

Zero Reusability

Since MLS numbers are simply incremented by 1, the opportunity for number reuse is eliminated. A provider's MLS numbers will continue to increase by 1 which will increase the number of digits of the MLS numbers over time. Having no delimiters, MLS numbers become humanly impossible to remember since the average human is said to only have the capacity to remember up to 7 consecutive digits. But looking at the random MLS numbers I collected above , a high percentage of real world MLS Numbers either equal or are greater than 7 digits.

The Solution

Multiple Listing Service Network Protocol v0.5

The Scheme

The MLSN URL scheme is used to designate Internet MLS listings accessible using MLSN (Multiple Listing Service Network). The scheme adheres to IETF's RFC1738 which describes syntax for strings representations or URLs via the Internet.

The Registrar Assigned Number

After a user posts a listing to a registrar, a 3-octet number is assigned to a listing just like an IP address is statically assigned to a machine or device. But in the case of the MLSN protocol, 3-octet numbers are dynamically assigned to allow for reusability. After a listing expires, the 3-octet number returns to the registrar's pool to be later reassigned to alternate user's listing.

For example:

User registers listing with AlicesMLS and receives the following MLS Number URL Address:


The listing expires after 30 days and 1.1.21 returns to the registrar's pool of mls numbers and is reassigned to another user's listing:


The new MLS URL Address reuses 1.1.21, but is a different listing from the previous listing.

Note: 1.x.x is designated as a reserved Class A block of numbers and used for testing purposes.

The Postal Code

By adding a local postal code to the URL, the listing becomes visually meaningful. Just by looking at the URL, a user can tell if the MLS listing is located in an ideal or non-ideal postal code area. In addition, postal codes are used by the majority of the world's countries which makes MLSN URL's extensible to potentially cover any property in the world.

The Country Code

Keeping the global MLS market in mind, a 3-digit country code follows the postal code. Every country is designated with an ISO 3166-1 3-digit number.

This number enhances an MLS Number URL for reusability and visual meaning when coupled with the postal code.

The Port

Two weeks ago, I secured internet port 32801 with IANA on its list of registered ports.

mlsn 32801/tcp Multiple Listing Service Network
mlsn 32801/udp Multiple Listing Service Network
# Corey Leong 27 January 2010

The purpose of this new port will be to send and receive request and response messages from client machines to designated mlsn servers. This type of messaging mirrors the whois service which enables a user to lookup domain names over port 53.

The Resource

Using a RESTful approach, a resource appended to the URL string permits lookup of a particular attribute of the listing.

For example:

A client sends the following request to an mlsn server.


The mlsn server returns "active" to the client, then the connection is severed.

Other potential resource lookup scenarios include beds, baths, square footage, price, etc.


The above information is a high-level perspective of the Multiple Listing Service Network (MLSN) Protocol, URL, and Port. MLSN is in development mode. Eventually, MLSN will be used by any user to query MLS Listings from registrars over the Internet.

I intend to continue testing a multitude MLS Number URL strings until this protocol reaches full 1.0 version.