Internet Indirection Infrastructure (i3) Ion Stoica Daniel Adkins Shelley Zhuang Scott Sheker Sonesh Surana Presented by Kiran Komaravolu Motivation With the Internet’s point to point communication abstraction, implementation of some services like mobility, multicast, anycast etc. has become difficult. Solution: Indirection Instead of sending packet to receiver, associate a packet with an id, receiver picks up all packets with the ids’ its interested in. How i3 works Receiver inserts a “trigger” into i3 “Send all pkts with identifier id to address R.” When a pkt with id is sent into i3, matching triggers are looked up and Pkts sent to those receivers. A packet may match a trigger both their ids have the same prefix of k bits And no other trigger has a longer prefix that matches the packet. How i3 works I3 is an overlay network with a bunch of servers. In the basic form – Packets are of the form (id, data) – Triggers are of the form (id, addr) Each server has a unique identifier. How i3 works When a trigger (id, addr)is inserted, it is stored in server responsible for id. When Packet (idt , data) is inserted into i3, it is routed to server responsible for id. All Ids with same initial k bits are stored in same server . When packet reaches the server, appropriate trigger is fired or the packet is dropped if it doesn’t match any trigger. Communication with i3. Mobility – Packet redirection can be made just by changing client’s trigger from (id,R) to (id, R’). Multicast – A bunch of clients insert triggers in the form (id, R1), (id, R2), (id, R3). Pkt with id is sent to R1, R2, R3 Anycast – Pkts should be sent to only one receiver in a group. – All receivers in the group insert triggers with same k bit prefix. – The last m-k bits are used to encode differences between the receivers. The receiver whose id matches the longest prefix gets the packet. ID Stacks. Triggers or Packets could specify identifier stacks or address stacks. Packet p = (idstack, data) Trigger t = (id , idstack) Useful in redirecting traffic. Using ID stacks Packet p = (id1-id2-id3 ,data) I3 has a trigger t = (id2, x-y) [x,y are addrs] – Packet is sent to id1 – No trigger match. id1 popped out of stack. – Packet sent to id2. – Trigger found. id2 popped out and x-y prepended to identifier list. – This trigger is fired. This allows for end parties to determine the routing of the packets. Using i3 Service composition – Packets may be sent to a 3rd party server for preprocessing before being sent to the client. Heterogeneous multicast. – Two receivers receiving same data but in different application formats. Server Selection – Last m-k bits of identifiers may be used for server selection. Simulation Results Packets sent from Sender to “server” to Receiver Sender caches “server” address. Latency stretch for the 1st packet Per Data Packet forwarding overhead Q’s ?