diff --git a/apps/routing/fpm/src/main/java/org/onosproject/routing/fpm/protocol/FpmHeader.java b/apps/routing/fpm/src/main/java/org/onosproject/routing/fpm/protocol/FpmHeader.java
index 5bba9fb..85ee9bc 100644
--- a/apps/routing/fpm/src/main/java/org/onosproject/routing/fpm/protocol/FpmHeader.java
+++ b/apps/routing/fpm/src/main/java/org/onosproject/routing/fpm/protocol/FpmHeader.java
@@ -17,6 +17,7 @@
 package org.onosproject.routing.fpm.protocol;
 
 import com.google.common.base.MoreObjects;
+import com.google.common.collect.ImmutableSet;
 import org.onlab.packet.DeserializationException;
 
 import java.nio.ByteBuffer;
@@ -30,7 +31,17 @@
     public static final int FPM_HEADER_LENGTH = 4;
 
     public static final short FPM_VERSION_1 = 1;
+    public static final short FPM_VERSION_ONOS_EXT = 32;
+
+    private static final ImmutableSet<Short> SUPPORTED_VERSIONS =
+            ImmutableSet.<Short>builder()
+            .add(FPM_VERSION_1)
+            .add(FPM_VERSION_ONOS_EXT)
+            .build();
+
     public static final short FPM_TYPE_NETLINK = 1;
+    public static final short FPM_TYPE_PROTOBUF = 2;
+    public static final short FPM_TYPE_KEEPALIVE = 32;
 
     private static final String VERSION_NOT_SUPPORTED = "FPM version not supported: ";
     private static final String TYPE_NOT_SUPPORTED = "FPM type not supported: ";
@@ -119,17 +130,21 @@
         ByteBuffer bb = ByteBuffer.wrap(buffer, start, length);
 
         short version = bb.get();
-        if (version != FPM_VERSION_1) {
+        if (!SUPPORTED_VERSIONS.contains(version)) {
             throw new DeserializationException(VERSION_NOT_SUPPORTED + version);
         }
 
         short type = bb.get();
+        int messageLength = bb.getShort();
+
+        if (type == FPM_TYPE_KEEPALIVE) {
+            return new FpmHeader(version, type, messageLength, null);
+        }
+
         if (type != FPM_TYPE_NETLINK) {
             throw new DeserializationException(TYPE_NOT_SUPPORTED + type);
         }
 
-        int messageLength = bb.getShort();
-
         Netlink netlink = Netlink.decode(buffer, bb.position(), bb.limit() - bb.position());
 
         return new FpmHeader(version, type, messageLength, netlink);
