Michael Thomas wrote:
So out of the current discussions a lot of people have claimed that ipv6 is bloated or suffers from second system syndrome, etc.
IPv6 optional header chain, even after it was widely recognized that IPv4 options are useless/harmful and were deprecated is an example of IPv6 bloat. Extensive use of link multicast for nothing is another example of IPv6 bloat. Note that IPv4 works without any multicast.
So I decided to look at a linux kernel (HEAD I assume) and look at the differences between the v6 and v4 directories.
See above. That is an improper way to evaluate IPv6 bloat. An example of second system syndrome of over-engineering without bloat is various timing parameters specified for ND, even though timing requirements are different depending on link types, which means there can be no standard timing parameters applicable to all the link types. Another example of over-engineering is SLAAC to *statefully* maintain address configuration state in fully distributed way only to promote inconsistencies requiring DAD. An example of under-engineering is lack of the following consideration of rfc791: The number 576 is selected to allow a reasonable sized data block to be transmitted in addition to the required header information. For example, this size allows a data block of 512 octets plus 64 header octets to fit in a datagram. The maximal internet header is 60 octets, and a typical internet header is 20 octets, allowing a margin for headers of higher level protocols. as IPv6 optional headers can be arbitrary lengthy, it is not guaranteed that 512B DNS message can be sent over UDP over IPv6. And, there are a lot lot lot more. Masataka Ohta