diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispMessage.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispMessage.java
new file mode 100644
index 0000000..cbd0c61
--- /dev/null
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispMessage.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.lisp.msg.protocols;
+
+import io.netty.buffer.ByteBuf;
+
+/**
+ * LISP message interface.
+ */
+public interface LispMessage {
+
+    /**
+     * Obtains LISP message type.
+     *
+     * @return LISP message type
+     */
+    LispType getType();
+
+    /**
+     * Writes LISP message object into communication channel.
+     *
+     * @param byteBuf byte buffer
+     */
+    void writeTo(ByteBuf byteBuf);
+
+    /**
+     * Generates LISP message builder.
+     *
+     * @return builder object
+     */
+    Builder createBuilder();
+
+    /**
+     * LISP message builder interface.
+     */
+    interface Builder  {
+
+        /**
+         * Builds LISP message.
+         *
+         * @return LISP message
+         */
+        LispMessage build();
+
+        /**
+         * Obtains LISP message type.
+         *
+         * @return LISP message type
+         */
+        LispType getType();
+    }
+}
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispType.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispType.java
new file mode 100644
index 0000000..9ffefcf
--- /dev/null
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispType.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.lisp.msg.protocols;
+
+/**
+ * LISP message type enumeration.
+ *
+ * An enumeration of LISP Message type defined in RFC6830
+ * https://tools.ietf.org/html/rfc6830
+ */
+public enum LispType {
+    LISP_MAP_REGISTER,          // LISP Map-Register Message
+    LISP_MAP_NOTIFY,            // LISP Map-Notify Message
+    LISP_MAP_REQUEST,           // LISP Map-Request Message
+    LISP_MAP_REPLY,             // LISP Map-Reply Message
+    LISP_MAP_REPLY_ACTION,      // LISP Map-Reply-Action Message
+    LISP_SOLICIT_MAP_REQUEST;   // LISP Solicit-Map-Request Message
+}
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/package-info.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/package-info.java
new file mode 100644
index 0000000..b6a7dc5
--- /dev/null
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/package-info.java
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * LISP message protocols.
+ */
+package org.onosproject.lisp.msg.protocols;
\ No newline at end of file
