Wednesday, November 5, 2008

Internet Indiretion Infrastructure

Ion Stoica, Daniel Adkins, Shelley Zhuang, Scott Shenker, Sonesh Surana, "Internet Indirection Infrastructure"

What kind of flavor of network is this?
  • It is a little bit like circuit-switched networking (allowing packet processing on top of it) in the sense that the receivers set up triggers which will then identify how a flow will be routed through the Internet.
  • It is not at all like Active Networks because the "routers" are not "programmed" by the senders through injecting code into the packet, but actually by the receivers through setting up triggers.
  • It uses DHTs to load balance.

Goals
  • generalize Internet P2P communication abstraction
  • implement features like multicast, anycast, mobility on application layer (challenging on IP layer, previous proposals provided disjoint solutions for each problem separately). load-balancing
  • data processing (H.263->MPEG conversion) while routing
  • decoupling the act of sending and receiving through rendezvous-based communication abstraction
  • receivers can control routing, can built trees for multicast
Concepts
  • each packet has an identifier, receiver asks infrastruction for delivery of the packets with a given identifier
  • receiver addr expresses interest in identifier id through triggers (id,addr)
  • triggers are matched to packets by largest prefix overlap, have to exceed exact-match threshold
  • sending and receiving hosts don't need to know each others identity or location
  • indirection, e.g. home agent in Mobil IP
  • private versus public identifier, e.g. for flows versus name lookups
  • Advacned: stack of identifiers is a list of identifiers or addresses written as id_stack. A trigger can contain stacks (id,id_stack), a packet can contain a stack (id_stack,payload)
  • soft-state of maintaining triggers (and possibly redundancy)
Main Ideas
  • identifiers map to unique i3 node through Chord, inheriting through Chord Robustness, Scalability, Efficiency, Stability
  • senders send packet to i3 node corresponding to identifier
  • receivers install triggers on the i3 node corresponding to identifier
  • i3 nodes routes packets matching triggers to receiver
  • Advanced: if a trigger has a stack, a packet can be routed to another identifier (e.g. i3 node) who will then essentially further route it down the stack, e.g. loose source routing. The algorithm is given in Figure 3.
  • Advanced: identifiers can be routed through applications, e.g. HTML-> WML transformation
Details and further ideas
  • server selection through least significant bits in identifier, random for load-balancing, through geographic properties for CDN
  • private and public triggers, example in 4.2
  • scalability because per-flow state disributed among many servers
  • avoiding hot-spots in multicast through pushing copies of triggers
  • i3 proxy allows legacy UDP-applications

2 comments:

Matei Zaharia said...

I wouldn't say i3 is really like circuit switching, because you don't allocate any capacity. You just register a name for yourself, but that's not so different from getting a DNS name or even an IP address through DHCP.

Randy H. Katz said...

Did you believe that reasonable network performance could be achieved?