diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrProtectionType.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrProtectionType.java
new file mode 100755
index 0000000..b45d95b
--- /dev/null
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrProtectionType.java
@@ -0,0 +1,240 @@
+/*
+ * Copyright 2015 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.bgpio.types.attr;
+
+import java.util.Objects;
+
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.onosproject.bgpio.exceptions.BGPParseException;
+import org.onosproject.bgpio.types.BGPErrorType;
+import org.onosproject.bgpio.types.BGPValueType;
+import org.onosproject.bgpio.util.Validation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.MoreObjects;
+
+/**
+ * Implements BGP link protection type attribute.
+ */
+public final class BgpLinkAttrProtectionType implements BGPValueType {
+
+    protected static final Logger log = LoggerFactory
+            .getLogger(BgpLinkAttrProtectionType.class);
+
+    public static final int ATTRLINK_PROTECTIONTYPE = 1093;
+    public static final int LINK_PROTECTION_LEN = 2;
+
+    public static final int EXTRA_TRAFFIC = 0x01;
+    public static final int UNPROTECTED = 0x02;
+    public static final int SHARED = 0x04;
+    public static final int DEDICATED_ONE_ISTO_ONE = 0x08;
+    public static final int DEDICATED_ONE_PLUS_ONE = 0x10;
+    public static final int ENHANCED = 0x20;
+
+    /* Link Protection type flags */
+    private final boolean bExtraTraffic;
+    private final boolean bUnprotected;
+    private final boolean bShared;
+    private final boolean bDedOneIstoOne;
+    private final boolean bDedOnePlusOne;
+    private final boolean bEnhanced;
+
+    /**
+     * Constructor to initialize the value.
+     *
+     * @param bExtraTraffic Extra Traffic
+     * @param bUnprotected Unprotected
+     * @param bShared Shared
+     * @param bDedOneIstoOne Dedicated 1:1
+     * @param bDedOnePlusOne Dedicated 1+1
+     * @param bEnhanced Enhanced
+     */
+    private BgpLinkAttrProtectionType(boolean bExtraTraffic,
+                                      boolean bUnprotected,
+                                      boolean bShared, boolean bDedOneIstoOne,
+                                      boolean bDedOnePlusOne, boolean bEnhanced) {
+        this.bExtraTraffic = bExtraTraffic;
+        this.bUnprotected = bUnprotected;
+        this.bShared = bShared;
+        this.bDedOneIstoOne = bDedOneIstoOne;
+        this.bDedOnePlusOne = bDedOnePlusOne;
+        this.bEnhanced = bEnhanced;
+    }
+
+    /**
+     * Returns object of this class with specified values.
+     *
+     * @param bExtraTraffic Extra Traffic
+     * @param bUnprotected Unprotected
+     * @param bShared Shared
+     * @param bDedOneIstoOne Dedicated 1:1
+     * @param bDedOnePlusOne Dedicated 1+1
+     * @param bEnhanced Enhanced
+     * @return object of BgpLinkAttrProtectionType
+     */
+    public static BgpLinkAttrProtectionType of(boolean bExtraTraffic,
+                                               boolean bUnprotected,
+                                               boolean bShared,
+                                               boolean bDedOneIstoOne,
+                                               boolean bDedOnePlusOne,
+                                               boolean bEnhanced) {
+        return new BgpLinkAttrProtectionType(bExtraTraffic, bUnprotected,
+                                             bShared, bDedOneIstoOne,
+                                             bDedOnePlusOne, bEnhanced);
+    }
+
+    /**
+     * Reads the BGP link attributes protection type.
+     *
+     * @param cb Channel buffer
+     * @return object of type BgpLinkAttrProtectionType
+     * @throws BGPParseException while parsing BgpLinkAttrProtectionType
+     */
+    public static BgpLinkAttrProtectionType read(ChannelBuffer cb)
+            throws BGPParseException {
+        short linkProtectionType;
+        byte higherByte;
+        short lsAttrLength = cb.readShort();
+
+        boolean bExtraTraffic;
+        boolean bUnprotected;
+        boolean bShared;
+        boolean bDedOneIstoOne;
+        boolean bDedOnePlusOne;
+        boolean bEnhanced;
+
+        if ((lsAttrLength != LINK_PROTECTION_LEN)
+                || (cb.readableBytes() < lsAttrLength)) {
+            Validation.validateLen(BGPErrorType.UPDATE_MESSAGE_ERROR,
+                                   BGPErrorType.ATTRIBUTE_LENGTH_ERROR,
+                                   lsAttrLength);
+        }
+
+        linkProtectionType = cb.readShort();
+        higherByte = (byte) (linkProtectionType >> 8);
+
+        bExtraTraffic = ((higherByte & (byte) EXTRA_TRAFFIC) == EXTRA_TRAFFIC);
+        bUnprotected = ((higherByte & (byte) UNPROTECTED) == UNPROTECTED);
+        bShared = ((higherByte & (byte) SHARED) == SHARED);
+        bDedOneIstoOne = ((higherByte & (byte) DEDICATED_ONE_ISTO_ONE) == DEDICATED_ONE_ISTO_ONE);
+        bDedOnePlusOne = ((higherByte & (byte) DEDICATED_ONE_PLUS_ONE) == DEDICATED_ONE_PLUS_ONE);
+        bEnhanced = ((higherByte & (byte) ENHANCED) == ENHANCED);
+
+        return BgpLinkAttrProtectionType.of(bExtraTraffic, bUnprotected,
+                                            bShared, bDedOneIstoOne,
+                                            bDedOnePlusOne, bEnhanced);
+    }
+
+    /**
+     * Returns ExtraTraffic Bit.
+     *
+     * @return ExtraTraffic Bit
+     */
+    public boolean extraTraffic() {
+        return bExtraTraffic;
+    }
+
+    /**
+     * Returns Unprotected Bit.
+     *
+     * @return Unprotected Bit
+     */
+    public boolean unprotected() {
+        return bUnprotected;
+    }
+
+    /**
+     * Returns Shared Bit.
+     *
+     * @return Shared Bit
+     */
+    public boolean shared() {
+        return bShared;
+    }
+
+    /**
+     * Returns DedOneIstoOne Bit.
+     *
+     * @return DedOneIstoOne Bit
+     */
+    public boolean dedOneIstoOne() {
+        return bDedOneIstoOne;
+    }
+
+    /**
+     * Returns DedOnePlusOne Bit.
+     *
+     * @return DedOnePlusOne Bit
+     */
+    public boolean dedOnePlusOne() {
+        return bDedOnePlusOne;
+    }
+
+    /**
+     * Returns Enhanced Bit.
+     *
+     * @return Enhanced Bit
+     */
+    public boolean enhanced() {
+        return bEnhanced;
+    }
+
+    @Override
+    public short getType() {
+        return ATTRLINK_PROTECTIONTYPE;
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(bExtraTraffic, bUnprotected, bShared,
+                            bDedOneIstoOne, bDedOnePlusOne, bEnhanced);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+
+        if (obj instanceof BgpLinkAttrProtectionType) {
+            BgpLinkAttrProtectionType other = (BgpLinkAttrProtectionType) obj;
+            return Objects.equals(bExtraTraffic, other.bExtraTraffic)
+                    && Objects.equals(bUnprotected, other.bUnprotected)
+                    && Objects.equals(bShared, other.bShared)
+                    && Objects.equals(bDedOneIstoOne, other.bDedOneIstoOne)
+                    && Objects.equals(bDedOnePlusOne, other.bDedOnePlusOne)
+                    && Objects.equals(bEnhanced, other.bEnhanced);
+        }
+        return false;
+    }
+
+    @Override
+    public int write(ChannelBuffer cb) {
+        // TODO This will be implemented in the next version
+        return 0;
+    }
+
+    @Override
+    public String toString() {
+        return MoreObjects.toStringHelper(getClass())
+                .add("bExtraTraffic", bExtraTraffic)
+                .add("bUnprotected", bUnprotected).add("bShared", bShared)
+                .add("bDedOneIstoOne", bDedOneIstoOne)
+                .add("bDedOnePlusOne", bDedOnePlusOne)
+                .add("bEnhanced", bEnhanced).toString();
+    }
+}
