I'm only aware of Sflow being IP/protocol/etc aware.
Actually the sflow standard is flexible, and there are many fields widely available, including input interface and output interface, vlan/vxlan/mpls headers, etc. The sending device just needs to support the fields.
Browse
sflow.org for more fun info, including ideas for running sflow agents on your hypervisors (for eg correlating CPU and RAM usage per VM) etc :-)
Nick