home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.protocols.tcp-ip      TCP and IP network protocols.      14,669 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 13,560 of 14,669   
   Skybuck Flying to All   
   Extending IPv4 with source translation/s   
   09 Sep 10 07:25:49   
   
   XPost: alt.winsock.programming, comp.arch, comp.dcom.lans.ethernet   
   XPost: sci.crypt   
   From: IntoTheFuture@hotmail.com   
      
   Hello,   
      
   The internet protocol version 4 could be extended with source   
   translation/source privacy.   
      
   The idea is as follows:   
      
   The ip.source is translated into something else/arbitrary along the path's   
   routers to it's destination.   
      
   Each router selects a random available ip from a table which is to replace   
   the ip.source of the packet.   
      
   A bit is set in the packet indicating the privacy option. This bit could be   
   bit 0 of the ip.flag, alternatively   
   it could also be an add-on option, the flag bit is to be preferred because   
   it would require little changes   
   to simple ip implementations.   
      
   If the router does not support this new option then the ip.source is left   
   intact.   
      
   Packets with the bit cleared are routed as normal.   
      
   Packets with the bit set indicate a special privacy packet and have to be   
   treated in a special way.   
      
   if ip.flag.bit0 is set it indicates a privacy packet then   
       if ip.TypeOfService.bit6 is set it indicates the ip.source is   
   translated.   
       if ip.TypeOfService.bit7 is set it indicates the ip.dest is translated.   
      
   Bit6 of ip.TypeOfService is used to indicate the ip.source is translated.   
   Bit7 of ip.TypeOfService is used to indicate the ip.destination is   
   translated.   
      
   These two bits are used to indicate if it's a regular/normal ip or a   
   translated ip.   
      
   Based on this information the router can make a decision if the packet is to   
   be routed freely/normally or if certain restrictions apply.   
      
   If the ip.TypeOfService.bit7 is set then a restriction applies. The router   
   can only route the packet towards the router which had the ip.dest   
   as an ip.source during previous transmissions/reception at the current   
   router.   
      
   Therefore each router on reception of a privacy packet must also remember   
   from which router it came. Therefore each ip.source (ip translated source)   
   is   
   unique per router and needs a seperate entry into the router's hash   
   table/data structure.   
      
   All translated ip's remain valid for a certain period of time which needs to   
   be standardized for example 5 minutes might be ok.   
      
   The goal of the idea is to keep the ip.source secret from end points of the   
   internet and also of other routers. At each stage/hops/router   
   that supports it translation happens, stages/hops/routers that don't support   
   it should function normally and still work:   
      
   A->B->C->D->E   
      
   C does not support translation.   
      
   A sends to E along path BCD.   
      
   Packet at A looks like:   
   ip.source = A   
   ip.dest = E   
   ip.flag.bit0 = 1   
   ip.tos.bit6 = 0   
   ip.tos.bit7 = 0   
      
   Packet at B looks like:   
   ip.source = Z   
       (z selected from ip_seen_table, (z not in ip_seen_table, z not in   
   translation tables))   
       (forward_translation_table[A].replacement = Z)   
       (backward_translation_table[Z].replacement = A)   
   ip.dest = E   
   ip.flag.bit0 = 1   
   ip.tos.bit6 = 1   
   ip.tos.bit7 = 0   
      
   Packet at C looks like:   
   ip.source = Z   
   ip.dest = E   
   ip.flag.bit0 = 1   
   ip.tos.bit6 = 1   
   ip.tos.bit7 = 0   
      
   Packet at D looks like:   
   ip.source = G   
       (G selected from ip_seen_table, (G not in ip_seen_table, G not in   
   translation tables))   
       (forward_translation_table[Z].replacement = G)   
       (backward_translation_table[G].replacement = Z)   
   ip.dest = E   
   ip.flag.bit0 = 1   
   ip.tos.bit6 = 1   
   ip.tos.bit7 = 0   
      
   Packet at E looks like:   
   ip.source = G   
   ip.dest = E   
   ip.flag.bit0 = 1   
   ip.tos.bit6 = 1   
   ip.tos.bit7 = 0   
      
   EndPoint E will believe the packet came from G.   
      
   EndPoint E wishes to communicate back to G which is actually A and proceeds   
   as normal and sends messages back:   
      
   EndPoint E does also not support privacy option therefore Packet E will send   
   the following:   
      
   Packet at E looks like:   
   ip.source = E   
   ip.dest = G   
   ip.flag.bit0 = 0   
   ip.tos.bit6 = 0   
   ip.tos.bit7 = 0   
      
   Packet at D looks like:   
      
   Router at D detects G and knows it was a translated IP, meanwhile it could   
   also have become the real G this is where it gets a little tricky.   
   if the real G was received by router at D and was also transmitted to E a   
   conflict has occured. This could be solved by translating conflicts   
   as well... therefore the real G could get a different IP for the time   
   being... which could further confuse E which is not desirable... so instead   
   the privacy "connection" is lost and the real G will prevail over the fake   
   G. The fake G can be removed and replaced with something else, resulting   
   in a short loss of a packet possibly a tcp connection and other udp related   
   connections... future protocols might need to be aware of suchs drops   
   and take it into account that it might happen, if clients start supporting   
   priacy option as well this might not be a problem anymore since the flags   
   will indicate if it was a translated ip or a real ip.   
      
   Anyway let's go on for a moment since these conflicts could be rare in   
   practice and might not really present that big of a problem...   
      
   As I was writing... the router at D detects G and translates it back via   
   it's backward translation table.   
   G is replaced with Z.   
      
   Since the router support privacy option, the E is also translated.   
      
   ip.source = Q   
       (Q selected from ip_seen_table, (Q not in ip_seen_table, Q not in   
   translation tables))   
       (forward_translation_table[E].replacement = Q)   
       (backward_translation_table[Q].replacement = E)   
   ip.dest = Z   
   ip.flag.bit0 = 1   
   ip.tos.bit6 = 1   
   ip.tos.bit7 = 1   
      
   Packet at C looks like:   
      
   ip.source = Q   
   ip.dest = Z   
   ip.flag.bit0 = 1   
   ip.tos.bit6 = 1   
   ip.tos.bit7 = 1   
      
   Router at C does not support privacy option and ignores it and routes the   
   packet forward to Z which came from the router at B.   
      
   Here another potential problem exists... if C does not copy over the tos   
   bits then B could get confused... I am not sure   
   what routers do and if they are allowed to modify tos bits from packets. If   
   they are allowed to modify tos bits than a solution   
   will have to be found, and some other kind of bits might have to be used. If   
   no solution can be found then perhaps this   
   idea could be implemented for ipv6 instead.   
      
   Packet at B looks like:   
      
   Router at B supports privacy option and applies it to the source as well...   
   Q is replaced with L   
      
   ip.source = L   
       (L selected from ip_seen_table, (L not in ip_seen_table, L not in   
   translation tables))   
       (forward_translation_table[Q].replacement = L)   
       (backward_translation_table[L].replacement = Q)   
   ip.dest = A   
       (Z is found in translation table)   
       (Z is replaced with A via backward translation table)   
   ip.flag.bit0 = 1   
   ip.tos.bit6 = 1   
   ip.tos.bit7 = 0   
      
   Bit7 could be turned off since it detected/found Z in table... and thus can   
   translate it back.   
      
   ip.tos.Bit7 could there prevent confusion among routers and to make them   
   understand if something is a real ip or a translated ip as to   
   be able to properly route real ip's. I am not completely sure if bit7 is   
   really required but I think so...   
      
      
   [continued in next message]   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca