Subject: [Hipsec-rg] BOF at IETF 63 on Network-based Localized Mobility Management
From: [email-masked] (James Kempf)
Date: Wed Jun 29 13:49:01 2005

Phil Roberts and I are organizing a BOF on network based localized mobility
management (netlmm) for IETF 63. The idea is to provide support in the local
access network for mobility management so that a mobile node doesn't have to
change its IP address so frequently. The BOF description is at:

    http://www.geocities.com/kempf42/netlmm-bof.txt

There's a mailing list:

[email-masked]
https://vesuvio.ipv6.cselt.it/mailman/listinfo/netlmm, to subscribe

Currently, the list is being used by co-authors of the problem statement and
requirements drafts, but please subscribe and join in discussion if you
would like. Please don't respond to this message, since any discussion on
the proposed BOF should be on the BOF list.

The problem statement draft is available from the Internet Drafts
repository:

https://datatracker.ietf.org/public/idindex.cgi?command=id_detail&id=13248

The requirements draft is about complete and will be posted to the Internet
Drafts repository by the end of the week. I'll send email to the list about
it when its posted.

Phil and I are working on a proposed WG charter, we'll post the charter to
the list when its complete.

            jak

From: [email-masked] (Andrei Gurtov)
Date: Sun Jun 26 13:03:00 2005
Subject: [Hipsec-rg] agenda slots for the IETF63 meeting
Message-ID: <[email-masked]>

This is a MIME-formatted message.  If you see this text it means that your
E-mail software does not support MIME-formatted messages.

--=_courier-22743-1119805344-0001-2
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

We're starting to gather agenda slots for the HIP RG meeting at IETF63. 
Please send the topic and desired length of your presentation.

Andrei

--=_courier-22743-1119805344-0001-2
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

--=_courier-22743-1119805344-0001-2--

From: [email-masked] (Pekka Nikander)
Date: Tue Jun 21 02:47:00 2005
Subject: [Hipsec-rg] What is PATH server?
In-Reply-To: <[email-masked]>
References: <[email-masked]>
Message-ID: <[email-masked]>

>   When I read the Internet Draft, Preferred Alternatives for 
> Tunnelling HIP
> (PATH), draft-nikander-hip-path-00.txt,it always mention PATH server, 
> such
> as "It is possible to combine a HIP rendzvous server (ie PATH server) 
> and a
> STUN server ...." (P.3) What is PATH server? Where can I find more 
> details
> about this PATH server?

I guess the draft needs to be updated.

Briefly, a PATH server is a HIP rendezvous server that knows about
UDP tunnelling and implements the HIP-equivalent for STUN/ICE.

--Pekka

From: [email-masked] (Joseph So)
Date: Tue Jun 21 00:48:00 2005
Subject: [Hipsec-rg] What is PATH server?
Message-ID: <[email-masked]>

Dear All,
  When I read the Internet Draft, Preferred Alternatives for Tunnelling HIP
(PATH), draft-nikander-hip-path-00.txt,it always mention PATH server, such
as "It is possible to combine a HIP rendzvous server (ie PATH server) and a
STUN server ...." (P.3) What is PATH server? Where can I find more details
about this PATH server?
Thanks
Yours,
Joseph

-- 
Geschenkt: 3 Monate GMX ProMail gratis + 3 Ausgaben stern gratis
++ Jetzt anmelden & testen ++ http://www.gmx.net/de/go/promail ++

From: [email-masked] (Ahrenholz, Jeffrey M)
Date: Tue Jun 14 14:36:00 2005
Subject: [Hipsec-rg] OpenDHT-HIP interface
Message-ID: <[email-masked]>

It is worth noting that some of us have previously exchanged emails and
are working with the following interfaces to OpenDHT, so different
implementations may interoperate.

(1) store address   put(HIT, addr)
application:    hip-addr
client_library: <implementation dependent>
key:            <base64 encoding of 128-bit HIT>
value:          <base64 encoding of struct sockaddr (network byte
order)>
ttl_sec:        <current address lifetime>

(1) address lookup  addr =3D get(HIT)
application:    hip-addr
client_library: <implementation dependent>
key:            <base64 encoding of 128-bit HIT>
maxvals:        <implementation dependent>
placemark:      <used w/get>

...and the actual value (or values) returned by a get is the
base64-encoded sockaddr containing the IP in network byte order. This
way, you can store both IPv4 addresses (sizeof(struct =
sockaddr_in)=3D=3D16
bytes) and IPv6 addresses (sizeof(struct sockaddr_in6)=3D=3D28 bytes).
Because of the append operation, the last address returned from a list
of addresses will be considered the current preferred address. This may
differ now that removes will be supported.

