recap: packet through the stack NIC interrupt handler places packets into the ipintrq and schedules a soft interrupt ipintr() dequeues them ip_input() processes them, one by one ip_forward() ip_output() puts them into the outgoing NIC's queue