diff --git a/scapy/contrib/bier.py b/scapy/contrib/bier.py
new file mode 100644
index 0000000..e173cdb
--- /dev/null
+++ b/scapy/contrib/bier.py
@@ -0,0 +1,58 @@
+# http://trac.secdev.org/scapy/ticket/31
+
+# scapy.contrib.description = BIER
+# scapy.contrib.status = loads
+
+from scapy.packet import *
+from scapy.fields import *
+from scapy.layers.inet import IP, UDP
+from scapy.layers.inet6 import IPv6
+
+
+class BIERLength:
+    BIER_LEN_64 = 0
+    BIER_LEN_128 = 1
+    BIER_LEN_256 = 2
+    BIER_LEN_512 = 3
+    BIER_LEN_1024 = 4
+
+
+BIERnhcls = {1: "MPLS",
+             2: "MPLS",
+             4: "IPv4",
+             5: "IPv6"}
+
+
+class BIFT(Packet):
+    name = "BIFT"
+    fields_desc = [BitField("bsl", 0, 4),
+                   BitField("sd", 0, 8),
+                   BitField("set", 0, 8),
+                   BitField("cos", 0, 3),
+                   BitField("s", 1, 1),
+                   ByteField("ttl", 0)]
+
+    def guess_payload_class(self, payload):
+        return BIER
+
+
+class BIER(Packet):
+    name = "BIER"
+    fields_desc = [BitField("id", 5, 4),
+                   BitField("version", 0, 4),
+                   BitFieldLenField("length", BIERLength.BIER_LEN_256, 4,
+                                    length_of=lambda x:(x.BitString >> 8)),
+                   BitField("entropy", 0, 20),
+                   BitField("OAM", 0, 2),
+                   BitField("RSV", 0, 2),
+                   BitField("DSCP", 0, 6),
+                   BitEnumField("Proto", 2, 6, BIERnhcls),
+                   ShortField("BFRID", 0),
+                   StrLenField("BitString",
+                               "",
+                               length_from=lambda x:(8 << x.length))]
+
+
+bind_layers(BIER, IP,   Proto=4)
+bind_layers(BIER, IPv6, Proto=5)
+bind_layers(UDP, BIFT, dport=8138)
