Skip to main content

Extension to Sockets API for Mobile IPv6
draft-ietf-mip6-mipext-advapi-07

Revision differences

Document history

Date Rev. By Action
2012-08-22
07 (System) post-migration administrative database adjustment to the No Objection position for Bill Fenner
2012-08-22
07 (System) post-migration administrative database adjustment to the No Objection position for Sam Hartman
2006-03-28
07 Amy Vezza State Changes to RFC Ed Queue from Approved-announcement sent by Amy Vezza
2006-03-24
07 Amy Vezza IESG state changed to Approved-announcement sent
2006-03-24
07 Amy Vezza IESG has approved the document
2006-03-24
07 Amy Vezza Closed "Approve" ballot
2006-03-24
07 Margaret Cullen Note field has been cleared by Margaret Wasserman
2006-03-24
07 Margaret Cullen State Changes to Approved-announcement to be sent from IESG Evaluation::Revised ID Needed by Margaret Wasserman
2006-03-24
07 Sam Hartman [Ballot Position Update] Position for Sam Hartman has been changed to No Objection from Discuss by Sam Hartman
2006-03-09
07 Margaret Cullen State Changes to IESG Evaluation::Revised ID Needed from IESG Evaluation::AD Followup by Margaret Wasserman
2006-03-09
07 Margaret Cullen
[Note]: '1/9/2006:  Sent ping to Sam and Bill to clarify any outstanding issues.  1/23/06:  Need to send mail to attempt to bridge gap in understanding …
[Note]: '1/9/2006:  Sent ping to Sam and Bill to clarify any outstanding issues.  1/23/06:  Need to send mail to attempt to bridge gap in understanding between Sam and authors.' added by Margaret Wasserman
2006-03-06
07 Bill Fenner [Ballot Position Update] Position for Bill Fenner has been changed to No Objection from Discuss by Bill Fenner
2006-02-21
07 (System) New version available: draft-ietf-mip6-mipext-advapi-07.txt
2006-01-24
07 Margaret Cullen
[Note]: '1/9/2006:  Sent ping to Sam and Bill to clarify any outstanding issues.  1/23/06:  Need to send mail to attempt to bridge gap in understanding …
[Note]: '1/9/2006:  Sent ping to Sam and Bill to clarify any outstanding issues.  1/23/06:  Need to send mail to attempt to bridge gap in understanding between Sam and authors.' added by Margaret Wasserman
2006-01-12
07 Bill Fenner [Ballot comment]
2006-01-12
07 Bill Fenner
[Ballot discuss]
My issues are fixed except for two minor problems, easily fixed by an RFC-Editor's note:

1. There's an instance of IPV6_MIPSTOPTS, which is …
[Ballot discuss]
My issues are fixed except for two minor problems, easily fixed by an RFC-Editor's note:

1. There's an instance of IPV6_MIPSTOPTS, which is a typo of IP_MIPDSTOPTS

2. There's a leftover description of what inet6_rth_gettype() returns, but I think it's superceded by the example of how to access rth_type.
2006-01-09
07 Margaret Cullen [Note]: '1/9/2006:  Sent ping to Sam and Bill to clarify any outstanding issues.' added by Margaret Wasserman
2005-12-09
06 (System) New version available: draft-ietf-mip6-mipext-advapi-06.txt
2005-10-27
07 (System) Sub state has been changed to AD Follow up from New Id Needed
2005-10-27
05 (System) New version available: draft-ietf-mip6-mipext-advapi-05.txt
2005-09-01
07 Amy Vezza State Changes to IESG Evaluation::Revised ID Needed from IESG Evaluation by Amy Vezza
2005-09-01
07 Mark Townsley [Ballot Position Update] New position, No Objection, has been recorded for Mark Townsley by Mark Townsley
2005-08-31
07 Bill Fenner
[Ballot comment]
Throughout the document, I find myself confused about whether a section is talking about a system with Mobile-IP implemented in the kernel.  For …
[Ballot comment]
Throughout the document, I find myself confused about whether a section is talking about a system with Mobile-IP implemented in the kernel.  For example, 3.2.1 says

  The received ancillary data object for Home Address destination
  option SHOULD contain the Care-Of-Address of the mobile node.
...
  Note that whether or not these new APIs are used, the senders home
  address is contained in the source address

However, if the kernel doesn't implement Mobile-IP, then the HA option will have the HA, and the IP source address will be the COA, right?

