ICMP is defined in RFC 792.
The Time Exceeded Message includes the original IP header and the first 64 bits of the IP packet payload. Your local IP stack extracts this information and generates a message to the originating process.
For ping - or ICMP Echo Request - there's a 16-bit identifier that serves the same purpose as the port number in a transport-layer protocol header. (NAT routers use the very same identifier to translate an inbound ICMP Echo Reply back to the originating host's private IP address of the previous request.)
Note that an ICMP Echo Request is an exception (the only one?) to the general rule
To avoid the infinite regress of messages about messages etc., no
ICMP messages are sent about ICMP messages.
In any case, when "Destination port unreachable" is shown to come from 10.8.1.1, apparently a router on your own private network, then that's what that router has returned. As it seems, it's blocking your ICMP echo request and sending a misleading error message - when it should really return "Destination host unreachable" or possibly "Destination protocol unreachable" (depending on the nature of the block).