This DNS interface from the paper by Lars, Gustav, and Per...
(2) DNS publish   put(FQDN, HIT)
application:    hip-dns
client_library: <implementation dependent>
key:            <base64 encoding of SHA-1 of FQDN>
value:          <base64 encoding of 128-bit HIT>
ttl_sec:        604800 (1 week)

(2) DNS lookup  addr =3D get(FQDN)
application:    hip-dns
client_library: <implementation dependent>
key:            <base64 encoding of SHA-1 of FQDN>
maxvals:        <implementation dependent>
placemark:      <used w/get>

...and finally, we are using with our Windows implementation, LSI
lookup...
(3) HIT publish  put(LSI, HIT)
application:    hip-hit
client_library: <implementation dependent>
key:            <base64 encoding of SHA-1(LSI sockaddr|<site id>)>
value:          <base64 encoding of 128-bit HIT>
ttl_sec:        604800 (1 week)

(3) HIT lookup  HIT =3D get(LSI)
application:    hip-hit
client_library: <implementation dependent>
key:            <base64 encoding of SHA-1(LSI sockaddr|<site id>)>
maxvals:        <implementation dependent>
placemark:      <used w/get>

...where | denotes concatenation, and <site id> is an ascii string such
as the domain in an FQDN. The reason for SHA hashing is because the
sockaddr can be 128 bits in length already and this would allow a <site
id> of any length, without exceeding the 160-bit maximum key length.

-Jeff

> -----Original Message-----
> From: Andrei Gurtov [mailto:[email-masked]]=20
> Sent: Tuesday, June 14, 2005 9:23 AM
> To: [email-masked]
> Cc: Sean C. Rhea; Scott Shenker
> Subject: [Hipsec-rg] OpenDHT-HIP interface
>=20
>=20
> OpenDHT-HIP interface is available for download now.
>=20
> Andrei
>=20
> -------- Original Message --------
> Subject: 	Final Report
> Date: 	Tue, 14 Jun 2005 11:26:40 +0200
> From: 	Per Toft <[email-masked]>
> To: 	Andrei Gurtov <[email-masked]>
>=20
>=20
>=20
> Hi Andrei,
>=20
> We have now completed our semester project. As previously agreed your=20
> copy of the report can be downloaded from our web-site
> http://kom.aau.dk/group/05gr680/
> (See under Work -> Report -> Report.pdf /ps)
>=20
> Regarding the OpenDHT interface. We have developed a prototype, which=20
> seems to work. We are dealing with the same problem as Boing=20
> (You cannot=20
> delete the old values in DHT).
> You can find the latest snapshot under work on the web-site.  =20
>=20
> With Regards
>=20
> Lars, Gustav & Per
>=20
>=20
>=20
>=20
> --=20
> Andrei Gurtov        [email-masked]        =20
> http://www.hiit.fi/andrei.gurtov
> PhD, Research Scientist,=20
> Project Manager
> Helsinki Institute for Information Technology (HIIT)
> Advanced Research Unit (ARU)
> High Tech Center, Helsinki, Finland
>=20
>=20

From: [email-masked] (Sean C. Rhea)
Date: Tue Jun 14 13:39:03 2005
Subject: [Hipsec-rg] Re: OpenDHT-HIP interface
In-Reply-To: <[email-masked]>
References: <[email-masked]>
Message-ID: <[email-masked]>

--Apple-Mail-47-874235647
Content-Type: multipart/mixed; boundary=Apple-Mail-46-874235638

--Apple-Mail-46-874235638
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
	charset=US-ASCII;
	delsp=yes;
	format=flowed

On Jun 14, 2005, at 9:22 AM, Andrei Gurtov wrote:
> OpenDHT-HIP interface is available for download now.

Great!

> From: 	Per Toft <[email-masked]>
>
> Regarding the OpenDHT interface. We have developed a prototype, which  
> seems to work. We are dealing with the same problem as Boing (You  
> cannot delete the old values in DHT).

Ah, but you can delete values from OpenDHT now!  It's a new feature,  
and I haven't advertised it yet, but it is available using the Sun RPC  
interface.  (I haven't advertised it because I haven't made it  
available via XML RPC just yet.)

I'm attaching the new gateway_prot.x file in case you want to try it.   
If you do a version 3 put, it now takes the SHA-1 hash of a secret as  
well as the key, value, and TTL from before.  If you later want to  
remove a value, you just do a remove with the same key, the SHA-1 hash  
of the original value, and the secret whose hash was sent in the put.   
Make sense?  If not, let me know, and I'll try and do a better job  
explaining it.

