WO2001067272A1 - Virtual memory systems and methods - Google Patents

Virtual memory systems and methods Download PDF

Info

Publication number
WO2001067272A1
WO2001067272A1 PCT/US2000/021280 US0021280W WO0167272A1 WO 2001067272 A1 WO2001067272 A1 WO 2001067272A1 US 0021280 W US0021280 W US 0021280W WO 0167272 A1 WO0167272 A1 WO 0167272A1
Authority
WO
WIPO (PCT)
Prior art keywords
packet
information
communication device
processing
network
Prior art date
Application number
PCT/US2000/021280
Other languages
French (fr)
Inventor
Shrikumar Hariharasubrahmanian
Original Assignee
Shrikumar Hariharasubrahmanian
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shrikumar Hariharasubrahmanian filed Critical Shrikumar Hariharasubrahmanian
Priority to AU67580/00A priority Critical patent/AU6758000A/en
Publication of WO2001067272A1 publication Critical patent/WO2001067272A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1642Formats specially adapted for sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1809Selective-repeat protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/324Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the data link layer [OSI layer 2], e.g. HDLC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Definitions

  • the present invention relates generally to networks and, more particularly, to systems and methods that create a virtual memory in a communication network.
  • Communication networks permit computer-related devices, such as personal computers, servers, laptops, personal digital assistants (PDAs), and other similar devices, to cornmunicate with one another.
  • PDAs personal digital assistants
  • communications over these networks are governed by a packetization protocol and a corresponding packet exchange protocol that specify what the communication devices on the network must and must not do under different specific circumstances. These protocols are specified under the relevant standards, as applicable to the domains in which the communication devices operate.
  • Packetization and packet exchange protocols usually require that the communication devices involved in a communication process store and respond to packets in separate steps that require allocations of memory to hold and process one or more packets.
  • a conventional technique used by a communication device includes receiving a packet, storing it in local memory, and processing it only after complete reception of the packet. This technique places a demand on the communication device to have a large enough local memory that can store the entire packet and any corresponding control information.
  • Some communication devices such as mini-computers, micro-controllers, and microcomputers, lack sufficient resources to store one or more packets or perform necessary networking protocol procedures.
  • these devices must often associate themselves as slave devices to one or more host computers that contain the resources to perform operations on their behalf.
  • the host computers may perform the networking protocol procedures on behalf of the slave devices, transmit information to other devices on behalf of the slave devices, and perform operations on the slave devices in response to requests by network devices with which the slave devices are communicating.
  • Such arrangements can result in delays in the processing of the packets, lead to many practical difficulties, and increase the cost of connecting the devices to the communication network. Therefore, there exists a need for systems and methods that allow devices having limited memory capacity to participate in network operations.
  • a network includes a first communication device and a second communication device.
  • the first communication device receives a first packet containing information for the first communication device, determines whether adequate resources exist for storing all or a part of the information, generates a second packet when inadequate resources are determined to exist, stores the information in the second packet, and transmits the second packet.
  • the second communication device receives the second packet from the first communication device, generates a third packet, transfers the information to the third packet, and transmits the third packet to the first communication device.
  • the first communication device receives the third packet containing the information, and processes the information in that packet.
  • a communication device is provided.
  • the communication device includes a memory and a processor.
  • the processor receives a first packet containing information for processing by the communication device and determines whether to store the information in the memory. When the information is not to be stored, the processor generates a second packet having multiple fields, stores the information from the first packet in at least one field of the second packet, and transmits the second packet.
  • the communication device also receives, in response to transmitting the second packet, a third packet containing the information and processes the information.
  • a method for processing information in a communications network having first and second communication devices includes receiving a packet by the first communication device, the packet containing information for processing by the first communication device; determining whether adequate resources exist for storing all or a part of the packet; failing to acknowledge the packet when inadequate resources are determined to exist; retransmitting the packet to the first communication device; processing the information in the retransmitted packet when adequate resources are determined to exist.
  • a communication device includes a memory and a processor.
  • the processor receives a packet, determines whether resources exist for processing all or a part of the packet, purposefully fails to acknowledge the packet when inadequate resources are determined to exist, receives a retransmitted version of the packet, and processes the retransmitted version when adequate resources are determined to exist.
  • a communication device includes a memory and a processor.
  • the processor determines whether all or a part of information is needed at a current time, generates a packet having multiple fields when the information is not needed at the current time, stores the information in at least one field of the packet, transmits the packet to a second communication device, receives a different packet from the second communication device, the different packet containing the information, and processes the information in the different packet when the information is determined to be needed.
  • a method for processing information in a communication network having a group of communication devices includes receiving a first packet by a first communication device, storing information relating to a network connection between the first communication device and a second communication device in one or more fields of a second packet, transmitting the second packet to the second communication device, transferring the network connection information from the second packet to a third packet, transmitting the third packet to the first communication device, and processing the third packet.
  • a network in another implementation consistent with the present invention, includes a first communication device and a second communication device.
  • the first communication device includes logic configured to receive a first packet, the first packet containing information for the first communication device, logic configured to determine whether adequate resources exist, logic configured to generate a second packet when inadequate resources are determined to exist, logic configured to store the information in the second packet, logic configured to transmit the second packet, logic configured to receive a third packet, the third packet containing the information, and logic configured to process the information.
  • the second communication device includes logic configured to receive the second packet, logic configured to generate the third packet, logic configured to transfer the information to the third packet, and logic configured to transmit the third packet to the first communication device.
  • FIG. 1 illustrates an exemplary network consistent with the present invention
  • FIG. 2 illustrates an exemplary communication device configuration in an implementation consistent with the present invention
  • FIG. 3 illustrates an exemplary network peer configuration consistent with the present invention
  • FIG. 4 illustrates an exemplary process, consistent with the present invention, that allows for operation of a communication device having limited memory resources;
  • FIG. 5 illustrates an exemplary structure of a Transmission Control Protocol packet header
  • FIG. 6 illustrates an exemplary exchange of packets, consistent with the present invention, between a communication device and a network peer
  • FIG. 7 illustrates an exemplary process, according to an alternative implementation of the present invention, that allows for operation of a communication device having limited memory
  • FIG. 8 illustrates an exemplary process, according to another alternative implementation of the present invention, that allows for operation of a communication device having limited memory resources.
  • Systems and methods, consistent with the present invention provide mechanisms by which a device, having a limited memory capacity, may participate in a communication network.
  • the device uses fields in packets to store data and/or control information that is not currently needed by the device.
  • the device stores the data and/or control information in one or more fields, such as a timestamp field, of the packets with the knowledge of how the data and/or control information will be manipulated (if at all) by the network peer to which the packets are transmitted.
  • response packets are returned by the network peer, the device may process the data and/or control information in those packets.
  • a virtual memory is created.
  • FIG. 1 illustrates an exemplary network 100 consistent with the present invention.
  • the network 100 may include communication devices 110 and network peers 120 connected to a network 130. Three communication devices 110 and three network peers 120 have been shown in FIG. 1 for simplicity. In practice, the network 100 may include more or less communication devices 110 and network peers 120.
  • the network 130 may include one or more data communication networks, such as the Internet, an intranet, a wide area network, or the like.
  • the network 130 includes a packet-based network that operates according to a communications protocol, such as a Transmission Control Protocol and all related protocols, as specified in "Requirements for Internet Hosts ⁇ Communication Layers," RFC1122, ftp://ftp.isi.edu/in-notes/rfcll22.txt. October 1989.
  • the communication devices 110 may include computer devices, electronic devices, or similar devices with or without extensive computational and/or memory resources.
  • the communication devices 110 may connect to the network 130 via wired, wireless, or optical communication paths.
  • the communication devices 110 connect to the network 130 using a data link protocol, such as the Serial Line Internet Protocol (SLIP), Ethernet, or Token Ring.
  • SLIP Serial Line Internet Protocol
  • Ethernet Ethernet
  • Token Ring Token Ring
  • the network peers 120 may include computer devices, such as personal computers, servers, laptops, personal digital assistants (PDAs), etc. that connect to the network 130 via wired, wireless, or optical communication paths. According to an implementation consistent with the present invention, the network peers 120 communicate with the communication devices 110 via data packetized communication in accordance with a conventional protocol, such as the Transmission Control Protocol or another related protocol. The network peers 120 may communicate with the communication devices 110 or other network peers 120 via a virtual circuit, connection, or socket through the network 130.
  • PDAs personal digital assistants
  • communication devices 110 and network peers 120 are illustrated as different devices, the communication devices 110 and network peers 120 may be similarly constructed. As a result, it will be further appreciated that any device described hereafter can play the role of a communication device 110 or network peer 120 at different times in the same communication session or in different communication sessions. In other words, communication devices 110 may perform the functions described below as being performed by network peers 120. Similarly, network peers 120 may perform the functions described as being performed by communication devices 110. EXEMPLARY COMMUNICATION DEVICE
  • FIG. 2 illustrates an exemplary communication device 110 configuration in an implementation consistent with the present invention.
  • the communication device 110 may include a bus 210, a processor 220, a local memory 230, an input device 240, an output device 250, and a communication interface 260.
  • the bus 210 may include one or more conventional buses that permit communication among the components of the communication device 110.
  • the processor 220 may be any type of conventional processor or microprocessor that interprets and executes instructions.
  • the local memory 230 may be a large or small capacity memory device, such as a random access memory (RAM), a read only memory (ROM), or another type of dynamic or static storage device that stores information and instructions for processing by the processor 220.
  • the local memory 230 includes a small capacity memory device capable of storing a small amount of information (e.g., less than or equal to the amount of information included in a typical packet).
  • the input device 240 may include any conventional mechanism that permits input of information into the communication device 110, such as a keyboard, a keypad, a mouse, data acquisition sensors, etc.
  • the output device 250 may include any conventional mechanism that outputs information, including a display, a speaker, a transducer, an actuator, etc.
  • the communication interface 260 may include any transceiver-like mechanism that enables the communication device 110 to communicate with other devices and systems.
  • the communication interface 260 may include mechanisms for communicating via a network, such as the network 130.
  • a communication device 110 with insufficient resources performs the necessary data packetization and transport protocol procedures for communicating over a network, such as network 130.
  • the communication device 110 performs these tasks in response to processor 220 executing sequences of instructions contained in a computer-readable medium, such as the local memory 230.
  • a computer-readable medium may include one or more memory devices and/or carrier waves.
  • the instructions may be read into memory 230 from another computer-readable medium or from another device via the communication interface 260.
  • Execution of the sequences of instructions contained in local memory 230 causes processor 220 to perform processes that will be described later.
  • hardwired circuitry may be used in place of or in combination with software instructions to implement processes consistent with the present invention.
  • the components of the communication device 110 may be fully implemented in silicon via a combination of logic gates.
  • the present invention is not limited to any specific combination of hardware circuitry and software.
  • FIG. 3 illustrates an exemplary network peer 120 configuration consistent with the present invention.
  • the exemplary network peer 120 includes a bus 302, a processor 304, a main memory 306, a read only memory (ROM) 308, a storage device 310, an input device 312, an output device 314, and a communication interface 316.
  • the bus 302 may include one or more conventional buses that permit communication among the components of the network peer 120.
  • the processor 304 may include any type of conventional processor or microprocessor that interprets and executes instructions.
  • the main memory 306 may include a random access memory (RAM) or another type of dynamic storage device that stores information and instructions for execution by the processor 304.
  • RAM random access memory
  • Main memory 306 may also be used to store temporary variables or other intermediate information used during execution of instructions by processor 304.
  • ROM 308 may include a conventional ROM device and/or another type of static storage device that stores static information and instructions for processor 304.
  • the storage device 310 may include a magnetic disk or optical disk and its corresponding drive and/or some other type of magnetic or optical recording medium and its corresponding drive for storing information and/or instructions.
  • the input device 312 may include any conventional mechanism that permits input of information into the network peer 120, such as a keyboard, a mouse, a microphone, a pen, data acquisition sensors, voice recognition and/or biometric mechanisms, etc.
  • the output device 314 may include any conventional mechanism that outputs information, including a display, a printer, a transducer, an actuator, a speaker, etc.
  • the communication interface 316 may include any transceiver-like mechanism that enables the network peer 120 to communicate with other devices and/or systems, such as communication devices 110.
  • the communication interface 316 may include a modem or an Ethernet interface to a network.
  • communication interface 316 may include other mechanisms for communicating via a communication network, such as network 130.
  • the network peer 120 performs the functions described below in response to processor 304 executing sequences of instructions contained in a computer-readable medium, such as memory 306.
  • the instructions may be read into memory 306 from another computer-readable medium, such as a storage device 310, or from a separate device via communication interface 316. Execution of the sequences of instructions contained in memory 306 causes processor 304 to perform the process steps that will be described later.
  • hard-wired circuitry may be used in place of or in combination with software instructions to implement the present invention.
  • the components of the network peer 120 may be fully implemented in silicon via a combination of logic gates. Thus, the present invention is not limited to any specific combination of hardware circuitry and software.
  • FIG. 4 illustrates an exemplary process, consistent with the present invention, that allows a communication device having limited memory resources to participate in network operations. Processing begins with a communication device, such as communication device 110 in FIG. 1, receiving a packet via network 130 [step 410]. The packet may be received from a network peer, such as network peer 120 in FIG. 1, or another communication device 110. As described above, the communication device 110, in an implementation consistent with the present invention, may have very limited memory resources. As a result, the communication device 110 may be incapable of receiving an entire packet, or a significant portion of such a packet, into its memory 230 prior to analyzing and replying to the packet in accordance with the communication protocols implemented by the communication device 110.
  • the communication device 110 determines whether adequate resources exist [step 420]. In making such a determination, the communication device 110 determines whether information in the packet can and should be stored at this time and whether the information can and should be processed at this time. The communication device 110 may determine that the information can not be stored at the present time if, for example, the communication device 110 currently lacks the memory capacity to store all or a portion of the information. The communication device 110 may determine that the information should not be stored at the present time if, for example, the information is not currently needed by the communication device 110, but will be needed at a later time. For example, the communication device 110 may determine that connection information and parameters related to the state of the connection itself should not be stored.
  • the communication device 110 may determine whether all or a portion of the information can be processed immediately. For example, the communication device 110 may determine whether its processor 220 is currently performing other tasks that may not allow for the information to be processed at the current time. The communication device 110 may also determine whether the information should be processed immediately or whether the information should be processed at a later time due, for example, to higher priority tasks currently being performed by the processor 220.
  • the communication device 110 determines that adequate resources exist (i.e., that information in the packet can and should be stored/processed at the present time)
  • the communication device 110 processes the information [step 430].
  • the processing may include the processor 220 using data and/or control information in the packet for performing one or more tasks.
  • the communication device 110 determines that adequate resources do not exist (i.e., that the information can not or should not be stored or that the information can not or should not be processed immediately), the communication device 110 generates a packet [step 440].
  • the communication device 110 may store important information from the received packet or other information to be later used by the communication device 110 in the packet.
  • the information may include, for example, connection details and/or other control information that pertain to one or more network connections, virtual circuits, or sockets with which the communication device 110 is currently involved.
  • the information may also include data to be later used in one or more tasks performed by the communication device 110.
  • the communication device 110 may store any information in the packet that is not currently needed by the communication device
  • the communication device 110 may store the information anywhere in the packet that would not interfere with the normal processing of the packet and would allow for the later retransmission of the information from the network peer 120 to the communication device 110. For example, assuming that the communication device 110 and network peer 120 communicate using the Transmission Control Protocol, the communication device 110 may store the information in the Transmission Control Protocol header of the generated packet. It will be appreciated that while the following description assumes the use of the Transmission Control Protocol, other communication protocols may alternatively be used.
  • FIG. 5 illustrates an exemplary structure of a Transmission Control Protocol packet header 500.
  • the Transmission Control Protocol packet header 500 includes a source port field, a destination port field, a sequence number field, an acknowledge number field, a header length field, a reserved field, a flags field, a window size field, a checksum field, an urgent pointer field, and an options field.
  • the source port and destination port fields include data that identify the source and destination of a data packet.
  • the sequence number field includes data that identifies the first byte of data in the packet.
  • the acknowledge field includes data that identifies the next byte of data that the source expects to receive from the destination.
  • the header length field includes data that identifies the length of the header 500.
  • the reserved field may be used for future expansions.
  • the flags field may include several flags, such as Urgent, Acknowledge, Push, Reset, Synchronize, and Finish flags.
  • the Urgent flag indicates whether the data in the urgent pointer field is valid.
  • the Acknowledge flag indicates whether the data in the acknowledgement number field is valid.
  • the Push flag indicates whether the accompanying data should be passed to the application at the destination in an expedited manner.
  • the Reset flag indicates whether the connection should be reset.
  • the Synchronize flag is used to establish an initial agreement on the sequence numbers.
  • the Finish flag indicates whether the source has finished sending data.
  • the window size field includes data that identifies the amount of space the destination has available for storing unacknowledged data.
  • the checksum field includes a checksum value that may cover both the header 500 and the data stored in the packet.
  • the urgent pointer field includes data that identifies whether this packet should take priority over the normal data stream.
  • the options field may contain any number of predefined options.
  • the options field may, for example, contain a timestamp option that allows for a round trip time between the source and destination to be determined. When using such an option, the source stores a timestamp value in the timestamp field. The destination copies the timestamp value, without interpreting it, into a return packet. Upon receipt of the return packet, the source may determine the round trip time by subtracting a current time from the timestamp value.
  • the communication device 110 stores information, such as from the received packet, instead of a timestamp value, in the timestamp field of the Transmission Control Protocol header 500 of the generated packet.
  • the communication device 110 transmits the packet to a network peer, such as network peer 120 in FIG. 1 [step 450].
  • This network peer 120 may be the network peer 120 that transmitted the packet that was received in step 410 or it may be another network peer 120.
  • the network peer 120 receives the packet over network 130 [step 460]. Following the
  • the network peer 120 generates a response packet and copies the information from the timestamp field into a timestamp field of the response packet for transmission back to the communication device 110. It will be appreciated that if the communication device 110 stores the information in a field other than the timestamp field, the network peer 120 may manipulate the information when copying it to the response packet. If this occurs, the communication device 110 must know of the manipulation performed by the network peer 120 in order to convert the information back to its original form or to another usable form.
  • the network peer 120 transmits the response packet to the communication device 110 [step 470]. Upon receipt, the communication device returns to step 410 and processing repeats until the communication device 110 determines that sufficient resources exist [step 420]. When the communication device 110 determines that sufficient resources exist [step 420], the communication device 110 processes the information [step 430].
  • FIG. 6 illustrates an exemplary exchange of packets, consistent with the present invention, between a communication device 110 and a network peer 120.
  • the communication device 110 having a limited memory capacity, requires a data element to be available for consultation and processing at a later point in time. Due to its limited memory capacity, the communication device 110 may be unable or unwilling to allocate memory to hold the value of the data element.
  • the communication device 110 generates a packet and stores the data element 602 in one of the fields of the packet.
  • the communication device 110 places the data element 602 in a field of the packet with foreknowledge of how the data element 602 will be processed (or manipulated) by the network peer 120.
  • the communication device 110 then transmits the packet to the network peer [step 610].
  • the network peer 120 receives the packet containing the data element 602 and, in accordance with it predefined protocol steps, copies the data element (or a manipulated version thereof) 604 to a field of a reply packet [step 620]. The network peer 120 then transmits the reply packet to the communication device [step 630]. The communication device 110 receives the packet having the data element (or a manipulated version thereof) 604. Having foreknowledge of the manner in which the network peer 120 manipulated the data element 602, the communication device 110 may then convert the data element 604 back to its original form or some other usable form for processing [step 640].
  • FIG. 7 illustrates an exemplary process, according to an alternative implementation of the present invention, that allows a communication device having limited memory resources to participate in network operations.
  • Processing begins with a communication device, such as communication device 110 in FIG. 1, receiving a packet via network 130 [step 710].
  • the packet may be received from a network peer, such as network peer 120 in FIG. 1, or another communication device 110.
  • the communication device 110 in an implementation consistent with the present invention, may have very limited memory resources.
  • the communication device 110 may be incapable of receiving an entire packet, or a significant portion of such a packet, into its memory 230 prior to analyzing and replying to the packet in accordance with the communication protocols implemented by the communication device 110.
  • the communication device 110 Upon receipt of the packet, the communication device 110 generates a reply packet [step
  • the communication device 110 determines whether adequate resources exist [step 730]. In making such a determination, the communication device 110 determines whether information, such as data and/or control information, in the packet can and should be stored at this time and whether the information can and should be processed at this time. The communication device 110 may determine that the information can not be stored at the present time if, for example, the communication device 110 currently lacks the memory capacity to store all or a portion of the information. The communication device 110 may determine that the information should not be stored at the present time if, for example, the information is not currently needed by the communication device 110, but will be needed at a later time.
  • information such as data and/or control information
  • the communication device 110 may determine whether all or a portion of the information can be processed immediately. For example, the communication device 110 may determine whether its processor 220 is currently performing other tasks that may not allow for the information to be processed at the current time. The communication device 110 may also determine whether the information should be processed immediately or whether the information should be processed at a later time due, for example, to higher priority tasks currently being performed by the processor
  • the communication device 110 may store the information from the received packet or other information in the communication device 110 that is not needed at the current time in the reply packet [step 740].
  • the communication device 110 may also store, whether or not adequate resources are determined to exist [step 730], connection information in the reply packet [step 750].
  • the connection information may include, for example, connection details and/or other control information that pertain to one or more network connections, virtual circuits, or sockets with which the communication device 110 is currently involved. Storing the connection information in the reply packet, even in those instances where adequate resources exist for processing the packet and the information contained therein, allows for implementation of a smaller memory in the communication device 110.
  • the communication device 110 may store the information anywhere in the packet that would not interfere with the normal processing of the packet and would allow for the later retransmission of the information from the network peer 120 to the communication device 110.
  • the communication device 110 may store the information in the timestamp field of the Transmission Control Protocol header of the generated packet. It will be appreciated that while the following description assumes the use of the
  • Transmission Control Protocol other communication protocols may alternatively be used.
  • the communication device 110 may process the packet and the information stored therein. Once the packet has been generated and the connection and other information has been stored in the packet, the communication device 110 transmits the reply packet to a network peer, such as network peer 120 in FIG. 1 [step 760].
  • This network peer 120 may be the network peer 120 that transmitted the packet that was received in step 710 or it may be another network peer 120.
  • the network peer 120 receives the packet over network 130 [step 760]. Following the
  • the network peer 120 generates a response packet and copies the information from the timestamp field into a timestamp field of the response packet for transmission back to the communication device 110. It will be appreciated that if the communication device 110 stores the information in a field other than the timestamp field, the network peer 120 may manipulate the information when copying it to the response packet. If this occurs, the communication device 110 must know of the manipulation performed by the network peer 120 in order to convert the information back to its original form or to another usable form.
  • FIG. 8 illustrates an exemplary process, according to another alternative implementation of the present invention, that allows a communication device having limited memory resources to participate in network operations. Processing begins with a communication device, such as communication device 110 in FIG. 1, receiving a packet via network 130 [step 810]. The packet may be received from a network peer, such as network peer 120. As described above, the communication device 110, in an implementation consistent with the present invention, may have very limited memory resources.
  • the communication device 110 may be incapable of receiving or unwilling to receive an entire packet, or a significant portion of such a packet, into its memory 230 prior to analyzing and replying to the packet in accordance with the communication protocols implemented by the communication device 110.
  • the communication device 110 determines whether adequate resources exist [step 820]. In making such a determination, the communication device 110 determines whether the packet can and should be stored at this time and whether the packet can and should be processed at this time. The communication device 110 may determine that the packet can not be stored at the present time if, for example, the communication device 110 currently lacks the memory capacity to store all or a portion of the packet.
  • the communication device 110 may determine that the packet should not be stored at the present time if, for example, the information in the packet is not currently needed by the communication device 110, but will be needed at a later time. In determining whether the packet can and should be processed at the present time, the communication device 110 may determine whether all or a portion of the packet can be processed immediately. For example, the communication device 110 may determine whether its processor 220 is currently performing other tasks that may not allow for all or a portion of the packet to be processed at the current time. The communication device 110 may also determine whether the packet should be processed immediately or whether all or a portion of the packet should be processed at a later time due, for example, to higher priority tasks currently being performed by the processor 220.
  • the communication device 110 determines that the packet can and should be stored and that the packet can and should be processed immediately, the communication device 110 processes the packet [step 830].
  • the processing may include the processor 220 using data and/or control information in the packet for performing one or more tasks.
  • the communication device 110 determines that adequate resources do not exist, the communication device 110 does not acknowledge or incompletely acknowledges the received packet [step 840]. By not acknowledging or incompletely acknowledging the received packet, the communication device 110 causes the network peer 120 to believe that the communication device 110 did not receive the entire packet. As a result, the network peer 120 will automatically retransmit the packet to the communication device 110 after a predetermined timeout period expires. Similar to the process described above with respect to FIG. 4, the communication device 110 can have data that is needed at a later time or that can not be processed immediately made available at a later time.
  • the network peer 120 After a predetermined timeout period expires, the network peer 120, having not received an acknowledgement to the transmitted packet, retransmits the packet to the communication device 110 [step 850]. Upon receipt, the communication device 110 returns to step 710 and processing repeats until the communication device 110 determines that sufficient resources exist [step 820]. It will be appreciated that typical communication protocols may not allow this technique to continue indefinitely. The network peer 120 may only retransmit an unacknowledged packet a predetermined number of times before determining that the transmission has failed.
  • the communication device 110 determines that sufficient resources exist [step 820]
  • the communication device 110 processes the packet [step 830].
  • Systems and methods consistent with the present invention provide a mechanism by which a device with a limited memory capacity may participate in a communication network.
  • the device uses fields in packets to store data and/or control information that is not needed by the device at the current time.
  • the device stores the data and/or control information in one or more fields of the packets with knowledge of how the data and/or control information will be manipulated (if at all) by the network peer to which the packets are transmitted.
  • the device processes the data and/or control information if received at a time when the data and/or control information is needed.
  • the device By transmitting data and/or control information to a network peer until needed, the device, in essence, uses the packets and network peer as a virtual memory.
  • the communication device may use its virtual memory by transferring the data and/or control information to a network peer in order to have that data and/or control information later returned by that network peer.

Abstract

A network (100) includes a first communication device (110) and a second communication device (120). The first communication device (110) receives a first packet containing information for the first communication device (110) and determines whether adequate resources exist for handling the packet. When inadequate resources are determined to exist, the first communication device (110) generates a second packet, stores the information in the second packet, and transmits the second packet. The second communication device (120) receives the second packet, generates a third packet, transfers the information to the third packet, and transmits the third packet to the first communication device (110). The first communication device (110) receives the third packet and processes the information in the third packet.

Description

VIRTUAL MEMORY SYSTEMS AND METHODS
FIELD OF THE INVENTION
The present invention relates generally to networks and, more particularly, to systems and methods that create a virtual memory in a communication network. BACKGROUND OF THE INVENTION
Communication networks permit computer-related devices, such as personal computers, servers, laptops, personal digital assistants (PDAs), and other similar devices, to cornmunicate with one another. Currently, common household appliances, such as refrigerators, microwaves, and the like, are being implemented with micro-controllers and/or microcomputers that allow these appliances to communicate over a communication network, such as the Internet.
Sometimes, communications over these networks are governed by a packetization protocol and a corresponding packet exchange protocol that specify what the communication devices on the network must and must not do under different specific circumstances. These protocols are specified under the relevant standards, as applicable to the domains in which the communication devices operate.
Packetization and packet exchange protocols usually require that the communication devices involved in a communication process store and respond to packets in separate steps that require allocations of memory to hold and process one or more packets. A conventional technique used by a communication device includes receiving a packet, storing it in local memory, and processing it only after complete reception of the packet. This technique places a demand on the communication device to have a large enough local memory that can store the entire packet and any corresponding control information.
Some communication devices, such as mini-computers, micro-controllers, and microcomputers, lack sufficient resources to store one or more packets or perform necessary networking protocol procedures. To participate in communication over a packet communication network, these devices must often associate themselves as slave devices to one or more host computers that contain the resources to perform operations on their behalf. For example, the host computers may perform the networking protocol procedures on behalf of the slave devices, transmit information to other devices on behalf of the slave devices, and perform operations on the slave devices in response to requests by network devices with which the slave devices are communicating. Such arrangements can result in delays in the processing of the packets, lead to many practical difficulties, and increase the cost of connecting the devices to the communication network. Therefore, there exists a need for systems and methods that allow devices having limited memory capacity to participate in network operations.
SUMMARY OF THE INVENTION Systems and methods, consistent with the present invention, address this and other needs by providing mechanisms that permit communication devices with limited memory capacity to participate in network operations.
In accordance with the purpose of the invention as embodied and broadly described herein, a network is provided that includes a first communication device and a second communication device. The first communication device receives a first packet containing information for the first communication device, determines whether adequate resources exist for storing all or a part of the information, generates a second packet when inadequate resources are determined to exist, stores the information in the second packet, and transmits the second packet. The second communication device receives the second packet from the first communication device, generates a third packet, transfers the information to the third packet, and transmits the third packet to the first communication device. The first communication device receives the third packet containing the information, and processes the information in that packet. In another implementation consistent with the present invention, a communication device is provided. The communication device includes a memory and a processor. The processor receives a first packet containing information for processing by the communication device and determines whether to store the information in the memory. When the information is not to be stored, the processor generates a second packet having multiple fields, stores the information from the first packet in at least one field of the second packet, and transmits the second packet. The communication device also receives, in response to transmitting the second packet, a third packet containing the information and processes the information.
In yet another implementation consistent with the present invention, a method for processing information in a communications network having first and second communication devices is provided. The method includes receiving a packet by the first communication device, the packet containing information for processing by the first communication device; determining whether adequate resources exist for storing all or a part of the packet; failing to acknowledge the packet when inadequate resources are determined to exist; retransmitting the packet to the first communication device; processing the information in the retransmitted packet when adequate resources are determined to exist.
In still another implementation consistent with the present invention, a communication device includes a memory and a processor. The processor receives a packet, determines whether resources exist for processing all or a part of the packet, purposefully fails to acknowledge the packet when inadequate resources are determined to exist, receives a retransmitted version of the packet, and processes the retransmitted version when adequate resources are determined to exist.
In a further implementation consistent with the present invention, a communication device includes a memory and a processor. The processor determines whether all or a part of information is needed at a current time, generates a packet having multiple fields when the information is not needed at the current time, stores the information in at least one field of the packet, transmits the packet to a second communication device, receives a different packet from the second communication device, the different packet containing the information, and processes the information in the different packet when the information is determined to be needed. In yet a further implementation consistent with the present invention, a method for processing information in a communication network having a group of communication devices, includes receiving a first packet by a first communication device, storing information relating to a network connection between the first communication device and a second communication device in one or more fields of a second packet, transmitting the second packet to the second communication device, transferring the network connection information from the second packet to a third packet, transmitting the third packet to the first communication device, and processing the third packet.
In another implementation consistent with the present invention, a network includes a first communication device and a second communication device. The first communication device includes logic configured to receive a first packet, the first packet containing information for the first communication device, logic configured to determine whether adequate resources exist, logic configured to generate a second packet when inadequate resources are determined to exist, logic configured to store the information in the second packet, logic configured to transmit the second packet, logic configured to receive a third packet, the third packet containing the information, and logic configured to process the information. The second communication device includes logic configured to receive the second packet, logic configured to generate the third packet, logic configured to transfer the information to the third packet, and logic configured to transmit the third packet to the first communication device. BRIEF DESCRIPTION OF THE DRAWINGS The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate an embodiment of the invention and, together with the description, explain the invention. In the drawings, FIG. 1 illustrates an exemplary network consistent with the present invention;
FIG. 2 illustrates an exemplary communication device configuration in an implementation consistent with the present invention;
FIG. 3 illustrates an exemplary network peer configuration consistent with the present invention; FIG. 4 illustrates an exemplary process, consistent with the present invention, that allows for operation of a communication device having limited memory resources;
FIG. 5 illustrates an exemplary structure of a Transmission Control Protocol packet header;
FIG. 6 illustrates an exemplary exchange of packets, consistent with the present invention, between a communication device and a network peer;
FIG. 7 illustrates an exemplary process, according to an alternative implementation of the present invention, that allows for operation of a communication device having limited memory; and
FIG. 8 illustrates an exemplary process, according to another alternative implementation of the present invention, that allows for operation of a communication device having limited memory resources. DETAILED DESCRIPTION The following detailed description of the invention refers to the accompanying drawings. The same reference numbers in different drawings identify the same or similar elements. Also, the following detailed description does not limit the invention. Instead, the scope of the invention is defined by the appended claims.
Systems and methods, consistent with the present invention, provide mechanisms by which a device, having a limited memory capacity, may participate in a communication network. The device uses fields in packets to store data and/or control information that is not currently needed by the device. The device stores the data and/or control information in one or more fields, such as a timestamp field, of the packets with the knowledge of how the data and/or control information will be manipulated (if at all) by the network peer to which the packets are transmitted. When response packets are returned by the network peer, the device may process the data and/or control information in those packets. By transferring data and/or control information over the network until it is needed, a virtual memory is created. EXEMPLARY NETWORK
FIG. 1 illustrates an exemplary network 100 consistent with the present invention. The network 100 may include communication devices 110 and network peers 120 connected to a network 130. Three communication devices 110 and three network peers 120 have been shown in FIG. 1 for simplicity. In practice, the network 100 may include more or less communication devices 110 and network peers 120.
The network 130 may include one or more data communication networks, such as the Internet, an intranet, a wide area network, or the like. In one implementation consistent with the present invention, the network 130 includes a packet-based network that operates according to a communications protocol, such as a Transmission Control Protocol and all related protocols, as specified in "Requirements for Internet Hosts ~ Communication Layers," RFC1122, ftp://ftp.isi.edu/in-notes/rfcll22.txt. October 1989.
The communication devices 110 may include computer devices, electronic devices, or similar devices with or without extensive computational and/or memory resources. The communication devices 110 may connect to the network 130 via wired, wireless, or optical communication paths. In one implementation consistent with the present invention, the communication devices 110 connect to the network 130 using a data link protocol, such as the Serial Line Internet Protocol (SLIP), Ethernet, or Token Ring.
The network peers 120 may include computer devices, such as personal computers, servers, laptops, personal digital assistants (PDAs), etc. that connect to the network 130 via wired, wireless, or optical communication paths. According to an implementation consistent with the present invention, the network peers 120 communicate with the communication devices 110 via data packetized communication in accordance with a conventional protocol, such as the Transmission Control Protocol or another related protocol. The network peers 120 may communicate with the communication devices 110 or other network peers 120 via a virtual circuit, connection, or socket through the network 130.
It will be appreciated that while the communication devices 110 and network peers 120 are illustrated as different devices, the communication devices 110 and network peers 120 may be similarly constructed. As a result, it will be further appreciated that any device described hereafter can play the role of a communication device 110 or network peer 120 at different times in the same communication session or in different communication sessions. In other words, communication devices 110 may perform the functions described below as being performed by network peers 120. Similarly, network peers 120 may perform the functions described as being performed by communication devices 110. EXEMPLARY COMMUNICATION DEVICE
FIG. 2 illustrates an exemplary communication device 110 configuration in an implementation consistent with the present invention. The communication device 110 may include a bus 210, a processor 220, a local memory 230, an input device 240, an output device 250, and a communication interface 260. The bus 210 may include one or more conventional buses that permit communication among the components of the communication device 110.
The processor 220 may be any type of conventional processor or microprocessor that interprets and executes instructions. The local memory 230 may be a large or small capacity memory device, such as a random access memory (RAM), a read only memory (ROM), or another type of dynamic or static storage device that stores information and instructions for processing by the processor 220. In one implementation consistent with the present invention, the local memory 230 includes a small capacity memory device capable of storing a small amount of information (e.g., less than or equal to the amount of information included in a typical packet). The input device 240 may include any conventional mechanism that permits input of information into the communication device 110, such as a keyboard, a keypad, a mouse, data acquisition sensors, etc. The output device 250 may include any conventional mechanism that outputs information, including a display, a speaker, a transducer, an actuator, etc. The communication interface 260 may include any transceiver-like mechanism that enables the communication device 110 to communicate with other devices and systems. For example, the communication interface 260 may include mechanisms for communicating via a network, such as the network 130.
As will be described in detail below, a communication device 110 with insufficient resources, in an implementation consistent with the present invention, performs the necessary data packetization and transport protocol procedures for communicating over a network, such as network 130. The communication device 110 performs these tasks in response to processor 220 executing sequences of instructions contained in a computer-readable medium, such as the local memory 230. A computer-readable medium may include one or more memory devices and/or carrier waves. The instructions may be read into memory 230 from another computer-readable medium or from another device via the communication interface 260. Execution of the sequences of instructions contained in local memory 230 causes processor 220 to perform processes that will be described later. Alternatively, hardwired circuitry may be used in place of or in combination with software instructions to implement processes consistent with the present invention. For example, the components of the communication device 110 may be fully implemented in silicon via a combination of logic gates. Thus, the present invention is not limited to any specific combination of hardware circuitry and software.
EXEMPLARY NETWORK PEER FIG. 3 illustrates an exemplary network peer 120 configuration consistent with the present invention. The exemplary network peer 120 includes a bus 302, a processor 304, a main memory 306, a read only memory (ROM) 308, a storage device 310, an input device 312, an output device 314, and a communication interface 316. The bus 302 may include one or more conventional buses that permit communication among the components of the network peer 120. The processor 304 may include any type of conventional processor or microprocessor that interprets and executes instructions. The main memory 306 may include a random access memory (RAM) or another type of dynamic storage device that stores information and instructions for execution by the processor 304. Main memory 306 may also be used to store temporary variables or other intermediate information used during execution of instructions by processor 304. ROM 308 may include a conventional ROM device and/or another type of static storage device that stores static information and instructions for processor 304. The storage device 310 may include a magnetic disk or optical disk and its corresponding drive and/or some other type of magnetic or optical recording medium and its corresponding drive for storing information and/or instructions.
The input device 312 may include any conventional mechanism that permits input of information into the network peer 120, such as a keyboard, a mouse, a microphone, a pen, data acquisition sensors, voice recognition and/or biometric mechanisms, etc. The output device 314 may include any conventional mechanism that outputs information, including a display, a printer, a transducer, an actuator, a speaker, etc.
The communication interface 316 may include any transceiver-like mechanism that enables the network peer 120 to communicate with other devices and/or systems, such as communication devices 110. For example, the communication interface 316 may include a modem or an Ethernet interface to a network. Alternatively, communication interface 316 may include other mechanisms for communicating via a communication network, such as network 130.
The network peer 120 performs the functions described below in response to processor 304 executing sequences of instructions contained in a computer-readable medium, such as memory 306. The instructions may be read into memory 306 from another computer-readable medium, such as a storage device 310, or from a separate device via communication interface 316. Execution of the sequences of instructions contained in memory 306 causes processor 304 to perform the process steps that will be described later. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the present invention. For example, the components of the network peer 120 may be fully implemented in silicon via a combination of logic gates. Thus, the present invention is not limited to any specific combination of hardware circuitry and software.
EXEMPLARY PROCESSING FIG. 4 illustrates an exemplary process, consistent with the present invention, that allows a communication device having limited memory resources to participate in network operations. Processing begins with a communication device, such as communication device 110 in FIG. 1, receiving a packet via network 130 [step 410]. The packet may be received from a network peer, such as network peer 120 in FIG. 1, or another communication device 110. As described above, the communication device 110, in an implementation consistent with the present invention, may have very limited memory resources. As a result, the communication device 110 may be incapable of receiving an entire packet, or a significant portion of such a packet, into its memory 230 prior to analyzing and replying to the packet in accordance with the communication protocols implemented by the communication device 110.
Upon receipt of the packet, the communication device 110 determines whether adequate resources exist [step 420]. In making such a determination, the communication device 110 determines whether information in the packet can and should be stored at this time and whether the information can and should be processed at this time. The communication device 110 may determine that the information can not be stored at the present time if, for example, the communication device 110 currently lacks the memory capacity to store all or a portion of the information. The communication device 110 may determine that the information should not be stored at the present time if, for example, the information is not currently needed by the communication device 110, but will be needed at a later time. For example, the communication device 110 may determine that connection information and parameters related to the state of the connection itself should not be stored. In determining whether the information can and should be processed at the present time, the communication device 110 may determine whether all or a portion of the information can be processed immediately. For example, the communication device 110 may determine whether its processor 220 is currently performing other tasks that may not allow for the information to be processed at the current time. The communication device 110 may also determine whether the information should be processed immediately or whether the information should be processed at a later time due, for example, to higher priority tasks currently being performed by the processor 220.
If the communication device 110 determines that adequate resources exist (i.e., that information in the packet can and should be stored/processed at the present time), the communication device 110 processes the information [step 430]. The processing may include the processor 220 using data and/or control information in the packet for performing one or more tasks.
If the communication device 110 determines that adequate resources do not exist (i.e., that the information can not or should not be stored or that the information can not or should not be processed immediately), the communication device 110 generates a packet [step 440]. The communication device 110 may store important information from the received packet or other information to be later used by the communication device 110 in the packet. The information may include, for example, connection details and/or other control information that pertain to one or more network connections, virtual circuits, or sockets with which the communication device 110 is currently involved. The information may also include data to be later used in one or more tasks performed by the communication device 110. In fact, the communication device 110 may store any information in the packet that is not currently needed by the communication device
110, but will be needed at a later time.
The communication device 110 may store the information anywhere in the packet that would not interfere with the normal processing of the packet and would allow for the later retransmission of the information from the network peer 120 to the communication device 110. For example, assuming that the communication device 110 and network peer 120 communicate using the Transmission Control Protocol, the communication device 110 may store the information in the Transmission Control Protocol header of the generated packet. It will be appreciated that while the following description assumes the use of the Transmission Control Protocol, other communication protocols may alternatively be used.
FIG. 5 illustrates an exemplary structure of a Transmission Control Protocol packet header 500. The Transmission Control Protocol packet header 500 includes a source port field, a destination port field, a sequence number field, an acknowledge number field, a header length field, a reserved field, a flags field, a window size field, a checksum field, an urgent pointer field, and an options field. The source port and destination port fields include data that identify the source and destination of a data packet. The sequence number field includes data that identifies the first byte of data in the packet. The acknowledge field includes data that identifies the next byte of data that the source expects to receive from the destination. The header length field includes data that identifies the length of the header 500. The reserved field may be used for future expansions. The flags field may include several flags, such as Urgent, Acknowledge, Push, Reset, Synchronize, and Finish flags. The Urgent flag indicates whether the data in the urgent pointer field is valid. The Acknowledge flag indicates whether the data in the acknowledgement number field is valid. The Push flag indicates whether the accompanying data should be passed to the application at the destination in an expedited manner. The Reset flag indicates whether the connection should be reset. The Synchronize flag is used to establish an initial agreement on the sequence numbers. The Finish flag indicates whether the source has finished sending data.
The window size field includes data that identifies the amount of space the destination has available for storing unacknowledged data. The checksum field includes a checksum value that may cover both the header 500 and the data stored in the packet. The urgent pointer field includes data that identifies whether this packet should take priority over the normal data stream. The options field may contain any number of predefined options. The options field may, for example, contain a timestamp option that allows for a round trip time between the source and destination to be determined. When using such an option, the source stores a timestamp value in the timestamp field. The destination copies the timestamp value, without interpreting it, into a return packet. Upon receipt of the return packet, the source may determine the round trip time by subtracting a current time from the timestamp value.
Assume that the communication device 110 stores information, such as from the received packet, instead of a timestamp value, in the timestamp field of the Transmission Control Protocol header 500 of the generated packet. Once the packet has been generated, the communication device 110 transmits the packet to a network peer, such as network peer 120 in FIG. 1 [step 450]. This network peer 120 may be the network peer 120 that transmitted the packet that was received in step 410 or it may be another network peer 120. The network peer 120 receives the packet over network 130 [step 460]. Following the
Transmission Control Protocol, the network peer 120 generates a response packet and copies the information from the timestamp field into a timestamp field of the response packet for transmission back to the communication device 110. It will be appreciated that if the communication device 110 stores the information in a field other than the timestamp field, the network peer 120 may manipulate the information when copying it to the response packet. If this occurs, the communication device 110 must know of the manipulation performed by the network peer 120 in order to convert the information back to its original form or to another usable form.
The network peer 120 transmits the response packet to the communication device 110 [step 470]. Upon receipt, the communication device returns to step 410 and processing repeats until the communication device 110 determines that sufficient resources exist [step 420]. When the communication device 110 determines that sufficient resources exist [step 420], the communication device 110 processes the information [step 430].
FIG. 6 illustrates an exemplary exchange of packets, consistent with the present invention, between a communication device 110 and a network peer 120. In FIG 6, the communication device 110, having a limited memory capacity, requires a data element to be available for consultation and processing at a later point in time. Due to its limited memory capacity, the communication device 110 may be unable or unwilling to allocate memory to hold the value of the data element. According to an implementation consistent with the present invention, the communication device 110 generates a packet and stores the data element 602 in one of the fields of the packet. The communication device 110 places the data element 602 in a field of the packet with foreknowledge of how the data element 602 will be processed (or manipulated) by the network peer 120. The communication device 110 then transmits the packet to the network peer [step 610].
The network peer 120 receives the packet containing the data element 602 and, in accordance with it predefined protocol steps, copies the data element (or a manipulated version thereof) 604 to a field of a reply packet [step 620]. The network peer 120 then transmits the reply packet to the communication device [step 630]. The communication device 110 receives the packet having the data element (or a manipulated version thereof) 604. Having foreknowledge of the manner in which the network peer 120 manipulated the data element 602, the communication device 110 may then convert the data element 604 back to its original form or some other usable form for processing [step 640].
FIG. 7 illustrates an exemplary process, according to an alternative implementation of the present invention, that allows a communication device having limited memory resources to participate in network operations. Processing begins with a communication device, such as communication device 110 in FIG. 1, receiving a packet via network 130 [step 710]. The packet may be received from a network peer, such as network peer 120 in FIG. 1, or another communication device 110. As described above, the communication device 110, in an implementation consistent with the present invention, may have very limited memory resources. As a result, the communication device 110 may be incapable of receiving an entire packet, or a significant portion of such a packet, into its memory 230 prior to analyzing and replying to the packet in accordance with the communication protocols implemented by the communication device 110. Upon receipt of the packet, the communication device 110 generates a reply packet [step
720]. The communication device 110 then determines whether adequate resources exist [step 730]. In making such a determination, the communication device 110 determines whether information, such as data and/or control information, in the packet can and should be stored at this time and whether the information can and should be processed at this time. The communication device 110 may determine that the information can not be stored at the present time if, for example, the communication device 110 currently lacks the memory capacity to store all or a portion of the information. The communication device 110 may determine that the information should not be stored at the present time if, for example, the information is not currently needed by the communication device 110, but will be needed at a later time. In determining whether the information can and should be processed at the present time, the communication device 110 may determine whether all or a portion of the information can be processed immediately. For example, the communication device 110 may determine whether its processor 220 is currently performing other tasks that may not allow for the information to be processed at the current time. The communication device 110 may also determine whether the information should be processed immediately or whether the information should be processed at a later time due, for example, to higher priority tasks currently being performed by the processor
220.
If the communication device 110 determines that adequate resources do not exist (i.e., that the information can not or should not be stored or that the information can not or should not be processed immediately), the communication device 110 may store the information from the received packet or other information in the communication device 110 that is not needed at the current time in the reply packet [step 740].
The communication device 110 may also store, whether or not adequate resources are determined to exist [step 730], connection information in the reply packet [step 750]. The connection information may include, for example, connection details and/or other control information that pertain to one or more network connections, virtual circuits, or sockets with which the communication device 110 is currently involved. Storing the connection information in the reply packet, even in those instances where adequate resources exist for processing the packet and the information contained therein, allows for implementation of a smaller memory in the communication device 110.
The communication device 110 may store the information anywhere in the packet that would not interfere with the normal processing of the packet and would allow for the later retransmission of the information from the network peer 120 to the communication device 110.
For example, assuming that the communication device 110 and network peer 120 communicate using the Transmission Control Protocol, the communication device 110 may store the information in the timestamp field of the Transmission Control Protocol header of the generated packet. It will be appreciated that while the following description assumes the use of the
Transmission Control Protocol, other communication protocols may alternatively be used.
If adequate resources are determined to exist in step 730, the communication device 110 may process the packet and the information stored therein. Once the packet has been generated and the connection and other information has been stored in the packet, the communication device 110 transmits the reply packet to a network peer, such as network peer 120 in FIG. 1 [step 760]. This network peer 120 may be the network peer 120 that transmitted the packet that was received in step 710 or it may be another network peer 120. The network peer 120 receives the packet over network 130 [step 760]. Following the
Transmission Control Protocol, the network peer 120 generates a response packet and copies the information from the timestamp field into a timestamp field of the response packet for transmission back to the communication device 110. It will be appreciated that if the communication device 110 stores the information in a field other than the timestamp field, the network peer 120 may manipulate the information when copying it to the response packet. If this occurs, the communication device 110 must know of the manipulation performed by the network peer 120 in order to convert the information back to its original form or to another usable form.
The network peer 120 transmits the response packet to the communication device 110 [step 770]. Upon receipt, the communication device returns to step 710 and processing repeats. FIG. 8 illustrates an exemplary process, according to another alternative implementation of the present invention, that allows a communication device having limited memory resources to participate in network operations. Processing begins with a communication device, such as communication device 110 in FIG. 1, receiving a packet via network 130 [step 810]. The packet may be received from a network peer, such as network peer 120. As described above, the communication device 110, in an implementation consistent with the present invention, may have very limited memory resources. As a result, the communication device 110 may be incapable of receiving or unwilling to receive an entire packet, or a significant portion of such a packet, into its memory 230 prior to analyzing and replying to the packet in accordance with the communication protocols implemented by the communication device 110. Upon receipt of the packet, the communication device 110 determines whether adequate resources exist [step 820]. In making such a determination, the communication device 110 determines whether the packet can and should be stored at this time and whether the packet can and should be processed at this time. The communication device 110 may determine that the packet can not be stored at the present time if, for example, the communication device 110 currently lacks the memory capacity to store all or a portion of the packet. The communication device 110 may determine that the packet should not be stored at the present time if, for example, the information in the packet is not currently needed by the communication device 110, but will be needed at a later time. In determining whether the packet can and should be processed at the present time, the communication device 110 may determine whether all or a portion of the packet can be processed immediately. For example, the communication device 110 may determine whether its processor 220 is currently performing other tasks that may not allow for all or a portion of the packet to be processed at the current time. The communication device 110 may also determine whether the packet should be processed immediately or whether all or a portion of the packet should be processed at a later time due, for example, to higher priority tasks currently being performed by the processor 220.
If the communication device 110 determines that the packet can and should be stored and that the packet can and should be processed immediately, the communication device 110 processes the packet [step 830]. The processing may include the processor 220 using data and/or control information in the packet for performing one or more tasks.
If the communication device 110 determines that adequate resources do not exist, the communication device 110 does not acknowledge or incompletely acknowledges the received packet [step 840]. By not acknowledging or incompletely acknowledging the received packet, the communication device 110 causes the network peer 120 to believe that the communication device 110 did not receive the entire packet. As a result, the network peer 120 will automatically retransmit the packet to the communication device 110 after a predetermined timeout period expires. Similar to the process described above with respect to FIG. 4, the communication device 110 can have data that is needed at a later time or that can not be processed immediately made available at a later time.
After a predetermined timeout period expires, the network peer 120, having not received an acknowledgement to the transmitted packet, retransmits the packet to the communication device 110 [step 850]. Upon receipt, the communication device 110 returns to step 710 and processing repeats until the communication device 110 determines that sufficient resources exist [step 820]. It will be appreciated that typical communication protocols may not allow this technique to continue indefinitely. The network peer 120 may only retransmit an unacknowledged packet a predetermined number of times before determining that the transmission has failed.
When the communication device 110 determines that sufficient resources exist [step 820], the communication device 110 processes the packet [step 830].
CONCLUSION
Systems and methods consistent with the present invention provide a mechanism by which a device with a limited memory capacity may participate in a communication network.
The device uses fields in packets to store data and/or control information that is not needed by the device at the current time. The device stores the data and/or control information in one or more fields of the packets with knowledge of how the data and/or control information will be manipulated (if at all) by the network peer to which the packets are transmitted. When response packets are returned by the network peer, the device processes the data and/or control information if received at a time when the data and/or control information is needed. By transmitting data and/or control information to a network peer until needed, the device, in essence, uses the packets and network peer as a virtual memory.
The foregoing description of exemplary embodiments of the present invention provides illustration and description, but is not intended to be exhaustive or to limit the invention to the precise form disclosed. Modifications and variations are possible in light of the above teachings or may be acquired from practice of the invention. For example, while a series of steps have been shown with respect to FIGS. 4, 7, and 8, the order of the steps may vary in other implementations consistent with the present invention. No step or element is critical to the present invention unless specifically indicated as such in the above description. For example, while the flowchart in FIG. 4 indicates that the process operates in response to receiving a packet, implementations consistent with the present invention are not so limited. In fact, any time that the communication device determines that data and/or control information is not currently needed, the communication device may use its virtual memory by transferring the data and/or control information to a network peer in order to have that data and/or control information later returned by that network peer.
The scope of the invention is defined by the following claims and their equivalents.

Claims

WHAT IS CLAIMED IS:
1. A method for processing information in a communication network having first and second communication devices, comprising: receiving a first packet by the first communication device, the first packet containing information for processing by the first communication device; determining whether adequate resources exist; storing, when inadequate resources are determined to exist, the information from the first packet in a field of a second packet; transmitting the second packet to the second communication device; transferring, via the second communication device, the information to a third packet; transmitting the third packet to the first communication device; and processing the information in the third packet.
2. The method of claim 1 wherein the determining includes: determining whether adequate resources exist for storing the first packet.
3. The method of claim 2 wherein the determining whether adequate resources exist for storing the first packet includes: determining whether the first packet can be stored, and determining whether the first packet should be stored.
4. The method of claim 1 wherein the determining includes: determining whether adequate resources exist for processing the first packet.
5. The method of claim 4 wherein the determining whether adequate resources exist for processing the first packet includes: determining whether the first packet can be processed immediately, determining whether the first packet should be processed immediately.
6. The method of claim 1 further comprising: generating the second packet by the first communication device, the second packet having a timestamp field.
7. The method of claim 6 wherein the storing includes: storing the information from the first packet in the timestamp field of the second packet.
8. The method of claim 1 further including: manipulating, via the second communication device, the information prior to transferring to the third packet.
9. The method of claim 8 further comprising: converting, via the first communication device, the manipulated information back to its original form prior to processing.
10. The method of claim 1 wherein the information includes data.
11. The method of claim 1 wherein the information includes control information.
12. The method of claim 11 wherein the control information includes information relating to one or more network connections, virtual circuits, or sockets.
13. The method of claim 1 further comprising: storing, prior to transmitting the second packet, connection information in one or more fields of the second packet when adequate resources are determined to exist.
14. A network comprising: a first communication device configured to receive a first packet, the first packet containing information for the first communication device, determine whether adequate resources exist, generate a second packet when inadequate resources are determined to exist, store the information in the second packet, transmit the second packet, receive a third packet, the third packet containing the information, and process the information; and a second communication device configured to receive the second packet, generate the third packet, transfer the information to the third packet, and transmit the third packet to the first communication device.
15. The network of claim 14 wherein, when determining, the first communication device is configured to: determine whether adequate resources exist for storing the information.
16. The network of claim 15 wherein, when determining whether adequate resources exist for storing the information, the first communication device is configured to: determine whether the information can be stored, and determine whether the information should be stored.
17. The network of claim 14 wherein, when determining, the first communication device is configured to: determine whether adequate resources exist for processing the information.
18. The network of claim 17 wherein, when determining whether adequate resources exist for processing the information, the first communication device is configured to: determine whether the information can be processed, and determine whether the information should be processed.
19. The network of claim 14 wherein, when storing, the first communication device is configured to: store the information from the first packet in a timestamp field of the second packet.
20. The network of claim 14 wherein the second communication device is further configured to: manipulate the information prior to transferring to the third packet.
21. The network of claim 20 wherein the first communication device is further configured to: convert the manipulated information back to its original form prior to processing.
22. The network of claim 14 wherein the first communication device has limited memory resources and the second communication device is a network peer.
23. The network of claim 14 wherein the information includes data.
24. The network of claim 14 wherein the information includes control information.
25. The network of claim 24 wherein the control information includes information relating to one or more network connections, virtual circuits, or sockets.
26. The network of claim 14 wherein the first communication device is implemented in logic.
27. The network of claim 14 wherein the first and second communication device are implemented in logic.
28. A system for processing information, comprising: means for receiving a first packet, the first packet containing information to be processed by a first communication device; means for determining whether adequate resources exist for storing the information; means for placing, when inadequate resources are determined to exist, the information from the first packet in a field of a second packet; means for transmitting the second packet from the first communication device to a second communication device; means for transferring the information to a third packet; means for transmitting the third packet from the second communication device to the first communication device; and means for processing the information in the third packet by the first communication device.
29. A communication device comprising: a memory configured to store instructions; and a processor configured to execute the instructions to receive a first packet containing information for processing by the communication device, determine whether to store the information in the memory, generate a second packet when the information is not to be stored, the second packet having a plurality of fields, store the information from the first packet in at least one field of the second packet, transmit the second packet, receive, in response to transmitting the second packet, a third packet containing the information, and process the information.
30. The communication device of claim 29 wherein, when determining, the processor is configured to: determine whether the memory is capable of storing the information.
31. The communication device of claim 29 wherein, when determining, the processor is configured to: determine whether the information should be stored in the memory.
32. The communication device of claim 29 wherein the processor is further configured to: determine, in response to receiving the first packet, whether adequate resources exist for processing the information.
33. The communication device of claim 29 wherein, when receiving the third packet, the processor is configured to: receive a manipulated version of the information in the third packet.
34. The communication device of claim 33 wherein the processor is further configured to: convert, prior to processing, the manipulated information in the third packet back to its original form.
35. The communication device of claim 29 wherein the information includes data.
36. The communication device of claim 29 wherein the information includes control information.
37. The communication device of claim 36 wherein the control information pertains to one or more connections, virtual circuits, or sockets.
38. The communication device of claim 29 wherein, when storing, the processor is configured to : store the information in a timestamp field of the second packet.
39. The communication device of claim 29 wherein, prior to processing, the processor is configured to: repeat the determining, generating, storing, transmitting, and receiving the third packet until the communication device is ready to process the information.
40. A computer-readable medium containing instructions for controlling at least one processor of a communication device to perform a method for processing information, the method comprising: receiving a first packet containing information for processing by the communication device; determining whether to store the information; generating a second packet when the information is not to be stored, the second packet having a plurality of fields; transferring the information from the first packet to a field of the second packet; transmitting the second packet to a second communication device; receiving a third packet containing the information from the second communication device; and processing the information in the third packet.
41. The computer-readable medium of claim 40 wherein the determining includes: determining whether the communication device is capable of storing the information.
42. The computer-readable medium of claim 40 wherein the determining includes: determining whether the communication device should store the information.
43. The computer-readable medium of claim 40 wherein the method further includes: determining, in response to receiving the first packet, whether adequate resources exist for processing the information.
44. The computer-readable medium of claim 40 wherein the receiving the third packet includes: receiving a manipulated version of the information in the third packet.
45. The computer-readable medium of claim 44 wherein the method further includes: converting, prior to processing, the manipulated information in the third packet back to its original form.
46. The computer-readable medium of claim 40 the information includes data.
47. The computer-readable medium of claim 40 wherein the information includes control information.
48. The computer-readable medium of claim 47 wherein the control information pertains to one or more connections, virtual circuits, or sockets.
49. The computer-readable medium of claim 40 wherein the transferring includes: transferring the information from the first packet to a timestamp field of the second packet.
50. A method for processing information in a network having a first communication device and a second communication device, the method, being performed by the first communication device, comprising: receiving one or more first packets, each of the first packets containing information for processing by the first communication device; determining, for each of the one or more first packets, whether to store the information; generating, for each of the one or more first packets, a second packet when the information in that packet is not to be stored, the second packet having a plurality of fields; transferring the information from each of the first packets to at least one field of the corresponding second packet; transmitting each second packet to the second communication device; receiving, for each second packet transmitted, a third packet containing the information from the second communication device; and processing the information in each of the third packets.
51. The method of claim 50 wherein the determining includes: determining, for each of the one or more first packets, whether the first communication device is capable of storing the information.
52. The method of claim 50 wherein the determining includes: determining, for each of the one or more first packets, whether the first communication device should store the information.
53. The method of claim 50 wherein the method further includes: determining, for each of the one or more first packets, whether adequate resources exist for processing the information in the first packet.
54. The method of claim 50 wherein the receiving the third packet includes: receiving a manipulated version of the information in at least one of the third packets.
55. The method of claim 54 wherein the method further includes : converting, prior to processing, the manipulated information in the at least one third packet back to its original form.
56. A method for processing information in a communications network having first and second communication devices, comprising: receiving a packet by the first communication device, the packet containing information for processing by the first communication device; determining whether adequate resources exist; failing to acknowledge the packet when inadequate resources are determined to exist; retransmitting the packet to the first communication device; and processing the information in the retransmitted packet when adequate resources are determined to exist.
57. The method of claim 56 wherein the retransmitting includes: waiting for a timeout period to expire before retransmitting the packet.
58. The method of claim 56 wherein the determining includes: determining whether adequate resources exist for storing or processing the packet.
59. A network comprising: a first communication device configured to receive a packet, determine whether adequate resources exist, fail to acknowledge the packet when inadequate resources are determined exist, receive a retransmitted packet, and process the retransmitted packet; and a second communication device configured to transmit the packet to the first communication device, determine whether a predetermined period of time has expired since the packet was transmitted, and retransmit the packet to the first communication device when the predetermined time expires.
60. The network of claim 59 wherein, when determining, the first communication device is configured to: determine, prior to failing to acknowledge, at least one of whether adequate resources exist for storing the packet and whether adequate resources exist for processing the packet.
61. A communication device comprising: a memory configured to store instructions; and a processor configured to execute the instructions to receive a packet, determine whether adequate resources exist for processing the packet, purposefully fail to acknowledge the packet when inadequate resources are determined to exist, receive a retransmitted version of the packet, and process the retransmitted version when adequate resources are determined to exist.
62. The commimication device of claim 61 wherein, when determining, the processor is configured to: determine whether the memory is capable of storing the packet.
63. The communication device of claim 62 wherein, when determining whether resources exist, the processor is further configured to: determine whether the packet can and should be processed.
64. A computer-readable medium containing instructions for controlling one or more processors to perform a method for processing a packet, the method comprising: receiving at least one packet; determining whether resources exist for processing each of the at least one packet; purposefully failing to acknowledge each packet for which inadequate resources are determined to exist; receiving a retransmitted version of each packet that was not acknowledged; and processing the retransmitted version of each packet when adequate resources are determined to exist.
65. The computer-readable medium of claim 64 wherein the determining includes: determining whether the packet can be stored.
66. The computer-readable medium of claim 65 wherein the determining whether resources exist includes: determining whether the packet can and should be processed.
67. A communication device comprising: a memory configured to store instructions; and a processor configured to execute the instructions to determine whether information is needed at a current time, generate a packet having a plurality of fields when the information is not needed at the current time, store the information in at least one field of the packet, transmit the packet to a second communication device, receive a different packet from the second communication device, the different packet containing the information, and process the information in the different packet when the information is determined to be needed.
68. The communication device of claim 67 wherein, when storing, the processor is configured to: store the information in a timestamp field of the packet.
69. A method for processing information in a communication network having a plurality of communication devices, comprising: receiving a first packet by a first of the plurality of communication devices; storing information relating to a network connection between the first communication device and a second of the plurality of communication devices in one or more fields of a second packet; transmitting the second packet to the second communication device; transferring the network connection information from the second packet to a third packet; transmitting the third packet to the first communication device; and processing the third packet.
PCT/US2000/021280 1999-08-07 2000-08-04 Virtual memory systems and methods WO2001067272A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU67580/00A AU6758000A (en) 1999-08-07 2000-08-04 Virtual memory systems and methods

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14776499P 1999-08-07 1999-08-07
US60/147,764 1999-08-07

Publications (1)

Publication Number Publication Date
WO2001067272A1 true WO2001067272A1 (en) 2001-09-13

Family

ID=22522810

Family Applications (2)

Application Number Title Priority Date Filing Date
PCT/US2000/040576 WO2002009370A1 (en) 1999-08-07 2000-08-04 Systems and methods for transmitting data packets
PCT/US2000/021280 WO2001067272A1 (en) 1999-08-07 2000-08-04 Virtual memory systems and methods

Family Applications Before (1)

Application Number Title Priority Date Filing Date
PCT/US2000/040576 WO2002009370A1 (en) 1999-08-07 2000-08-04 Systems and methods for transmitting data packets

Country Status (2)

Country Link
AU (2) AU7757000A (en)
WO (2) WO2002009370A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6961777B1 (en) * 1999-08-06 2005-11-01 Shrikumar Hariharasubrahmanian Systems and methods for predicting fields in a data packet

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5084877A (en) * 1989-05-05 1992-01-28 At&T Bell Laboratories High speed transport protocol
US5781615A (en) * 1995-08-30 1998-07-14 Lucent Technologies Inc. Fully distributed message storage facilities in a distributed switching system
US5862335A (en) * 1993-04-01 1999-01-19 Intel Corp. Method and apparatus for monitoring file transfers and logical connections in a computer network
US6098172A (en) * 1997-09-12 2000-08-01 Lucent Technologies Inc. Methods and apparatus for a computer network firewall with proxy reflection

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995034153A1 (en) * 1994-06-08 1995-12-14 Hughes Aircraft Company Apparatus and method for hybrid network access
JP3482091B2 (en) * 1997-01-09 2003-12-22 株式会社東芝 Communication device
US6006268A (en) * 1997-07-31 1999-12-21 Cisco Technology, Inc. Method and apparatus for reducing overhead on a proxied connection

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5084877A (en) * 1989-05-05 1992-01-28 At&T Bell Laboratories High speed transport protocol
US5862335A (en) * 1993-04-01 1999-01-19 Intel Corp. Method and apparatus for monitoring file transfers and logical connections in a computer network
US5781615A (en) * 1995-08-30 1998-07-14 Lucent Technologies Inc. Fully distributed message storage facilities in a distributed switching system
US6098172A (en) * 1997-09-12 2000-08-01 Lucent Technologies Inc. Methods and apparatus for a computer network firewall with proxy reflection

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6961777B1 (en) * 1999-08-06 2005-11-01 Shrikumar Hariharasubrahmanian Systems and methods for predicting fields in a data packet

Also Published As

Publication number Publication date
AU6758000A (en) 2001-09-17
AU7757000A (en) 2002-02-05
WO2002009370A1 (en) 2002-01-31

Similar Documents

Publication Publication Date Title
US7185114B1 (en) Virtual memory systems and methods
CN100399282C (en) State recovery and failover of intelligent network adapters
Braden Requirements for Internet hosts-communication layers
US5931916A (en) Method for retransmitting data packet to a destination host by selecting a next network address of the destination host cyclically from an address list
Velten et al. Reliable data protocol
US20040190557A1 (en) Signaling packet
US20060126652A1 (en) Point-to point protocol
US7009967B1 (en) Systems and methods for transmitting data packets
JPH11143845A (en) System and method for message transmission between network nodes
US6819681B1 (en) Systems and methods for predicting data fields in layered protocols
US6543005B1 (en) Transmitting data reliably and efficiently
WO2009045498A1 (en) Thin client discovery
US7197046B1 (en) Systems and methods for combined protocol processing protocols
US7000024B1 (en) Systems and methods for providing transmission control protocol communications
JPH10308791A (en) Method and equipment for data communication and data communication program recording medium
CN110838935A (en) High-availability SDN controller clustering method, system, storage medium and equipment
JPH02228854A (en) Data communication system and data communication method
US6961777B1 (en) Systems and methods for predicting fields in a data packet
JP3569149B2 (en) Communication control device
CN109067506A (en) A kind of lightweight asynchronous message implementation method concurrent based on multi-slide-windows mouth
Cooper An argument for soft layering of protocols
WO2022259452A1 (en) Intermediate device, communication method, and program
WO2001067272A1 (en) Virtual memory systems and methods
US7672239B1 (en) System and method for conducting fast offloading of a connection onto a network interface card
EP1206862A1 (en) Systems and methods for predicting fields in a data packet

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP