1. A method for layer 2 address learning in a forwarding device, the method comprising: (a) receiving a packet including a layer 2 source address at a forwarding device having software and hardware for learning the source address and forwarding information associated with the packet; (b) at the forwarding device, classifying the packet and determining whether to implement software-based learning based on a classification determined for the packet; (c) at the forwarding device, in response to determining to implement software-based learning, utilizing the software of the forwarding device for learning the source address of the received packet and the forwarding information associated with the packet using a software routine executed on a processor of the forwarding device; and, otherwise, (d) at the forwarding device, utilizing the hardware of the forwarding device for learning the source address of the received packet and the forwarding information associated with the packet using learning operations implemented in hardware logic of the forwarding device.