Feature #5138
Updated by Davide Pesavento over 3 years ago
Currently, `nfdc face create` command allows setting MTU when creating or updating a UDP face. This allows the operator to select NDNLPv2 fragmentation instead of IP fragmentation, which is effective in working around networks that blocks/drops IPv4 fragments or IPv6 fragments. However, MTU option is unavailable for on-demand faces: all on-demand UDP transports are created with the default MTU of `MAX_NDN_PACKET_SIZE` i.e. 8800 octets. In global NDN testbed operations, [it has been discovered](https://named-data.slack.com/archives/C01EKSVNAB1/p1608257422016000) that some NAT middleboxes and firewalls could block egress IPv4 fragments, causing UDP connections between unrestricted end hosts and testbed routers to become unreliable or fail, when a large packet is transmitted from the testbed router to the end host. It is necessary for the testbed router in such environments to lower the MTU of on-demand UDP faces, so that outgoing packets would use NDNLP fragmentation. This issue is to introduce a configuration option: ``` ```yaml face_system { udp { mtu 1450 } } ``` This `face_system.udp.mtu` option accepts a positive number that sets the MTU for on-demand UDP faces. It also serves as the default MTU for UDP faces created through the `nfdc face create` command when the `mtu` option is unspecified. It shall be an error to set a value that is smaller than `MIN_MTU` `1232` (equals IPv6 minimum MTU minus IPv6+UDP headers) or greater than `MAX_NDN_PACKET_SIZE`.