def _read_mode_mptcp(self, size, kind):
        """Read Multipath TCP option.

        Positional arguments:
            * size - int, length of option
            * kind - int, 30 (Multipath TCP)

        Returns:
            * dict -- extracted Multipath TCP (MP-TCP) option

        Structure of MP-TCP [RFC 6824]:
                                 1                   2                   3
             0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
            +---------------+---------------+-------+-----------------------+
            |     Kind      |    Length     |Subtype|                       |
            +---------------+---------------+-------+                       |
            |                     Subtype-specific data                     |
            |                       (variable length)                       |
            +---------------------------------------------------------------+

            Octets      Bits        Name                    Description
              0           0     tcp.mp.kind             Kind (30)
              1           8     tcp.mp.length           Length
              2          16     tcp.mp.subtype          Subtype
              2          20     tcp.mp.data             Subtype-specific Data

        """
        bins = self._read_binary(1)
        subt = int(bins[:4], base=2)    # subtype number
        bits = bins[4:]                 # 4-bit data
        dlen = size - 1                 # length of remaining data

        # fetch subtype-specific data
        func = mptcp_opt.get(subt)
        if func is None:    # if subtype not exist, directly read all data
            temp = self._read_fileng(dlen)
            data = dict(
                kind=kind,
                length=size,
                subtype='Unknown',
                data=bytes(chr(int(bits[:4], base=2)), encoding='utf-8') + temp,
            )
        else:               # fetch corresponding subtype data dict
            data = func(self, bits, dlen, kind)
        return data
Read Multipath TCP option.

        Positional arguments:
            * size - int, length of option
            * kind - int, 30 (Multipath TCP)

        Returns:
            * dict -- extracted Multipath TCP (MP-TCP) option

        Structure of MP-TCP [RFC 6824]:
                                 1                   2                   3
             0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
            +---------------+---------------+-------+-----------------------+
            |     Kind      |    Length     |Subtype|                       |
            +---------------+---------------+-------+                       |
            |                     Subtype-specific data                     |
            |                       (variable length)                       |
            +---------------------------------------------------------------+

            Octets      Bits        Name                    Description
              0           0     tcp.mp.kind             Kind (30)
              1           8     tcp.mp.length           Length
              2          16     tcp.mp.subtype          Subtype
              2          20     tcp.mp.data             Subtype-specific Data