ADAPTATION LAYER FOR EXTENDING THE INTERNET PROTOCOL (IP) OVER HETEROGENEOUS INTERNETWORKS

Aspects of the disclosure adapt internet protocol (IP) for heterogeneous internetworks. An IP packet is received into a source interface. The IP packet comprises an original header and an original payload, and a size of the IP packet exceeds a maximum payload size (MPS). Based on at least the MPS and the size of the IP packet, the IP packet is fragmented into a plurality of fragment payloads (for later reassembly), each of which does not exceed the MPS. A plurality of carrier packets is generated that each comprises an encapsulation header and one fragment payload, and which are transmitted over a downstream network to a destination interface. The source and destination interfaces may be overlay multilink network interface (OMNI) adaptation layer (OAL) interfaces. Example source interfaces use probing to determine a largest MPS supported by the downstream network. This reduces the number of fragments and improves network efficiency.

BACKGROUND

Internetworks are common and arise when different computer networks are connected, such as by connecting a local area network (LAN) with a wide area network (WAN), connecting two or more LANs, or connecting two or more WANs. When multiple internetworks are joined together, their protocols or parameters may differ and the concatenated internetworks become heterogeneous.

Computer networks commonly use interne protocol (IP) packets for communication, which each includes a header with addressing (and other) information and a payload that contains the actual data to be communicated (e.g., transmitted across a network). A network will have a maximum transmission unit (MTU), and a packet exceeding the network's MTU will not move across the network. Therefore, large blocks of data to be transmitted, that exceed a network's MTU, may be fragmented into multiple payloads and transmitted using multiple packets. Larger MTUs permit the use of fewer packets, whereas smaller MTUs drive up the number of required packets. Since the packet header is overhead, the fewer packets required in order to transmit a fixed amount of data, the greater the efficiency of a network.

However, the different concatenated network segments of a heterogeneous internetwork may have different MTUs, and which may even change over time. Using packets that are too large for some networks (in some conditions) results in dropped packets, slowing throughput and introducing inefficiency. A blind approach of using only a fixed packet size (e.g., 576 bytes), that is limited to the smallest MTU that could be encountered at any time on any one of the different networks, is inefficient in scenarios in which at least some of the networks may accept a larger MTU.

SUMMARY

The disclosed examples are described in further detail below with reference to the accompanying drawing figures listed below. The following summary is provided to illustrate examples or implementations disclosed herein. It is not meant, however, to limit all examples to any particular configuration or sequence of operations.

Examples provided herein include solutions for providing an adaptation layer for the internet protocol (IP) over heterogeneous internetworks that include: receiving an original IP packet into a source interface, wherein the original IP packet comprises an original header and an original payload, and wherein a size of the original IP packet exceeds a first maximum transmission unit (MTU); based on at least the first MTU and the size of the original IP packet, fragmenting the original IP packet into a plurality of fragment payloads, wherein each fragment payload of the plurality of fragment payloads does not exceed the first MTU; generating a plurality of carrier packets, wherein each carrier packet comprises an encapsulation header and one fragment payload of the plurality of fragment payloads; and transmitting the plurality of carrier packets over a downstream network to a destination interface.

Corresponding reference characters indicate corresponding parts throughout the drawings in accordance with an example.

DETAILED DESCRIPTION

The various examples will be described in detail with reference to the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts. References made throughout this disclosure relating to specific examples and implementations are provided solely for illustrative purposes but, unless indicated to the contrary, are not meant to limit all implementations.

Aspects and implementations disclosed herein are directed to adapting internet protocol (IP) for heterogeneous internetworks. An original IP packet is received into a source interface. The original IP packet comprises an original header and an original payload, and a size of the original IP packet exceeds a maximum payload size (MPS). Based on at least the MPS and the size of the original IP packet, the original IP packet is fragmented (for later reassembly by a destination interface) into a plurality of fragment payloads, each of which does not exceed the MPS. A plurality of carrier packets is generated that each comprises an encapsulation header and one fragment payload, and which are transmitted over a downstream network to a destination interface. The source and destination interfaces may be overlay multilink network interfaces (OMNI) that embody the OMNI adaptation layer (OAL). Example source interfaces use probing to determine a largest MPS supported by the downstream network. This reduces the number of fragments and improves network efficiency.

Aspects of the disclosure have a technical effect of improved reliability of computer networks, for example by reducing the number of dropped packets when transmitting data over heterogeneous internetworks, which may each have a different MPS. This is accomplished by, based on at least an MPS and a size of the original IP packet, fragmenting the original IP packet into a plurality of fragment payloads, wherein each fragment payload of the plurality of fragment payloads does not exceed the MPS. Aspects of the disclosure have a further technical effect of improved efficiency of computer networks, for example by reducing the number of different packets that are required in order to transmit a fixed amount of data over heterogeneous internetworks, which may each have different MPS. This is accomplished by probing to determine a largest MPS supported by a downstream network.

Referring more particularly to the drawings,FIG.1illustrates an arrangement100that advantageously adapts internet protocol (IP) for heterogeneous internetworks. The operation of the arrangement100is described in further detail in relation toFIG.7(showing a flowchart700). In some examples, the arrangement100is implemented using one or more computing devices900ofFIG.9and deployed on an apparatus1100, such as a flying apparatus1101, described in further detail in relation toFIGS.11and12. Deployment on the apparatus1100may be for exclusively on-board communicate and/or for apparatus1100to communicate with external networks.

Mobile network platforms and devices (e.g., aircraft of various configurations, such as the flying apparatus1101, terrestrial vehicles, seagoing vessels, enterprise wireless devices, pedestrians with cell phones, etc.) communicate with networked correspondents over multiple access network data links and configure mobile routers to connect end user networks. Some examples of the arrangement100enable mobile nodes to coordinate with a network-based mobility service and/or with other mobile node peers.

