Dear Soheil,

> We are in the design phase and investigating different platforms to see which 
> one might be used in our scenario. Here, I don't wannna discuss the 
> characteristics of a software router solution we all already know that! But 
> simply one of the key properties of a software solution like VPP should be 
> the flexibility that it brings up to the table, which in this case it doesn't.
> 
> Encapsulation techniques won't work in our scenario, because NFVs might be 
> third party solutions which expect generally IPv4 packets as their input. So 
> any change like encapsulation causes problem for them.
> 
> Regarding the dynamic header insertion (in this case IP-option) and 
> standardization, actually as you know there are already standards defining 
> the structure like the old one: RFC 781. Recently there are effort from 
> facebook, Barefoot and other guys out there for extending the concept of 
> Packet-telemetry using all these available (if we can still say this word!) 
> options.

No, RFC781 does not indicate support for header insertion (if all RFCs could be 
that brief! ;-)).
There is no support in the IP architecture for inserting neither IP4 or IP6 
options/extension headers by intermediate nodes in the network. There are 
_proposals_ for doing that, but those do not have consensus as of now.

The main issues with header insertion (non-exhaustive list) are:
 - fundamentally breaks PMTUD
 - leads to source host receiving ICMP errors on parts of the packet it knows 
nothing about
 - breaks AH

It might be possible to do this in constrained environments, although the IETF 
argument is always that "packets leak".
A proposal to do this does have to say something about the three issues above 
at least.

> The key idea is that when you own the network, you need to have mechanisms to 
> to measurements and why not doing it in dataplane in high speed/low cost 
> compared to control plane.
> 
> So would you please confirm (or anyone who knows about the future plan of 
> VPP) that VPP won't support header option  (which already is defined for Ipv4 
> and other ones)  or dynamic packet header sizes if you will.

I idly tried this in scapy, but couldn't very much replying apart from my 
first-hop router. ;-)

p = sr1(IP(dst="8.8.8.8", options=IPOption())/ICMP())

Now, all this said... I understand the temptation of the solution and while I 
think it is likely a bad idea, and likely undeployable, nothing would stop you 
from trying it out in VPP if you like. There is some code that assumes the TCP 
header follows a 20 byte IP header, but that could easily dealt with for a 
prototype. I think I'd like to see where the industry would be going with this 
before favouring any upstreaming of such a change though.

Also note, that NIC offloading features are unlikely to work. Any feature like 
the classifier, which uses vector instructions on fixed offsets in packets will 
not be easily reworked and that the extra header size might lead to the header 
bleeding into another cache line and this will have performance consequences.

Best regards,
Ole




Attachment: signature.asc
Description: Message signed with OpenPGP

_______________________________________________
vpp-dev mailing list
vpp-dev@lists.fd.io
https://lists.fd.io/mailman/listinfo/vpp-dev

Reply via email to