You can use the new gateway_prot.x with any of the machines in the  
OpenDHT deployment:

http://appmanager.berkeley.intel-research.net/plcontrol/apps.php? 
appid=1001&GROUP=ANY&BUILD=ANY&CSTATUS=STATUS-3&RSTATUS=STATUS-3&GO=GO

I've also attached Java code for puts, gets, and removes.  There should  
be a new snapshot out with all of this sometime next week.

Sean
-- 
           The Law of Unintended Consequences:  for every action,
            there is an excellent chance of producing an opposite
                   and totally disproportionate reaction.
                              -- Clyde Haberman

--Apple-Mail-46-874235638
Content-Transfer-Encoding: 7bit
Content-Type: application/octet-stream;
	x-unix-mode=0644;
	name="gateway_prot.x"
Content-Disposition: attachment;
	filename=gateway_prot.x

/*
 * Copyright (c) 2001-2003 Regents of the University of California.
 * All rights reserved.
 *
 * See the file LICENSE included in this distribution for details.
 */

enum bamboo_stat {
  BAMBOO_OK = 0,
  BAMBOO_CAP = 1,
  BAMBOO_AGAIN = 2
};

typedef opaque bamboo_key[20];
typedef opaque bamboo_value<1024>; /* may be increased to 8192 eventually */
typedef opaque bamboo_placemark<100>;
typedef opaque bamboo_value_hash[20];

struct bamboo_hash {
    string algorithm<20>; /* only "" and "SHA1" are currently supported */
    opaque hash<40>;      /* "" means can't be removed, set hash to []  */
};

struct bamboo_put_arguments {
  string application<255>;
  string client_library<255>;
  bamboo_key key;
  bamboo_value value;
  bamboo_hash secret_hash;
  int ttl_sec;
};

struct bamboo_get_args {
  string application<255>;
  string client_library<255>;
  bamboo_key key;
  int maxvals;
  bamboo_placemark placemark;
};

struct bamboo_get_value {
    bamboo_value value;
    int ttl_sec_rem;
    bamboo_hash secret_hash; /* To distinguish between same key, same */
};                           /* value, different secret. */

struct bamboo_get_result {
    bamboo_get_value values<>;
    bamboo_placemark placemark;
};

struct bamboo_rm_arguments {
  string application<255>;
  string client_library<255>;
  bamboo_key key;
  bamboo_hash value_hash;    /* the triple of (key, value_hash, secret_hash) */
  string secret_hash_alg<20>;/*   identifies which put we're talking about */
  opaque secret<40>;         /* such that hash(secret) = secret_hash */
  int ttl_sec;               /* must be >= removed put's TTL remaining */
};

/********************************************************************
                               VERSION 2 TYPES
        The following types are used only in the version 2 interface.
 ********************************************************************/

struct bamboo_put_args {
  string application<255>;
  string client_library<255>;
  bamboo_key key;
  bamboo_value value;
  int ttl_sec;
};

struct bamboo_get_res {
    bamboo_value values<>;
    bamboo_placemark placemark;
};

/* NO LONGER SUPPORTED */
struct bamboo_rm_args {
  string application<255>;
  string client_library<255>;
  bamboo_key key;
  bamboo_value_hash value_hash;
  int ttl_sec;
};

/********************************************************************
                            END OF VERSION 2 TYPES
 ********************************************************************/

program BAMBOO_DHT_GATEWAY_PROGRAM {
	version BAMBOO_DHT_GATEWAY_VERSION {
		void 
		BAMBOO_DHT_PROC_NULL (void) = 1;

	        bamboo_stat
		BAMBOO_DHT_PROC_PUT (bamboo_put_args) = 2;

                bamboo_get_res
		BAMBOO_DHT_PROC_GET (bamboo_get_args) = 3;
                
                /* This remove is no longer supported at all. 
                bamboo_stat
                BAMBOO_DHT_PROC_RM (bamboo_rm_args) = 4;
                */
	} = 2;
	version BAMBOO_DHT_GATEWAY_VERSION_3 {
		void 
		BAMBOO_DHT_PROC_NULL (void) = 1;

	        bamboo_stat
		BAMBOO_DHT_PROC_PUT (bamboo_put_arguments) = 2;

                bamboo_get_result
		BAMBOO_DHT_PROC_GET (bamboo_get_args) = 3;
                
                bamboo_stat
                BAMBOO_DHT_PROC_RM (bamboo_rm_arguments) = 4;
	} = 3;
} = 708655600;