In the illustrated example ofFIG.1, the source client110is transmitting data, using packets, to a destination client130over a heterogeneous internetwork120that includes at least networks122a-122c.An end user network (EUN)104, such as a WiFi network, is “downstream” from the perspective of the source client110and serves a plurality of downstream-dependent devices102a-102cthat are joined to the rest of the network by the source client110. The arrangement100includes multiple adaption layer interfaces, which are identified according to the roles they provide: a source interface112at the source client110, and a destination interface132at the destination client130.

In some examples, each of the source interface112and the destination interface132comprises an overlay multilink network interface (OMNI) that embodies the OMNI adaptation layer (OAL). An OMNI interface (e.g., the source interface112and the destination interface132) provide a computer networking interface abstraction that introduces an adaptation layer between a network layer304(described in further detail in relation to FIC.3A) and a data link layer seen as heterogeneous underlying interfaces with diverse properties. Within the OMNI interface, an adaptation layer303(described in further detail in relation toFIG.3A) is inserted and operates below the network layer304but above the (data link layer) heterogeneous underlying interfaces. By using the adaptation layer interfaces, full packet size diversity is supported.

This solves the problem of how to find robust and efficient packet sizes that are the best fit for each network path under dynamically changing network conditions, and to interconnect diverse networks through a virtual bridging abstraction rather than network layer routing. This facilitates joining the networks of large corporations and their acquired subsidiaries without having to refactor each network to render them homogeneous. Examples of the arrangement100uses IP version 6 (IPv6) encapsulation, fragmentation, and reassembly with larger variable-length cells over heterogeneous underlying networks, such as the heterogeneous internetwork120, to permit the use of larger packets over a network that has a smaller maximum transmission unit (MTU), which is the MPS plus the length of any headers and other overhead. This approach may be used for any heterogeneous data communicate scenario, including cellular, WiFi, very high frequency (VHF), Ethernet, and satellite communications (satcom).

Further advantages include that the source interface112is able to provide the capability for providing global Internetworking support for a plurality of downstream-dependent devices, so that each downstream-dependent device may benefit without requiring the adaptation layer capability itself. This reduces the cost of new internet of things (IoT) end devices and preserves the value of investment in already deployed IoT devices. For example, the device102a,the device102b,and the device102care downstream-dependent IoT devices of source client110with source interface112. Thus, the source interface112is able to provide the advantageous capabilities described herein for data traffic for all of the devices102a-102c.

The source interface112provides an adaptation sublayer service whereby an incoming original IP packet504from an original source (e.g., one of the devices102a-102c) is wrapped in a new header (IPv6, in some examples) and subject to local fragmentation and (remote) reassembly at the destination interface132. The original IP packet504is described in further retail in relation toFIG.5. In some examples, the source interface112sends IPv6 ND messages (e.g., Router Solicitation, Router Advertisement, Neighbor Solicitation, Neighbor Advertisement, and Redirect) over available underlying interfaces IF114a,IF114b,and IF114c,and the network122a,the network122b,and the network122c,to first hop segment (FHS) proxy/servers, such as an FHS124a,an FHS124b,and an FHS124c,using any necessary encapsulations. The IPv6 ND messages traverse the networks122a-122cuntil they reach an FHSs124a-124c,which return responses and/or forward proxy versions a segment routing topology (SRT)126to last hop segment (LHS) proxies/servers, such as an LHS128a,an LHS128b,and an LHS12bcnear the target destination client130. In some examples, the destination client130uses underlying interfaces IF134a,IF134b,and IF134c.In some examples, a hop limit is not decremented for encapsulation. In some examples, the source interface112is implemented in an FHS device and the destination interface132is implemented in an LHS device.

After the initial ND message exchange, the source interface112(and/or downstream-dependent IoT devices102a-102cusing the EUN104) are able to send packets (e.g., the original IP packet504) to the destination client130via the source client110using the source interface112and the destination interface132. The source interface112forward the packets via one or more of FHSs124a-124c,which forwards them over the SRT126, which forwards them to one or more of LHSs128a-128c,which then delivers them to the destination interface132at the destination client130.

In some examples, the source interface112and the destination interface132observe the link nature of tunnels. In some examples, IPv6 underlying interfaces configure a minimum MTU of 1280 octets and IP version 4 (IPv4) underlying interfaces configure a minimum MTU of 68 octets. In some examples, the source interface112prepends an IPv6 encapsulation header536, which is described in further detail in relation toFIG.5. A 16-bit payload length field in the encapsulation header536limits the largest size of the original IP packet504to (2^16−1)=65,535 octets. If a received original IP packet is larger than this, the source interface112will return a packet too big (PTB) error message, in some examples.

This is also the largest size that the source interface112and the destination interface132are able to accommodate with IPv6 fragmentation. The source interface112therefore sets an MTU of 65,535 octets or less to support assured downstream delivery of packets. The largest MPS supported is the largest MTU supported, minus the length of overhead, such as the encapsulation header536and any other headers or overhead. The source interface112then employs encapsulation to transform the original IP packet504into a plurality of carrier packets530(including carrier packets531-533), as described in further detail in relation toFIG.5.

The carrier packets531-533travel over one or more of the underlying networks122a-122cand the SRT126until reaching the destination interface132. In some configurations, the destination client130is not the final destination, of data traffic from one or more of the devices102a-102c,but is instead an intermediate node. The final destination may instead be a further destination client140, across a network122d.In such configurations, the heterogeneous internetwork120further comprises network122d,and the destination interface132is actually an intermediate interface. That is, the destination interface132is a destination relative to the source interface112, but is a source relative to a destination interface142at the destination client140. In such example, the destination interface132will also have the functionality described herein for the source interface112, to enable the destination interface132to act as a source interface. A similar FHS/SRT/LHS configuration may be used between the destination client130and the destination client140as is used between the source client110and the destination client130.

