def _read_opt_ra(self, code, *, desc):
        """Read HOPOPT Router Alert option.

        Structure of HOPOPT Router Alert option [RFC 2711]:
            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            |0 0 0|0 0 1 0 1|0 0 0 0 0 0 1 0|        Value (2 octets)       |
            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

            Octets      Bits        Name                    Description
              0           0     hopopt.ra.type          Option Type
              0           0     hopopt.ra.type.value    Option Number
              0           0     hopopt.ra.type.action   Action (00)
              0           2     hopopt.ra.type.change   Change Flag (0)
              1           8     hopopt.opt.length       Length of Option Data
              2          16     hopopt.ra.value         Value

        """
        _type = self._read_opt_type(code)
        _size = self._read_unpack(1)
        if _size != 2:
            raise ProtocolError(f'{self.alias}: [Optno {code}] invalid format')
        _rval = self._read_unpack(2)

        if 4 <= _rval <= 35:
            _dscp = f'Aggregated Reservation Nesting Level {_rval-4}'   # [RFC 3175]
        elif 36 <= _rval <= 67:
            _dscp = f'QoS NSLP Aggregation Level {_rval-36}'            # [RFC 5974]
        elif 65503 <= _rval <= 65534:
            _dscp = 'Reserved for experimental use'                     # [RFC 5350]
        else:
            _dscp = _ROUTER_ALERT.get(_rval, 'Unassigned')

        opt = dict(
            desc=desc,
            type=_type,
            length=_size + 2,
            value=_rval,
            alert=_dscp,
        )

        return opt
Read HOPOPT Router Alert option.

        Structure of HOPOPT Router Alert option [RFC 2711]:
            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            |0 0 0|0 0 1 0 1|0 0 0 0 0 0 1 0|        Value (2 octets)       |
            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

            Octets      Bits        Name                    Description
              0           0     hopopt.ra.type          Option Type
              0           0     hopopt.ra.type.value    Option Number
              0           0     hopopt.ra.type.action   Action (00)
              0           2     hopopt.ra.type.change   Change Flag (0)
              1           8     hopopt.opt.length       Length of Option Data
              2          16     hopopt.ra.value         Value