--Apple-Mail-46-874235638
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
	x-unix-mode=0644;
	name="Get.java"
Content-Disposition: attachment;
	filename=Get.java

/*
 * Copyright (c) 2001-2003 Regents of the University of California.
 * All rights reserved.
 *
 * See the file LICENSE included in this distribution for details.
 */

package bamboo.dht;
import java.net.InetAddress;
import java.nio.ByteBuffer;
import java.security.MessageDigest;
import static org.acplt.oncrpc.OncRpcProtocols.*;

public class Get {
    public static void main(String [] args) throws Exception {
        if (args.length < 3) {
            System.out.println("usage: java bamboo.dht.Get <server_host> "
                               + "<server_port> <key> [max_vals]");
            System.exit(1);
        }
        InetAddress h = InetAddress.getByName(args[0]);
        int p = Integer.parseInt(args[1]);
        bamboo_get_args getArgs = new bamboo_get_args();
        getArgs.application = Get.class.getName();
        getArgs.client_library = "Remote Tea ONC/RPC";
        MessageDigest md = MessageDigest.getInstance("SHA");
        getArgs.key = new bamboo_key();
        // If key is of the form 0x12345678, parse it as a hexidecimal value
        // of the first 8 digits of the key, rather than hashing it.
        if (args[2].substring(0, 2).equals("0x")) {
            // Must use a long to handle keys whose first binary digit is 1.
            long keyPrefix = Long.parseLong(args[2].substring(2), 16);
            getArgs.key.value = new byte[20];
            ByteBuffer.wrap(getArgs.key.value).putInt((int) keyPrefix);
        }
        else {
            getArgs.key.value = md.digest(args[2].getBytes());
        }
        if (args.length > 3) 
            getArgs.maxvals = Integer.parseInt(args[3]);
        else
            getArgs.maxvals = Integer.MAX_VALUE;
        getArgs.placemark = new bamboo_placemark();
        getArgs.placemark.value = new byte [0];
        gateway_protClient client = new gateway_protClient(h, p, ONCRPC_TCP);
        while (true) {
            bamboo_get_res res = client.BAMBOO_DHT_PROC_GET_2(getArgs);
            for (int i = 0; i < res.values.length; ++i)
                System.out.println(new String (res.values[i].value));
            if (res.placemark.value.length == 0)
                break;
            getArgs.placemark = res.placemark;
        }
    }
}

--Apple-Mail-46-874235638
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
	x-unix-mode=0644;
	name="Put.java"
Content-Disposition: attachment;
	filename=Put.java

/*
 * Copyright (c) 2001-2003 Regents of the University of California.
 * All rights reserved.
 *
 * See the file LICENSE included in this distribution for details.
 */

package bamboo.dht;
import java.net.InetAddress;
import java.nio.ByteBuffer;
import java.security.MessageDigest;
import static org.acplt.oncrpc.OncRpcProtocols.*;

public class Put {
    public static void main(String [] args) throws Exception {
        if (args.length < 5) {
            System.out.println("usage: java bamboo.dht.Put <server_host> "
                               + "<server_port> <key> <value> <TTL> [secret]");
            System.exit(1);
        }
        String [] results = {"BAMBOO_OK", "BAMBOO_CAP", "BAMBOO_AGAIN"};
        InetAddress h = InetAddress.getByName(args[0]);
        int p = Integer.parseInt(args[1]);
        bamboo_put_arguments putArgs = new bamboo_put_arguments();
        putArgs.application = Put.class.getName();
        putArgs.client_library = "Remote Tea ONC/RPC";
        MessageDigest md = MessageDigest.getInstance("SHA");
        putArgs.key = new bamboo_key();
        // If key is of the form 0x12345678, parse it as a hexidecimal value
        // of the first 8 digits of the key, rather than hashing it.
        if (args[2].substring(0, 2).equals("0x")) {
            // Must use a long to handle keys whose first binary digit is 1.
            long keyPrefix = Long.parseLong(args[2].substring(2), 16);
            putArgs.key.value = new byte[20];
            ByteBuffer.wrap(putArgs.key.value).putInt((int) keyPrefix);
        }
        else {
            putArgs.key.value = md.digest(args[2].getBytes());
        }
        putArgs.value = new bamboo_value();
        putArgs.value.value = args[3].getBytes();
        putArgs.ttl_sec = Integer.parseInt(args[4]);
        putArgs.secret_hash = new bamboo_hash();
        if (args.length > 5) {
            putArgs.secret_hash.algorithm = "SHA";
            putArgs.secret_hash.hash = md.digest(args[5].getBytes());
        }
        else {
            putArgs.secret_hash.algorithm = "";
            putArgs.secret_hash.hash = new byte[0];
        }
        gateway_protClient client = new gateway_protClient(h, p, ONCRPC_TCP);
        int result = client.BAMBOO_DHT_PROC_PUT_3(putArgs);
        System.out.println(results[result]);
    }
}

