Hi Dave,

Thanks for your suggestion. Indeed, ICE encoding needs an update and we are hoping to update it in the next version of the I-D.

Regards,
Salman

On Mon, 6 Jul 2009, Craig, Dave wrote:

#1: (5.5.1.3) Binary encoding of IceAttrs for fulfilling IceCandidate

mentioned in draft-ietf-p2psip-base-02







The IceAttrs is a customized, binary encoding of the candidate

specified for ICE [I-D.draft-ietf-mmusic-ice] and ICE-TCP

[I-D.draft-ietf-mmusic-ice-tcp].  This customized version drops

the following fields found in ICE:



o foundation: There is only one media in use for the RELOAD usage of ICE.

 All candidates will have either a different type, host candidate, STUN

 server, or protocol.  There will not be any candidates to freeze when

 ICE starts.



o ice-mismatch: RELOAD will prioritize and take TCP transport candidates

 before UDP transport candidates.



o remote-candidate: ICE restart not supported.



o component: Same reason as foundation.





The candidate attributes TLV structure below is extensible enough to

incorporate new formats for candidates as well as extensions that all

nodes may not support.





struct {

 uint16                IceAttrType; /* CandidateAttrTypeEnum */

 uint16                IceAttrLength;

 uint8                 IceAttrPayload[IceAttrLength];

} IceAttrs;



The supported ranges for CandidateAttrType are:



o   0 through 127: Comprehension required ICE attributes.

                  A recipient must respond with an error to the

                  ATTACH, if it does not understand these attributes.



o 128 through 255: Comprehension optional ICE attributes.

                  A recipient may safely ignore these attributes

                  if it does not understand them.



The first three definitions within the comprehension-required

range are below.  There are no comprehension-optional attributes

defined in this document.



enum {

 no_next_attr                {0},

 ice_base_cand_attr          {1},

 rel_addr_cand_attr          {2}

} IceAttrTypeEnum;



The definition of the first attribute is the base candidate

(ice_base_cand_attr) that denotes the start of a new candidate

in the sequence of candidate in the payload.



enum {

 reserved_transport          {0},

 tcp_simultaneous_open       {1}, /* tcp-so */

 tcp_active                  {2}, /* tcp-act */

 tcp_passive                 {3}, /* tcp-pass */

 udp                         {4}

} TransportEnum;





enum {

 reserved_candidate          {0},

 host_candidate              {1}, /* host */

 srflx_candidate             {2}, /* srflx */

 prflx_candidate             {3}, /* prflx */

 relay_candidate             {4}  /* relay */

} CandidateEnum;



struct {

 TransportEnum         Transport;

 CandidateEnum         CandidateType;

 uint32                Priority;

 IpAddressPort         ConnectionAddressPort;

} IceBaseCandAttr;





Reflexive and Relayed candidates must have a rel-addr attribute

that follows them that is defined below for the rel_addr_cand_attr.



struct {

 IpAddressPort         RelAddressPort;

} RelAddrCandAttr;



Enhancement to AttachReqAns



        struct  {

          opaque                  ufrag<0..2^8-1>;

          opaque                  password<0..2^8-1>;

          uint16                  application;

+          uint16                  ice_attrs_length;

          opaque                  role<0..2^8-1>;

-          IceCandidate            candidates<0..2^16-1>;

+          IceAttrs                ice_attrs[ice_attrs_length];

        } AttachReqAns;







[Note: Tried to reuse layout schema in draft-ietf-p2psip-base-02]



[Problem: Attach-Lite's use of ICE-Lite is not supported in

draft-ietf-mmusic-ice-tcp-07.  That document requires the Attach-Lite

recipient proceed with ICE not ICE Lite if there are TCP candidates.

The intended behavior is for Attach-Lite to use RFC4145 instead of

ICE-Lite for TCP connections.]



#2: (9.5 & 9.9) JoinReq, JoinAns, and Leave layouts for overlay_specific_data



struct {



 AttachReqAns          join_ice_attrs;



} ChordJoinReq;



struct {



 AttachReqAns          join_ice_attrs;



} ChordJoinAns;



Thanks,
Dave

_______________________________________________
P2PSIP mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/p2psip

Reply via email to