Project

General

Profile

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`.

Back