When the destination interface132receives each of the carrier packets531-533, it discards encapsulation header536and performs defragmentation to reassemble the original IP packet504. If the destination client130is the final destination, the destination interface132also removes an adaption layer header502, which is described in further detail in relation toFIGS.5and6, and delivers the original IP packet504to the network layer304. If the destination client130is an intermediate node, the destination interface132re-fragments and re-encapsulates the original IP packet504(with the adaption layer header502) into a new set of carrier packets suitable for the network122d.

In some examples, the source interface112initially sets an MPS of 400 octets and uses active probing, as described in relation toFIG.7. By actively probing the downstream portion of the heterogeneous internetwork120, the source interface112may be able to increase the MPS, and thus the MTU. This reduces number of carrier packets needed to send fragments of the original IP packet504. In some examples, the probed MPS may become large enough to allow the entire original IP packet to fit inside a single carrier packet.

FIG.2shows a representative seven-layer network model200. A physical layer201(“layer 1”) represents the bits of data to be transmitted, for example using a cable. A data link layer202(“layer 2”) represents data frames, for example, for media access control (MAC) and switching. A network layer203(“layer 3”) represents packets operated upon by routers, such as IPv4 packets and IPv6 packets. A transport layer204represents segments, port numbers, and protocols, for example transmission control protocol (TCP) and user datagram protocol (UDP). A session layer205(“layer 5”), a presentation layer206(“layer 6”), and an application layer207(“layer 7”) are the data layers. The session layer205includes session initiation protocol (SIP), synchronize (Syn) and acknowledge (Ack) signaling. The presentation layer206may implement encryption, decryption, and compression. The application layer207implements hypertext transfer protocol (HTTP) and file transfer protocol (FTP).

FIG.3Aillustrates an adaptation layer model300as may be used in the arrangement100ofFIG.1, in accordance with an example. The adaptation layer model300has a physical layer301, an interface layer302, the adaptation layer303, a network layer304, and an upper layer protocol305. The source interface112, the destination interface132, and the destination interface142operate at the adaptation layer303and are able to send/receive original IP packets to/from underlying interfaces while including/omitting various encapsulations. In some examples, the network layer304is able to access the interface layer302, bypassing the adaptation layer303(and thus the source interface112, the destination interface132, and the destination interface142).

FIG.3Bmaps elements of the adaptation layer model300to elements of the seven-layer network model200. As can be seen inFIG.3B, the physical layer301of the adaptation layer model300maps to the physical layer201of the seven-layer network model200, the interface layer302maps to the data link layer202, and the network layer304of the adaptation layer model300maps to the network layer203of the seven-layer network model200. The adaptation layer303has no direct correlation in the seven-layer network model200, because it would be between the data link interface layer302of the seven-layer network model200and the network layer203of the seven-layer network model200.

FIG.4illustrates further detail of network layering for the adaptation layer model300. As described in further detail in relation toFIG.5, fragmentation/defragmentation402occurs within the adaptation layer303, as well as encapsulation/decapsulation404. Other layers406, representing the interface layer302and the physical layer301and underlying interfaces408are shown as reachable by the network layer304.

FIG.5illustrates fragmenting an original IP packet504into a plurality of fragment payloads520, and generating the plurality of carrier packets530. The original IP packet504, as received by the source interface112, includes an original header506and an original payload508. The fragmentation, described herein which produces the fragment payloads521-523, may be accomplished in multiple ways. These include: (option 1) fragment the entire original IP packet504into the fragment payloads521-523, using the size of the entire original IP packet504as a fragmentation trigger; (option 2) fragment the entire original IP packet504into the fragment payloads521-523, using the size of the original payload508as a fragmentation trigger, and assuming a worst case for the size of the original header506; and (option 3) fragment only the original payload5086into the fragment payloads521-523, using the size of the original payload508as a fragmentation trigger, and discarding the original header506.

Option 1 is described below in detail. Options 2 and 3 are straightforward adjustments. For option 2, the following mentions of determining whether to fragment the original IP packet504is instead accomplished by using the size of the original payload508in place of the size of the original IP packet504. For option 3, the following mentions of fragmenting the original IP packet504into the fragment payloads520is instead accomplished by fragment only the original payload508.

The source interface112generates an adaption layer fragment500comprising the adaption layer header502prepended to the original IP packet504, and appended with a checksum510, as shown. As shown, the original IP packet504comprises the original header506and the original payload508. The checksum510is calculated using at least the original payload508, and is used to verify that reassembly by the destination interface132produces a correct result. In some examples, the checksum510is calculated using both the adaption layer header502and the entire original IP packet504. In some examples, the checksum510is calculated using both the adaption layer header502and the entire original IP packet504. In some examples, the checksum510is calculated using the entire original IP packet504. In some examples, the checksum510comprises two octets. In some examples, the checksum510comprises a Fletcher checksum.

In the illustrated example, the size of the original IP packet504exceeds the current MPS being used by source interface112. The current MPS may be the initial MPS or, after starting probing, may be a larger MPS than the initial MPS. The fragmentation/defragmentation402uses the size of the entire original IP packet504as a fragmentation trigger or, for option 2 as described above, uses the size of the original payload508as the fragmentation trigger and assuming a worst-case value (largest expected size) for the size of the original header506. For option 3, the fragmentation/defragmentation402uses the size of the original payload508as the fragmentation trigger, since the original header506will be discarded. Some examples use MTU in place of MPS for the fragmentation trigger determination, which is equivalent, because there is a fixed mathematical relationship between MPS and MTU.

