Efficient Routing using NIx-Vectors
Riley, George F.
Ammar, Mostafa H. (Mostafa Hamed)
Zegura, Ellen W.
MetadataShow full item record
We introduce the concept if NIx-Vector routing which gives efficient and consistent routing of packets in Internet routers. A NIx-Vector is a compact representation of a routing path, which is small enough to be included in a packet header. We show how, by including the routing information in the packet header, routing decisions can be made in O(1) time at each router, with no caching or state in the routers (other than the existing routing tables). The creation of a NIx-Vector for a source and a destination pair requires one round trip time, but once the NIx-Vector is known, it can be retained by the source and reused indefinitely with no further setup time required (or until it becomes no longer valid, which is easily detected.) In addition to O(1) routing decisions, the use of NIx-Vectors to record and specify routes has other benefits. NIx-Vectors provide for route pinning, which is beneficial for reservation protocols and mitigates the effect of routing flaps on long lived flows. A variation of NIx-Vectors can insure symmetrical routes from a source to a destination and back to the source, which is also beneficial to some reservation protocols. Another variation of NIx-Vectors can insure that all packets from the same flow take the same path, even in the presence of redundant paths or links, which will reduce the frequency of pack misordering. Finally, the NIx-Vector concept can be combined with probabilistic packet market to allow for the reconstruction of a complete routing path for packets of unknown origin, which is useful in determining the source of denial of service security attacks. We give a complete description of how NIx-Vectors are created and used, and describe an end-to-end protocol for managing NIx-Vectors. We give empirical data showing the number of bits required to represent NIx-Vectors for typical Internet paths. We give a proposed IPv4 option which will allow for a simple implementation.