--Apple-Mail-46-874235638
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
	x-unix-mode=0644;
	name="Remove.java"
Content-Disposition: attachment;
	filename=Remove.java

/*
 * Copyright (c) 2001-2003 Regents of the University of California.
 * All rights reserved.
 *
 * See the file LICENSE included in this distribution for details.
 */

package bamboo.dht;
import java.net.InetAddress;
import java.nio.ByteBuffer;
import java.security.MessageDigest;
import static org.acplt.oncrpc.OncRpcProtocols.*;

public class Remove {
    public static void main(String [] args) throws Exception {
        if (args.length != 6) {
            System.out.println("usage: java bamboo.dht.Remove <server_host> "
                               + "<server_port> <key> <value> <TTL> <secret>");
            System.exit(1);
        }
        String [] results = {"BAMBOO_OK", "BAMBOO_CAP", "BAMBOO_AGAIN"};
        InetAddress h = InetAddress.getByName(args[0]);
        int p = Integer.parseInt(args[1]);
        bamboo_rm_arguments removeArgs = new bamboo_rm_arguments();
        removeArgs.application = Put.class.getName();
        removeArgs.client_library = "Remote Tea ONC/RPC";
        MessageDigest md = MessageDigest.getInstance("SHA");
        removeArgs.key = new bamboo_key();
        // If key is of the form 0x12345678, parse it as a hexidecimal value
        // of the first 8 digits of the key, rather than hashing it.
        if (args[2].substring(0, 2).equals("0x")) {
            // Must use a long to handle keys whose first binary digit is 1.
            long keyPrefix = Long.parseLong(args[2].substring(2), 16);
            removeArgs.key.value = new byte[20];
            ByteBuffer.wrap(removeArgs.key.value).putInt((int) keyPrefix);
        }
        else {
            removeArgs.key.value = md.digest(args[2].getBytes());
        }
        removeArgs.value_hash = new bamboo_hash();
        removeArgs.value_hash.algorithm = "SHA";
        removeArgs.value_hash.hash = md.digest(args[3].getBytes());
        removeArgs.ttl_sec = Integer.parseInt(args[4]);
        removeArgs.secret_hash_alg = "SHA";
        removeArgs.secret = args[5].getBytes();
        gateway_protClient client = new gateway_protClient(h, p, ONCRPC_TCP);
        int result = client.BAMBOO_DHT_PROC_RM_3(removeArgs);
        System.out.println(results[result]);
    }
}

--Apple-Mail-46-874235638--

--Apple-Mail-47-874235647
content-type: application/pgp-signature; x-mac-type=70674453;
	name=PGP.sig
content-description: This is a digitally signed message part
content-disposition: inline; filename=PGP.sig
content-transfer-encoding: 7bit

--Apple-Mail-47-874235647--

From: [email-masked] (Andrei Gurtov)
Date: Tue Jun 14 13:39:01 2005
Subject: [Hipsec-rg] OpenDHT-HIP interface
Message-ID: <[email-masked]>

This is a MIME-formatted message.  If you see this text it means that your
E-mail software does not support MIME-formatted messages.

--=_courier-13048-1118766210-0001-2
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

OpenDHT-HIP interface is available for download now.

Andrei

-------- Original Message --------
Subject: 	Final Report
Date: 	Tue, 14 Jun 2005 11:26:40 +0200
From: 	Per Toft <[email-masked]>
To: 	Andrei Gurtov <[email-masked]>

Hi Andrei,

We have now completed our semester project. As previously agreed your 
copy of the report can be downloaded from our web-site
http://kom.aau.dk/group/05gr680/
(See under Work -> Report -> Report.pdf /ps)

Regarding the OpenDHT interface. We have developed a prototype, which 
seems to work. We are dealing with the same problem as Boing (You cannot 
delete the old values in DHT).
You can find the latest snapshot under work on the web-site.   

With Regards

Lars, Gustav & Per

-- 
Andrei Gurtov        [email-masked]         http://www.hiit.fi/andrei.gurtov
PhD, Research Scientist, Project Manager
Helsinki Institute for Information Technology (HIIT)
Advanced Research Unit (ARU)
High Tech Center, Helsinki, Finland

--=_courier-13048-1118766210-0001-2
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

--=_courier-13048-1118766210-0001-2--