The fragmentation/defragmentation402fragments the original IP packet504(or for option3, fragments only the original payload508) into the plurality of fragment payloads520, such that each fragment payload521-523of the plurality of fragment payloads520does not exceed the current MPS. The fragment payload521is the initial fragment payload, and may include at least some of the original header506. The fragment payload521is followed by the fragment payload522, which is followed by the final fragment payload523. In some examples, each non-final fragment payload (e.g., the fragment payload521and522) is at least as large as the current MPS, while the final fragment (e.g., the fragment payload523) may be smaller than the current MPS. Although three fragment payloads are shown, it should be understood that this number is notional, and that a different number of fragment payloads may be used. Each of the fragment payloads521-523is prepended by the adaption layer header502. The final fragment payload (the fragment payload523in the illustrated example) is also appended with the checksum510.

The encapsulation/decapsulation404encapsulates each of the combinations of the prepended fragment payloads521-523by further prepending the encapsulation header536. In some examples, the encapsulation header536and/or the adaption layer header502has its source address set to the IP address of the source interface112and its destination address set to the IP address of the destination interface132. This produces the plurality of carrier packets530. The illustrated order for each of the carrier packets531-533is: the encapsulation header536, the adaption layer header502, and the fragment payloads (e.g., the specific one of the fragment payloads521-523). The first carrier packet531is followed by the second carrier packet532, which is followed by the third and final (in this example) carrier packet533.

The carrier packet533also has the checksum510following the fragment payload523. Each of the carrier packets531-533does not exceed the MTU of the immediately downstream segment of heterogeneous internetwork120. That is each of the fragment payloads521-523(and including the checksum510appended to the fragment payload523) does not exceed the current MPS. The current MPS, plus the size of the overhead (e.g., the size of the combination of the encapsulation header536with the adaption layer header502) does not exceed the MPS of the immediately downstream segment of heterogeneous internetwork120.

This, as described thus far in relation toFIG.5, is fragmentation and encapsulation, moving from the top ofFIG.5to the bottom. Decapsulation and reassembly is the reverse, moving from the bottom ofFIG.5to the top.

When the network layer304forwards the original IP packet504into the source interface112, the source interface112creates adaption layer fragment500. In some examples, the adaption layer header502is compressed. The encapsulated fragments in the carrier packets531-533are forwarded over an underlying interface. In some examples, a UDP header is also used, for example, if network address translation (NAT) might be present in the internetwork. When a UDP header is used, a UDP checksum may also be used. In some examples, additional encapsulation sublayer headers are used.

For carrier packets undergoing re-encapsulation (e.g., when the destination client130is an intermediate node) the header source address is set to the IP address of the destination interface132and the header destination address set to the IP address of the destination interface142. In such examples, a hop limit in the adaption layer header502is decremented, and the carrier packet is discarded when the hop limit reaches zero.

The underlying interfaces may connect directly to physical media on the local platform (e.g., a notebook computer with WiFi, etc.), although in some configurations the physical media may be hosted on a separate LAN node. In such a case, a point-to-point tunnel (at a layer below the underlying interface) to the node hosting the physical media may be established. In some examples, additional encapsulations may also be applied at the underlying interface layer (e.g., as for a tunnel virtual interface) such that carrier packets would appear double-encapsulated on a LAN.

When the destination interface132receives a carrier packet from an underlying interface, it discards the encapsulation header536and examines the adaption layer header502of the adaption layer fragment500. If the adaption layer fragment500is addressed to a different node, the destination interface132(acting as an intermediate interface) re-encapsulates and forwards the carrier packet. When reassembly is complete, the destination interface132(or142) verifies the checksum510and discards the received ones of fragment payloads512-523if the checksum510is incorrect. If adaption layer fragment500is accepted (e.g., the checksum510is verified), the destination interface132(or142) removes the adaption layer header502from each of the fragment payloads521-523and delivers the original IP packet504to the network layer304.

FIG.6illustrates further detail for the adaption layer header502, which in some examples, comprises an IPv6 header. The adaption layer header502has a source address602, which may be set to the IP address of the source interface112and a destination address604, which may be set to the IP address of the destination interface132. A payload length field606has a value set to the size (length) of the original IP packet504(or the size of the original payload508for option 3) plus the checksum510. A hop limit608may be set to a value sufficient to enable loop-free forwarding over multiple concatenated link segments.

A carrier packet could traverse multiple SRT segments with intermediate nodes performing decapsulation and re-encapsulation (and decrementing the hop limit608). In some examples, a 32-bit packet identification610is used. In some examples, “Type of Service/Traffic Class” and/or “Congestion Experienced” values are copied from the original header506into the adaption layer header502.

With reference now toFIG.7, a flowchart700illustrates a method of adapting IP for heterogeneous internetworks as may be used with the arrangement100. In some examples, the operations illustrated for the flowchart700are performed, at least in part, by executing instructions902a(stored in the memory902) by the one or more processors904of the computing device900ofFIG.9, when deployed on the apparatus1100ofFIG.11. The flowchart700commences with operation702, which includes receiving the original IP packet504into the source interface112. The original IP packet504comprises the original header506and the original payload508, and a size of the original IP packet504exceeds a first MPS (e.g., the current MPS). In some examples, the source interface112comprises an OAL interface.