Another example is:
    For TCP data packets with Home Address destination option may be
    used with "sticky" option for all transmitted packets. However,
    at this point, it is unknown why an application  would want to
    set Home Address option or Route Header Type 2 extension header
    along with its data packets as Mobile IPv6 protocol takes care of
    them transparently at the protocol stack.
[written assuming that there's a mip6 stack]; vs. later in the document,
      However, some
  embedded software implementations may require to implement the IPv6
  packet processing/sending at the user level; those implementations
  may choose to provide API spport for sending home-address option
  at the application layer.

I think it'd be nice to see clear statements about which parts would and wouldn't be used when there is or isn't a mip6 implementation in the stack.  Right now it's very wishy-washy, sometimes saying things like "this is handled by the mip6 stack" and sometimes saying things like "however you may have to do some other stuff".
2005-08-31
07 Bill Fenner
[Ballot discuss]
I wonder about the need for

    int inet6_rth_gettype(const void *bp);

The advanced API gives examples of, e.g., accessing rth->ip6r_segleft directly in …
[Ballot discuss]
I wonder about the need for

    int inet6_rth_gettype(const void *bp);

The advanced API gives examples of, e.g., accessing rth->ip6r_segleft directly in an ip6_rthdr; why not access rth->ip6r_type directly too?

Related to Sam's comments:
        uint8_t          ip6oha_addr[16];  /* Home Address */
It'd be really nice if this could be a struct in6_addr, but presumably it's this way because struct padding gets badly in the way given the 8n+6 alignment of this option.  It'd be nice if somehow the struct could contain the 6 so that you could use the aligned struct in6_addr.  Is this the first struct defined for an option with alignment requirements like this?


Moving the HA option automatically is a little weird; I'm uncomfortable about asking the kernel to parse the IPV6_DSTOPTS and move an HA option if found (especially with an 8n+6 padding, if there are other options packed in the IPV6_DSTOPTS things could get weird) - if this is a one-off then I'm inclined to let it go, but could there be another use for placing options between Routing and Frag headers?  In which case, would it be better to define another IPV6_???DSTOPTS option?
2005-08-31
07 (System) State Changes to IESG Evaluation from IESG Evaluation - Defer by system
2005-08-19
07 (System) Removed from agenda for telechat - 2005-08-18
2005-08-18
07 Bill Fenner State Changes to IESG Evaluation - Defer from IESG Evaluation by Bill Fenner
2005-08-18
07 Bill Fenner
[Ballot discuss]
I wonder about the need for

    int inet6_rth_gettype(const void *bp);

The advanced API gives examples of, e.g., accessing rth->ip6r_segleft directly in …
[Ballot discuss]
I wonder about the need for

    int inet6_rth_gettype(const void *bp);

The advanced API gives examples of, e.g., accessing rth->ip6r_segleft directly in an ip6_rthdr; why not access rth->ip6r_type directly too?

I'm going to defer this so that I can do a more complete review; this was just from skimming.
2005-08-18
07 Bill Fenner [Ballot Position Update] New position, Discuss, has been recorded for Bill Fenner by Bill Fenner
2005-08-18
07 Bert Wijnen [Ballot Position Update] Position for Bert Wijnen has been changed to No Objection from Undefined by Bert Wijnen
2005-08-18
07 Bert Wijnen
[Ballot comment]
citation/reference problems:
  !! Missing citation for Informative reference:
  P020 L028: [3]    Deering, S., Hinden, R., "Internet Protocol, Version 6

  …
[Ballot comment]
citation/reference problems:
  !! Missing citation for Informative reference:
  P020 L028: [3]    Deering, S., Hinden, R., "Internet Protocol, Version 6

  !! Missing Reference for citation: [RFC-3493]
  P004 L038:    body, such as has been done with the Basic API [RFC-3493].

  !! Missing Reference for citation: [RFC3245]
  P004 L040:    [RFC3245], such standardization would make sense only if
2005-08-18
07 Bert Wijnen [Ballot Position Update] New position, Undefined, has been recorded for Bert Wijnen by Bert Wijnen
2005-08-18
07 Brian Carpenter [Ballot Position Update] Position for Brian Carpenter has been changed to No Objection from Undefined by Brian Carpenter
2005-08-18
07 Brian Carpenter
[Ballot comment]
From Gen-ART review by Mark Allman:

  + Section 1: "mainly target user-level" --> "mainly targets
    user-level"

  + Section 1: …
[Ballot comment]
From Gen-ART review by Mark Allman:

  + Section 1: "mainly target user-level" --> "mainly targets
    user-level"

  + Section 1: While the document is fine without specifying error
    handling it might be nice to add a note that this is not good
    practice.

  + Section 1: "deployed among implementations, it" --> "deployed, it"
2005-08-18
07 Brian Carpenter [Ballot Position Update] New position, Undefined, has been recorded for Brian Carpenter by Brian Carpenter
2005-08-17
07 David Kessens [Ballot Position Update] New position, No Objection, has been recorded for David Kessens by David Kessens
2005-08-17
07 Russ Housley
[Ballot comment]
In section 7: s/man in the middle/man-in-the-middle/

  Reference [1] contains two dates.  I believe the second one should
  be deleted.

  …
[Ballot comment]
In section 7: s/man in the middle/man-in-the-middle/

  Reference [1] contains two dates.  I believe the second one should
  be deleted.

  Section 11 should be deleted prior to publication.
2005-08-17
07 Russ Housley [Ballot Position Update] New position, No Objection, has been recorded for Russ Housley by Russ Housley
2005-08-17
07 Ted Hardie [Ballot Position Update] Position for Ted Hardie has been changed to No Objection from Undefined by Ted Hardie
2005-08-17
07 Ted Hardie
[Ballot comment]
The document says:

Behavior of legacy IPv6 socket applications:

  Applications, whether or not they implement this specification, that
  use the Advanced …
[Ballot comment]
The document says:

Behavior of legacy IPv6 socket applications:

  Applications, whether or not they implement this specification, that
  use the Advanced API mechanisms to receive Destination options or
  Routing headers, need to ignore or otherwise properly handle the Home
  Address destination option and the type 2 routing headers according
  to this API specifications.


I found this pretty hard to parse.  I would suggest re-phrasing it.  Does "Legacy applications using
the Advanced API mechanisms to receive Destination options or Routing headers will ignore
the Home Address destination option and the type 2 routing headers specified here." capture
the intent?
2005-08-17
07 Ted Hardie [Ballot Position Update] New position, Undefined, has been recorded for Ted Hardie by Ted Hardie
2005-08-17
07 Michelle Cotton
IANA Comments:
As described in the IANA Considerations section, this document uses parameters in the protocol numbers registry but does not request any new IANA …
IANA Comments:
As described in the IANA Considerations section, this document uses parameters in the protocol numbers registry but does not request any new IANA Actions.
2005-08-16
07 Sam Hartman
[Ballot discuss]
ANSI C does not guarantee strict alignment of structs.  You can design
a struct that can hold all the fields of a packet, …
[Ballot discuss]
ANSI C does not guarantee strict alignment of structs.  You can design
a struct that can hold all the fields of a packet, but you cannot
design a struct that if viewed as a buffer will represent a packet.  I
have included a review in the tracker that describes at least one case
where the structs in the draft do not actually align to wire formats.

The draft appears to believe that the structs do correspond to wire formats in two places.  First, section 4 seems to imply that you can receive the mobility header using a raw socket and use the structs in section 2.

Secondly, the description of section 2 claims that the structs do
correspond to wire formats.

At a minimum, the API needs to clarify the assumptions it makes.  In
addition, the document needs to clearly indicate which functions from
the advanced API return structs from section 2 and which functions
return bits from the wire.
2005-08-16
07 Sam Hartman [Ballot Position Update] New position, Discuss, has been recorded for Sam Hartman by Sam Hartman
2005-08-16
07 Sam Hartman
From: Ken Raeburn
Subject: draft-ietf-mip6-mipext-advapi-04.txt and ANSI/ISO C

In gcc-3.4.0 (and going back to gcc 2 days, when I was hacking
compilers), at least one …
From: Ken Raeburn
Subject: draft-ietf-mip6-mipext-advapi-04.txt and ANSI/ISO C

In gcc-3.4.0 (and going back to gcc 2 days, when I was hacking
compilers), at least one architecture aligns structures larger than 4
bytes to 8-byte boundaries, and thus pads to a multiple of 8 bytes.
So on that architecture, struct ip6_mh would have a couple padding
bytes added at the end.  It's not a common thing to do, and it's not a
popular chip any more, but this case highlights the theoretical
problem that the padding in an ISO C/POSIX implementation may not be
the same as on the authors' machines.  The draft would be better in
this regard if the various structures including struct ip6_mh instead
duplicated the fields.  (If the spec were loosened up a bit, instead
of saying "these are the structure definitions exactly", it might
allow an implementor to use the nested-structure form and define, for
example, "ip6mhbr_proto" to "ip6mhbr_hdr.ip6mh_proto" if it wanted,
much like is done for "s6_addr" in "struct in6_addr" on Solaris and
Linux; an implementor dealing with the stricter structure alignment I
described above would have to implement the flattened form.  If
portable static initialization is an issue, I'd have to go do a little
reading.)

If the authors are assuming that no additional padding is ever needed
in their structures beyond what they've added, and that the structures
are supposed to match the on-the-wire format of the data (which is
suggested by the discussion of raw sockets), they should say so
explicitly, and (ideally) allow some wiggle room in the specification
so that systems with different alignment rules can still have
implementations in ISO C that still match the wire protocol, without
having to resort to special compiler support, and without making
application writers adjust their code for these systems.

But if that's not practical, just document these assumptions, and some
platforms may just have to have special compiler support to implement
this API.



The updated C specification describing uint64_t and int64_t has been
out for more than five years, and at least a half dozen RFCs
(including RFC 3493, "Basic Socket Interface Extensions for IPv6", and
RFC 3542, "Advanced Sockets API for IPv6") have used them; why not use
them for the cookies instead of uint32_t[2]?


The last paragraph of section 1:

  Once the API specification becomes mature and is deployed among
  implementations, it may be formally standardized by a more appropriate
  body, such as has been done with the Basic API [RFC-3493]. However,
  since this specification largely builds upon the advanced API
  [RFC3245], such standardization would make sense only if the advanced
  API was also standardized.

... should refer to RFC 3542, not 3245.


Ken
2005-08-13
07 Margaret Cullen [Ballot Position Update] New position, Yes, has been recorded for Margaret Wasserman
2005-08-13
07 Margaret Cullen Ballot has been issued by Margaret Wasserman
2005-08-13
07 Margaret Cullen Created "Approve" ballot
2005-08-13
07 (System) Ballot writeup text was added
2005-08-13
07 (System) Last call text was added
2005-08-13
07 (System) Ballot approval text was added
2005-07-18
07 Margaret Cullen State Changes to IESG Evaluation from AD Evaluation::AD Followup by Margaret Wasserman
2005-07-18
07 Margaret Cullen Placed on agenda for telechat - 2005-08-18 by Margaret Wasserman
2005-07-18
07 Margaret Cullen Note field has been cleared by Margaret Wasserman
2005-06-07
07 (System) Sub state has been changed to AD Follow up from New Id Needed
2005-06-07
04 (System) New version available: draft-ietf-mip6-mipext-advapi-04.txt
2005-03-11
07 Mark Townsley Shepherding AD has been changed to Margaret Wasserman from Thomas Narten
2005-01-26
07 Thomas Narten State Changes to AD Evaluation::Revised ID Needed from AD Evaluation by Thomas Narten
2005-01-26
07 Thomas Narten [Note]: '2005-01-26: AD review raises minor issues, but respin is warranted.' added by Thomas Narten
2005-01-26
07 Thomas Narten
AD review comments

High-level: I think the introduction would benefit from a clearer
applicability paragraph. I.e., one that explains what types of
applications would use …
AD review comments

High-level: I think the introduction would benefit from a clearer
applicability paragraph. I.e., one that explains what types of
applications would use the API and what for. This is not stated. Some
if this API is for home agents and infrastructure support, not for
general applications. But some may be for general applications to, I
think. (or no?) It would be good to make it more  clear _who_ the
extensions are of interest to.

I gather that this API is not used to allow applications to say "just
use my COA rather than pretend I'm at home". It would be good to say
that and point out that more API work is needed to target general
applications.


>    IPv6 as an extension to Advanced Socket API for IPv6.

s/to/to the/

>    Mobility Support in IPv6 introduces mobility protocol header

s/introduces/introduces a/

>    headers. This document is an extension to existing Advanced Sockets

s/to/to the/

>    protocol support. The target applications for this socket API is

s/is/are/? (or make applications singular)

>    It is anticipated that Mobile IPv6 will be used widely from mobile
>    devices to Server and Routing platforms. Thus it is useful to have
>    a standard API for portability of Mobile IPv6 applications on a
>    wide variety of platforms and operating systems.

do server and routing platforms also use this API? how?

>    most vendors. This is in conformance with Advanced Sockets API for
>    IPv6 [1].

What does "in conformance" mean here? Just "is consistent with"?

>    We note that many of the functions and socket options defined in this
>    document may have error returns that are not defined in this
>    document.  Many of these possible error returns will be recognized
>    only as implementations proceed.

error codes, or sub-codes? the latter is OK. But the former seems like
it needs to be specified here.

>    This document provides guidelines on Mobile IPv6 socket applications
>    and believes that some other appropriate standardization body will
>    standardize the APIs along with other IPv6 advanced socket APIs.

Probably better to reword or remove. AFAIK, the advanced API is not
being picked up for "standardization" by anyone. It's also not widely
(completely) implemented either, at least AFAIK. Or has that changed
recently?

>    This API assumes that the fields in the protocol headers are left in
>    the network byte order, which is big-endian for the Internet
>    protocols.  If not, then either these constants or the fields being
>    tested must be converted at run-time, using something like htons() or
>    htonl().

maybe make more clear, say something like:

It is the responsibility of applications (or the system) to ensure
that all fields are in network byte order across API invocations.

>    . This is fixed part of the Mobility Header.

s/is/is the/

>      at least one prefix option with the Rouer Address (R) bit set.

s/Rouer/Router/

>      As per Mobile IPv6 specification [2] a Home Agent MUST include
>      at least one prefix option with the Rouer Address (R) bit set.
>      Advanced Socket API [1] defines data structure for prefix option
>      as follows:

would be good to make more clear what text from [2] is being quoted
(since the MUST word is used here...)

>    Mobile IPv6 un-aware applications or existing IPv6 socket
>    applications that do not know about the new routing header type 2
>    and Home Address destination option, SHOULD ignore these new
>    routing header type and Home Address destination option upon
>    receipt of them.

here is a SHOULD, with no defintion (e.g. pointer to 2119).

Also, this text is a bit odd, because it applies to implementations of
this spec. Those that don't implement it can't be told what they
SHOULD do...

>    While accessing Routing header Type 2 extension header, one MUST
>    use type = 2 and segment = 1. The following existing functions
>    defined in Advanced API for IPv6 Sockets [1] are supported

This text presumably is quoting from another spec.. please make that
clear and cite the relevant document...

>    Detail description and examples of accessing a IPv6 Routing Header
>    are discussed in Advanced Sockets API for IPv6 [1].

s/discussed/discussed in/ note: I haven't flagged all occurances where
this correction is needed...

also s/Detail description/Detailed descriptions/

>    support API for sending routing header type 2. However, if any

s/API/the API/

>    user level, it can use the API mentioned in section 3.1 and set
>    value of routing header as the home-address as specified in [2].

s/value/the value/
s/of/of the/

>    For user level applications that receive routing header type 2,

s/user level/user-level/

>    not send Home Address Destination Option from the application level,

s/send/send a/

>    option and routing header type 2 at the kernel. However, some
>    embedded software implementations may require to implement the IPv6
>    packet processing/sending at the user level; those implementations

s/may require to/may/

>    All portable Mobile IPv6 aware applications MUST receive the
>    home-address as source address of the incoming packet from the
>    socket-level functions like recvfrom(), recvmsg(), accept() and
>    getpeername(). This is  necessary for:

don't understand what  this MUST means or who the MUST applies to.

>    accessed through a IPv6 RAW socket. A IPv6 RAW socket that is opened

s/A IPv6/An IPv6/ (multiple occurances)

>    packet to the receiving socket. Depending on the implementation
>    kernel may process the mobility header as well in addition to passing

s/implemention kernel/implementation, the kernel/

> 6.  IPv4-Mapped IPv6 Addresses
>
>    The same rule applies as described in section 13 of Advanced Sockets
>    API for IPv6 [1]. Thus processing of IPv4-mapped IPv6 addresses
>    for the Mobile IPv6 specific socket options are out of scope of this
>    document.

First sentence doesn't make sense by itself; you need a transition to
start of the new section.
2005-01-26
07 Thomas Narten State Changes to AD Evaluation from Publication Requested by Thomas Narten
2005-01-26
07 Thomas Narten State Change Notice email list have been change to basavaraj.patil@nokia.com, gdommety@cisco.com,samita.chakrabarti@Sun.com, Erik.Nordmark@sun.com from basavaraj.patil@nokia.com, gdommety@cisco.com
2004-10-28
07 Dinara Suleymanova Draft Added by Dinara Suleymanova in state Publication Requested
2004-09-02
03 (System) New version available: draft-ietf-mip6-mipext-advapi-03.txt
2004-07-20
02 (System) New version available: draft-ietf-mip6-mipext-advapi-02.txt
2004-04-27
01 (System) New version available: draft-ietf-mip6-mipext-advapi-01.txt
2004-02-11
00 (System) New version available: draft-ietf-mip6-mipext-advapi-00.txt