diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/authentication/LispAuthenticationFactory.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/authentication/LispAuthenticationFactory.java
index 5866e3d..5224aee 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/authentication/LispAuthenticationFactory.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/authentication/LispAuthenticationFactory.java
@@ -35,18 +35,17 @@
      *
      * @param authType authentication key type
      * @param authKey  authentication key string
+     * @param data     authentication data
      * @return authentication data
      */
     public byte[] createAuthenticationData(LispAuthenticationKeyEnum authType,
-                                           String authKey) {
+                                           String authKey, byte[] data) {
         LispMacAuthentication macAuth = new LispMacAuthentication(authType);
-        int authLength;
         byte[] authData;
         switch (authType) {
             case SHA1:
             case SHA256:
-                authLength = macAuth.getAuthenticationLength();
-                authData = macAuth.getAuthenticationData(authKey, new byte[authLength]);
+                authData = macAuth.getAuthenticationData(authKey, data);
                 break;
             case NONE:
             case UNKNOWN:
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/AbstractLispMessage.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/AbstractLispMessage.java
new file mode 100644
index 0000000..2cc0480
--- /dev/null
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/AbstractLispMessage.java
@@ -0,0 +1,53 @@
+/*
+ * 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;
+import org.onosproject.lisp.msg.exceptions.LispWriterException;
+
+import java.net.InetSocketAddress;
+
+/**
+ * Abstract LISP message.
+ */
+public abstract class AbstractLispMessage implements LispMessage {
+
+    protected InetSocketAddress sender;
+
+    @Override
+    public LispType getType() {
+        return null;
+    }
+
+    @Override
+    public void configSender(InetSocketAddress sender) {
+        this.sender = sender;
+    }
+
+    @Override
+    public InetSocketAddress getSender() {
+        return sender;
+    }
+
+    @Override
+    public void writeTo(ByteBuf byteBuf) throws LispWriterException {
+    }
+
+    @Override
+    public Builder createBuilder() {
+        return null;
+    }
+}
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispEncapsulatedControl.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispEncapsulatedControl.java
index 36782c2..e615810 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispEncapsulatedControl.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispEncapsulatedControl.java
@@ -34,7 +34,7 @@
 /**
  * Default LISP Encapsulated Control message class.
  */
-public final class DefaultLispEncapsulatedControl
+public final class DefaultLispEncapsulatedControl extends AbstractLispMessage
         implements LispEncapsulatedControl {
 
     private final boolean isSecurity;
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispInfo.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispInfo.java
index 7413245..1f8f771 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispInfo.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispInfo.java
@@ -29,7 +29,7 @@
 /**
  * A class that contains a set of helper methods for LISP info request and reply.
  */
-public class DefaultLispInfo implements LispInfo {
+public class DefaultLispInfo extends AbstractLispMessage implements LispInfo {
 
     protected final boolean infoReply;
     protected final long nonce;
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispMapNotify.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispMapNotify.java
index cb18b8f..248d118 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispMapNotify.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispMapNotify.java
@@ -33,7 +33,8 @@
 /**
  * Default LISP map notify message class.
  */
-public final class DefaultLispMapNotify implements LispMapNotify {
+public final class DefaultLispMapNotify extends AbstractLispMessage
+        implements LispMapNotify {
 
     private final long nonce;
     private final short keyId;
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispMapRegister.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispMapRegister.java
index e044c34..a3166c1 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispMapRegister.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispMapRegister.java
@@ -36,7 +36,8 @@
 /**
  * Default LISP map register message class.
  */
-public final class DefaultLispMapRegister implements LispMapRegister {
+public final class DefaultLispMapRegister extends AbstractLispMessage
+        implements LispMapRegister {
 
     private final long nonce;
     private final short keyId;
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispMapReply.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispMapReply.java
index 5773be8..fea7f52 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispMapReply.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispMapReply.java
@@ -32,7 +32,8 @@
 /**
  * Default LISP map reply message class.
  */
-public final class DefaultLispMapReply implements LispMapReply {
+public final class DefaultLispMapReply extends AbstractLispMessage
+        implements LispMapReply {
 
     private final long nonce;
     private final boolean probe;
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispMapRequest.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispMapRequest.java
index 110fe3e..21b0c38 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispMapRequest.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispMapRequest.java
@@ -35,7 +35,8 @@
 /**
  * Default LISP map request message class.
  */
-public final class DefaultLispMapRequest implements LispMapRequest {
+public final class DefaultLispMapRequest extends AbstractLispMessage
+        implements LispMapRequest {
 
     private final long nonce;
     private final LispAfiAddress sourceEid;
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
index 4e3cdfa..77ebfb6 100644
--- 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
@@ -18,6 +18,8 @@
 import io.netty.buffer.ByteBuf;
 import org.onosproject.lisp.msg.exceptions.LispWriterException;
 
+import java.net.InetSocketAddress;
+
 /**
  * LISP message interface.
  */
@@ -31,6 +33,22 @@
     LispType getType();
 
     /**
+     * Configures the sender's IP address with port number.
+     * Note that this information is used to make the UDP datagram packet.
+     *
+     * @param sender LISP message sender
+     */
+    void configSender(InetSocketAddress sender);
+
+    /**
+     * Obtains the sender's IP address with port number.
+     * Note that this information is used to make the UDP datagram packet.
+     *
+     * @return send's IP address with port number
+     */
+    InetSocketAddress getSender();
+
+    /**
      * Writes LISP message object into communication channel.
      *
      * @param byteBuf byte buffer
diff --git a/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/authentication/LispAuthenticationTest.java b/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/authentication/LispAuthenticationTest.java
index a68d529..2e994b6 100644
--- a/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/authentication/LispAuthenticationTest.java
+++ b/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/authentication/LispAuthenticationTest.java
@@ -38,10 +38,10 @@
     public void testAuthData() {
 
         String authKey = "testKey";
-        byte[] noneAuthData = factory.createAuthenticationData(NONE, authKey);
-        byte[] unknownAuthData = factory.createAuthenticationData(UNKNOWN, authKey);
-        byte[] sha1AuthData = factory.createAuthenticationData(SHA1, authKey);
-        byte[] sha256AuthData = factory.createAuthenticationData(SHA256, authKey);
+        byte[] noneAuthData = factory.createAuthenticationData(NONE, authKey, new byte[0]);
+        byte[] unknownAuthData = factory.createAuthenticationData(UNKNOWN, authKey, new byte[0]);
+        byte[] sha1AuthData = factory.createAuthenticationData(SHA1, authKey, new byte[0]);
+        byte[] sha256AuthData = factory.createAuthenticationData(SHA256, authKey, new byte[0]);
 
         assertThat(noneAuthData, is(new byte[0]));
         assertThat(unknownAuthData, is(new byte[0]));