In some examples, operation702is part of a larger activity that includes receiving, by the source interface112, IP packets (e.g., multiple ones of the original IP packet504) from a plurality of the downstream-dependent devices102a-102cthat are connected to the rest of the internetwork by the source interface112. In such examples, the following operations704-710are also part of the larger activity and include, based on at least the first MPS (e.g., the current MPS) and sizes of payloads of the IP packets from the plurality of the downstream-dependent devices102a-102c,fragmenting the IP packets from the plurality of downstream-dependent devices102a-102cinto sets of carrier packets and transmitting the sets of carrier packets.

Operation704calculates the checksum510. The calculation of the checksum510includes at least the original payload508. In some examples, the calculation of the checksum510further includes at least the original header506(e.g., includes the original IP packet504). In some examples, the calculation of the checksum510further includes the adaption layer header502. In some examples, the calculation of the checksum is performed on a concatenation of the adaption layer header502and the original payload508.

Operation706includes, based on at least the first MPS and the size of the original IP packet504, fragmenting the original IP packet504into the plurality of fragment payloads520, wherein each fragment payload521-523of the plurality of fragment payloads520does not exceed the first MPS. Operation708generates the plurality of carrier packets530, wherein each carrier packet531-533comprises the encapsulation header536and one fragment payload of the plurality of fragment payloads520. In some examples, the encapsulation header536comprises the payload length field606, which may be 16-bits. In some examples, each carrier packet531-533comprises the adaption layer header502. In some examples, the adaption layer header502is located between the encapsulation header536and the fragment payload within each carrier packet. In some examples, the adaption layer header comprises an IPv6 header. Some examples include copying information from the original header into the adaption layer header, for example copying “Type of Service/Traffic Class” and/or “Congestion Experienced” from the original header506into the adaption layer header502. In some examples, operation708further includes appending the checksum510within a carrier packet (e.g., the carrier packet533) of the plurality of carrier packets530.

Operation710transmits the plurality of carrier packets530over the heterogeneous internetwork120to the destination interface132. In some examples, the destination interface132comprises an OAL interface. In operation712, the destination interface132receives the plurality of carrier packets530.

Decision operation714determines whether the destination interface132is the final (ultimate) destination for the original IP packet504, or instead is an intermediate interface (e.g., the destination node132is an intermediate node). If the destination interface132is only an intermediate interface, the flowchart returns to operation706and the destination interface132assumes the role of the source interface112. The next pass-through operation706is, based on at least a second MPS (e.g., the current MPS for the next segment of the heterogeneous internetwork120) and the size of the original IP packet504, fragmenting the original IP packet504into a second plurality of fragment payloads520, wherein each fragment payload of the second plurality of fragment payloads520does not exceed the second MPS.

The next pass-through operation708includes generating a second plurality of carrier packets, wherein each carrier packet comprises an encapsulation header and one fragment payload of the second plurality of fragment payloads520, and the next pass-through operation710transmits, by the intermediate interface (e.g., the destination interface132), the second plurality of carrier packets530over a second heterogeneous internetwork to a second destination interface542.

When the final destination is reached, operation716reassembles the original IP packet504from the plurality of fragment payloads520. Operation718calculates a new checksum based on the reassembled version of the original IP packet504. After reassembling the original IP packet504, decision operation720determines whether the newly calculated checksum (from operation718) matches the checksum510included in the carrier packet533. If not, operation722discards the reassembled version of the original IP packet504. That is, operation722includes, based on at least determining that the newly calculated checksum does not match the checksum included in the carrier packet533, discarding the original payload508. The flowchart700then returns to operation702.

Otherwise, if the checksum510is validated, operation724includes, based on at least determining that the newly calculated checksum matches the checksum510included in the carrier packet533, continuing delivery of the original payload508to the network layer304(e.g., within the original IP packet504).

In operation726, the source interface112performs probing to determine a largest MPS supported by the downstream network. In some examples, probing comprises iteratively performing operations728-732until receiving an indication that a trial packet is too large, and then proceeds to operation734.

Operation728increases a trial MPS, first from the current MPS that had been used for the fragmentation measure, and then from a prior trial MPS. Operation730transmits a trial packet over the heterogeneous internetwork, and waits for an indication of whether the trial MPS was received by the destination interface. In the trial packet, a size of the trial payload matches the trial MPS. Decision operation732makes the determination of whether the most recently-attempted trial MPS is too large. If not, operation726returns to operation728to try an even larger trial MPS. However, if the recently-attempted trial MPS is too large, operation734sets new current MPS to the largest MPS supported. The largest MPS supported is determined to be the largest trial MPS for which the indication that a trial carrier packet is too large is not received, but rather an acknowledgement from the destination interface is received instead. A larger MPS reduces a count of fragments required for reassembling an IP packet, improving transmission efficiency.

In some examples, the indication that a trial packet is too large comprises a received error message, such as a PTB message. In some examples, the indication that a trial packet is too large comprises failing to receive an acknowledgement that the trial packet was received, for example, within a timeout period. In some examples, the trial packet comprises a trial payload, for example, in an IP packet generated for the purpose of probing. This prevents the loss of actual data when performing probing. In such examples, operation730includes generating, by the source interface112, the trial packet, and operation726includes performing the probing with an IP packet generated for the purpose of probing. In some examples, probing involves probing different internetwork paths individually, and finding a path-specific MPS to use in operation706.

In some examples, the source interface112performs the probing with an IP packet received from a downstream-dependent device (e.g., real data), and so the trial packet comprises an IP packet received from a downstream-dependent device.

The flowchart700returns to operation702to fragment and encapsulate another original IP packet504.

FIG.8is a flowchart800illustrating a method of adapting IP for heterogeneous internetworks. In some examples, the operations illustrated for the flowchart800are performed, at least in part, by executing instructions902a(stored in the memory902) by the one or more processors904of the computing device900ofFIG.9, when deployed on the apparatus1100ofFIG.11. The flowchart800commences with operation802, which includes receiving an original IP packet into a source interface, wherein the IP packet comprises an original header and an original payload, and wherein a size of the original IP packet exceeds an MPS.

