As vlan tags are 32-bits-long, at least we don't need to bother with those.
But I guess the padding would be different for Ethernet II, and LLC/SNAP, given 
the requirement. (I'm not going to guess the right padding lengths at this time 
of the day). But the question is: if the padding is different, how does the 
controller know where the packet starts? - confused -

Z.

> -----Original Message-----
> From: yap...@gmail.com [mailto:yap...@gmail.com] On Behalf Of kk yap
> Sent: Monday, August 29, 2011 4:44 PM
> To: Zoltán Lajos Kis
> Cc: Ben Pfaff; openflow-disc...@mailman.stanford.edu
> Subject: Re: [openflow-discuss] OpenFlow 1.1 ofp_packet_in 
> padding clarification
> 
> Hi,
> 
> Just to satisfy my own curiosity, won't the padding require 
> the switch to parse the packet to insert the padding before 
> sending it to the switch?  This seems counter-intuitive since 
> the packet is delivered to the controller unparsed according 
> to the spec.
> 
> However, it might actually make sense for the switch to parse 
> the packet before sending it to the controller (if resources 
> and implementations can afford it).  At least this would 
> provide some consistency for malformed packets.
> 
> Regards
> KK
> 
> 2011/8/29 Zoltán Lajos Kis <zoltan.lajos....@ericsson.com>:
> > Hi,
> >
> > Thanks for the feedback. It seems this never made it to the 
> 1.0 switch [1] or nox [2] however. I was just wondering if 
> this padding has ever been implemented by someone; and if I 
> did implement ofp_packet_in according to the spec., would I 
> lose compatibility with everyone else :).
> >
> > Also you are correct, the comment "Because of padding, 
> offsetof(struct ofp_packet_in, data) == sizeof(struct 
> ofp_packet_in) - 2." is valid. It is just confusing, as I 
> thought "because of padding" is referring to the padding of 
> the payload, but in fact it refers to the C99 padding for 
> "flexible array members".
> >
> > Regards,
> > Zoltan.
> >
> > [1] 
> > 
> http://yuba.stanford.edu/git/gitweb.cgi?p=openflow.git;a=blob;f=seccha
> > n/in-band.c#l259 [2] 
> > 
> http://noxrepo.org/cgi-bin/gitweb.cgi?p=nox;a=blob;f=src/lib/openflow-
> > event.cc#l65
> >
> >> -----Original Message-----
> >> From: Ben Pfaff [mailto:b...@nicira.com]
> >> Sent: Friday, August 26, 2011 7:43 PM
> >> To: Zoltán Lajos Kis
> >> Cc: openflow-disc...@mailman.stanford.edu
> >> Subject: Re: [openflow-discuss] OpenFlow 1.1 ofp_packet_in padding 
> >> clarification
> >>
> >> On Fri, Aug 26, 2011 at 11:18:27AM +0200, Zolt?n Lajos Kis wrote:
> >> > I need some clarification on the data field for
> >> ofp_packet_in. The OF
> >> > 1.1 spec contains the following comment:
> >> >
> >> > /* Ethernet frame, halfway through 32-bit word, so the 
> IP header is 
> >> > 32-bit aligned. The amount of data is inferred from the
> >> length field
> >> > in the header. Because of padding, offsetof(struct ofp_packet_in,
> >> > data) == sizeof(struct ofp_packet_in) - 2. */
> >> >
> >> > Does this supposed to mean that the data field should start
> >> with two
> >> > bytes of padding (i.e. junk data), and the datapath packet
> >> should only
> >> > follow after that (so that the ethernet header now ends after
> >> > 16 bytes, so the IP header will start at a 32bit boundary)?
> >>
> >> Yes.
> >>
> >> > In other words, the packet format should really be:
> >> > ...
> >> > uint8_t reason; /* Reason packet is being sent (one of 
> OFPR_*) */ 
> >> > uint8_t table_id; /* ID of the table that was looked up 
> */ uint8_t 
> >> > pad[2]; uint8_t data[0]; }
> >> >
> >> > But in essence we are afraid the "implementor" would be 
> dumb enough 
> >> > not to use e.g. the packed attribute, and so the compiler
> >> would mess
> >> > things up, we instead moved the padding into the 
> comments section?
> >>
> >> It is usually a mistake to use the "packed" attribute if 
> one does not 
> >> have to, because it slows down access even to properly 
> aligned data 
> >> on many non-x86 architectures.
> >>
> >> Another reason that the header file does not used "packed" 
> is that it 
> >> is a GCC-specific feature.  Most compilers have a similar feature, 
> >> but
> >> __attribute__((packed)) isn't necessarily the correct way 
> to use it 
> >> (some use a #pragma, for example).
> >>
> >> > Also I suppose the equation in the comment should read
> >> something like:
> >> > data_len = ofp_header.length - sizeof(struct ofp_packet_in) - 2.
> >>
> >> The comment was correct for the OpenFlow 1.0 version of the 
> >> structure, but the structure was changed for 1.1 without 
> updating the 
> >> comment.
> >>
> >> > What's the case with packet_out; should the data field 
> also contain 
> >> > some implicit padding there for IP header alignment?
> >>
> >> For consistency, it should, but in fact it does not.
> >>
> > _______________________________________________
> > openflow-discuss mailing list
> > openflow-discuss@lists.stanford.edu
> > https://mailman.stanford.edu/mailman/listinfo/openflow-discuss
> >
> 
_______________________________________________
openflow-discuss mailing list
openflow-discuss@lists.stanford.edu
https://mailman.stanford.edu/mailman/listinfo/openflow-discuss

Reply via email to