A method for flooding a packet performed by an ingress card, comprising: receiving a packet; determining that the packet should be flooded; determining a plurality of egress links for the packet by: determining a plurality of available egress links; and excluding the available egress link that is also the ingress link that was source of the packet; for each one of the determined plurality of egress links, determining whether the egress link is an aggregated link comprising a plurality of egress ports or a non-aggregated link comprising a single egress port; for each one of the plurality of egress links determined to be an aggregated link: determining whether the aggregated link is an isolated aggregated link by determining whether the aggregated link shares any egress ports with a non-aggregated link; determining a destination port from the egress ports only if the aggregated link is an isolated aggregated link; and communicating the packet to the destination port only if the aggregated link is an isolated aggregated link; and for each one of the plurality of egress links determined to be a non-aggregated link: determining whether an egress card coupled to the egress port of the non-aggregated link has received a copy of the packet; and communicating the packet to the single egress port of the non-aggregated link only if the egress card has not already received a copy of the packet. receiving a packet; determining that the packet should be flooded; determining a plurality of egress links for the packet by: determining a plurality of available egress links; and excluding the available egress link that is also the ingress link that was source of the packet; determining a plurality of available egress links; and excluding the available egress link that is also the ingress link that was source of the packet; for each one of the determined plurality of egress links, determining whether the egress link is an aggregated link comprising a plurality of egress ports or a non-aggregated link comprising a single egress port; for each one of the plurality of egress links determined to be an aggregated link: determining whether the aggregated link is an isolated aggregated link by determining whether the aggregated link shares any egress ports with a non-aggregated link; determining a destination port from the egress ports only if the aggregated link is an isolated aggregated link; and communicating the packet to the destination port only if the aggregated link is an isolated aggregated link; and determining whether the aggregated link is an isolated aggregated link by determining whether the aggregated link shares any egress ports with a non-aggregated link; determining a destination port from the egress ports only if the aggregated link is an isolated aggregated link; and communicating the packet to the destination port only if the aggregated link is an isolated aggregated link; and for each one of the plurality of egress links determined to be a non-aggregated link: determining whether an egress card coupled to the egress port of the non-aggregated link has received a copy of the packet; and communicating the packet to the single egress port of the non-aggregated link only if the egress card has not already received a copy of the packet. determining whether an egress card coupled to the egress port of the non-aggregated link has received a copy of the packet; and communicating the packet to the single egress port of the non-aggregated link only if the egress card has not already received a copy of the packet.