Operation804includes, based on at least the MPS and the size of the original IP packet, fragmenting the original IP packet into a plurality of fragment payloads, wherein each fragment payload of the plurality of fragment payloads does not exceed the MPS. Operation806includes generating a plurality of carrier packets, wherein each carrier packet comprises an encapsulation header and one fragment payload of the plurality of fragment payloads. Operation808includes transmitting the plurality of carrier packets over a downstream network to a destination interface.

With reference now toFIG.9, a block diagram of the computing device900suitable for implementing various aspects of the disclosure is described. In some examples, the computing device900includes one or more processors904, one or more presentation components906and the memory902. The disclosed examples associated with the computing device900are practiced by a variety of computing devices, including personal computers, laptops, smart phones, mobile tablets, hand-held devices, consumer electronics, specialty computing devices, etc. Distinction is not made between such categories as “workstation,” “server,” “laptop,” “hand-held device,” etc., as all are contemplated within the scope ofFIG.9and the references herein to a “computing device.” The disclosed examples are also practiced in distributed computing environments, where tasks are performed by remote-processing devices that are linked through a communications network. Further, while the computing device900is depicted as a seemingly single device, in one example, multiple computing devices work together and share the depicted device resources. For instance, in one example, the memory902is distributed across multiple devices, the processor(s)904provided are housed on different devices, and so on.

In one example, the memory902includes any of the computer-readable media discussed herein. In one example, the memory902is used to store and access instructions902aconfigured to carry out the various operations disclosed herein. In some examples, the memory902includes computer storage media in the form of volatile and/or nonvolatile memory, removable or non-removable memory, data disks in virtual environments, or a combination thereof. In one example, the processor(s)904includes any quantity of processing units that read data from various entities, such as the memory902or input/output (I/O) components910. Specifically, the processor(s)904are programmed to execute computer-executable instructions for implementing aspects of the disclosure. In one example, the instructions are performed by the processor, by multiple processors within the computing device900, or by a processor external to the computing device900. In some examples, the processor(s)904are programmed to execute instructions such as those illustrated in the flowcharts discussed below and depicted in the accompanying drawings.

The presentation component(s)906present data indications to an operator or to another device. In one example, presentation components906include a display device, speaker, printing component, vibrating component, etc. One skilled in the art will understand and appreciate that computer data is presented in a number of ways, such as visually in a graphical user interface (GUI), audibly through speakers, wirelessly between the computing device900, across a wired connection, or in other ways. In one example, presentation component(s)906are not used when processes and operations are sufficiently automated that a need for human interaction is lessened or not needed. I/O ports908allow the computing device900to be logically coupled to other devices including the I/O components910, some of which is built in. Implementations of the I/O components910include, for example but without limitation, a microphone, keyboard, mouse, joystick, game pad, satellite dish, scanner, printer, wireless device, etc.

The computing device900includes a bus916that directly or indirectly couples the following devices: the memory902, the one or more processors904, the one or more presentation components906, the input/output (I/O) ports908, the I/O components910, a power supply912, and a network component914. The computing device900should not be interpreted as having any dependency or requirement related to any single component or combination of components illustrated therein. The bus916represents one or more busses (such as an address bus, data bus, or a combination thereof). Although the various blocks ofFIG.9are shown with lines for the sake of clarity, some implementations blur functionality over various different components described herein.

In some examples, the computing device900is communicatively coupled to a network918using the network component914. In some examples, the network component914includes a network interface card and/or computer-executable instructions (e.g., a driver) for operating the network interface card. In one example, communication between the computing device900and other devices occur using any protocol or mechanism over a wired or wireless connection920. In some examples, the network component914is operable to communicate data over public, private, or hybrid (public and private) using a transfer protocol, between devices wirelessly using short range communication technologies (e.g., near-field communication (NFC), Bluetooth® branded communications, or the like), or a combination thereof.

Some examples of the disclosure are used in manufacturing and service applications as shown and described in relation toFIGS.10-12. Thus, examples of the disclosure are described in the context of an apparatus of manufacturing and service method1000shown inFIG.10and apparatus1100shown inFIG.11. InFIG.11, a diagram illustrating an apparatus manufacturing and service method1000is depicted in accordance with an example. In one example, during pre-production, the apparatus manufacturing and service method1000includes specification and design1002of the apparatus1100inFIG.11and material procurement1004. During production, component, and subassembly manufacturing1006and system integration1008of the apparatus1100inFIG.11takes place. Thereafter, the apparatus1100inFIG.11goes through certification and delivery1010in order to be placed in service1012. While in service by a customer, the apparatus1100inFIG.11is scheduled for routine maintenance and service1011, which, in one example, includes modification, reconfiguration, refurbishment, and other maintenance or service subject to configuration management, described herein.

In one example, each of the processes of the apparatus manufacturing and service method1000are performed or carried out by a system integrator, a third party, and/or an operator. In these examples, the operator is a customer. For the purposes of this description, a system integrator includes any number of apparatus manufacturers and major-system subcontractors; a third party includes any number of venders, subcontractors, and suppliers; and in one example, an operator is an owner of an apparatus or fleet of the apparatus, an administrator responsible for the apparatus or fleet of the apparatus, a user operating the apparatus, a leasing company, a military entity, a service organization, or the like.

