# A Design for an Internet Router with a Digital Optical Data Plane
## 2 Internet Router Architecture  
Internet routers typically use an electronic data plane, even when interfaced to optical links. They switch incoming packets towards their destination, a process known as \"forwarding\" when it refers to Internet packets (datagrams), as shown in Figure 2 (left). A forwarding engine (or 'forwarder') examines the packet header, matching it to entries in a forwarding table. This table is determined manually by the operator or by exchanges with the control planes of adjacent routers. The packet passes through a switching fabric, taking the path based on the result of this lookup. At various locations in this process, packets may be queued to avoid backlogs due to slow header processing, switch fabric availability, output port contention (competition), or to adapt between internal transfer rates and incoming and outgoing line data rates. Although Internet routers may include a number of additional capabilities, such as filtering and proxying (relaying) high level protocols, the core operation of a router is composed of these four independent functions in sequence: forwarding lookup, hop count decrement, checksum computation, and packet multiplexing (Figure 2, right) [11]. Packet forwarding lookup, sometimes called 'header lookup', matches the header destination address to an internal forwarding table, whose entries are patterns. IP datagrams are matched in this table using \"longest prefix\" matching. Forwarding entry patterns consist of a sequence of consecutive zeroes and ones, followed by \"don't cares\" (indicated as 'x'), sometimes indicated with the \"don't cares\" as zeroes followed by a \"mask length\" indicating the number of non-don't care bits (e.g., 11 xxxxxx is denoted as 11000000/2). All matches start at the high-order bit and proceed to lower-order bits. Longer matches take precedence over shorter matches, e.g., a packet destined for address 11010111 that matches both 11000000/2 (i.e., 11 xxxxxx) and 11010000/4 (i.e., 1101 xxxx) would select the latter. IPv4 addresses are 32 bits long, but, typically, patterns are no longer than 24 bits inside the network (vs. at the user edge); IPv6 addresses are 128 bits long, but typically patterns are 64 bits or less. Routers in the core of the Internet can have several hundred thousand distinct patterns and packets not matching any patterns are silently dropped. The hop count is a field in the header of Internet packets. In IPv4, it is called \"Time-to-Live\" (TTL), which originally indicated the number of seconds a packet was allowed to persist in the network. In IPv6, the field has been renamed \"Hop Limit\" to more accurately reflect what it tracks--the  
Figure 2: Basic data (thick lines) and control (thin) in an Internet router (**left**); and internal sequence (**right**). maximum number of routers traversed (in IPv4, every router is required to decrement the TTL by at least one even when a packet takes less than one second to forward). In both cases, the hop count field is decremented by at least one (typically exactly one) at every router; when the count reaches zero, the packet is discarded. The hop count field avoids the potential for packets to accumulate and thus disable a network; an 'immortal' packet that is misrouted in a loop might interfere with new packets entering. By ensuring that all packets 'die' after some finite time, Internet architects protect the network from transient routing loops and ensure that any network can be cleaned of 'zombie' packets by shutting down network inputs, rather than requiring the entire network to be disconnected and/or rebooted. Although it may seem wasteful to lookup a packet that might be then dropped because its hop count is exceeded, it is more likely that a packet would be dropped because of a forwarding lookup failure, so this step often happens second in the sequence.