With reference now toFIG.11, the apparatus1100is provided. As shown inFIG.11, an example of the apparatus1100is a flying apparatus1101, such as an aerospace vehicle, aircraft, air cargo, flying car, satellite, planetary probe, deep space probe, solar probe, and the like. As also shown inFIG.11, a further example of the apparatus1100is a ground transportation apparatus1102, such as an automobile, a truck, heavy equipment, construction equipment, a boat, a ship, a submarine, and the like. A further example of the apparatus1100shown inFIG.11is a modular apparatus1103that comprises at least one or more of the following modules: an air module, a payload module, and a ground module. The air module provides air lift or flying capability. The payload module provides capability of transporting objects such as cargo or live objects (people, animals, etc.). The ground module provides the capability of ground mobility. The disclosed solution herein is applied to each of the modules separately or in groups such as air and payload modules, or payload and ground, etc. or all modules.

With reference now toFIG.12, a more specific diagram of the flying apparatus1101is depicted in which an implementation of the disclosure is advantageously employed. In this example, the flying apparatus1101is an aircraft produced by the apparatus manufacturing and service method1000inFIG.10and includes an airframe1202with a plurality of systems1204and an interior1206. Examples of the plurality of systems1204include one or more of a propulsion system1208, an electrical system1210, a hydraulic system1212, and an environmental system1214. However, other systems are also candidates for inclusion. Although an aerospace example is shown, different advantageous examples are applied to other industries, such as the automotive industry, etc.

The examples disclosed herein are described in the general context of computer code or machine-useable instructions, including computer-executable instructions such as program components, being executed by a computer or other machine, such as a personal data assistant or other handheld device. Generally, program components including routines, programs, objects, components, data structures, and the like, refer to code that performs particular tasks, or implement particular abstract data types. The disclosed examples are practiced in a variety of system configurations, including personal computers, laptops, smart phones, mobile tablets, hand-held devices, consumer electronics, specialty computing devices, etc. The disclosed examples are also practiced in distributed computing environments, where tasks are performed by remote-processing devices that are linked through a communications network.

An example method of adapting IP for heterogeneous internetworks comprises: receiving an original IP packet into a source interface, wherein the original IP packet comprises an original header and an original payload, and wherein a size of the original IP packet exceeds a first MPS; based on at least the first MPS and the size of the original IP packet, fragmenting the original IP packet into a plurality of fragment payloads, wherein each fragment payload of the plurality of fragment payloads does not exceed the first MPS; generating a plurality of carrier packets, wherein each carrier packet comprises an encapsulation header and one fragment payload of the plurality of fragment payloads; and transmitting the plurality of carrier packets over a downstream network to a destination interface.

Another example method of adapting IP for heterogeneous internetworks comprises: receiving an original IP packet into a source interface, wherein the original IP packet comprises an original header and an original payload, and wherein a size of the original payload exceeds a first MPS; based on at least the first MPS and the size of the original payload, fragmenting the original IP packet into a plurality of fragment payloads, wherein each fragment payload of the plurality of fragment payloads does not exceed the first MPS; generating a plurality of carrier packets, wherein each carrier packet comprises an encapsulation header and one fragment payload of the plurality of fragment payloads; and transmitting the plurality of carrier packets over a downstream network to a destination interface.

Another example method of adapting IP for heterogeneous internetworks comprises: receiving an original IP packet into a source interface, wherein the original IP packet comprises an original header and an original payload, and wherein a size of the original payload exceeds a first MPS; based on at least the first MPS and the size of the original payload, fragmenting the original payload into a plurality of fragment payloads, wherein each fragment payload of the plurality of fragment payloads does not exceed the first MPS; generating a plurality of carrier packets, wherein each carrier packet comprises an encapsulation header and one fragment payload of the plurality of fragment payloads; and transmitting the plurality of carrier packets over a downstream network to a destination interface.

An example system for adapting IP for heterogeneous internetworks comprises: one or more processors; and a memory storing instructions that, when executed by the one or more processors, cause the one or more processors to perform operations comprising: receiving an original IP packet into a source interface, wherein the original IP packet comprises an original header and an original payload, and wherein a size of the original IP packet exceeds a first MPS; based on at least the first MPS and the size of the original IP packet, fragmenting the original IP packet into a plurality of fragment payloads, wherein each fragment payload of the plurality of fragment payloads does not exceed the first MPS; generating a plurality of carrier packets, wherein each carrier packet comprises an encapsulation header and one fragment payload of the plurality of fragment payloads; and transmitting the plurality of carrier packets over a downstream network to a destination interface.

Another example system for adapting IP for heterogeneous internetworks comprises: one or more processors; and a memory storing instructions that, when executed by the one or more processors, cause the one or more processors to perform operations comprising: receiving an original IP packet into a source interface, wherein the original IP packet comprises an original header and an original payload, and wherein a size of the original payload exceeds a first MPS; based on at least the first MPS and the size of the original payload, fragmenting the original IP packet into a plurality of fragment payloads, wherein each fragment payload of the plurality of fragment payloads does not exceed the first MPS; generating a plurality of carrier packets, wherein each carrier packet comprises an encapsulation header and one fragment payload of the plurality of fragment payloads; and transmitting the plurality of carrier packets over a downstream network to a destination interface.

Another example system for adapting IP for heterogeneous internetworks comprises: one or more processors; and a memory storing instructions that, when executed by the one or more processors, cause the one or more processors to perform operations comprising: receiving an original IP packet into a source interface, wherein the original IP packet comprises an original header and an original payload, and wherein a size of the original payload exceeds a first MPS; based on at least the first MPS and the size of the original payload, fragmenting the original payload into a plurality of fragment payloads, wherein each fragment payload of the plurality of fragment payloads does not exceed the first MPS; generating a plurality of carrier packets, wherein each carrier packet comprises an encapsulation header and one fragment payload of the plurality of fragment payloads; and transmitting the plurality of carrier packets over a downstream network to a destination interface.

An example computer program product comprises a computer usable medium having a computer readable program code embodied therein, the computer readable program code adapted to be executed to implement a method comprising: receiving an original IP packet into a source interface, wherein the original IP packet comprises an original header and an original payload, and wherein a size of the original IP packet exceeds a first MPS; based on at least the first MPS and the size of the original IP packet, fragmenting the original IP packet into a plurality of fragment payloads, wherein each fragment payload of the plurality of fragment payloads does not exceed the first MPS; generating a plurality of carrier packets, wherein each carrier packet comprises an encapsulation header, an adaption layer header, and one fragment payload of the plurality of fragment payloads; and transmitting the plurality of carrier packets over a downstream network to a destination interface.

Another example computer program product comprises a computer usable medium having a computer readable program code embodied therein, the computer readable program code adapted to be executed to implement a method comprising: receiving an original IP packet into a source interface, wherein the original IP packet comprises an original header and an original payload, and wherein a size of the original payload exceeds a first MPS; based on at least the first MPS and the size of the original payload, fragmenting the original IP packet into a plurality of fragment payloads, wherein each fragment payload of the plurality of fragment payloads does not exceed the first MPS; generating a plurality of carrier packets, wherein each carrier packet comprises an encapsulation header, an adaption layer header, and one fragment payload of the plurality of fragment payloads; and transmitting the plurality of carrier packets over a downstream network to a destination interface.

Another example computer program product comprises a computer usable medium having a computer readable program code embodied therein, the computer readable program code adapted to be executed to implement a method comprising: receiving an original IP packet into a source interface, wherein the original IP packet comprises an original header and an original payload, and wherein a size of the original payload exceeds a first MPS; based on at least the first MPS and the size of the original payload, fragmenting the original payload into a plurality of fragment payloads, wherein each fragment payload of the plurality of fragment payloads does not exceed the first MPS; generating a plurality of carrier packets, wherein each carrier packet comprises an encapsulation header, an adaption layer header, and one fragment payload of the plurality of fragment payloads; and transmitting the plurality of carrier packets over a downstream network to a destination interface.

Alternatively, or in addition to the other examples described herein, examples include any combination of the following:the source interface comprises an OAL interface and the destination interface comprises an OAL interface;probing, by the source interface, to determine a largest MPS supported by the downstream network;probing comprises iteratively transmitting a trial packet over the downstream network;the trial packet comprises a trial payload;a size of the trial payload matches a trial MPS;probing comprises iteratively increasing the trial MPS until receiving an indication that a trial packet is too large;the largest MPS supported is determined to be a largest trial MPS for which the indication that a trial carrier packet is too large is not received;receiving, by the source interface, IP packets from a plurality of downstream-dependent devices that are connected to the source interface;based on at least the first MPS and sizes of payloads of the IP packets from the plurality of downstream-dependent devices, fragmenting the IP packets from the plurality of downstream-dependent devices into sets of carrier packets;transmitting the sets of carrier packets;each carrier packet further comprises an adaption layer header;receiving, by the destination interface, the plurality of carrier packets;reassembling the original IP packet from the plurality of fragment payloads;calculating a checksum;calculation of the checksum includes at least the original payload;calculation of the checksum includes at least the original header;calculation of the checksum includes at least the original IP packet;including the checksum within a carrier packet of the plurality of carrier packets;the destination interface comprises an intermediate interface;based on at least a second MPS and the size of the original IP packet, fragmenting the original IP packet into a second plurality of fragment payloads;each fragment payload of the second plurality of fragment payloads does not exceed the second MPS;generating a second plurality of carrier packets, wherein each carrier packet comprises an encapsulation header and one fragment payload of the second plurality of fragment payloads;transmitting, by the intermediate interface, the second plurality of carrier packets over a second downstream network to a second destination interface;the encapsulation header comprises a payload length field;the encapsulation header comprises a16-bit payload length field;a larger MPS reduces a count of fragments required for reassembling an IP packet;receiving the trial packet into the source interface from a downstream-dependent device;the trial packet comprises an IP packet received from a downstream-dependent device;performing the probing with an IP packet received from a downstream-dependent device;generating, by the source interface, the trial packet;the trial packet comprises an IP packet generated for the purpose of probing;performing the probing with an IP packet generated for the purpose of probing;the indication that a trial packet is too large comprises a received error message;the error message comprises a PTB message;the indication that a trial packet is too large comprises failing to receive an acknowledgement that the trial packet was received;copying information from the original header into the adaption layer header;copying “Type of Service/Traffic Class” and/or “Congestion Experienced” values from the original header into the adaption layer header;the adaption layer header is located between the encapsulation header and the fragment payload within each carrier packet;the adaption layer header comprises an IPv6 header;the calculation of the checksum further includes the adaption layer header;the calculation of the checksum is performed on a concatenation of the adaption layer header and the original payload;including the checksum within a final carrier packet of the plurality of carrier packets;after reassembling the original IP packet, determining whether a newly calculated checksum matches the checksum included in the carrier packet;based on at least determining that the newly calculated checksum matches the checksum included in the carrier packet, continuing delivery of the original payload; andbased on at least determining that the newly calculated checksum does not match the checksum included in the carrier packet, discarding the original payload.

When introducing elements of aspects of the disclosure or the implementations thereof, the articles “a,” “an,” “the,” and “said” are intended to mean that there are one or more of the elements. The terms “comprising,” “including,” and “having” are intended to be inclusive and mean that there could be additional elements other than the listed elements. The term “implementation” is intended to mean “an example of” The phrase “one or more of the following: A, B, and C” means “at least one of A and/or at least one of B and/or at least one of C.”