WO2013153694A1 - Communication device, method, and system for relaying communication between client and server - Google Patents

Communication device, method, and system for relaying communication between client and server Download PDF

Info

Publication number
WO2013153694A1
WO2013153694A1 PCT/JP2012/079310 JP2012079310W WO2013153694A1 WO 2013153694 A1 WO2013153694 A1 WO 2013153694A1 JP 2012079310 W JP2012079310 W JP 2012079310W WO 2013153694 A1 WO2013153694 A1 WO 2013153694A1
Authority
WO
WIPO (PCT)
Prior art keywords
file
client
buffer
prefetch
server
Prior art date
Application number
PCT/JP2012/079310
Other languages
French (fr)
Japanese (ja)
Inventor
伊藤 大輔
隆史 磯部
Original Assignee
株式会社日立製作所
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 株式会社日立製作所 filed Critical 株式会社日立製作所
Publication of WO2013153694A1 publication Critical patent/WO2013153694A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files

Definitions

  • the present invention relates to a communication device, and more particularly to a communication device that controls transfer of file data between a client and a server.
  • Japanese Patent Application Laid-Open Publication No. 2003-260259 discloses a technology that realizes high-speed WAN by performing bandwidth control with TCP (Transmission Control Protocol) when performing communication between a data center (DC) and a base via a wide area network (Wide Area Network, WAN). 1 is disclosed.
  • TCP Transmission Control Protocol
  • CIFS Common Internet File System
  • Patent Document 3 discloses a technique related to communication between a file server and a client according to the CIFS protocol.
  • Patent Document 2 operates as a proxy on a network, predicts a CIFS message from a user (referred to as “prediction” in Patent Document 2), and first sends a message to a network storage (Network Attached Storage, NAS).
  • NAS Network Attached Storage
  • a communication device between a client and a server places a limit on the amount of data to be read ahead for access from the client.
  • the progress of access from the client to the pre-read data is monitored, and additional pre-read processing is controlled according to the monitoring result.
  • Example sequence of Example 1 System configuration of the first embodiment Example sequence of Example 1 System flowchart Device configuration of application acceleration device Processing flow of input processing unit Processing flow of the output processing unit Table managed by the output processing unit Processing flow A of prefetch processing unit Processing flow B of prefetch processing unit Processing flow C of prefetch processing unit Processing flow D of prefetch processing unit Processing flow E of the prefetch processing unit Processing flow F of prefetch processing unit Access pattern and prefetch buffer size System configuration of the second embodiment
  • Example sequence of Example 2 Processing flow of input processing unit Processing flow of the output processing unit Processing flow B of prefetch processing unit Processing flow D of prefetch processing unit Processing flow E of the prefetch processing unit Processing flow G of prefetch processing unit
  • the figure which shows a prefetch request management table The figure which shows a prefetch data management table.
  • FIG. 2 shows an overall configuration of the first embodiment including a client that uses a file and a file server that manages the file.
  • a client that uses a file
  • a file server that manages the file.
  • an efficient use form of storage resources and communication resources for file sharing will be described. It also speeds up the provision of file data to client computers.
  • the client 101 and the file server 102 are connected via the WAN 201.
  • the client 101 is connected to the file server 102 via a network and uses a file managed by the file server.
  • the client 101 is, for example, a computer, an information processing terminal, or a portable information processing terminal such as a smartphone, and is an information processing apparatus that uses a file on a server.
  • the file server 102 is a server or the like having a file input / output control unit 5800 and a storage 5900 for storing a plurality of files, and is an information processing apparatus that provides files via a network.
  • the file input / output control unit 5800 notifies the client 101 of the identifier of the corresponding file, reads the partial data of the file from the storage 5900, and sends it to the WAN in response to a request via the WAN. To do.
  • the client 101 is connected to the WAN 102 via the application acceleration device 1 (105) and the TCP acceleration device 1 (103), and the file server 102 is connected to the application acceleration device 2 (106) and the TCP acceleration device 2. Connect to the WAN 201 via (104).
  • the TCP speed-up devices 103 and 104 provide the speed-up function of the fourth transport layer (L4) using the speed-up technique disclosed in Patent Document 1, for example.
  • the TCP acceleration device may be a WAN bandwidth control device. For example, transmission control for transmitting a pre-read request by the TCP acceleration device application acceleration device 105 to the WAN communication band is performed.
  • the WAN bandwidth control device 103 sets the bandwidth to be transmitted according to the packet discard status or retransmission occurrence status on the WAN according to the Layer 4 TCP (Transmission Control Protocol) defined in the OSI (Open Systems Interconnection) reference model.
  • the prefetch request is transmitted in the set bandwidth.
  • the WAN bandwidth control device determines whether the set bandwidth is within a predetermined upper limit bandwidth, and if the determination result is within the bandwidth, the WAN bandwidth control device performs a compliance determination to transmit a packet such as a prefetch request. You may go.
  • data communication is performed between the WAN bandwidth control devices according to TCP.
  • the packet includes a file identifier, file data, a command for controlling file processing to the server, or a command for controlling file processing on the client side.
  • the application acceleration device is in charge of the 5th to 7th layers specified by OSI.
  • OSI For example, the control for speeding up the CIFS (Common Internet File System) which is the 7th layer application layer (L7) application I do.
  • the application layer is also the fourth layer among the four layers in the TCP / IP reference model.
  • the application layer in the TCP / IP reference model corresponds to the application layer, presentation layer, and session layer of the OSI reference model.
  • the application acceleration device 105 is a communication device that, when receiving an acquisition request for accessing a file from the client 101, executes prefetching of partial data of the file to the file server via the WAN.
  • the application acceleration device 105 includes a prefetch buffer, holds the partial data of the file obtained by prefetching via the WAN, and holds the partial data of the prefetched file that is held in response to a subsequent request from the client. Return from prefetch buffer.
  • the application acceleration apparatus 105 determines the prefetching amount and the prefetching position according to the access status of the file from the client 101, for example, the read request of the file from the client or the transmission status of the prefetched data to the client,
  • the file server 102 is further prefetched with the partial data of the file, and the prefetched partial data of the file is held in the prefetch buffer.
  • the application acceleration apparatus 105 may be provided on either the file server 102 side or the client side (described later in the second embodiment) instead of both the client side and the server side. In this case, on the file server 102 side, the application acceleration device 105 is provided between the WAN 201 and the file server 102.
  • the application acceleration device 105 and the TCP acceleration device 103 may be a single communication system instead of separate devices.
  • the communication system includes a processing unit, a LAN transmission / reception unit, and a WAN transmission / reception unit corresponding to the application acceleration device 105 and the TCP acceleration device 103, which are connected by a signal line such as BUS or an internal switch.
  • the LAN transmission / reception unit receives a request or transmits data via the client and the network, the LAN transmission / reception unit sends a prefetch request to the file server 102 to the WAN.
  • the WAN transmission / reception unit receives, from the WAN, a file identifier, file partial data, and a command for controlling processing related to the file on the client side.
  • the communication system is connected to a plurality of clients 101 via a local network (LAN), is connected to a file server 102 via a wide area network (WAN), and relays data communication between the client 101 and the file server 102. Control the data communication bandwidth.
  • the communication system holds the partial data of the prefetched file acquired from the file server in the buffer, performs read control from the buffer according to the read request from the client, and acquires the partial data of the file by the further prefetch request.
  • the communication system may be a LAN gateway device.
  • the application speed-up device 105 realizes speeding up of the response to the request from the client based on Layer 5-7, and the TCP speed-up device 103 speeds up the WAN bandwidth in Layer 4.
  • the above is the configuration example of the application acceleration device.
  • FIG. 1 is an example of a sequence according to the first embodiment.
  • the application acceleration apparatuses 1 (105) and 2 (106) are provided on the client 101 side and the file server 102 side.
  • TCP speed-up devices that control the WAN communication band are provided at a plurality of WAN sites.
  • TID is an abbreviation of process identification number (Transaction IDentifier), and it is assumed that a request can be uniquely identified by TID within the same session.
  • a session is a series of messages exchanged by a certain client 101 from when a certain user logs in to when the user logs out, and the session ID can easily be identified from which session the command belongs to.
  • the same TID is attached to a response command for a certain request command, and the request and the response can be easily identified from the format.
  • the TID is not only uniquely identifiable, but is also required to be a serial number that specifies the relationship between the preceding and succeeding requests or responses, and their combinations. Therefore, in order to prevent TID mismatch between the client 101 side and the file server 102 side, the application acceleration apparatuses 1 (105) and 2 (106) reassign TIDs and manage them individually. Specific examples of individual management will be described later.
  • the open command is a command for making the file specified by the argument available.
  • “/foo/bar.txt” specified by an argument is a usable target.
  • the “SMB2_CREATE” command is an open command.
  • an exclusive control request is also made in the argument of the open command.
  • the exclusive control right is requested with “x (exclusive)” specified by the argument.
  • a request for exclusive control is performed with an argument “RequestedOplockLevel”.
  • the file server 102 returns a response 112 to the open command 111.
  • the response of the open command includes a file identifier (File Identifier, FID) specified by an argument of the open command.
  • FID File Identifier
  • the file name “/foo/bar.txt” is not an A but a FID. Is an argument. Also, in some file sharing protocols, an exclusive control right acquisition result is also returned.
  • the response 112 may include an acquisition result of the exclusive control right of the file stored in the file server.
  • an exclusive control right acquisition result is returned in an argument “OplockLevel”.
  • the obtained results are “SMB2_OPLOCK_LEVEL_NONE”, “SMB2_OPLOCK_LEVEL_II”, “SMB2_OPLOCK_LEVEL_EXCLUSIVE”, “SMB2_OPLOCK_LEVEL_BATCH”, “SMB2_OPLOCK_LEVEL_NOL”, and “SMB2_OPLOCK_LEVEL_LEV”.
  • the response 112 of the open command first passes to the application acceleration device 2 (106) (113).
  • the application acceleration device 2 (106) checks the acquisition result of the exclusive control right included in the response 112 of the open command. If the exclusive control right is obtained, communication with the file server 102 such as FID and other authentication information is performed. The necessary information is also read. Thereafter, the open command response 112 reaches the client 101 via the devices 104, 103, and 105.
  • the application acceleration device 2 (106) prefetches the partial data of the file using the FID acquired in the response (113). Specifically, the application acceleration device 2 (106) transmits 121 a read command to the file server (102).
  • the read command takes three arguments: FID, reading offset, and reading length.
  • the read command transmitted in the sequence 121 has an FID of A (that is, “/foo/bar.txt”), a reading offset of 0 (that is, reading from the beginning of the file), and a reading length of 1000.
  • the application acceleration device 2 (106) receives the response (122) of the read command transmitted from the file server 102 in the sequence 121.
  • the response 122 received here includes a partial data entity of the file “/foo/bar.txt”.
  • the application acceleration device 2 (106) pairs the two so that the relationship between the transmitted command 121 and the received response 122 can be understood, and the application acceleration device 1 (105) via the TCP acceleration devices 104 and 103. ) (123).
  • the prefetch buffer size is 4000. Details of the prefetch buffer size will be described later.
  • the client 101 also reads the file whose FID is A after receiving the response 112 to the open command 111.
  • a read command (131) having a reading offset of 0 and a reading length of 500 is transmitted to the file server 102.
  • the application acceleration device 1 (105) on the path to the file server 102 receives the read command (131), it returns the processing result for the command from the prefetch buffer of the file server 102 itself. Subsequently, even if a read command (132) with a read offset of 500 and a read length of 500 is transmitted, the application acceleration device 1 (105) returns the result from the prefetch buffer.
  • the application acceleration device 1 (105) returns the result from the prefetch buffer, but at this time, half of the prefetch buffer (2000) partial data Has been read, the threshold for prefetch buffer management of the application acceleration device 1 is reached (134). Therefore, the application acceleration apparatus 1 (105) makes an addition prefetch request (135) to the application acceleration apparatus 2 (106), and prefetches partial data of a file having a prefetch buffer size (136).
  • the threshold value is 50% (half) here, the threshold value is an arbitrary value defined by the user or system.
  • the TID on the client 101 side at this point is 4 (133), while the TID on the file server (102) side is 6 (136). This is because the application acceleration apparatuses 1 (105) and 2 (106) reassign TIDs and manage them individually as described above.
  • the application acceleration device 2 (106) on the file server side 102 divides the read-ahead of partial data of a predetermined amount of the file A among the files A multiple times.
  • the partial data of the file obtained over a plurality of times is transferred to the application acceleration apparatus 1 (105).
  • the application acceleration device holds the partial data of the transferred file in a buffer, and returns the partial data of the file to the read command (131) of the client 101. If the read (131, 132, 133) from the client exceeds the threshold for the partial data of the file held in the buffer, the application acceleration device 1 (105) on the client 101 side further processes the file server.
  • the application acceleration device 2 (106) on the (102) side makes an additional prefetch request (135) to the file server (102).
  • prefetching of partial data of a certain file is performed little by little in accordance with the reading of the end user, so that prefetching for a specific client does not occupy a line.
  • prefetching partial data of a certain file little by little in accordance with the partial data acquisition request of the client, it is possible to avoid the case where the client stops acquiring partial data or prefetching extra partial data.
  • the bandwidth for prefetching the extra partial data is used for other communications. It can be used effectively.
  • the processing is the same as 112 and 113 in FIG. 1 until the client 101 transmits the open command 301 and the application acceleration apparatus 2 (106) performs prefetching accordingly.
  • the request of the client 101 is a request for partial data of the files from 6000 to 6499
  • the application acceleration apparatus 1 (105) only prefetches the partial data of the files from 0 to 3999.
  • the application acceleration apparatus 1 (105) determines that the prefetch has come off 311 and issues an additional prefetch request 312 from the offset 6000 to the application acceleration apparatus 2 (106).
  • the application acceleration device 2 (106) performs prefetching for the prefetch buffer size.
  • the bandwidth for prefetching the partial data of the extra file is valid for other communications. Can be used.
  • the processing starts from the open command reception 401 of the application acceleration apparatus 1 (105), and thereafter, the open command is transferred to the file server 102 via each of the apparatus TCP acceleration apparatuses 103 and 104 and the application acceleration apparatus 106.
  • the response application acceleration device 105 from the file server 102 receives a file identifier (FID) response via the application device 106, it is returned to the client 101 (402).
  • FID file identifier
  • the application acceleration device 2 (106) transmits a read command for the prefetch buffer size (122 in FIG. 1) to the file server 102 and transfers the result to the application acceleration device 1 (105). (403) (124 in FIG. 1).
  • the application acceleration device 1 (105) waits for a command from the client (101). It is determined whether or not the received command is a close command 404, and if it is not close, it is subsequently determined 405 whether or not it is a read command. If it is not a read command, the application acceleration devices 1 (105) and 2 (106) replace the TID included in the read command from the client (101), transfer it to the file server 102, and return the result to the client. Return to step 406 and step 404.
  • the application acceleration apparatus 1 (105) determines whether the partial data of the read target file is being read into the prefetch buffer or has been read 407, that is, not (that is, In the case of not being held), an additional prefetch request is made from the application acceleration device 1 (105) to the application acceleration device 2 (106), and prefetch buffer prefetching (408) is performed (additional prefetch request ( 135)).
  • the application acceleration device 1 (105) replaces the TID and returns the partial data of the file in the prefetch buffer to the client 101 (409). Thereafter, it is determined whether or not there has been an access exceeding the threshold value n% for the data in the prefetch buffer (410). If it is determined that the threshold value has been exceeded, an additional prefetch (311) for the prefetch buffer is performed, and the procedure returns to step 404.
  • the additional prefetch request corresponds to 135 in FIG.
  • step 404 if it is determined in step 404 that the received command is a close command, the application acceleration device 1 (105) releases the prefetch buffer (412), and the open command reception 401 and subsequent files are processed for the same FID. It is then determined whether there is no write command (413).
  • the write command is a command for making some change to the file.
  • SMB2_WRITE and SMB2_SETINFO are write commands. If there is no write command, the application acceleration device 1 (105) creates a close response and returns it to the client 101 (414), and then replaces the TID via each device 103, 104, and 106 and sends the close command to the file server. The process is transferred to 102 (415), and the process is finished 417. By determining that there is no write command, it can be determined that there is no risk of the close command failing, and the close process can be completed.
  • step 413 if the application acceleration device 1 (105) determines that there is a write command, the TID is changed via each device 103, 104, and 106, and the close command is transferred to the file server 102, and the file The result transmitted from the server 102 is returned to the client 101 with the TID changed again, and the process ends. Subsequently, the configuration and operation of the application acceleration devices 1 (105) and 2 (106) that enable the operation described in FIGS. 1 and 3 will be described with reference to FIG.
  • the same application acceleration device 501 as the application acceleration devices 1 (105) and 2 (106) has a LAN side NIF 502, a WAN side NIF 503, an input processing unit 504, an output processing unit 505, and a prefetch processing unit 506.
  • the LAN-side NIF 502 is a connection port between the application acceleration apparatus 501 and a LAN (Local Area Network), and is connected to the client 101 in the application acceleration apparatus 1 (105). Further, the LAN side NIF 502 of the application acceleration apparatus 2 (106) is connected to the file server 102.
  • the LAN side NIF 502 includes a LAN side input buffer 521 that temporarily stores input from the LAN and a LAN side output buffer 522 that temporarily stores output to the LAN.
  • the WAN-side NIF 503 is a connection port between the application acceleration device 501 and the WAN.
  • the application acceleration device 1 (105) is connected to the TCP acceleration device 1 (103), and the application acceleration device 2 (106) is connected to the TCP high speed. Connected to the control device 2 (104).
  • the WAN-side NIF 503 has a WAN-side input buffer 531 that temporarily accumulates inputs from the WAN and a WAN-side output buffer 532 that temporarily accumulates outputs to the WAN.
  • the input processing unit 504 monitors the input buffers 521 and 531 of the LAN side NIF 502 and the WAN side NIF 503, receives the message, and performs processing. Details of the processing of the input processing unit 504 will be described later.
  • the output processing unit 505 includes a latest TID management table 801 and a pre-update TID management table 802.
  • the latest TID management table 801 has a session ID column 811 and a TID column 812 for managing the latest TID for each session ID.
  • the pre-update TID management table 802 has a session ID column 821, a pre-change TID column 822, and a post-change TID column 823 in order to manage the association between the pre-change TID and the post-change TID for each session ID.
  • the output processing unit 505 receives the output request from the input processing unit 504 and the prefetch processing unit 506, and transfers the output request to the output buffers 522 and 532 of the LAN side NIF 502 or the WAN side NIF 503.
  • the output processing unit 505 has a LAN-side NIF buffer 551 and a WAN-side NIF buffer 552, transfers a message that has entered the LAN-side NIF buffer 551 to the output buffer 522 of the LAN-side NIF 502, and also transfers to the WAN-side NIF buffer 552.
  • the entered message is transferred to the output buffer 532 of the WAN side NIF 503. Details of the processing of the output processing unit 505 will be described later.
  • the prefetch processing unit 506 includes a prefetch buffer 550, a prefetch request management table 560, a prefetch data management table 570, and an access pattern management table 580.
  • the prefetch buffer 550 stores partial data of a plurality of files acquired from the file server for each user and each file.
  • the prefetch request management table 560 manages to which part of the file the partial data of the file stored in the prefetch buffer corresponds, and where the partial data of the file is stored in the buffer.
  • the prefetch request management table 570 is a table showing correspondence between prefetch data, files, and storage positions in the prefetch buffer. This table may be further associated with the client 101 that issues access.
  • the prefetch data management table 570 manages past read requests in order to determine whether they are sequential or random.
  • the prefetch data management table 570 is a table showing the correspondence between the start offset, the end offset, and the start offset of the file stored in the prefetch buffer for each file.
  • the access pattern management table 580 is a table for managing state transitions of access patterns for files from clients.
  • the prefetch processing unit 506 controls at least one of the above-described tables according to the access status of the prefetch data from the client and the access pattern of the client.
  • the prefetch processing unit 506 acquires a file identifier from the file server in accordance with the file open request from the client 101.
  • the prefetch processing unit 506 notifies the client 101 of a file identifier (FID).
  • the prefetch processing unit 506 receives an acquisition request for a file addressed to the file server transmitted from the client 101 in response to receipt of the file identifier.
  • the prefetch processing unit 506 starts to sequentially acquire partial data in a predetermined range of the file from the file server.
  • the prefetch processing unit 506 uses the prefetch request management table 560 and the prefetch data management table 570 to monitor the situation in which the partial data of the file is read from the prefetch buffer 550 from the client, and further, the file server 102 or the WAN Whether to issue a file acquisition request (prefetch) to the application acceleration device 106 on the side via the WAN side NIF is determined.
  • the threshold used at that time is also held in a memory (not shown) of the prefetch processing unit 506. More specifically, a limit is imposed on the amount of data to be prefetched for one file stored in the server, and a predetermined amount of the file is prefetched to the server.
  • the access status from the user to the pre-read partial data is monitored, and when the read request is made by the user for a predetermined amount of the pre-read partial data, a further predetermined amount of pre-read is performed on the server.
  • the prefetch processing unit 506 when the prefetch processing unit 506 receives the prefetched partial data, the prefetch processing unit 506 sends the corresponding data to the client via the LAN side NIF in response to the partial data acquisition request from the client 101. After sending the corresponding data, the prefetch buffer 550 may be erasable or overwritten. For retransmission to the client 101, the output buffer 522 of the LAN-side NIF 502 may hold it.
  • the prefetch processing unit 506 receives a prefetch message from the data processed by the input processing unit 504 and transfers the processing result to the output processing unit 505. Details of the processing of the prefetch processing unit 506 will be described later.
  • the input processing unit 504 repeatedly executes a series of procedures from determination 602 to determination 607, and performs each processing when hitting each determination.
  • the high-speed apparatus 1 (105) on the client 101 side that hits the procedures 602, 603, and 604, and the high-speed apparatus 2 (106 on the file server 102 side that hits the procedures 605, 606, and 607. ). Therefore, the acceleration apparatus 1 (105) on the client 101 side may skip steps 605, 606, and 607 other than steps 602, 603, and 604. Further, the speed-up device 2 (106) on the file server 102 side may skip the procedures 602, 603, and 604 other than the procedures 605, 606, and 607.
  • the input processing unit 504 determines whether the request has entered the input buffer 521 of the LAN-side NIF 502 602, the input processing unit 504 determines whether the request is a close command (621), and if it is a close command, the prefetch processing unit 506 performs the prefetch processing D The process is pulled to (FIG. 12) (622).
  • the prefetch process D is a process corresponding to the procedures 413 to 415 in FIG.
  • the procedure 621 corresponds to the procedure 404 in FIG.
  • the input processing unit 504 determines whether it is a read command (623). If it is a read command, the processing is transferred to prefetch processing B (FIG.
  • the prefetch process B is a process corresponding to steps 407 to 411, and performs a process of determining whether or not an additional prefetch request should be made.
  • the prefetch process B determines whether the access is random access or sequential access according to the content of the read command, and changes the prefetch destination and the prefetch amount.
  • the input processing unit 504 transfers the message to the WAN side NIF buffer of the output processing unit (625). (Corresponding to a part of the procedure 406 in FIG. 4) When it is determined that a response is received in the WAN side NIF buffer (603), the message is transferred to the LAN side NIF buffer 551 of the output processing unit 505 (631).
  • the processing is transferred to the prefetch processing C641 (FIG. 11) of the prefetch processing unit 506.
  • the prefetch process C performs a process of separating only the data part and holding it in the prefetch buffer in response to the response to the management request command.
  • the management command is a command for exchanging information between the application acceleration apparatuses 1 (105) and 2 (106).
  • two management request commands and a management close command are used.
  • Each request has a request and a response.
  • the request response can be easily determined from the format, and the request and response can be easily identified from the format.
  • the message is transferred to the LAN side NIF buffer 551 of the output processing unit 505 (651).
  • the response processing is transferred to the prefetch processing F (FIG. 14) of the prefetch processing unit 506. 662 to take over processing. If not, it is then determined whether the command is an open command 663, and if so, the processing is transferred to the prefetch processing E of the prefetch processing unit 506, 664. If not, it is then determined whether the command is a read command 665, and if so, a management response is created 666. Thereafter, the message is transferred 667 to the WAN side NIF buffer 552 of the output processing unit 505.
  • the message is transferred to the prefetch processing A 671 of the prefetch processing unit 506.
  • FIG. 8 shows tables (A) and (B) held by the output processing unit 505 in order to execute the procedure of FIG.
  • the first table (A) is the latest TID management table 801, which has a session ID column 811 and a TID column 812 for managing the latest TID for each session ID.
  • the second table (B) is a pre-update TID management table 802. In order to manage the association between the pre-change TID and the post-change TID for each session ID, the session ID column 821 and the pre-change TID column 822 It has a TID column 823 after the change.
  • FIG. 7 shows the processing details of the output processing unit 505.
  • a method for updating the two tables in FIG. 8 will be described in accordance with the details of the procedure in FIG.
  • the output processing unit 505 After the processing start 701, the output processing unit 505 repeatedly executes a series of procedures from the determination 702 to the determination 705, and performs each processing when hitting each determination processing.
  • the speed-up device 1 (105) on the client 101 side hits the procedures 702 and 703
  • the speed-up device 2 (106) on the file server 102 side hits the steps 704 and 705.
  • the high-speed apparatus 1 (105) on the client 101 side may skip steps 704 and 705 other than the steps 702 and 703.
  • the acceleration device 2 (106) on the file server 102 side may skip the procedures 702 and 703 other than the procedures 704 and 705.
  • the latest TID value (a) is acquired from the latest TID management table 801 using the session ID in the message, and the latest TID management table is obtained.
  • the TID column 812 of 801 is updated to a + 1 (721), a record is inserted into the pre-update TID management table 802 using the session ID in the message, the TID in the message, and a (722), and the output buffer of the WAN side NIF 503
  • the message is transferred to 532 (723).
  • Procedures 721 to 723 correspond to a more detailed procedure 406 of FIG.
  • the message held in the output buffer 532 of the WAN-side NIF 503 performs transmission bandwidth control according to TCP and is sent to the WAN.
  • the session ID and TID in the message are updated from the pre-update TID management table 802 using the session ID and TID in the message (this is the updated TID).
  • the corresponding record is searched, the pre-update TID (referred to as b) is acquired, and the TID in the message is updated to b. Thereafter, the output processing unit 505 deletes the searched record (731).
  • step 731 it is determined whether a record is found (732). If no record is found, the latest TID value (c) is acquired from the latest TID management table 801 using the session ID in the message (801). Then, the TID column 812 is updated to c + 1 and the TID in the message is updated to c733. Thereafter, the message with the TID updated to c is transferred to the output buffer 522 of the LAN side NIF 502 (734). The LAN side NIF 502 sequentially transfers messages stored in the output buffer 522 toward the client 101. Steps 731 to 734 are executed for the response transferred to the LAN side NIF by step 631 in FIG. For example, procedures 731 to 734 correspond to 406 in FIG.
  • a record is searched from the pre-update TID management table 802 using the session ID and TID (this is the updated TID) in the message, and the pre-update TID ( (d), and the record is deleted 741 after the TID in the message is updated to d. Thereafter, the message is transferred 742 to the output buffer 532 of the WAN side NIF 503.
  • the latest TID value (referred to as e) is obtained from the latest TID management table 801 using the session ID in the message, and then the TID column 812 of 801 is set to e + 1.
  • Update 751 insert a record 752 into the pre-update TID management table 802 using the session ID in the message, the TID and e in the message, and forward 753 the message to the output buffer 522 of the LAN side NIF 502. The above is the process in which the output processing unit 505 manages the TID so as to associate the transaction with the client side with the transaction with the server side.
  • FIG. 24 is a diagram showing the prefetch request management table 560.
  • the prefetch request management table 560 is a table for managing a prefetch buffer size for each file and a location to be prefetched next time.
  • the primary key of this table is the FID column 2410 (the FID can be the primary key because it is a system unique value).
  • the FID is an identifier that identifies a file object opened by a specific user.
  • the prefetch offset column 2420 indicates how far the partial data of the file can be prefetched. That is, the acquisition state of the partial data of the file of the application acceleration device is shown. When the next prefetch is performed, the application acceleration apparatuses 105 and 106 issue a request for reading from the offset position indicated in this column.
  • the prefetch buffer size column 2430 is a column indicating the size of the prefetch buffer allocated to the file object represented by the FID column 2410. That is, the value of the prefetch buffer size 2430 indicates the upper limit value of the buffer allocated for the specific file to the specific user.
  • FIG. 25 shows the prefetch data management table 570.
  • the prefetch data management table 570 is a table for managing a prefetched location for each file and a location in the prefetch buffer.
  • the primary key of this table is a combination of the FID column 2510 and the start offset column 2520. (This table has multiple records for the same FID (because it is fragmented in the prefetch buffer).)
  • the start offset column 2520 and the end offset column 2530 indicate where to where the partial data of the file represented by the FID has been prefetched.
  • the prefetch buffer offset column 2540 represents the start offset in the prefetch buffer of the partial data of the file stored in the prefetch buffer.
  • the end offset in the prefetch buffer is specified from values of the end offset string 2530 and the prefetch buffer start offset 2540.
  • FIG. 9 shows the details of the prefetch processing A of the prefetch processing unit 506.
  • the prefetch processing A is executed when a management command request is held in the WAN NIF buffer in FIG.
  • the processing is started (901), it is determined whether or not the received message is a management request command (for example, add prefetch request) (902), and if it is a management request command, a read command (request) for the prefetch buffer is created. (921), the data is transferred 922 to the LAN side NIF buffer 551 of the output processing unit 505, and the processing ends (903). Thereafter, in the processing flow of FIG. 7, the output processing unit 505 processes the message stored in the LAN side NIF buffer. Accordingly, the server-side application apparatus 2 (106) makes a prefetch request by the read command created in the procedure 921, and transmits it to the file server 102 to acquire partial data of the file.
  • a management request command for example, add prefetch request
  • the prefetch processing unit 506 creates a close command (931) and passes it to the LAN side NIF buffer 552 of the output processing unit 505 (932). The process ends (903). Thereafter, in the processing flow of FIG. 7, the output processing unit 505 processes the message stored in the LAN side NIF buffer. Accordingly, the server-side application apparatus 2 (106) performs a process of transmitting the close command created in the procedure 931 (corresponding to a part of the procedure 416 in FIG. 4).
  • FIG. 10 shows the details of the prefetch processing B of the prefetch processing unit 506.
  • the prefetch process B is a process performed when a read command is held in the LAN side NIF buffer of the client side application acceleration apparatus 1 (105). This corresponds to the procedures 407 to 411 in FIG.
  • the prefetch processing unit 506 refers to the prefetch data management table 570, and whether or not the partial data of the file corresponding to the request range of the received read command has been prefetched, corresponds to the request range. It is determined whether the data to be stored is held in the prefetch buffer 550 (1002).
  • the prefetch processing unit 506 determines whether the access pattern from the client is sequential based on the request range of the past read command transmitted from the client 101. If it is determined (1021) and the determination result is sequential, the next acquisition prefetch buffer size is increased (1022). On the other hand, when the corresponding partial field data is not held (not pre-read), the prefetch processing unit 506 determines whether the access pattern is random (1003). The size is reduced (1031).
  • the prefetch processing unit 506 determines whether the access is random access or sequential access based on the access history from the client according to steps 1002, 1021, and 1022, and the prefetch buffer size to be acquired next time Update. Details of the access pattern determination process and the prefetch buffer size will be described later. Thereafter, the prefetch processing unit 506 releases the oldest prefetch buffer (1004).
  • the prefetch processing unit 506 newly secures a prefetch buffer (1005), creates a management request command (1006).
  • the data is transferred to the WAN side NIF buffer of the output processing unit 505 (552).
  • the processing for the management request command is as described above with reference to FIG.
  • the prefetch processing unit 506 creates a response to the read command including the file data from the prefetch buffer after the partial data of the file has entered the prefetch buffer (1008), and the LAN side NIF buffer 551 of the output processing unit 505. (1009).
  • the process of monitoring the access status to the data in the prefetch buffer in the procedure 1010 is not limited to the timing of FIG. 10 and may be performed periodically.
  • the prefetch processing unit 506 determines whether the access pattern is sequential access, random access, or neutral access from the history of access to a certain file, and changes the prefetch control based on the determination result.
  • Sequential access refers to an access pattern in which it is determined that a continuous address range is specified by comparing address ranges requested by a plurality of read commands from a client.
  • the sequential access is a case where data whose address range specified by a plurality of read commands is n% or more of the prefetch buffer is read. Note that n% is smaller than the threshold value n% of the procedure 1010 in FIG.
  • random access is a case where partial data of a file of n% or more of the prefetch buffer is not read continuously for a predetermined number of times by continuous read commands from the client.
  • the neutral access means a case where neither a sequential access nor a random access, and specifically, a case where a partial data of a file of n% or more of the prefetch buffer is read or not read.
  • step 1021 of FIG. If the file is determined to be sequential access, the access speed seen from the client can be further increased by increasing the size of the prefetch buffer (1022).
  • a file on the other hand is determined to be random access
  • the partial data of the file that is not actually accessed by the client can be prevented from flowing to the WAN by reducing the size of the prefetch buffer. Further, when it is determined that sequential access is performed and the size of the prefetch buffer is increased, whether sequential access is performed even in the new size (that is, whether or not the partial data of a file of n% or more of the prefetch buffer of the new size is continuously read). Since it is unknown, it is treated as neutral access once and a new access type is determined.
  • the neutral access state is set to 1501
  • the sequential access state is set to 1502
  • the random access state is set to 1503.
  • n% of the prefetch buffer is read from the neutral state
  • the process proceeds to state 1521.
  • n% of the next prefetch buffer is read, the process proceeds to state 1522.
  • n% of the next prefetch buffer is read, it is determined that sequential access 1502 is made, the next acquisition buffer size is increased, and the state returns to the neutral access state 1501.
  • the process proceeds to state 1531. If n% of the next prefetch buffer is not read, the process proceeds to state 1532.
  • n% of the next prefetch buffer is not read, sequential access is performed. 1503 is determined, and the next acquisition buffer size is reduced, and the process returns to the neutral access state 1501. If n% of the prefetch buffer is not read in the state 1521 and 1522 during the transition to the sequential access state, the state 1531 is entered. When n% of the prefetch buffer is read in the state 1531 and 1532 during the transition to the random access state, the state 1531 is entered.
  • FIG. 26 shows an access pattern management table.
  • a state example 2620 indicating the state of the access pattern transitioned in accordance with the access pattern state transition rule of FIG. 15, a continuous reading sequence 2630 indicating whether or not the continuous access from the client has occurred, Is a table in which FID column 2610 is associated.
  • the FID column 2610 is a primary key, and manages an access history including an access pattern state and the number of continuous readings from the client, that is, a file reading request range from the client, for each file object.
  • the state column 2620 represents which state in the state transition diagram of FIG.
  • the prefetch processing unit 506 may recognize the maximum value and the minimum value in advance. For example, the prefetch processing unit 506 has a user-defined or system-defined upper limit for the prefetch buffer size because the access speed between the clients 101 is biased if the prefetch buffer is too large. Further, if the prefetch buffer is too small, even the data for one read is not stored in the buffer, so the prefetch buffer size has a user-defined or system-defined lower limit.
  • the upper limit of the prefetch buffer size 1541 is 8 MB (1542), the lower limit is 128 KB (1543), and the initial value is 1 MB (1544).
  • the prefetch buffer size is increased, it is doubled (1545) until the upper limit (1542) is reached, and when the prefetch buffer size is decreased, it is halved (1546) until the lower limit (1543) is reached.
  • FIG. 27 shows a state transition in the case where this is the case and n% of the current prefetch buffer is 2000.
  • the state column 2620 of the access pattern management table 580 The value of is the transition destination 2730, the value of the continuous reading column 2630 of the access pattern management table 580 is the value 2740, and further indicates that the next input is shifted in the lower row. .
  • the prefetch processing unit 506 updates the access pattern management table 580 in FIG. 26 to confirm the state after the transition and whether or not the data stored in the prefetch buffer from the client has been continuously read.
  • FIG. 11 shows the details of the prefetch processing C of the prefetch processing unit 506.
  • the prefetch processing C is performed according to the processing result of the procedure 604 in FIG.
  • the received message is a response to the management request command (1102). If the response is a management request command (for example, an additional prefetch request request), only the data part is separated and newly secured. The partial data of the file stored in the data portion is saved 1121 in the prefetch buffer thus completed, and the processing is completed (1103).
  • a management request command for example, an additional prefetch request request
  • FIG. 12 shows the processing details of the prefetch processing D of the prefetch processing unit 506. Corresponding to steps 412 to 415 in FIG. 4, this is performed according to the determination result in step 621 in FIG. First, the prefetch processing unit 506 releases the prefetch buffer 1202 and determines whether there is no write command for the same FID file after the open command reception 663 (1203).
  • the prefetch processing unit 506 records the FID of the closed file in the memory (1233), passes it to the WAN side NIF buffer 552 of the output processing unit 505, and finishes the processing.
  • the FID recorded in the procedure 1233 is used in the prefetch processing unit 506 prefetch processing F.
  • the prefetch processing unit 506 directly passes the close request command from the client 101 to the WAN side NIF buffer 552 of the output processing unit 505 (1204). ) Finish the process.
  • the Close request command is transferred to the file server 102 via the WAN.
  • FIG. 13 shows details of the prefetch processing E of the prefetch processing unit 506.
  • the prefetch process E is a process performed in response to the process of transferring the response to the client via the WAN when the application apparatus 2 (106) on the file server side receives the response to the open command from the file server. . This corresponds to the procedure 403 in FIG.
  • the prefetch processing unit 506 creates a read command (prefetch request) for the prefetch buffer (1302), passes it to the LAN side NIF buffer 551 of the output processing unit 505 (1303), and ends the processing 1304.
  • FIG. 14 shows the processing details of the prefetch processing F of the prefetch processing unit 506.
  • the prefetch processing F first after the processing start 1401, it is determined whether or not the FID of the received close response message is recorded, and if it is recorded (that is, recorded in the procedure 1233 of the prefetch processing D), nothing is done. The processing ends (that is, the close response message is discarded here). On the other hand, if it has not been recorded, a close response message is passed to the LAN side NIF buffer of the output processing unit 1403, and the process ends 1404.
  • an application acceleration device that implements the above-described method places a limit on the amount of data that is prefetched at a time so that a service can be provided equally to many users in the system configured as shown in FIG.
  • the progress of access to the partial data of the file that has been pre-read is monitored, and the partial data of the subsequent file is pre-read as necessary.
  • the TIDs of all CIFS messages are changed so that no inconsistency occurs.
  • an application acceleration device is provided on both the client side and the server side via the WAN, and both devices perform the prefetch processing in cooperation.
  • FIG. 17 shows the sequence of the second embodiment. Compared to FIG. 1 of the first embodiment, the application acceleration device 1605 is changed to receive an open command and start 1701 prefetching. Similarly, when prefetching is lost, the application acceleration device 1605 starts prefetching.
  • FIG. 18 shows the processing details of the input processing unit 504.
  • the input processing unit determines that a request is input to the input buffer 521 of the LAN side NIF 502 and the input buffer of the WAN side NIF 503.
  • a response is entered in 531, only 1806 is set.
  • the process in the case where the response is a read command is changed to the transfer 1866 to the prefetch process G of the prefetch processing unit 506.
  • FIG. 19 shows the processing details of the output processing unit 505.
  • the output processing unit determines that a request is entered in the WAN side NIF buffer 552 and a response is received in the LAN side NIF buffer 551. When entering, it becomes only 703. The processing after hitting the judgments 702 and 703 is not changed.
  • the prefetch processing A and the prefetch processing C in the first embodiment are not necessary for the prefetch processing unit 506 in the second embodiment.
  • a prefetch process F is newly added.
  • FIG. 20 shows the details of the prefetch processing B of the prefetch processing unit 506. Compared to the case of the first embodiment (FIG. 10), the procedure 1006 and the procedure 1013 for creating the management request command are changed to read command creation 2006 and 2013 for the prefetch buffer.
  • FIG. 21 shows the details of the prefetch processing D of the prefetch processing unit 506. Compared to the case of the first embodiment (FIG. 12), the management close command creation 1232 procedure becomes unnecessary.
  • FIG. 22 shows the details of the prefetch processing E of the prefetch processing unit 506. Compared to the case of the first embodiment (FIG. 13), the read command transfer destination is changed to the WAN side NIF buffer 532 (2203) of the output processing unit 505.
  • FIG. 23 shows the processing details of the prefetch processing G of the prefetch processing unit 506.
  • the processing start 2301 only the data part is separated and stored in a newly secured prefetch buffer 2302, and the processing ends 2303.
  • the application acceleration device 1605 in which the above-described method is implemented can reduce the partial data amount of a file to be pre-read at a time so that a service can be provided equally to many clients in the system configured as shown in FIG. Set restrictions. Also, the progress of access to the partial data of the file that has already been pre-read is monitored, and the subsequent partial data is pre-read as necessary. In addition, the application acceleration device converts the TID included in the CIFS message from the client, sends a CIFS message including a prefetch request to the server side, and similarly converts the TID for the response from the server, Responds to access requests. Thereby, inconsistency is prevented from occurring.
  • the above-described embodiment it is possible to prevent the occupation of the buffer by one user who uses the file, to perform efficient prefetching processing, and to provide a service equally to many users.
  • Since the partial data of the file is read little by little, the bandwidth can be released to other communications. Since it is not read at a time, it is not necessary to use a bandwidth for prefetching partial data that is not used by the user, and the network can be used efficiently.
  • CIFS Network File System
  • FTP File Transfer Protocol
  • this invention is not limited to the above-mentioned Example, Various modifications are included.
  • the above-described embodiments have been described in detail for easy understanding of the present invention, and are not necessarily limited to those having all the configurations described.
  • a part of the configuration of one embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of one embodiment.
  • each of the above-described configurations, functions, processing units, processing means, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit.
  • Each of the above-described configurations, functions, and the like may be realized by software by interpreting and executing a program that realizes each function by the processor.
  • Information such as programs, tables, and files for realizing each function can be stored in a recording device such as a memory, a hard disk, an SSD (Solid State Drive), or a recording medium such as an IC card, an SD card, or a DVD.
  • control lines and information lines indicate what is considered necessary for the explanation, and not all the control lines and information lines on the product are necessarily shown. Actually, it may be considered that almost all the components are connected to each other.

Abstract

Services cannot be equally provided to many users by means of conventional application acceleration methods based on prediction. In order to be able to equally provide services to many users, a restriction is imposed on the partial data amount of files that are pre-read at once. Moreover, the access progress state of the partial data of files that were already pre-read is monitored and the subsequent partial data are pre-read if necessary. Additionally, the TIDs of all CIFS messages are reassigned to prevent inconsistencies.

Description

クライアントとサーバ間の通信を中継する通信装置、システム、及び方法Communication apparatus, system, and method for relaying communication between client and server
 本発明は、通信装置に関し、特に、クライアントーサーバ間のファイルデータの転送を制御する通信装置に関する。 The present invention relates to a communication device, and more particularly to a communication device that controls transfer of file data between a client and a server.
 広域網(Wide Area Network, WAN)を介してデータセンタ(DC)-拠点間で通信を行う場合に、TCP(Transmission ControlProtocol)での帯域制御を行い、WANの高速化を実現する技術が特許文献1に開示されている。 Japanese Patent Application Laid-Open Publication No. 2003-260259 discloses a technology that realizes high-speed WAN by performing bandwidth control with TCP (Transmission Control Protocol) when performing communication between a data center (DC) and a base via a wide area network (Wide Area Network, WAN). 1 is disclosed.
 また、TCPの上位のレイヤであるアプリケーション層のプロトコルにファイル共有のためのプロトコルとして、CIFS(Common Internet File System)がある。特許文献3では、CIFSプロトコルに従ったファイルサーバとクライアント間の通信に関する技術が開示されている。 Further, CIFS (Common Internet File System) is available as a protocol for file sharing in the protocol of the application layer, which is the upper layer of TCP. Patent Document 3 discloses a technique related to communication between a file server and a client according to the CIFS protocol.
 特許文献2では、ネットワーク上でプロクシとして動作し、ユーザからのCIFSメッセージを予測(特許文献2では”prediction”と呼ばれている)し、先にネットワークストレージ(Network Attached Storage、NAS)にメッセージを送信しレスポンスを受信しておき、高速化を実現するという技術が開示されている。 Patent Document 2 operates as a proxy on a network, predicts a CIFS message from a user (referred to as “prediction” in Patent Document 2), and first sends a message to a network storage (Network Attached Storage, NAS). A technique has been disclosed in which transmission is performed and a response is received to achieve high speed.
WO11/033894WO11 / 033894 米国特許公開公報番号2004/0215746US Patent Publication No. 2004/0215746 特開2004-280283号公報JP 2004-280283A
 しかし、DC-拠点間のWANを介したTCP通信が高速化されても、NAS等のファイルサーバを用いたファイル共有は十分に高速化されないという問題がある。特にNASの主要プロトコルであり、かつWindows(登録商標)の標準ファイル共有プロトコルであるCIFS(Common Internet File System)は特許文献1の手法と組み合わせても契約帯域の10%程度しか利用できない。その理由は、CIFSは高々60KBのメッセージを1件ずつ往復させて送受信しているためである。このため特許文献1の手法の効果が得られず、メッセージ1往復ごとにRTT(Round Trip Time)分の時間がかかる。 However, there is a problem in that file sharing using a file server such as NAS is not sufficiently accelerated even if TCP communication between the DC and the base via the WAN is accelerated. In particular, CIFS (Common Internet File System), which is a major NAS protocol and a standard file sharing protocol of Windows (registered trademark), can be used only about 10% of the contract bandwidth even when combined with the method of Patent Document 1. The reason is that CIFS sends and receives a message of 60 KB at most by reciprocating one by one. For this reason, the effect of the technique of Patent Document 1 cannot be obtained, and it takes RTT (Round Trip Time) for each round trip of the message.
 また特許文献2の予測に基づく手法では、予測される系列(ルール)が長い場合にはWAN回線を一クライアントが長時間占有してしまう。また高速化装置内のバッファも一クライアントが長時間占有してしまう。そのため、予測の確度を高めるため「あるファイルのopenをトリガに全データをreadする」といったルールを定義すると多くのユーザに対して平等にサービスを提供できない。一方で「あるファイルのopenをトリガに一部のデータをreadする」だけでは高速化効果が低い。 In the method based on the prediction of Patent Document 2, if the predicted series (rule) is long, one client occupies a WAN line for a long time. In addition, one client occupies the buffer in the speed-up device for a long time. Therefore, if a rule such as “read all data triggered by open of a certain file” is defined in order to increase the accuracy of prediction, it is not possible to provide a service to many users equally. On the other hand, the effect of speeding up is low only by “reading a part of data triggered by the open of a file”.
 したがって、背景技術では、多くのクライアントに対して平等に通信サービスを提供できないという課題がある。また、特許文献2では、予測が外れた場合にユーザからのコマンドを送信すると、処理の識別番号(Transaction Identifier,TID)の不整合が生じ、NASから通信を切断される。 Therefore, in the background art, there is a problem that communication services cannot be provided equally to many clients. Further, in Patent Document 2, if a command from a user is transmitted when the prediction is wrong, a mismatch of processing identification numbers (Transaction Identifier, TID) occurs, and communication is disconnected from the NAS.
 上記少なくとも一の課題を解決するために、本発明の一態様では、クライアントとサーバ間における通信装置は、クライアントからのアクセスに対して、先読みするデータ量に制限を設ける。また既に先読みしたデータへのクライアントからのアクセス進捗状況を監視し、監視結果に応じて追加の先読み処理を制御する。 In order to solve at least one of the above problems, according to one aspect of the present invention, a communication device between a client and a server places a limit on the amount of data to be read ahead for access from the client. In addition, the progress of access from the client to the pre-read data is monitored, and additional pre-read processing is controlled according to the monitoring result.
先読みするデータの保持するリソース(バッファ)を効率よく使用することができる。また、先読みするデータのために、通信帯域を占有せずに済む。 Resources (buffers) for holding prefetched data can be used efficiently. Moreover, it is not necessary to occupy a communication band for prefetched data.
実施例1のシーケンス例Example sequence of Example 1 実施例1のシステム構成System configuration of the first embodiment 実施例1のシーケンス例Example sequence of Example 1 システムのフローチャートSystem flowchart アプリケーション高速化装置の装置構成Device configuration of application acceleration device 入力処理部の処理フローProcessing flow of input processing unit 出力処理部の処理フローProcessing flow of the output processing unit 出力処理部が管理する表Table managed by the output processing unit プリフェッチ処理部の処理フローAProcessing flow A of prefetch processing unit プリフェッチ処理部の処理フローBProcessing flow B of prefetch processing unit プリフェッチ処理部の処理フローCProcessing flow C of prefetch processing unit プリフェッチ処理部の処理フローDProcessing flow D of prefetch processing unit プリフェッチ処理部の処理フローEProcessing flow E of the prefetch processing unit プリフェッチ処理部の処理フローFProcessing flow F of prefetch processing unit アクセスパターンとプリフェッチバッファサイズAccess pattern and prefetch buffer size 実施例2のシステム構成System configuration of the second embodiment 実施例2のシーケンス例Example sequence of Example 2 入力処理部の処理フローProcessing flow of input processing unit 出力処理部の処理フローProcessing flow of the output processing unit プリフェッチ処理部の処理フローBProcessing flow B of prefetch processing unit プリフェッチ処理部の処理フローDProcessing flow D of prefetch processing unit プリフェッチ処理部の処理フローEProcessing flow E of the prefetch processing unit プリフェッチ処理部の処理フローGProcessing flow G of prefetch processing unit プリフェッチ要求管理テーブルを示す図。The figure which shows a prefetch request management table. プリフェッチデータ管理テーブルを示す図。The figure which shows a prefetch data management table. アクセスパターン管理テーブルを示す図。The figure which shows an access pattern management table. アクセスパターンの状態遷移例を示す表Table showing access pattern status transition examples
以下、実施例を図面を用いて説明する。 Hereinafter, examples will be described with reference to the drawings.
 図2は、ファイルを利用するクライアントとファイルを管理するファイルサーバとを含む実施例1の全体構成を示す。本実施例で、ファイル共有のための記憶リソースや通信リソースの効率よい利用形態について説明する。また、クライアント計算機へのファイルデータの提供を高速化する。 FIG. 2 shows an overall configuration of the first embodiment including a client that uses a file and a file server that manages the file. In this embodiment, an efficient use form of storage resources and communication resources for file sharing will be described. It also speeds up the provision of file data to client computers.
 ここではWAN201を介してクライアント101とファイルサーバ102が接続されている。 Here, the client 101 and the file server 102 are connected via the WAN 201.
 クライアント101は、ファイルサーバ102と、ネットワークを介して接続され、ファイルサーバが管理するファイルを利用する。クライアント101は、例えば計算機や情報処理端末や、またはスマートフォン等の携帯型情報処理端末であって、サーバにあるファイルを利用する、情報処理装置である。 The client 101 is connected to the file server 102 via a network and uses a file managed by the file server. The client 101 is, for example, a computer, an information processing terminal, or a portable information processing terminal such as a smartphone, and is an information processing apparatus that uses a file on a server.
 ファイルサーバ102は、ファイル入出力制御部5800と、複数のファイルを格納するストレージ5900を有する、サーバ等であって、ネットワークを介してファイルを提供する情報処理装置である。 The file server 102 is a server or the like having a file input / output control unit 5800 and a storage 5900 for storing a plurality of files, and is an information processing apparatus that provides files via a network.
 ファイル入出力制御部5800は、クライアント101に対して、該当するファイルの識別子を通知したり、WANを介したリクエストに応じて、ファイルの部分データをストレージ5900から読み出し、WANに向けて送出したりする。 The file input / output control unit 5800 notifies the client 101 of the identifier of the corresponding file, reads the partial data of the file from the storage 5900, and sends it to the WAN in response to a request via the WAN. To do.
 ただし、クライアント101は、アプリケーション高速化装置1(105)とTCP高速化装置1(103)を介してWAN102に接続し、またファイルサーバ102はアプリケーション高速化装置2(106)とTCP高速化装置2(104)を介してWAN201に接続する。 However, the client 101 is connected to the WAN 102 via the application acceleration device 1 (105) and the TCP acceleration device 1 (103), and the file server 102 is connected to the application acceleration device 2 (106) and the TCP acceleration device 2. Connect to the WAN 201 via (104).
 TCP高速化装置103および104は例えば特許文献1で開示された高速化手法を用いて第4層トランスポート層(L4)の高速化機能を提供する。 The TCP speed-up devices 103 and 104 provide the speed-up function of the fourth transport layer (L4) using the speed-up technique disclosed in Patent Document 1, for example.
 TCP高速化装置は、WAN帯域制御装置であってもよい。例えば、TCP高速化装置アプリケーション高速化装置105による先読み要求をWANの通信帯域を送信するための送信制御を行う。例えば、WAN帯域制御装置103は、OSI(Open Systems Interconnection)参照モデルで規定されるLayer4のTCP(Transmission Control Protocol)に従い、WAN上でのパケットの廃棄状況や再送発生状況によって送信する帯域を設定し、先読み要求を設定された帯域で送信する。また、WAN帯域制御装置は、設定された帯域が、あらかじめ定められた上限の帯域内にあるかを判定し、判定結果、帯域内である場合に、先読み要求などのパケットを送信する遵守判定を行ってもよい。また、WAN帯域制御装置間は、TCPに従って、データ通信を行う。パケットには、ファイルの識別子やファイルのデータ、サーバへのファイルの処理を制御するコマンド、または、クライアント側でファイルに関する処理を制御するコマンドが含まれる。 The TCP acceleration device may be a WAN bandwidth control device. For example, transmission control for transmitting a pre-read request by the TCP acceleration device application acceleration device 105 to the WAN communication band is performed. For example, the WAN bandwidth control device 103 sets the bandwidth to be transmitted according to the packet discard status or retransmission occurrence status on the WAN according to the Layer 4 TCP (Transmission Control Protocol) defined in the OSI (Open Systems Interconnection) reference model. The prefetch request is transmitted in the set bandwidth. Further, the WAN bandwidth control device determines whether the set bandwidth is within a predetermined upper limit bandwidth, and if the determination result is within the bandwidth, the WAN bandwidth control device performs a compliance determination to transmit a packet such as a prefetch request. You may go. In addition, data communication is performed between the WAN bandwidth control devices according to TCP. The packet includes a file identifier, file data, a command for controlling file processing to the server, or a command for controlling file processing on the client side.
 アプリケーション高速化装置は、OSIで規定される第5層から第7層までを担当し、たとえば、第7層アプリケーション層(L7)アプリケーションであるCIFS(Common Internet File System)を高速化するための制御を行う。なお、アプリケーション層は、TCP/IP参照モデルにおける4階層の内の第4層でもある。TCP/IP参照モデルでのアプリケーション層は、OSI参照モデルのアプリケーション層、プレゼンテーション層、およびセッション層に対応する。 The application acceleration device is in charge of the 5th to 7th layers specified by OSI. For example, the control for speeding up the CIFS (Common Internet File System) which is the 7th layer application layer (L7) application I do. The application layer is also the fourth layer among the four layers in the TCP / IP reference model. The application layer in the TCP / IP reference model corresponds to the application layer, presentation layer, and session layer of the OSI reference model.
 例えば、アプリケーション高速化装置105は、クライアント101からファイルへアクセスするため取得要求を受信した場合に、ファイルサーバに対してファイルの部分データの先読みをWANを介して実行する通信装置である。アプリケーション高速化装置105は、プリフェッチバッファを備え、WANを介して先読みにより取得したファイルの部分データをバッファに保持し、その後のクライアントからのリクエストに対し、保持されている先読みしたファイルの部分データをプリフェッチバッファから返す。また、アプリケーション高速化装置105は、クライアント101からファイルへのアクセス状況、例えば、クライアントからのファイルのリード要求や、先読みデータのクライアントへの送信状況に応じて、先読み量、先読み位置を決定し、ファイルサーバ102に対して、さらにファイルの部分データの先読みを行い、先読みされたファイルの部分データをプリフェッチバッファに保持する。 For example, the application acceleration device 105 is a communication device that, when receiving an acquisition request for accessing a file from the client 101, executes prefetching of partial data of the file to the file server via the WAN. The application acceleration device 105 includes a prefetch buffer, holds the partial data of the file obtained by prefetching via the WAN, and holds the partial data of the prefetched file that is held in response to a subsequent request from the client. Return from prefetch buffer. Further, the application acceleration apparatus 105 determines the prefetching amount and the prefetching position according to the access status of the file from the client 101, for example, the read request of the file from the client or the transmission status of the prefetched data to the client, The file server 102 is further prefetched with the partial data of the file, and the prefetched partial data of the file is held in the prefetch buffer.
 アプリケーション高速化装置105は、クライアント側、サーバ側双方ではなく、ファイルサーバ102側あるいはクライアント側いずれか一方(実施例2で後述)にあってもよい。この場合は、ファイルサーバ102側の場合は、アプリケーション高速化装置105は、WAN201とファイルサーバ102との間に設けられる。 The application acceleration apparatus 105 may be provided on either the file server 102 side or the client side (described later in the second embodiment) instead of both the client side and the server side. In this case, on the file server 102 side, the application acceleration device 105 is provided between the WAN 201 and the file server 102.
 なお、アプリケーション高速化装置105とTCP高速化装置103は、別々の装置ではなく、一つの通信システムであってもよい。例えば、通信システムは、アプリケーション高速化装置105とTCP高速化装置103にそれぞれに対応する処理部とLAN送受信部とWAN送受信部とを有し、それぞれがBUSなどの信号線や内部スイッチで接続される。LAN送受信部は、クライアントとネットワークを介してリクエストの受信やデータを送信すると、先読み要求をファイルサーバ102に向けてWANに送出する。または、WAN送受信部は、ファイルサーバ102から、ファイルの識別子やファイルの部分データ、クライアント側でファイルに関する処理を制御するコマンドをWANから受信する。つまり、通信システムは、局所ネットワーク(LAN)を介して複数のクライアント101と接続し、広域エリアネットワーク(WAN)を介してファイルサーバ102と接続し、クライアント101とファイルサーバ102とのデータ通信の中継、データ通信帯域を制御する。また、通信システムは、ファイルサーバから取得する先読みしたファイルの部分データをバッファに保持し、クライアントからのリード要求に応じたバッファから読み出し制御、さらなる先読みリクエストによりファイルの部分データの取得を行う。また、通信システムは、LANのゲートウエイ装置であってもよい。 Note that the application acceleration device 105 and the TCP acceleration device 103 may be a single communication system instead of separate devices. For example, the communication system includes a processing unit, a LAN transmission / reception unit, and a WAN transmission / reception unit corresponding to the application acceleration device 105 and the TCP acceleration device 103, which are connected by a signal line such as BUS or an internal switch. The When the LAN transmission / reception unit receives a request or transmits data via the client and the network, the LAN transmission / reception unit sends a prefetch request to the file server 102 to the WAN. Alternatively, the WAN transmission / reception unit receives, from the WAN, a file identifier, file partial data, and a command for controlling processing related to the file on the client side. That is, the communication system is connected to a plurality of clients 101 via a local network (LAN), is connected to a file server 102 via a wide area network (WAN), and relays data communication between the client 101 and the file server 102. Control the data communication bandwidth. Further, the communication system holds the partial data of the prefetched file acquired from the file server in the buffer, performs read control from the buffer according to the read request from the client, and acquires the partial data of the file by the further prefetch request. The communication system may be a LAN gateway device.
 図2によると、アプリケーション高速化装置105により、Layer5-7に基づいて、クライアントからのリクエストに対するレスポンスの高速化を実現し、TCP高速化装置103により、Layer4におけるWAN帯域の高速化を実現する。 According to FIG. 2, the application speed-up device 105 realizes speeding up of the response to the request from the client based on Layer 5-7, and the TCP speed-up device 103 speeds up the WAN bandwidth in Layer 4.
 以上が、アプリケーション高速化装置の構成例である。 The above is the configuration example of the application acceleration device.
 図1は、実施例1のシーケンスの一例である。図1では、クライアント101側、ファイルサーバ102側に、アプリケーション高速化装置1(105),2(106)を備える。また、アプリケーション高速化装置の通信を高速化するために、WANの通信帯域を制御するTCP高速化装置がWANの複数拠点に備えられる。 FIG. 1 is an example of a sequence according to the first embodiment. In FIG. 1, the application acceleration apparatuses 1 (105) and 2 (106) are provided on the client 101 side and the file server 102 side. In addition, in order to speed up the communication of the application speed-up device, TCP speed-up devices that control the WAN communication band are provided at a plurality of WAN sites.
 まずクライアント101からのTID=1のopenコマンド111が各装置105,103,104,106を経由しファイルサーバ102に到達する。ここでTIDとは処理の識別番号(Transaction IDentifier)の略であり、同一セッション内ではTIDによってリクエストを一意に識別可能であるとする。ただし、セッションとはあるユーザがログインしてからログアウトするまでの、あるクライアント101の一連のメッセージのやり取りの事とし、コマンドがどのセッションに属するかはセッションIDから容易に識別可能とする。また、ここではあるリクエストコマンドに対するレスポンスコマンドには同じTIDをつけ、かつリクエストとレスポンスはフォーマットから容易に識別可能とする。さらに、特にCIFSを実装した一部のファイルサーバでは、TIDは単に一意に識別可能なだけではなく、前後のリクエストあるいはレスポンス、それらの組み合わせの関係を特定する通し番号である事が要求される。そのため、クライアント101側、ファイルサーバ102側それぞれでTIDの不整合を起こさないために、アプリケーション高速化装置1(105)および2(106)がそれぞれTIDを振り直し、個別に管理する。個別管理の具体例は後に記す。 First, an open command 111 with TID = 1 from the client 101 reaches the file server 102 via each device 105, 103, 104, 106. Here, TID is an abbreviation of process identification number (Transaction IDentifier), and it is assumed that a request can be uniquely identified by TID within the same session. However, a session is a series of messages exchanged by a certain client 101 from when a certain user logs in to when the user logs out, and the session ID can easily be identified from which session the command belongs to. Here, the same TID is attached to a response command for a certain request command, and the request and the response can be easily identified from the format. Further, particularly in some file servers that implement CIFS, the TID is not only uniquely identifiable, but is also required to be a serial number that specifies the relationship between the preceding and succeeding requests or responses, and their combinations. Therefore, in order to prevent TID mismatch between the client 101 side and the file server 102 side, the application acceleration apparatuses 1 (105) and 2 (106) reassign TIDs and manage them individually. Specific examples of individual management will be described later.
 また、ここでopenコマンドとは引数で指定したファイルを利用可能にするためのコマンドである。openコマンド111の場合は、引数で指定した“/foo/bar.txt”が利用可能対象である。特にCIFSでは“SMB2_CREATE”コマンドがopenコマンドである。また、一部のファイル共有プロトコルでは、openコマンドの引数において排他制御の要求も行う。openコマンド111の場合は引数で指定した“x(exclusive)”で排他制御権を要求している。特にCIFSでは“RequestedOplockLevel”という引数において排他制御の要求を行う。 Also, here, the open command is a command for making the file specified by the argument available. In the case of the open command 111, “/foo/bar.txt” specified by an argument is a usable target. In particular, in CIFS, the “SMB2_CREATE” command is an open command. In some file sharing protocols, an exclusive control request is also made in the argument of the open command. In the case of the open command 111, the exclusive control right is requested with “x (exclusive)” specified by the argument. In particular, in CIFS, a request for exclusive control is performed with an argument “RequestedOplockLevel”.
 ファイルサーバ102はopenコマンド111へのレスポンス112を返す。openコマンドのレスポンスはopenコマンドの引数で指定されたファイルの識別子(File Identifier、FID)を含む。以降、ファイルサーバ102に対してopenコマンドの引数で指定したファイルの読み込み命令(readコマンド)や書込み命令(writeコマンド)を出す時にはファイル名“/foo/bar.txt”ではなく、FIDであるAを引数にする。また、一部のファイル共有プロトコルでは、排他制御権の取得結果も返される。 The file server 102 returns a response 112 to the open command 111. The response of the open command includes a file identifier (File Identifier, FID) specified by an argument of the open command. Thereafter, when a file read command (read command) or write command (write command) specified by an open command argument is issued to the file server 102, the file name “/foo/bar.txt” is not an A but a FID. Is an argument. Also, in some file sharing protocols, an exclusive control right acquisition result is also returned.
 なお、レスポンス112には、ファイルサーバに格納されるファイルの排他制御権の取得結果が含まれていてもよい。例えば、ファイル共有プロトコルの一つであるCIFSでは“OplockLevel”という引数において排他制御権の取得結果を返す。この取得結果は“SMB2_OPLOCK_LEVEL_NONE”、“SMB2_OPLOCK_LEVEL_II”“SMB2_OPLOCK_LEVEL_EXCLUSIVE”、“SMB2_OPLOCK_LEVEL_BATCH”、“SMB2_OPLOCK_LEVEL_LEASE”という値を取り、“SMB2_OPLOCK_LEVEL_NONE”以外の値であれば排他制御権が取れている。openコマンドのレスポンス112は、まずアプリケーション高速化装置2(106)に渡る(113)。このとき、アプリケーション高速化装置2(106)はopenコマンドのレスポンス112に含まれる排他制御権の取得結果を調べ、排他制御権が取れていればFIDや、その他認証情報などファイルサーバ102との通信に必要な情報も併せて読込む。その後、openコマンドのレスポンス112は各装置104,103,105を経由しクライアント101に到達する。 Note that the response 112 may include an acquisition result of the exclusive control right of the file stored in the file server. For example, in CIFS, which is one of the file sharing protocols, an exclusive control right acquisition result is returned in an argument “OplockLevel”. The obtained results are “SMB2_OPLOCK_LEVEL_NONE”, “SMB2_OPLOCK_LEVEL_II”, “SMB2_OPLOCK_LEVEL_EXCLUSIVE”, “SMB2_OPLOCK_LEVEL_BATCH”, “SMB2_OPLOCK_LEVEL_NOL”, and “SMB2_OPLOCK_LEVEL_LEV”. The response 112 of the open command first passes to the application acceleration device 2 (106) (113). At this time, the application acceleration device 2 (106) checks the acquisition result of the exclusive control right included in the response 112 of the open command. If the exclusive control right is obtained, communication with the file server 102 such as FID and other authentication information is performed. The necessary information is also read. Thereafter, the open command response 112 reaches the client 101 via the devices 104, 103, and 105.
 一方でアプリケーション高速化装置2(106)は、レスポンス(113)で取得したFIDを用いてファイルの部分データのプリフェッチを行う。具体的には、アプリケーション高速化装置2(106)は、ファイルサーバ(102)に対しreadコマンドを送信121する。readコマンドはFID,読込みオフセット、読込み長の3つの引数を取る。シーケンス121において送信したreadコマンドはFIDがA(すなわち“/foo/bar.txt”)であり、読込みオフセットが0(すなわちファイルの先頭から読込む)、読込み長が1000である。 On the other hand, the application acceleration device 2 (106) prefetches the partial data of the file using the FID acquired in the response (113). Specifically, the application acceleration device 2 (106) transmits 121 a read command to the file server (102). The read command takes three arguments: FID, reading offset, and reading length. The read command transmitted in the sequence 121 has an FID of A (that is, “/foo/bar.txt”), a reading offset of 0 (that is, reading from the beginning of the file), and a reading length of 1000.
 次に、アプリケーション高速化装置2(106)はファイルサーバ102からシーケンス121において送信したreadコマンドのレスポンス(122)を受け取る。ここで受け取るレスポンス122にはファイル“/foo/bar.txt”の部分データ実体が含まれている。 Next, the application acceleration device 2 (106) receives the response (122) of the read command transmitted from the file server 102 in the sequence 121. The response 122 received here includes a partial data entity of the file “/foo/bar.txt”.
 続いてアプリケーション高速化装置2(106)は、送信したコマンド121と受け取ったレスポンス122の関係が判るように二つをペアにし、TCP高速化装置104および103を介してアプリケーション高速化装置1(105)へ送信(123)する。 Subsequently, the application acceleration device 2 (106) pairs the two so that the relationship between the transmitted command 121 and the received response 122 can be understood, and the application acceleration device 1 (105) via the TCP acceleration devices 104 and 103. ) (123).
 これを受信したアプリケーション高速化装置1(105)は、アプリケーション高速化装置2(106)は送信したコマンド121と受け取ったレスポンス122に分割し、FID=Aのオフセット=0から1000の部分データである事が判るようにバッファに格納しておく。以後、同様にアプリケーション高速化装置2(106)はプリフェッチバッファサイズに達するまでプリフェッチ(125)を行い、その結果をアプリケーション高速化装置1(105)に渡す126。図1の例ではプリフェッチバッファサイズは、4000である。プリフェッチバッファサイズの詳細は後に記す。 Upon receiving this, the application acceleration device 1 (105) divides the application acceleration device 2 (106) into the transmitted command 121 and the received response 122, and the partial data of FID = A offset = 0 to 1000. Store it in a buffer so that you can understand. Thereafter, similarly, the application acceleration device 2 (106) performs prefetch (125) until the prefetch buffer size is reached, and passes the result 126 to the application acceleration device 1 (105). In the example of FIG. 1, the prefetch buffer size is 4000. Details of the prefetch buffer size will be described later.
 プリフェッチとは別に、クライアント101もopenコマンド111へのレスポンス112を受信した後にFIDがAのファイルに対するreadを行う。ここではまず読込みオフセットが0、読込み長が500のreadコマンド(131)をファイルサーバ102に向けて送信する。ファイルサーバ102への経路上のアプリケーション高速化装置1(105)が、このreadコマンド(131)を受領すると、ファイルサーバ102自らのプリフェッチバッファからコマンドに対する処理結果を返す。続いて読込みオフセットが500、読込み長が500のreadコマンド(132)を送信しても同じくアプリケーション高速化装置1(105)がプリフェッチバッファから結果を返す。 Apart from prefetching, the client 101 also reads the file whose FID is A after receiving the response 112 to the open command 111. Here, first, a read command (131) having a reading offset of 0 and a reading length of 500 is transmitted to the file server 102. When the application acceleration device 1 (105) on the path to the file server 102 receives the read command (131), it returns the processing result for the command from the prefetch buffer of the file server 102 itself. Subsequently, even if a read command (132) with a read offset of 500 and a read length of 500 is transmitted, the application acceleration device 1 (105) returns the result from the prefetch buffer.
 続いて読込みオフセットが1000、読込み長が1000のreadコマンドを送信133しても同じくアプリケーション高速化装置1(105)がプリフェッチバッファから結果を返すが、この時プリフェッチバッファの半分(2000)の部分データを読んだため、アプリケーション高速化装置1のプリフェッチバッファ管理の閾値に達する(134)。そこで、アプリケーション高速化装置1(105)は、アプリケーション高速化装置2(106)に追加先読み依頼(135)をし、プリフェッチバッファサイズのファイルの部分データをプリフェッチする(136)。なお、ここでは閾値を50%(半分)としたが、閾値はユーザ定義もしくはシステム定義の任意の値とする。ところで、この時点でクライアント101側のTIDは4(133)であり、一方ファイルサーバ(102)側のTIDは6(136)である。これは先に書いた通りアプリケーション高速化装置1(105)および2(106)がそれぞれTIDを振り直し、個別に管理しているためである。 Subsequently, even if a read command with a read offset of 1000 and a read length of 1000 is sent 133, the application acceleration device 1 (105) returns the result from the prefetch buffer, but at this time, half of the prefetch buffer (2000) partial data Has been read, the threshold for prefetch buffer management of the application acceleration device 1 is reached (134). Therefore, the application acceleration apparatus 1 (105) makes an addition prefetch request (135) to the application acceleration apparatus 2 (106), and prefetches partial data of a file having a prefetch buffer size (136). Although the threshold value is 50% (half) here, the threshold value is an arbitrary value defined by the user or system. By the way, the TID on the client 101 side at this point is 4 (133), while the TID on the file server (102) side is 6 (136). This is because the application acceleration apparatuses 1 (105) and 2 (106) reassign TIDs and manage them individually as described above.
 ファイルサーバ側102のアプリケーション高速化装置2(106)が、openコマンド(111)に対するレスポンスを契機に、ファイルサーバ102に対してファイルAのうち、所定量のファイルの部分データの先読みを複数回分けて行い、複数回にわたって得られたファイルの部分データを、アプリケーション高速化装置1(105)に転送する。アプリケーション高速化装置は、転送されたファイルの部分データをバッファに保持し、クライアント101のreadコマンド(131)に対してファイルの部分データを返答する。そして、クライアント101側のアプリケーション高速化装置1(105)は、バッファに保持されるファイルの部分データに対して、クライアントからのread(131,132,133)が、閾値を超えたばあいは、さらに、ファイルサーバ(102)側のアプリケーション高速化装置2(106)は、追加先読み依頼(135)を、ファイルサーバ(102)に対して行う。 In response to the response to the open command (111), the application acceleration device 2 (106) on the file server side 102 divides the read-ahead of partial data of a predetermined amount of the file A among the files A multiple times. The partial data of the file obtained over a plurality of times is transferred to the application acceleration apparatus 1 (105). The application acceleration device holds the partial data of the transferred file in a buffer, and returns the partial data of the file to the read command (131) of the client 101. If the read (131, 132, 133) from the client exceeds the threshold for the partial data of the file held in the buffer, the application acceleration device 1 (105) on the client 101 side further processes the file server. The application acceleration device 2 (106) on the (102) side makes an additional prefetch request (135) to the file server (102).
 このように、本発明では、あるファイルの部分データのプリフェッチをエンドユーザの読込みに合わせて少しずつ取りに行くことで、特定クライアントに関するプリフェッチが回線を占有しないようにする。また、あるファイルの部分データのプリフェッチをクライアントの部分データ取得リクエストに合わせて少しずつ取りに行くことで、クライアントが部分データ取得をやめた場合や余分な部分データをプリフェッチせずに、済む。あるファイルの部分データのプリフェッチを、クライアントの部分データ取得リクエストに合わせて、通信回線の帯域を利用して少しずつ取りに行くことで、余分な部分データをプリフェッチするための帯域を他の通信に有効に利用することができる。 As described above, according to the present invention, prefetching of partial data of a certain file is performed little by little in accordance with the reading of the end user, so that prefetching for a specific client does not occupy a line. In addition, by prefetching partial data of a certain file little by little in accordance with the partial data acquisition request of the client, it is possible to avoid the case where the client stops acquiring partial data or prefetching extra partial data. By prefetching partial data of a certain file little by little using the bandwidth of the communication line according to the partial data acquisition request of the client, the bandwidth for prefetching the extra partial data is used for other communications. It can be used effectively.
 図3を用いて、図1で、プリフェッチが外れ、バッファで保持されるファイルの部分データとは異なるアドレスに対応するファイルの部分データに対するreadコマンドをアプリケーション高速化装置105が受領した場合の動作を説明する。ここではクライアント101がopenコマンド301を送信し、それに伴いアプリケーション高速化装置2(106)がプリフェッチを行う所までは図1の112、113と同様である。 The operation when the application acceleration device 105 receives a read command for the partial data of the file corresponding to an address different from the partial data of the file held in the buffer in FIG. explain. Here, the processing is the same as 112 and 113 in FIG. 1 until the client 101 transmits the open command 301 and the application acceleration apparatus 2 (106) performs prefetching accordingly.
 しかし、ここではクライアント101側TID=4のreadコマンド303がプリフェッチされていない領域のファイルの部分データを要求する。ここではクライアント101の要求が、6000から6499までのファイルの部分データの要求であるにも関わらず、アプリケーション高速化装置1(105)は、0から3999までのファイルの部分データをプリフェッチしかしていない。そこで、アプリケーション高速化装置1(105)は、プリフェッチが外れたと判断311し、アプリケーション高速化装置2(106)に対して、オフセット6000からの追加先読み依頼312を出す。その後、アプリケーション高速化装置2(106)はプリフェッチバッファサイズ分のプリフェッチを行う。図3のように、ランダムアクセスをした場合であっても、余分なファイルの部分データをプリフェッチせずに、済む。あるファイルのプリフェッチを、クライアントの部分データ取得リクエストに合わせて、通信回線の帯域を利用して少しずつ取りに行くことで、余分なファイルの部分データをプリフェッチするための帯域を他の通信に有効に利用することができる。 However, here, the read command 303 of TID = 4 on the client 101 side requests partial data of the file in the area that has not been prefetched. Here, although the request of the client 101 is a request for partial data of the files from 6000 to 6499, the application acceleration apparatus 1 (105) only prefetches the partial data of the files from 0 to 3999. . Accordingly, the application acceleration apparatus 1 (105) determines that the prefetch has come off 311 and issues an additional prefetch request 312 from the offset 6000 to the application acceleration apparatus 2 (106). Thereafter, the application acceleration device 2 (106) performs prefetching for the prefetch buffer size. As shown in FIG. 3, even if random access is performed, it is not necessary to prefetch the partial data of the extra file. By using the bandwidth of the communication line little by little to prefetch a file according to the client's partial data acquisition request, the bandwidth for prefetching the partial data of the extra file is valid for other communications. Can be used.
 続いて図4を用いて、アプリケーション高速化装置105、106が行う、図1および図3で説明した実施例1の処理の流れを説明する。処理はアプリケーション高速化装置1(105)のopenコマンド受付401から始まり、その後各装置TCP高速化装置103、104,アプリケーション高速化装置106を介してopenコマンドをファイルサーバ102に転送する。ファイルサーバ102からのレスポンスアプリケーション高速化装置105は、ファイル識別子(FID)レスポンスをアプリケーション装置106を介して受けると、クライアント101に返される(402)。 Subsequently, the flow of processing of the first embodiment described with reference to FIGS. 1 and 3 performed by the application acceleration apparatuses 105 and 106 will be described with reference to FIG. The processing starts from the open command reception 401 of the application acceleration apparatus 1 (105), and thereafter, the open command is transferred to the file server 102 via each of the apparatus TCP acceleration apparatuses 103 and 104 and the application acceleration apparatus 106. When the response application acceleration device 105 from the file server 102 receives a file identifier (FID) response via the application device 106, it is returned to the client 101 (402).
 続いてアプリケーション高速化装置2(106)が、FID受領後、プリフェッチバッファサイズ分のreadコマンド(図1での122)をファイルサーバ102に送信し、結果をアプリケーション高速化装置1(105)に転送(403)する(図1での124)。 Subsequently, after receiving the FID, the application acceleration device 2 (106) transmits a read command for the prefetch buffer size (122 in FIG. 1) to the file server 102 and transfers the result to the application acceleration device 1 (105). (403) (124 in FIG. 1).
 次に、アプリケーション高速化装置1(105)はクライアント(101)からのコマンドを待ちうける。受信したコマンドがcloseコマンドか否か判断し404、closeではない場合は続いてreadコマンドか否か判断する405。readコマンドではない場合は、アプリケーション高速化装置1(105)および2(106)で、クライアント(101)からのreadコマンドに含まれるTIDを付替え、ファイルサーバ102に転送し、結果をクライアントに返し406、手順404に戻る。 Next, the application acceleration device 1 (105) waits for a command from the client (101). It is determined whether or not the received command is a close command 404, and if it is not close, it is subsequently determined 405 whether or not it is a read command. If it is not a read command, the application acceleration devices 1 (105) and 2 (106) replace the TID included in the read command from the client (101), transfer it to the file server 102, and return the result to the client. Return to step 406 and step 404.
 一方、手順405においてreadコマンドである場合は、アプリケーション高速化装置1(105)は、read対象のファイルの部分データをプリフェッチバッファに読込み中もしくは読込み済みか否か判断し407、そうではない(すなわち保持されていない)場合は、アプリケーション高速化装置1(105)からアプリケーション高速化装置2(106)へ追加先読み依頼をし、プリフェッチバッファ分の先読み(408)を行う(図1の追加先読み依頼(135)に対応)。 On the other hand, if the command is a read command in step 405, the application acceleration apparatus 1 (105) determines whether the partial data of the read target file is being read into the prefetch buffer or has been read 407, that is, not (that is, In the case of not being held), an additional prefetch request is made from the application acceleration device 1 (105) to the application acceleration device 2 (106), and prefetch buffer prefetching (408) is performed (additional prefetch request ( 135)).
 その後、アプリケーション高速化装置1(105)はTIDを付替えし、プリフェッチバッファ内のファイルの部分データをクライアント101へ返す(409)。その後、プリフェッチバッファ内データに対し閾値n%を超えるアクセスがあったか否か判断し(410)、閾値を超えたと判断された場合、プリフェッチバッファ分の追加先読み(311)を行い、手順404に戻る。追加先読み依頼は、図1の135に対応する。 Thereafter, the application acceleration device 1 (105) replaces the TID and returns the partial data of the file in the prefetch buffer to the client 101 (409). Thereafter, it is determined whether or not there has been an access exceeding the threshold value n% for the data in the prefetch buffer (410). If it is determined that the threshold value has been exceeded, an additional prefetch (311) for the prefetch buffer is performed, and the procedure returns to step 404. The additional prefetch request corresponds to 135 in FIG.
 一方、手順404において、受領したコマンドが、closeコマンドと判断した場合は、アプリケーション高速化装置1(105)は、プリフェッチバッファを解放し(412)、openコマンド受付401以降に同一FIDのファイルに対してwrite系のコマンドがなかったか否か判断する(413)。ここでwrite系コマンドとは、ファイルに何らかの変更を加えるコマンドである。 On the other hand, if it is determined in step 404 that the received command is a close command, the application acceleration device 1 (105) releases the prefetch buffer (412), and the open command reception 401 and subsequent files are processed for the same FID. It is then determined whether there is no write command (413). Here, the write command is a command for making some change to the file.
 特にCIFSプロトコルの場合、SMB2_WRITEとSMB2_SETINFOがwrite系コマンドである。write系コマンドがなかった場合は、アプリケーション高速化装置1(105)がcloseレスポンスを作りクライアント101に返し(414)、その後各装置103、104,106を介しTIDを付替えてcloseコマンドをファイルサーバ102に転送し(415)、処理を終える417。write系コマンドがないことを判別することにより、closeコマンドが失敗する恐れがないと判定でき、close処理を完了できる。 Especially in the case of the CIFS protocol, SMB2_WRITE and SMB2_SETINFO are write commands. If there is no write command, the application acceleration device 1 (105) creates a close response and returns it to the client 101 (414), and then replaces the TID via each device 103, 104, and 106 and sends the close command to the file server. The process is transferred to 102 (415), and the process is finished 417. By determining that there is no write command, it can be determined that there is no risk of the close command failing, and the close process can be completed.
 手順413において、アプリケーション高速化装置1(105)は、write系コマンドがあったと判断した場合は、各装置103、104,106を介しTIDを付替えてcloseコマンドをファイルサーバ102に転送し、ファイルサーバ102から送信される、結果を再びTIDをつけかえてクライアント101に返し、処理を終える。 続いて、図5を用いて図1および図3で説明した動作を可能にするアプリケーション高速化装置1(105)および2(106)の構成と動作について説明する。 In step 413, if the application acceleration device 1 (105) determines that there is a write command, the TID is changed via each device 103, 104, and 106, and the close command is transferred to the file server 102, and the file The result transmitted from the server 102 is returned to the client 101 with the TID changed again, and the process ends. Subsequently, the configuration and operation of the application acceleration devices 1 (105) and 2 (106) that enable the operation described in FIGS. 1 and 3 will be described with reference to FIG.
 アプリケーション高速化装置1(105)および2(106)と同じアプリケーション高速化装置501はLAN側NIF502とWAN側NIF503と入力処理部504と出力処理部505とプリフェッチ処理部506を持つ。 The same application acceleration device 501 as the application acceleration devices 1 (105) and 2 (106) has a LAN side NIF 502, a WAN side NIF 503, an input processing unit 504, an output processing unit 505, and a prefetch processing unit 506.
 LAN側NIF502は、アプリケーション高速化装置501とLAN(Local Area Network、構内通信網)の接続口であり、アプリケーション高速化装置1(105)ではクライアント101と接続される。またアプリケーション高速化装置2(106)のLAN側NIF502では、ファイルサーバ102と接続される。 The LAN-side NIF 502 is a connection port between the application acceleration apparatus 501 and a LAN (Local Area Network), and is connected to the client 101 in the application acceleration apparatus 1 (105). Further, the LAN side NIF 502 of the application acceleration apparatus 2 (106) is connected to the file server 102.
 またLAN側NIF502はLANからの入力を一時的に蓄積するLAN側入力バッファ521と、LANへの出力を一時的に蓄積するLAN側出力バッファ522を持つ。 The LAN side NIF 502 includes a LAN side input buffer 521 that temporarily stores input from the LAN and a LAN side output buffer 522 that temporarily stores output to the LAN.
 WAN側NIF503はアプリケーション高速化装置501とWANの接続口であり、アプリケーション高速化装置1(105)ではTCP高速化装置1(103)と接続され、またアプリケーション高速化装置2(106)ではTCP高速化装置2(104)と接続される。またWAN側NIF503はWANからの入力を一時的に蓄積するWAN側入力バッファ531と、WANへの出力を一時的に蓄積するWAN側出力バッファ532を持つ。 The WAN-side NIF 503 is a connection port between the application acceleration device 501 and the WAN. The application acceleration device 1 (105) is connected to the TCP acceleration device 1 (103), and the application acceleration device 2 (106) is connected to the TCP high speed. Connected to the control device 2 (104). The WAN-side NIF 503 has a WAN-side input buffer 531 that temporarily accumulates inputs from the WAN and a WAN-side output buffer 532 that temporarily accumulates outputs to the WAN.
 入力処理部504はLAN側NIF502およびWAN側NIF503それぞれの入力バッファ521および531を監視し、メッセージを受信して処理を行う。入力処理部504の処理詳細は後述する。 The input processing unit 504 monitors the input buffers 521 and 531 of the LAN side NIF 502 and the WAN side NIF 503, receives the message, and performs processing. Details of the processing of the input processing unit 504 will be described later.
 出力処理部505は、最新TID管理テーブル801と更新前TID管理テーブル802とを有する最新TID管理テーブル801は、セッションIDごとの最新のTIDを管理するためにセッションID列811とTID列812を持つ。更新前TID管理テーブル802は、セッションIDごとの変更前TIDと変更後TIDの対応付けを管理するために、セッションID列821と変更前TID列822と変更後TID列823とを持つ。 The output processing unit 505 includes a latest TID management table 801 and a pre-update TID management table 802. The latest TID management table 801 has a session ID column 811 and a TID column 812 for managing the latest TID for each session ID. . The pre-update TID management table 802 has a session ID column 821, a pre-change TID column 822, and a post-change TID column 823 in order to manage the association between the pre-change TID and the post-change TID for each session ID.
 そして、出力処理部505は、入力処理部504およびプリフェッチ処理部506からの出力要求を受け、それをLAN側NIF502もしくはWAN側NIF503の出力バッファ522および532に出力処理を転送する。また、出力処理部505は、LAN側NIFバッファ551とWAN側NIFバッファ552を持ち、LAN側NIFバッファ551に入ったメッセージをLAN側NIF502の出力バッファ522に転送し、またWAN側NIFバッファ552に入ったメッセージをWAN側NIF503の出力バッファ532に転送する。出力処理部505の処理詳細は後述する。 プリフェッチ処理部506は、プリフェッチバッファ550と、プリフェッチ要求管理テーブル560、プリフェッチデータ管理テーブル570、アクセスパターン管理テーブル580とを有する。 The output processing unit 505 receives the output request from the input processing unit 504 and the prefetch processing unit 506, and transfers the output request to the output buffers 522 and 532 of the LAN side NIF 502 or the WAN side NIF 503. The output processing unit 505 has a LAN-side NIF buffer 551 and a WAN-side NIF buffer 552, transfers a message that has entered the LAN-side NIF buffer 551 to the output buffer 522 of the LAN-side NIF 502, and also transfers to the WAN-side NIF buffer 552. The entered message is transferred to the output buffer 532 of the WAN side NIF 503. Details of the processing of the output processing unit 505 will be described later. The prefetch processing unit 506 includes a prefetch buffer 550, a prefetch request management table 560, a prefetch data management table 570, and an access pattern management table 580.
 プリフェッチバッファ550は、ファイルサーバから取得した複数のファイルの部分データを、ユーザ毎及びファイル毎に格納する。プリフェッチ要求管理テーブル560は、プリフェッチバッファに格納されているファイルの部分データが、ファイルのどの部分に該当するのか、及び、そのファイルの部分データがバッファのどこに格納されているかを管理する。プリフェッチ要求管理テーブル570は、プリフェッチデータとファイルとプリフェッチバッファにおける格納位置との対応付けを示すテーブルである。このテーブルはさらに、アクセスを出すクライアント101と対応付けされてもよい。 The prefetch buffer 550 stores partial data of a plurality of files acquired from the file server for each user and each file. The prefetch request management table 560 manages to which part of the file the partial data of the file stored in the prefetch buffer corresponds, and where the partial data of the file is stored in the buffer. The prefetch request management table 570 is a table showing correspondence between prefetch data, files, and storage positions in the prefetch buffer. This table may be further associated with the client 101 that issues access.
 プリフェッチデータ管理テーブル570は、シーケンシャルかランダムかを判別するために、過去のリード要求を管理する。プリフェッチデータ管理テーブル570は、ファイルごとに開始オフセットと、終了オフセットと、プリフェッチバッファに格納されている当該ファイルの開始オフセットとの対応付けを示すテーブルである。 The prefetch data management table 570 manages past read requests in order to determine whether they are sequential or random. The prefetch data management table 570 is a table showing the correspondence between the start offset, the end offset, and the start offset of the file stored in the prefetch buffer for each file.
 アクセスパターン管理テーブル580は、クライアントからのファイルに対するアクセスパタンの状態遷移を管理するテーブルである。 
 プリフェッチ処理部506は、上述の少なくとも一のテーブルで、プリフェッチデータのクライアントからのアクセス状況とクライアントのアクセスパターンにより、プリフェッチ処理を制御する。
The access pattern management table 580 is a table for managing state transitions of access patterns for files from clients.
The prefetch processing unit 506 controls at least one of the above-described tables according to the access status of the prefetch data from the client and the access pattern of the client.
 プリフェッチ処理部506は、クライアント101からのファイルのオープン要求に従い、ファイル識別子をファイルサーバから取得する。 The prefetch processing unit 506 acquires a file identifier from the file server in accordance with the file open request from the client 101.
 プリフェッチ処理部506は、ファイル識別子(FID)をクライアント101に通知する。プリフェッチ処理部506は、ファイル識別子の受領に応じてクライアント101から送信されるファイルサーバ宛のファイルの取得要求を受信する。また、ファイルのオープン要求受領後に、プリフェッチ処理部506は、ファイルサーバから該当ファイルの所定の範囲の部分データを順次取得を開始する。 The prefetch processing unit 506 notifies the client 101 of a file identifier (FID). The prefetch processing unit 506 receives an acquisition request for a file addressed to the file server transmitted from the client 101 in response to receipt of the file identifier. In addition, after receiving a file open request, the prefetch processing unit 506 starts to sequentially acquire partial data in a predetermined range of the file from the file server.
 例えば、プリフェッチ処理部506は、プリフェッチ要求管理テーブル560とプリフェッチデータ管理テーブル570とを用いて、クライアントからファイルの部分データがプリフェッチバッファ550から読み出される状況を監視し、さらに、ファイルサーバ102あるいは、WAN側のアプリケーション高速化装置106に対して、ファイル取得要求(プリフェッチ)をWAN側NIFを介して、発行するか決定する。その際用いる閾値もプリフェッチ処理部506のメモリ(図示せず)に保持される。より具体的には、サーバに格納される一ファイルの先読みするデータ量に制限を設け、サーバに対してファイルの所定量の先読みを行う。先読みした部分データへのユーザからのアクセス状況を監視し、監視結果、所定の量、先読みした部分データがユーザからリード要求された場合は、サーバに対してさらなる所定量の先読みを行う。 For example, the prefetch processing unit 506 uses the prefetch request management table 560 and the prefetch data management table 570 to monitor the situation in which the partial data of the file is read from the prefetch buffer 550 from the client, and further, the file server 102 or the WAN Whether to issue a file acquisition request (prefetch) to the application acceleration device 106 on the side via the WAN side NIF is determined. The threshold used at that time is also held in a memory (not shown) of the prefetch processing unit 506. More specifically, a limit is imposed on the amount of data to be prefetched for one file stored in the server, and a predetermined amount of the file is prefetched to the server. The access status from the user to the pre-read partial data is monitored, and when the read request is made by the user for a predetermined amount of the pre-read partial data, a further predetermined amount of pre-read is performed on the server.
 そして、プリフェッチ処理部506は、先読みする部分データを受領すると、クライアント101からの部分データ取得要求に応じて、該当データをクライアントにLAN側NIFを介して、送る。該当データを送付後、プリフェッチバッファ550から消去あるいは上書き可能な状態にしてもよい。クライアント101への再送のために、LAN側NIF502の出力バッファ522が保持していてもよい。 Then, when the prefetch processing unit 506 receives the prefetched partial data, the prefetch processing unit 506 sends the corresponding data to the client via the LAN side NIF in response to the partial data acquisition request from the client 101. After sending the corresponding data, the prefetch buffer 550 may be erasable or overwritten. For retransmission to the client 101, the output buffer 522 of the LAN-side NIF 502 may hold it.
 また、プリフェッチ処理部506は、入力処理部504が処理したデータのうち、プリフェッチに関するメッセージを受け取り、処理結果を出力処理部505に転送する。プリフェッチ処理部506の処理詳細は後述する。 Also, the prefetch processing unit 506 receives a prefetch message from the data processed by the input processing unit 504 and transfers the processing result to the output processing unit 505. Details of the processing of the prefetch processing unit 506 will be described later.
 続いて図6を用いて入力処理部504の処理詳細を説明する。入力処理部504は処理開始601後、判断602から判断607までの一連の手順を繰り返し実行し、各判断にヒットする場合にそれぞれの処理を行う。なお、手順602、603、604にヒットするのはクライアント101側の高速化装置1(105)であり、また手順605,606、607にヒットするのはファイルサーバ102側の高速化装置2(106)である。したがって、クライアント101側の高速化装置1(105)は、手順602、603、604以外の手順605,606、607をスキップしてもよい。またファイルサーバ102側の高速化装置2(106)は、手順605,606、607以外の手順602、603、604をスキップ処理をしてもよい。 入力処理部504は、LAN側NIF502の入力バッファ521にリクエストが入ったと判断602した場合は、それがcloseコマンドか否か判断し(621)、closeコマンドであればプリフェッチ処理部506のプリフェッチ処理D(図12)に処理を引きつぐ(622)。プリフェッチ処理Dは、図4の手順413ないし415に対応する処理である。なお、手順621は、図4の手順404に対応する。
  一方、closeコマンドでなければ、入力処理部504は、readコマンドか否か判断する(623)。readコマンドであればプリフェッチ処理部506のプリフェッチ処理B(図10)に処理を引き継ぐ(624)。プリフェッチ処理Bは、手順407ないし411に相当する処理で、追加の先読み要求をするべきか判断する処理を行う。またプリフェッチ処理Bは、readコマンドに内容に応じて、ランダムアクセスかシーケンシャルアクセスかを判別し、先読み先や先読み量の変更を行う。
Next, details of the processing of the input processing unit 504 will be described with reference to FIG. After the processing start 601, the input processing unit 504 repeatedly executes a series of procedures from determination 602 to determination 607, and performs each processing when hitting each determination. Note that it is the high-speed apparatus 1 (105) on the client 101 side that hits the procedures 602, 603, and 604, and the high-speed apparatus 2 (106 on the file server 102 side that hits the procedures 605, 606, and 607. ). Therefore, the acceleration apparatus 1 (105) on the client 101 side may skip steps 605, 606, and 607 other than steps 602, 603, and 604. Further, the speed-up device 2 (106) on the file server 102 side may skip the procedures 602, 603, and 604 other than the procedures 605, 606, and 607. If the input processing unit 504 determines that the request has entered the input buffer 521 of the LAN-side NIF 502 602, the input processing unit 504 determines whether the request is a close command (621), and if it is a close command, the prefetch processing unit 506 performs the prefetch processing D The process is pulled to (FIG. 12) (622). The prefetch process D is a process corresponding to the procedures 413 to 415 in FIG. The procedure 621 corresponds to the procedure 404 in FIG.
On the other hand, if it is not a close command, the input processing unit 504 determines whether it is a read command (623). If it is a read command, the processing is transferred to prefetch processing B (FIG. 10) of the prefetch processing unit 506 (624). The prefetch process B is a process corresponding to steps 407 to 411, and performs a process of determining whether or not an additional prefetch request should be made. The prefetch process B determines whether the access is random access or sequential access according to the content of the read command, and changes the prefetch destination and the prefetch amount.
 一方、readコマンドでなければ、入力処理部504は、出力処理部のWAN側NIFバッファにメッセージを転送する(625)。(図4の手順406の一部に対応する。)WAN側NIFバッファにレスポンスが入ったと判断(603)した場合は、出力処理部505のLAN側NIFバッファ551にメッセージを転送する(631)。 On the other hand, if it is not a read command, the input processing unit 504 transfers the message to the WAN side NIF buffer of the output processing unit (625). (Corresponding to a part of the procedure 406 in FIG. 4) When it is determined that a response is received in the WAN side NIF buffer (603), the message is transferred to the LAN side NIF buffer 551 of the output processing unit 505 (631).
 WAN側NIFバッファに管理コマンドのレスポンスが入ったと判断した場合は(604)、プリフェッチ処理部506のプリフェッチ処理C641(図11)に処理を引き継ぐ。プリフェッチ処理Cは、管理要求コマンドに対するレスポンスに対して、データ部のみ切り離し、プリフェッチバッファに保持する処理を行う。 If it is determined that a management command response has been received in the WAN-side NIF buffer (604), the processing is transferred to the prefetch processing C641 (FIG. 11) of the prefetch processing unit 506. The prefetch process C performs a process of separating only the data part and holding it in the prefetch buffer in response to the response to the management request command.
 なお、管理コマンドとは、アプリケーション高速化装置1(105)および2(106)の間で情報のやり取りを行うためのコマンドであり、本実施例では管理要求コマンドと管理closeコマンドの2つを用いる。またそれぞれリクエストとレスポンスがあり、フォーマットからリクエストに対するレスポンスが容易に判断でき、かつフォーマットからリクエストとレスポンスを容易に識別可能とする。 The management command is a command for exchanging information between the application acceleration apparatuses 1 (105) and 2 (106). In this embodiment, two management request commands and a management close command are used. . Each request has a request and a response. The request response can be easily determined from the format, and the request and response can be easily identified from the format.
 WAN側NIFバッファにリクエストが入ったと判断した場合は(605)、出力処理部505のLAN側NIFバッファ551にメッセージを転送する(651)。 When it is determined that the request has entered the WAN side NIF buffer (605), the message is transferred to the LAN side NIF buffer 551 of the output processing unit 505 (651).
 LAN側NIFバッファにレスポンスが入ったと判断した場合606は、レスポンスがcloseコマンドか否か判断661し、closeコマンドであれば、そのレスポンスの処理をプリフェッチ処理部506のプリフェッチ処理F(図14)に処理を引き継ぐ662。そうでない場合は続いてopenコマンドか否か判断663し、そうであればプリフェッチ処理部506のプリフェッチ処理Eに処理を引き継ぐ664。そうでない場合は続いてreadコマンドか否か判断665し、そうである場合には管理レスポンスを作成666する。その後、出力処理部505のWAN側NIFバッファ552にメッセージを転送667する。 If it is determined that the response has entered the LAN side NIF buffer 606, it is determined whether the response is a close command 661. If the response is a close command, the response processing is transferred to the prefetch processing F (FIG. 14) of the prefetch processing unit 506. 662 to take over processing. If not, it is then determined whether the command is an open command 663, and if so, the processing is transferred to the prefetch processing E of the prefetch processing unit 506, 664. If not, it is then determined whether the command is a read command 665, and if so, a management response is created 666. Thereafter, the message is transferred 667 to the WAN side NIF buffer 552 of the output processing unit 505.
 WAN側NIFバッファに管理コマンドのリクエストが入ったと判断607した場合はプリフェッチ処理部506のプリフェッチ処理A671にメッセージを転送する。 If it is determined that a management command request has been received in the WAN side NIF buffer 607, the message is transferred to the prefetch processing A 671 of the prefetch processing unit 506.
 以上が入力処理部504の処理詳細である。 次に、図4の406,409のTID付け替えの際に行う、TIDの管理処理について説明する。 図8は、図7の手順を実行するために出力処理部505が保持するテーブル(A)(B)を示す。1つ目のテーブル(A)は、最新TID管理テーブル801であり、セッションIDごとの最新のTIDを管理するためにセッションID列811とTID列812を持つ。2つ目のテーブル(B)は、更新前TID管理テーブル802であり、セッションIDごとの変更前TIDと変更後TIDの対応付けを管理するために、セッションID列821と変更前TID列822と変更後TID列823とを持つ。 The above is the processing details of the input processing unit 504. Next, a description will be given of TID management processing that is performed when the TID replacement of 406 and 409 in FIG. FIG. 8 shows tables (A) and (B) held by the output processing unit 505 in order to execute the procedure of FIG. The first table (A) is the latest TID management table 801, which has a session ID column 811 and a TID column 812 for managing the latest TID for each session ID. The second table (B) is a pre-update TID management table 802. In order to manage the association between the pre-change TID and the post-change TID for each session ID, the session ID column 821 and the pre-change TID column 822 It has a TID column 823 after the change.
 図7は、出力処理部505の処理詳細を示す。図7の手順の詳細に合わせて、図8の2つのテーブルの更新方法を説明する。 FIG. 7 shows the processing details of the output processing unit 505. A method for updating the two tables in FIG. 8 will be described in accordance with the details of the procedure in FIG.
 出力処理部505は処理開始701後、判断702から判断705までの一連の手順を繰り返し実行し、各判断処理にヒットする場合にそれぞれの処理を行う。 After the processing start 701, the output processing unit 505 repeatedly executes a series of procedures from the determination 702 to the determination 705, and performs each processing when hitting each determination processing.
 なお、手順702、703にヒットするのは、クライアント101側の高速化装置1(105)であり、また手順704、705にヒットするのはファイルサーバ102側の高速化装置2(106)である。クライアント101側の高速化装置1(105)は、手順702、703以外の手順704、705はスキップしてもよい。また、ファイルサーバ102側の高速化装置2(106)は、手順704、705以外の手順702、703をスキップしてもよい。 Note that it is the speed-up device 1 (105) on the client 101 side that hits the procedures 702 and 703, and the speed-up device 2 (106) on the file server 102 side hits the steps 704 and 705. . The high-speed apparatus 1 (105) on the client 101 side may skip steps 704 and 705 other than the steps 702 and 703. Further, the acceleration device 2 (106) on the file server 102 side may skip the procedures 702 and 703 other than the procedures 704 and 705.
 WAN側NIFバッファ552にリクエストが入ったと判断した場合(702)は、メッセージ中のセッションIDを用いて最新TID管理テーブル801から最新のTIDの値(aとする)を取得し、最新TID管理テーブル801のTID列812をa+1に更新し(721)、更新前TID管理テーブル802にメッセージ中のセッションIDとメッセージ中のTIDとaを用いてレコードを挿入し(722)、WAN側NIF503の出力バッファ532にメッセージを転送する(723)。手順721ないし723は、図4の手順406をより詳細にしたものに対応する。WAN側NIF503の出力バッファに532に保持されるメッセージは、TCPに従って、送信帯域制御を行い、WANに送出される。 If it is determined that a request has entered the WAN side NIF buffer 552 (702), the latest TID value (a) is acquired from the latest TID management table 801 using the session ID in the message, and the latest TID management table is obtained. The TID column 812 of 801 is updated to a + 1 (721), a record is inserted into the pre-update TID management table 802 using the session ID in the message, the TID in the message, and a (722), and the output buffer of the WAN side NIF 503 The message is transferred to 532 (723). Procedures 721 to 723 correspond to a more detailed procedure 406 of FIG. The message held in the output buffer 532 of the WAN-side NIF 503 performs transmission bandwidth control according to TCP and is sent to the WAN.
 LAN側NIFバッファ551にレスポンスが入ったと判断した場合は(703)、メッセージ中のセッションIDとTID(これは更新後TID)を用いて更新前TID管理テーブル802からメッセージ中のセッションID及びTIDに対応するレコードを探索し、更新前TID(bとする)を取得し、メッセージ中のTIDをbに更新する。その後、出力処理部505は、探索したレコードを削除する(731)。 If it is determined that a response has entered the LAN-side NIF buffer 551 (703), the session ID and TID in the message are updated from the pre-update TID management table 802 using the session ID and TID in the message (this is the updated TID). The corresponding record is searched, the pre-update TID (referred to as b) is acquired, and the TID in the message is updated to b. Thereafter, the output processing unit 505 deletes the searched record (731).
 ここで、プリフェッチ処理部506が出力したレスポンスの場合は、更新前TID管理テーブル802内にレコードがない場合がある。そこで手順731においてレコードが見つかったか否か判断し(732)、見つからなかった場合はメッセージ中のセッションIDを用いて最新TID管理テーブル801から最新のTIDの値(cとする)を取得(801)し、のTID列812をc+1に更新しメッセージ中のTIDをcに更新する733。その後LAN側NIF502の出力バッファ522に、TIDがcに更新されたメッセージを転送する(734)。LAN側NIF502は、出力バッファ522に格納されるメッセージをクライアント101に向かって順次転送する。手順731ないし734は、図6の手順631によりLAN側NIFに転送されるレスポンスに対して実行される。例えば、手順731から734は、図4の406に対応する。 Here, in the case of the response output by the prefetch processing unit 506, there may be no record in the pre-update TID management table 802. In step 731, it is determined whether a record is found (732). If no record is found, the latest TID value (c) is acquired from the latest TID management table 801 using the session ID in the message (801). Then, the TID column 812 is updated to c + 1 and the TID in the message is updated to c733. Thereafter, the message with the TID updated to c is transferred to the output buffer 522 of the LAN side NIF 502 (734). The LAN side NIF 502 sequentially transfers messages stored in the output buffer 522 toward the client 101. Steps 731 to 734 are executed for the response transferred to the LAN side NIF by step 631 in FIG. For example, procedures 731 to 734 correspond to 406 in FIG.
 WAN側NIFバッファ552にレスポンスが入ったと判断した場合(704)は、メッセージ中のセッションIDとTID(これは更新後TID)を用いて更新前TID管理表802からレコードを探索し更新前TID(dとする)を取得しメッセージ中のTIDをdに更新した後にレコードを削除741する。その後WAN側NIF503の出力バッファ532にメッセージを転送742する。 If it is determined that a response has been received in the WAN side NIF buffer 552 (704), a record is searched from the pre-update TID management table 802 using the session ID and TID (this is the updated TID) in the message, and the pre-update TID ( (d), and the record is deleted 741 after the TID in the message is updated to d. Thereafter, the message is transferred 742 to the output buffer 532 of the WAN side NIF 503.
 LAN側NIFバッファ551にレスポンスが入ったと判断705した場合はメッセージ中のセッションIDを用いて最新TID管理テーブル801から最新のTIDの値(eとする)を取得後801のTID列812をe+1に更新751し、更新前TID管理テーブル802にメッセージ中のセッションIDとメッセージ中のTIDとeを用いてレコードを挿入752し、LAN側NIF502の出力バッファ522にメッセージを転送753する。 以上が、出力処理部505が、クライアント側とのトランザクションと、サーバ側とのトランザクションを対応づけるために、TIDを管理する処理である。 If it is determined 705 that a response has entered the LAN side NIF buffer 551, the latest TID value (referred to as e) is obtained from the latest TID management table 801 using the session ID in the message, and then the TID column 812 of 801 is set to e + 1. Update 751, insert a record 752 into the pre-update TID management table 802 using the session ID in the message, the TID and e in the message, and forward 753 the message to the output buffer 522 of the LAN side NIF 502. The above is the process in which the output processing unit 505 manages the TID so as to associate the transaction with the client side with the transaction with the server side.
 続いて、図9から図13、図24から図26を用いてプリフェッチ処理部506の処理詳細を説明する。図24は、プリフェッチ要求管理テーブル560を示す図である。プリフェッチ要求管理テーブル560は、ファイルごとのプリフェッチバッファサイズと次回プリフェッチする場所を管理するテーブルである。本テーブルの主キーはFID列2410である(FIDはシステムユニークな値のため、主キーになりうる)。また、FIDは、特定のユーザにより、オープンしたファイルオブジェクトを特定する識別子である。 Subsequently, processing details of the prefetch processing unit 506 will be described with reference to FIGS. 9 to 13 and FIGS. 24 to 26. FIG. 24 is a diagram showing the prefetch request management table 560. The prefetch request management table 560 is a table for managing a prefetch buffer size for each file and a location to be prefetched next time. The primary key of this table is the FID column 2410 (the FID can be the primary key because it is a system unique value). The FID is an identifier that identifies a file object opened by a specific user.
 プリフェッチオフセット列2420は現在どこまでファイルの部分データをプリフェッチできているかを表す。つまり、アプリケーション高速化装置のファイルの部分データの取得状況を示す。次回プリフェッチを行うときは、アプリケーション高速化装置105,106は、この列で示されたオフセット位置から読込むリクエスト発行する。 
 プリフェッチバッファサイズ列2430はFID列2410で表されるファイルオブジェクトに割り当てられたプリフェッチバッファのサイズを現す列である。つまり、プリフェッチバッファサイズ2430の値は、特定ユーザに対して該当ファイルのために割り当てられるバッファの上限値を示す。
The prefetch offset column 2420 indicates how far the partial data of the file can be prefetched. That is, the acquisition state of the partial data of the file of the application acceleration device is shown. When the next prefetch is performed, the application acceleration apparatuses 105 and 106 issue a request for reading from the offset position indicated in this column.
The prefetch buffer size column 2430 is a column indicating the size of the prefetch buffer allocated to the file object represented by the FID column 2410. That is, the value of the prefetch buffer size 2430 indicates the upper limit value of the buffer allocated for the specific file to the specific user.
 本テーブルにはファイルオープンに伴いFIDが発行されたとき(すなわちopenのレスポンス受信時)にレコードが追加する。その際のプリフェッチオフセットは0、プリフェッチバッファサイズは初期値 (ここでは1MB) とする。 
  図25は、プリフェッチデータ管理テーブル570を示す。プリフェッチデータ管理テーブル570は、ファイルごとのプリフェッチ済み箇所とプリフェッチバッファ内での場所を管理するテーブルである。本テーブルの主キーはFID列2510と開始オフセット列2520の組み合わせである。(本テーブルは同一FIDに対して複数のレコードが存在する (プリフェッチバッファ内でフラグメントするため)。)
  開始オフセット列2520と終了オフセット列2530は、FIDで表されるファイルのどこからどこまでの部分データをプリフェッチしたかを表す。 
  プリフェッチバッファ内オフセット列2540は、プリフェッチバッファに格納される当該ファイルの部分データの、プリフェッチバッファにおける開始オフセットをあらわす。プリフェッチバッファ内での終了オフセットは、終了オフセット列2530とプリフェッチバッファ内開始オフセット2540との値から特定される。 
 図9は、プリフェッチ処理部506のプリフェッチ処理Aの処理詳細である。
A record is added to this table when an FID is issued when a file is opened (that is, when an open response is received). In this case, the prefetch offset is 0, and the prefetch buffer size is the initial value (here 1MB).
FIG. 25 shows the prefetch data management table 570. The prefetch data management table 570 is a table for managing a prefetched location for each file and a location in the prefetch buffer. The primary key of this table is a combination of the FID column 2510 and the start offset column 2520. (This table has multiple records for the same FID (because it is fragmented in the prefetch buffer).)
The start offset column 2520 and the end offset column 2530 indicate where to where the partial data of the file represented by the FID has been prefetched.
The prefetch buffer offset column 2540 represents the start offset in the prefetch buffer of the partial data of the file stored in the prefetch buffer. The end offset in the prefetch buffer is specified from values of the end offset string 2530 and the prefetch buffer start offset 2540.
FIG. 9 shows the details of the prefetch processing A of the prefetch processing unit 506.
 プリフェッチ処理Aは,図6で、WAN側NIFのバッファに管理コマンドリクエストが保持されている場合に実行される。 The prefetch processing A is executed when a management command request is held in the WAN NIF buffer in FIG.
 ここではまず処理開始後(901)、受け取ったメッセージが管理要求コマンド(例えば、追加先読み依頼)か否か判断(902)し、管理要求コマンドであればプリフェッチバッファ分のreadコマンド(リクエスト)を作成し(921)、出力処理部505のLAN側NIFバッファ551に渡し922、処理を終える(903)。その後、図7の処理フローにて、出力処理部505は、LAN側NIFバッファに格納されるメッセージの処理を行う。従って、サーバ側のアプリケーション装置2(106)は、手順921で作成されたreadコマンドによる先読み要求を行い、ファイルサーバ102に送信し、ファイルの部分データを取得する。 Here, after the processing is started (901), it is determined whether or not the received message is a management request command (for example, add prefetch request) (902), and if it is a management request command, a read command (request) for the prefetch buffer is created. (921), the data is transferred 922 to the LAN side NIF buffer 551 of the output processing unit 505, and the processing ends (903). Thereafter, in the processing flow of FIG. 7, the output processing unit 505 processes the message stored in the LAN side NIF buffer. Accordingly, the server-side application apparatus 2 (106) makes a prefetch request by the read command created in the procedure 921, and transmits it to the file server 102 to acquire partial data of the file.
 一方、管理要求コマンドではない場合(すなわち管理closeコマンドである場合)は、プリフェッチ処理部506は、closeコマンドを作成し(931)、出力処理部505のLAN側NIFバッファ552に渡し(932)、処理を終える(903)。その後、図7の処理フローにて、出力処理部505は、LAN側NIFバッファに格納されるメッセージの処理を行う。従って、サーバ側のアプリケーション装置2(106)は、手順931で作成されたcloseコマンドを送信する処理を行う(図4の手順416の一部に対応する。)。 On the other hand, if it is not a management request command (that is, if it is a management close command), the prefetch processing unit 506 creates a close command (931) and passes it to the LAN side NIF buffer 552 of the output processing unit 505 (932). The process ends (903). Thereafter, in the processing flow of FIG. 7, the output processing unit 505 processes the message stored in the LAN side NIF buffer. Accordingly, the server-side application apparatus 2 (106) performs a process of transmitting the close command created in the procedure 931 (corresponding to a part of the procedure 416 in FIG. 4).
 図10は、プリフェッチ処理部506のプリフェッチ処理Bの処理詳細である。プリフェッチ処理Bは、クライアント側のアプリケーション高速化装置1(105)のLAN側NIFのバッファにreadコマンドを保持した場合に行う処理である。図4の手順407ないし411に対応する。ここではまず処理開始後(1001)、プリフェッチ処理部506は、プリフェッチデータ管理テーブル570を参照し、受け取ったreadコマンドの要求範囲に該当するファイルの部分データが先読み済みか否か、要求範囲に該当するデータが、プリフェッチバッファ550に保持されているか判断する(1002)。判断の結果、保持されていれば(先読み済みであれば)、プリフェッチ処理部506は、クライアント101から送信された過去のreadコマンドの要求範囲に基づいて、クライアントからのアクセスパターンがシーケンシャルか否か判断し(1021)、判断結果、シーケンシャルであれば、次回取得プリフェッチバッファサイズを増加させる(1022)。一方、該当するふぁる野部分データデータが保持されていない(先読み済みではない)場合は、プリフェッチ処理部506は、アクセスパターンがランダムか否か判断し(1003)、ランダムであれば次回取得バッファサイズを減少させる(1031)。 FIG. 10 shows the details of the prefetch processing B of the prefetch processing unit 506. The prefetch process B is a process performed when a read command is held in the LAN side NIF buffer of the client side application acceleration apparatus 1 (105). This corresponds to the procedures 407 to 411 in FIG. Here, after the processing is started (1001), the prefetch processing unit 506 refers to the prefetch data management table 570, and whether or not the partial data of the file corresponding to the request range of the received read command has been prefetched, corresponds to the request range. It is determined whether the data to be stored is held in the prefetch buffer 550 (1002). As a result of the determination, if it is held (if prefetched), the prefetch processing unit 506 determines whether the access pattern from the client is sequential based on the request range of the past read command transmitted from the client 101. If it is determined (1021) and the determination result is sequential, the next acquisition prefetch buffer size is increased (1022). On the other hand, when the corresponding partial field data is not held (not pre-read), the prefetch processing unit 506 determines whether the access pattern is random (1003). The size is reduced (1031).
 バッファサイズを増減させる場合は、プリフェッチ処理部506は、手順1002、1021,1022により、プリフェッチ処理部506は、クライアントからのアクセス履歴により、ランダムアクセスかシーケンシャルアクセスかを判別し、次回取得プリフェッチバッファサイズを更新する。なおアクセスパターンの判定処理の詳細とプリフェッチバッファサイズについては後述する。その後、プリフェッチ処理部506は、もっとも古いプリフェッチバッファを解放する(1004)。 When the buffer size is increased / decreased, the prefetch processing unit 506 determines whether the access is random access or sequential access based on the access history from the client according to steps 1002, 1021, and 1022, and the prefetch buffer size to be acquired next time Update. Details of the access pattern determination process and the prefetch buffer size will be described later. Thereafter, the prefetch processing unit 506 releases the oldest prefetch buffer (1004).
 さらに、プリフェッチ処理部506は、新たにプリフェッチバッファを確保し(1005)、管理要求コマンドを作成し、(1006)。出力処理部505のWAN側NIFバッファに渡す(552)。管理要求コマンドに対する処理は、図7で前述のとおりである。 Further, the prefetch processing unit 506 newly secures a prefetch buffer (1005), creates a management request command (1006). The data is transferred to the WAN side NIF buffer of the output processing unit 505 (552). The processing for the management request command is as described above with reference to FIG.
 その後、プリフェッチ処理部506は、プリフェッチバッファにファイルの部分データが入ってきた後、プリフェッチバッファからファイルデータを含む、readコマンドに対する応答を作成し(1008)、出力処理部505のLAN側NIFバッファ551に渡す(1009)。 Thereafter, the prefetch processing unit 506 creates a response to the read command including the file data from the prefetch buffer after the partial data of the file has entered the prefetch buffer (1008), and the LAN side NIF buffer 551 of the output processing unit 505. (1009).
 次に、プリフェッチバッファ内データに対し閾値n%を超えるアクセスがあったか否か判断し(1010)、閾値を超えた場合は古いプリフェッチバッファを解放1011し、新たにプリフェッチバッファを確保する(1012)。次のファイルの部分データを取得するための追加先読み依頼である管理要求コマンドを作成し(1013)、出力処理部505のWAN側NIFバッファに渡す(1014)。その後、処理を終える1015。以上、プリフェッチするデータ量の更新処理や、追加の先読み依頼を行う処理を含むプリフェッチ処理Bの詳細を説明した。なお、手順1010の、プリフェッチバッファ内データに対するアクセス状況を監視する処理は、図10のタイミングに限らず、定期的に行ってもよい。 Next, it is determined whether or not there is an access exceeding the threshold value n% for the data in the prefetch buffer (1010). If the threshold value is exceeded, the old prefetch buffer is released 1011 and a new prefetch buffer is secured (1012). A management request command which is an additional prefetch request for acquiring partial data of the next file is created (1013) and passed to the WAN side NIF buffer of the output processing unit 505 (1014). Thereafter, the process is finished 1015. The details of the prefetch process B including the process of updating the amount of data to be prefetched and the process of making an additional prefetch request have been described above. Note that the process of monitoring the access status to the data in the prefetch buffer in the procedure 1010 is not limited to the timing of FIG. 10 and may be performed periodically.
 ここで、図10のステップ1003及び1021の判定処理に関する、アクセスパターンとプリフェッチバッファについて、図15,図26,図27及び図28を用いて説明する。本実施例では、プリフェッチ処理部506が、あるファイルに対するアクセスの履歴から、アクセスパターンが、シーケンシャルアクセス、ランダムアクセス、ニュートラルアクセスいずれかを判定し、判定結果に基づいて、プリフェッチの制御を変更する。 Here, the access pattern and the prefetch buffer related to the determination processing in steps 1003 and 1021 in FIG. 10 will be described with reference to FIGS. 15, 26, 27, and 28. FIG. In this embodiment, the prefetch processing unit 506 determines whether the access pattern is sequential access, random access, or neutral access from the history of access to a certain file, and changes the prefetch control based on the determination result.
 ここでシーケンシャルアクセスとは、クライアントからの複数のreadコマンドで要求されるアドレス範囲を比較すると、連続するアドレス範囲を指定されていると判定されるアクセスパターンをいう。またはシーケンシャルアクセスとは、複数のreadコマンドにより指定されるアドレス範囲が、プリフェッチバッファのn%以上のデータを読んだ場合の事とする。なお、n%は、図10の手順1010の閾値n%よりも小さい。 “Sequential access” refers to an access pattern in which it is determined that a continuous address range is specified by comparing address ranges requested by a plurality of read commands from a client. Alternatively, the sequential access is a case where data whose address range specified by a plurality of read commands is n% or more of the prefetch buffer is read. Note that n% is smaller than the threshold value n% of the procedure 1010 in FIG.
 またランダムアクセスとは、クライアントからの連続するreadコマンドによって、所定の回数連続してプリフェッチバッファのn%以上のファイルの部分データを読まなかった場合の事とする。 Also, random access is a case where partial data of a file of n% or more of the prefetch buffer is not read continuously for a predetermined number of times by continuous read commands from the client.
 また、ニュートラルアクセスとは、シーケンシャルアクセスでもランダムアクセスでもない場合の事とし、具体的にはプリフェッチバッファのn%以上のファイルの部分データを読んだり読まなかったりした場合を指す。 In addition, the neutral access means a case where neither a sequential access nor a random access, and specifically, a case where a partial data of a file of n% or more of the prefetch buffer is read or not read.
 図10の手順1021で。ここであるファイルがシーケンシャルアクセスと判定されているのであれば、プリフェッチバッファのサイズを増やす(1022)ことでクライアントから見たアクセス速度をさらに速くできる。 In step 1021 of FIG. If the file is determined to be sequential access, the access speed seen from the client can be further increased by increasing the size of the prefetch buffer (1022).
 一方であるファイルがランダムアクセスと判定されているのであれば、プリフェッチバッファのサイズを減らす事で、実際にクライアントからアクセスされないファイルの部分データをWANに流れることを防止できる。さらに、シーケンシャルアクセスと判断し、プリフェッチバッファのサイズを増やした場合、新しいサイズにおいてもシーケンシャルアクセスを行う(すなわち連続して新しいサイズのプリフェッチバッファのn%以上のファイルの部分データを読む)か否か分からないため、一旦ニュートラルアクセスとして扱い、新たにアクセス種別の判断をおこなう。同様にシーケンシャルアクセスと判断し、プリフェッチバッファのサイズを増やした場合、新しいサイズにおいてもランダムアクセスを行う(すなわち連続して新しいサイズのプリフェッチバッファのn%以上のファイルの部分データを読まない)か否か分からないため、一旦ランダムアクセスとして扱い、あらたにアクセス種別の判断をおこなう。 If a file on the other hand is determined to be random access, the partial data of the file that is not actually accessed by the client can be prevented from flowing to the WAN by reducing the size of the prefetch buffer. Further, when it is determined that sequential access is performed and the size of the prefetch buffer is increased, whether sequential access is performed even in the new size (that is, whether or not the partial data of a file of n% or more of the prefetch buffer of the new size is continuously read). Since it is unknown, it is treated as neutral access once and a new access type is determined. Similarly, when it is determined that sequential access is performed and the size of the prefetch buffer is increased, whether random access is performed even in the new size (that is, the partial data of the file of n% or more of the prefetch buffer of the new size is not read continuously). Since it is not known, it is treated as random access and the access type is newly determined.
 以上の説明をまとめた状態遷移図の例を図15に示す。プリフェッチ処理部505が、図10の手順1021,1003で行う、シーケンシャルアクセスやランダムアクセスの判断基準を3回連続したn%以上(もしくは以下)のアクセスとした場合で、説明する。 An example of a state transition diagram summarizing the above explanation is shown in FIG. A description will be given of a case where the prefetch processing unit 505 determines the sequential access and random access determination criteria performed in steps 1021 and 1003 of FIG.
 ここではニュートラルアクセス状態を1501、シーケンシャルアクセス状態を1502、ランダムアクセス状態を1503とし、ニュートラル状態からプリフェッチバッファのn%読込むと状態1521へ進み、さらに次のプリフェッチバッファのn%読込むと状態1522へ進み、さらに次のプリフェッチバッファのn%読込むとシーケンシャルアクセス1502と判断され、次回取得バッファサイズを増やしニュートラルアクセス状態1501に戻る。同様にニュートラル状態からプリフェッチバッファのn%読込まないと状態1531へ進み、さらに次のプリフェッチバッファのn%読込まないと状態1532へ進み、さらに次のプリフェッチバッファのn%読込まないとシーケンシャルアクセス1503と判断され、次回取得バッファサイズを減らしニュートラルアクセス状態1501に戻る。なお、シーケンシャルアクセス状態への移行中状態1521および1522においてプリフェッチバッファのn%読込まないと状態1531に移行する。またランダムアクセス状態への移行中状態1531および1532においてプリフェッチバッファのn%読込むと状態1531に移行する。 Here, the neutral access state is set to 1501, the sequential access state is set to 1502, and the random access state is set to 1503. When n% of the prefetch buffer is read from the neutral state, the process proceeds to state 1521. When n% of the next prefetch buffer is read, the process proceeds to state 1522. Further, when n% of the next prefetch buffer is read, it is determined that sequential access 1502 is made, the next acquisition buffer size is increased, and the state returns to the neutral access state 1501. Similarly, if n% of the prefetch buffer is not read from the neutral state, the process proceeds to state 1531. If n% of the next prefetch buffer is not read, the process proceeds to state 1532. If n% of the next prefetch buffer is not read, sequential access is performed. 1503 is determined, and the next acquisition buffer size is reduced, and the process returns to the neutral access state 1501. If n% of the prefetch buffer is not read in the state 1521 and 1522 during the transition to the sequential access state, the state 1531 is entered. When n% of the prefetch buffer is read in the state 1531 and 1532 during the transition to the random access state, the state 1531 is entered.
 図26は、アクセスパターン管理テーブルを示す。
図15のアクセスパターンの状態遷移のルールに従って遷移されたアクセスパターンの状態を
示す状態例2620と、クライアントからのアクセスが、連続した読み込みが発生したか、またはその回数を示す連続読み込み列2630と、をFID列2610にて対応づけるテーブルである。FID列2610は、主キーであり、ファイルオブジェクトごとにアクセスパタンの状態とクライアントからの連続読み込み回数、つまりクライアントからのファイルの読み出し要求範囲を含むアクセス履歴を管理する。状態列2620は、図15の状態遷移図中のどの状態にいるかを表す。
FIG. 26 shows an access pattern management table.
A state example 2620 indicating the state of the access pattern transitioned in accordance with the access pattern state transition rule of FIG. 15, a continuous reading sequence 2630 indicating whether or not the continuous access from the client has occurred, Is a table in which FID column 2610 is associated. The FID column 2610 is a primary key, and manages an access history including an access pattern state and the number of continuous readings from the client, that is, a file reading request range from the client, for each file object. The state column 2620 represents which state in the state transition diagram of FIG.
 なお、図24のプリフェッチバッファサイズ2430の値の管理については、最大値と最小値をあらかじめ、プリフェッチ処理部506が認識していてもよい。例えば、プリフェッチ処理部506は、プリフェッチバッファを大きくしすぎるとクライアント101間のアクセス速度に偏りが生じるため、プリフェッチバッファサイズにはユーザ定義もしくはシステム定義の上限を持たせる。また、プリフェッチバッファを小さくしすぎるとread一回分のデータすらバッファに乗らなくなるため、プリフェッチバッファサイズにはユーザ定義もしくはシステム定義の下限を持たせる。 Note that, regarding the management of the value of the prefetch buffer size 2430 in FIG. 24, the prefetch processing unit 506 may recognize the maximum value and the minimum value in advance. For example, the prefetch processing unit 506 has a user-defined or system-defined upper limit for the prefetch buffer size because the access speed between the clients 101 is biased if the prefetch buffer is too large. Further, if the prefetch buffer is too small, even the data for one read is not stored in the buffer, so the prefetch buffer size has a user-defined or system-defined lower limit.
 一例として、プリフェッチバッファサイズ1541の上限を8MB(1542)、下限を128KB(1543)とし、また初期値を1MB(1544)とする。プリフェッチバッファサイズを増加させる時には上限(1542)に達するまで2倍(1545)し、またプリフェッチバッファサイズを減少させる時には下限(1543)に達するまで半分(1546)にする。 As an example, the upper limit of the prefetch buffer size 1541 is 8 MB (1542), the lower limit is 128 KB (1543), and the initial value is 1 MB (1544). When the prefetch buffer size is increased, it is doubled (1545) until the upper limit (1542) is reached, and when the prefetch buffer size is decreased, it is halved (1546) until the lower limit (1543) is reached.
 また、ファイルに対する開始オフセット、終了オフセットの組み合わせで示すクライアントからのアクセスが、以下のように、最初のアクセス(Read(101,150))のあと、2回がランダムに読んだ後、シーケンシャルアクセスが続いた場合であり、かつ現在のプリフェッチバッファのn%が2000である場合の状態遷移を図27に示す。
Read(101, 150)
Read(301, 400)
Read(5501, 6500)
Read(6501, 7500)
Read(7501, 8500)
Read(8501, 9500)
Read(9501, 10500)
Read(10501, 11500) 
Read(11501, 12500) 
Read(12501, 13500)
  図27は、それぞれの行で、初期状態2710から、入力(クライアントからのアクセス)2720が発生すると、状態が、図15に従って遷移先2730に遷移し、その際アクセスパタン管理テーブル580の状態列2620の値は遷移先2730になり、またアクセスパタン管理テーブル580の連続読込み列2630の値は値2740になり、さらに次の入力に対しては一段下がった下の行で遷移することを示している。プリフェッチ処理部506は、その遷移後の状態とクライアントからのプリフェッチバッファに格納されているデータに対する連続読み込みがあったかを、図26のアクセスパターン管理テーブル580を更新する。
In addition, as for the access from the client indicated by the combination of the start offset and the end offset with respect to the file, after the first access (Read (101, 150)), after the random read twice, the sequential access is performed. FIG. 27 shows a state transition in the case where this is the case and n% of the current prefetch buffer is 2000.
Read (101, 150)
Read (301, 400)
Read (5501, 6500)
Read (6501, 7500)
Read (7501, 8500)
Read (8501, 9500)
Read (9501, 10500)
Read (10501, 11500)
Read (11501, 12500)
Read (12501, 13500)
27, in each row, when an input (access from a client) 2720 occurs from the initial state 2710, the state transitions to the transition destination 2730 according to FIG. 15, and in that case, the state column 2620 of the access pattern management table 580 The value of is the transition destination 2730, the value of the continuous reading column 2630 of the access pattern management table 580 is the value 2740, and further indicates that the next input is shifted in the lower row. . The prefetch processing unit 506 updates the access pattern management table 580 in FIG. 26 to confirm the state after the transition and whether or not the data stored in the prefetch buffer from the client has been continuously read.
 以上が、図10のステップ1003及び1021の判定処理に関する、アクセスパターンとプリフェッチバッファについての説明である。 The above is the description of the access pattern and the prefetch buffer regarding the determination processing in steps 1003 and 1021 of FIG.
 図11は、プリフェッチ処理部506のプリフェッチ処理Cの処理詳細である。 FIG. 11 shows the details of the prefetch processing C of the prefetch processing unit 506.
 プリフェッチ処理Cは、図6の手順604の処理結果に応じて行われる。 The prefetch processing C is performed according to the processing result of the procedure 604 in FIG.
 ここではまず処理開始1101後、受け取ったメッセージが管理要求コマンドのレスポンスか否か判断し(1102)、管理要求コマンド(例えば、追加先読み要求依頼)のレスポンスであればデータ部のみ切り離して新たに確保したプリフェッチバッファに、データ部に格納されているファイルの部分データを保存1121し、処理を終える(1103)。 Here, after starting processing 1101, it is determined whether the received message is a response to the management request command (1102). If the response is a management request command (for example, an additional prefetch request request), only the data part is separated and newly secured. The partial data of the file stored in the data portion is saved 1121 in the prefetch buffer thus completed, and the processing is completed (1103).
 図12は、プリフェッチ処理部506のプリフェッチ処理Dの処理詳細である。図4の手順412ないし415に対応し、図6の手順621の判断結果に応じて行われる。まず、プリフェッチ処理部506は、プリフェッチバッファを解放1202し、openコマンド受付663以降に同一FIDのファイルに対してwrite系のコマンドがなかったか否か判断する(1203)。 FIG. 12 shows the processing details of the prefetch processing D of the prefetch processing unit 506. Corresponding to steps 412 to 415 in FIG. 4, this is performed according to the determination result in step 621 in FIG. First, the prefetch processing unit 506 releases the prefetch buffer 1202 and determines whether there is no write command for the same FID file after the open command reception 663 (1203).
 write系コマンドがなかった場合は(手順1203の判断結果でYesの場合)、closeレスポンスを作りクライアントに返し(1231)、管理closeコマンドを作成する(1232)。そして、プリフェッチ処理部506は、closeしたファイルのFIDをメモリに記録しておき(1233)、出力処理部505のWAN側NIFバッファ552に渡し1204、処理を終える。手順1233にて記録したFIDはプリフェッチ処理部506プリフェッチ処理Fにて使用する。 If there is no write command (if the result of the determination in step 1203 is Yes), a close response is created and returned to the client (1231), and a management close command is created (1232). The prefetch processing unit 506 records the FID of the closed file in the memory (1233), passes it to the WAN side NIF buffer 552 of the output processing unit 505, and finishes the processing. The FID recorded in the procedure 1233 is used in the prefetch processing unit 506 prefetch processing F.
 一方write系コマンドがあった場合は(手順1203の判断結果でNoの場合)、プリフェッチ処理部506は、クライアント101からのcloseリクエストコマンドをそのまま出力処理部505のWAN側NIFバッファ552に渡し(1204)、処理を終える。Closeリクエストコマンドは、WANを介してファイルサーバ102に転送される。以上が、図12を用いてクライアント101からcloseコマンドを受領したときの、アプリケーション高速化装置105が行う処理フローを説明した。 On the other hand, if there is a write command (No in the determination result of step 1203), the prefetch processing unit 506 directly passes the close request command from the client 101 to the WAN side NIF buffer 552 of the output processing unit 505 (1204). ) Finish the process. The Close request command is transferred to the file server 102 via the WAN. The processing flow performed by the application acceleration device 105 when the close command is received from the client 101 has been described with reference to FIG.
 図13はプリフェッチ処理部506のプリフェッチ処理Eの処理詳細である。プリフェッチ処理Eは、ファイルサーバ側のアプリケーション装置2(106)が、openコマンドに対するレスポンスをファイルサーバから受領した場合に、そのレスポンスをWANを介してクライアントに転送する処理に対応して行う処理である。図4の手順403に対応する。 FIG. 13 shows details of the prefetch processing E of the prefetch processing unit 506. The prefetch process E is a process performed in response to the process of transferring the response to the client via the WAN when the application apparatus 2 (106) on the file server side receives the response to the open command from the file server. . This corresponds to the procedure 403 in FIG.
 まず、プリフェッチ処理部506は、プリフェッチバッファ分のreadコマンド(先読み要求)を作成し(1302)、出力処理部505のLAN側NIFバッファ551に渡し(1303)、処理を終える1304。 First, the prefetch processing unit 506 creates a read command (prefetch request) for the prefetch buffer (1302), passes it to the LAN side NIF buffer 551 of the output processing unit 505 (1303), and ends the processing 1304.
 図14は、プリフェッチ処理部506のプリフェッチ処理Fの処理詳細である。プリフェッチ処理Fは、ここではまず処理開始1401後、受け取ったcloseレスポンスメッセージのFIDが記録されているか判断1402し、記録されていた(すなわちプリフェッチ処理Dの手順1233で記録した)場合は何もしない(すなわちcloseレスポンスメッセージをここで破棄する)で処理を終える。一方、記録されていなかった場合はcloseレスポンスメッセージを出力処理部のLAN側NIFバッファに渡し1403、処理を終える1404。 実施例1は上記の方法を実装したアプリケーション高速化装置によって、図2に示す構成のシステムにおいて多くのユーザに対して平等にサービスを提供できるよう、一度に先読みするデータ量に制限を設ける。また既に先読みしたファイルの部分データへのアクセス進捗状況を監視し、必要に応じて後続のファイルの部分データを先読みする。また、全てのCIFSメッセージのTIDをつけかえ、不整合が生じないようにする。 FIG. 14 shows the processing details of the prefetch processing F of the prefetch processing unit 506. In the prefetch processing F, first after the processing start 1401, it is determined whether or not the FID of the received close response message is recorded, and if it is recorded (that is, recorded in the procedure 1233 of the prefetch processing D), nothing is done. The processing ends (that is, the close response message is discarded here). On the other hand, if it has not been recorded, a close response message is passed to the LAN side NIF buffer of the output processing unit 1403, and the process ends 1404. In the first embodiment, an application acceleration device that implements the above-described method places a limit on the amount of data that is prefetched at a time so that a service can be provided equally to many users in the system configured as shown in FIG. In addition, the progress of access to the partial data of the file that has been pre-read is monitored, and the partial data of the subsequent file is pre-read as necessary. Also, the TIDs of all CIFS messages are changed so that no inconsistency occurs.
 実施例1では、WANを介してクライアント側及びサーバ側の双方にアプリケーション高速化装置を備え、先読み処理を両装置が協調して行う例説明した。 In the first embodiment, an example has been described in which an application acceleration device is provided on both the client side and the server side via the WAN, and both devices perform the prefetch processing in cooperation.
 実施例2では、図16に示すクライアント側のアプリケーション高速化装置1605が、フィルサーバに対して、他のアプリケーション高速化装置と協調せずに、先読み処理を行う例を説明する。本実施例によると、アプリケーション高速化装置1605をクライアント側への導入で済む。以下、実施例1との差分を強調して説明する。 図17は実施例2のシーケンスである。実施例1の図1と比較して、openコマンドを受け取りプリフェッチを開始1701するのがアプリケーション高速化装置1605に変わっている。また、同様にプリフェッチが外れた場合もアプリケーション高速化装置1605がプリフェッチを開始する。 In the second embodiment, an example will be described in which the client-side application acceleration device 1605 illustrated in FIG. 16 performs prefetch processing on the fill server without cooperating with other application acceleration devices. According to the present embodiment, the application acceleration apparatus 1605 can be installed on the client side. Hereinafter, the difference from the first embodiment will be described with emphasis. FIG. 17 shows the sequence of the second embodiment. Compared to FIG. 1 of the first embodiment, the application acceleration device 1605 is changed to receive an open command and start 1701 prefetching. Similarly, when prefetching is lost, the application acceleration device 1605 starts prefetching.
 実施例1において図4で説明した処理の流れと図5で説明したアプリケーション高速化装置内の構成については、本実施例でも変更はない。ただし、アプリケーション高速化装置内の各処理部504、505、506の処理内容には若干の変更があるため、以下で説明する。 In the first embodiment, there is no change in the processing flow described in FIG. 4 in the first embodiment and the configuration in the application acceleration device described in FIG. However, the processing contents of the processing units 504, 505, and 506 in the application acceleration device are slightly changed, and will be described below.
 図18は入力処理部504の処理詳細である。ここでは実施例1の入力処理部504の処理詳細(図6)と比較し、入力処理部が判断するのはLAN側NIF502の入力バッファ521にリクエストが入った場合602とWAN側NIF503の入力バッファ531にレスポンスが入った場合1806だけになる。また、手順1806にヒットした場合の処理のうち、そのレスポンスがreadコマンドであった場合の処理がプリフェッチ処理部506のプリフェッチ処理Gへの引き継ぎ1866に変わる。 FIG. 18 shows the processing details of the input processing unit 504. Here, in comparison with the processing details (FIG. 6) of the input processing unit 504 of the first embodiment, the input processing unit determines that a request is input to the input buffer 521 of the LAN side NIF 502 and the input buffer of the WAN side NIF 503. When a response is entered in 531, only 1806 is set. In addition, among the processes in the case where the procedure 1806 is hit, the process in the case where the response is a read command is changed to the transfer 1866 to the prefetch process G of the prefetch processing unit 506.
 図19は出力処理部505の処理詳細である。ここでは実施例1の出力処理部505の処理詳細(図7)と比較し、出力処理部が判断するのはWAN側NIFバッファ552にリクエストが入った場合702とLAN側NIFバッファ551にレスポンスが入った場合703だけになる。判断702および703にヒットした以降の処理に変わりはない。 FIG. 19 shows the processing details of the output processing unit 505. Here, in comparison with the processing details (FIG. 7) of the output processing unit 505 of the first embodiment, the output processing unit determines that a request is entered in the WAN side NIF buffer 552 and a response is received in the LAN side NIF buffer 551. When entering, it becomes only 703. The processing after hitting the judgments 702 and 703 is not changed.
 図20から図23はプリフェッチ処理部506の処理詳細である。実施例1にあったプリフェッチ処理Aおよびプリフェッチ処理Cは実施例2のプリフェッチ処理部506には不要である。また、新たにプリフェッチ処理Fを追加する。 20 to 23 show details of the processing of the prefetch processing unit 506. The prefetch processing A and the prefetch processing C in the first embodiment are not necessary for the prefetch processing unit 506 in the second embodiment. In addition, a prefetch process F is newly added.
 図20はプリフェッチ処理部506のプリフェッチ処理Bの処理詳細である。実施例1の場合(図10)と比較し、管理要求コマンドを作成する手順1006および手順1013が、プリフェッチバッファ分のreadコマンド作成2006および2013に変わる。 FIG. 20 shows the details of the prefetch processing B of the prefetch processing unit 506. Compared to the case of the first embodiment (FIG. 10), the procedure 1006 and the procedure 1013 for creating the management request command are changed to read command creation 2006 and 2013 for the prefetch buffer.
 図21はプリフェッチ処理部506のプリフェッチ処理Dの処理詳細である。実施例1の場合(図12)と比較し、管理closeコマンドの作成1232手順が不要となる。 FIG. 21 shows the details of the prefetch processing D of the prefetch processing unit 506. Compared to the case of the first embodiment (FIG. 12), the management close command creation 1232 procedure becomes unnecessary.
 図22はプリフェッチ処理部506のプリフェッチ処理Eの処理詳細である。実施例1の場合(図13)と比較し、readコマンドの渡し先が出力処理部505のWAN側NIFバッファ532(2203)に変わる。 FIG. 22 shows the details of the prefetch processing E of the prefetch processing unit 506. Compared to the case of the first embodiment (FIG. 13), the read command transfer destination is changed to the WAN side NIF buffer 532 (2203) of the output processing unit 505.
 図23はプリフェッチ処理部506のプリフェッチ処理Gの処理詳細である。ここではまず処理開始2301後、データ部のみ切り離して新たに確保したプリフェッチバッファに保存2302し、処理を終える2303。 FIG. 23 shows the processing details of the prefetch processing G of the prefetch processing unit 506. Here, first, after the processing start 2301, only the data part is separated and stored in a newly secured prefetch buffer 2302, and the processing ends 2303.
 実施例2は、上記の方法を実装したアプリケーション高速化装置1605によって、図16に示す構成のシステムにおいて多くのクライアントに対して平等にサービスを提供できるよう、一度に先読みするファイルの部分データ量に制限を設ける。また既に先読みしたファイルの部分データへのアクセス進捗状況を監視し、必要に応じて後続の部分データを先読みする。また、アプリケーション高速化装置は、クライアントからのCIFSメッセージに含まれるTIDを変換して、サーバ側に先読み要求を含むCIFSメッセージを送信し、サーバからのレスポンスについても同様にTIDを変換して、クライアントのアクセス要求に応答する。それにより、不整合が生じないようにする。 上述の実施例により、ファイルを利用する一ユーザによるバッファの占有を防ぎ、効率的な先読み処理が可能となり、多くのユーザに対しても平等にサービスを提供できる。 ファイルの部分データを少しずつ読み込むため、帯域も他の通信に解放することができる。一度に読み込まないので、ユーザが利用しない部分データについての先読みのために、帯域を使う必要がなくなり、ネットワークの効率的な利用ができる。 In the second embodiment, the application acceleration device 1605 in which the above-described method is implemented can reduce the partial data amount of a file to be pre-read at a time so that a service can be provided equally to many clients in the system configured as shown in FIG. Set restrictions. Also, the progress of access to the partial data of the file that has already been pre-read is monitored, and the subsequent partial data is pre-read as necessary. In addition, the application acceleration device converts the TID included in the CIFS message from the client, sends a CIFS message including a prefetch request to the server side, and similarly converts the TID for the response from the server, Responds to access requests. Thereby, inconsistency is prevented from occurring. According to the above-described embodiment, it is possible to prevent the occupation of the buffer by one user who uses the file, to perform efficient prefetching processing, and to provide a service equally to many users.た め Since the partial data of the file is read little by little, the bandwidth can be released to other communications. Since it is not read at a time, it is not necessary to use a bandwidth for prefetching partial data that is not used by the user, and the network can be used efficiently.
 なお、CIFSプロトコルを例に説明したが、NFS(ネットワークファイルシステム)プロトコルやFTP(ファイル転送プロトコル)に従う通信を行うクライアントとサーバ間を中継する通信装置でも上述の実施例と同様のプリフェッチ制御をおこなってもよ
い。
Although the CIFS protocol has been described as an example, a prefetch control similar to that in the above-described embodiment is performed in a communication apparatus that relays between a client and a server that perform communication according to the NFS (Network File System) protocol or FTP (File Transfer Protocol). May be.
 なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。 In addition, this invention is not limited to the above-mentioned Example, Various modifications are included. For example, the above-described embodiments have been described in detail for easy understanding of the present invention, and are not necessarily limited to those having all the configurations described. Further, a part of the configuration of one embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of one embodiment. Further, it is possible to add, delete, and replace other configurations for a part of the configuration of each embodiment.
 また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。 In addition, each of the above-described configurations, functions, processing units, processing means, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit. Each of the above-described configurations, functions, and the like may be realized by software by interpreting and executing a program that realizes each function by the processor. Information such as programs, tables, and files for realizing each function can be stored in a recording device such as a memory, a hard disk, an SSD (Solid State Drive), or a recording medium such as an IC card, an SD card, or a DVD.
 また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。 Also, the control lines and information lines indicate what is considered necessary for the explanation, and not all the control lines and information lines on the product are necessarily shown. Actually, it may be considered that almost all the components are connected to each other.
105、106 アプリケーション高速化装置
103、104 TCP高速化装置
102 ファイルサーバ
105, 106 Application acceleration device 103, 104 TCP acceleration device 102 File server

Claims (15)

  1. 第一のネットワークを介してクライアントと、第二のネットワークを介してサーバとに接続される通信装置であって、
    前記サーバが提供するファイルのデータを保持可能なバッファと、
    前記バッファに対するデータの読み書き制御を行う、制御部と、を有し、
    前記制御部は、前記サーバが提供するファイルに対する前記クライアントからの少なくとも一以上のアクセスに基づいて、前記ファイルにおける所定の範囲について前記サーバに対して、先読みを実行するかを判別し、前記先読みを実行することにより、前記サーバから受信するファイルの部分データを前記バッファに保持する、ことを特徴とする通信装置。
    A communication device connected to a client via a first network and a server via a second network,
    A buffer capable of holding data of a file provided by the server;
    A control unit that performs read / write control of data with respect to the buffer,
    The control unit determines whether to perform prefetching to the server for a predetermined range in the file based on at least one access from the client to a file provided by the server, and performs the prefetching. The communication device, wherein the communication device stores the partial data of the file received from the server in the buffer.
  2. 請求項1記載の通信装置であって、
    前記クライアントからのアクセスが、ファイルのオープンリクエストである場合、
    前記制御部は、前記オープンリクエストを前記サーバに転送し、前記サーバからファイル識別子を受信するのに応じて前記先読みを実行する、ことを特徴とする通信装置。
    The communication device according to claim 1, wherein
    When the access from the client is a file open request,
    The said control part transfers the said open request to the said server, and performs the said prefetch according to receiving a file identifier from the said server, The communication apparatus characterized by the above-mentioned.
  3. 請求項2記載の通信装置であって、
    前記先読みは、前記ファイルにおける所定の範囲について、前記ファイルの指定と範囲とを指定を含む複数回のリード要求に分けてファイルの部分データを取得する、ことを特徴とする通信装置。
    The communication device according to claim 2,
    The communication apparatus according to claim 1, wherein the prefetching is obtained by dividing a predetermined range in the file into a plurality of read requests including designation of the file and designation of the file, and acquiring partial data of the file.
  4. 請求項3記載の通信装置であって、
    前記リード要求は、それぞれ識別可能な識別子を含む、ことを特徴とする通信装置。
    The communication device according to claim 3,
    Each of the read requests includes an identifiable identifier.
  5. 請求項2記載の通信装置であって、
    前記制御部は、前記クライアントへ前記ファイル識別子の送信後に、前記クライアントからのアクセスに対応するデータが、前記バッファにある場合、前記対応するデータを前記クライアントに送信する、ことを特徴とする通信装置。
    The communication device according to claim 2,
    The control unit transmits the corresponding data to the client when the data corresponding to the access from the client is in the buffer after transmitting the file identifier to the client. .
  6. 請求項5記載の通信装置であって、前記バッファに保持されるデータを前記クライアントに送信した量に基づいて、前記サーバに対して先読みを実行する、ことを特徴とする通信装置。 6. The communication apparatus according to claim 5, wherein prefetching is performed on the server based on an amount of data held in the buffer transmitted to the client.
  7. 請求項1ないし6いずれか記載の通信装置であって、
    前記制御部は、前記クライアントからのアクセスが、前記ファイルの部分データの取得要求である場合、前記取得要求に対応するデータを前記クライアントに送信するために前記バッファから読み出し、前記バッファからの読み出し量に基づいて、前記サーバに対して先読みを実行する、ことを特徴とする通信装置。
    The communication device according to any one of claims 1 to 6,
    When the access from the client is an acquisition request for partial data of the file, the control unit reads the data corresponding to the acquisition request from the buffer to transmit to the client, and the read amount from the buffer A pre-reading is performed on the server based on the communication device.
  8. 請求項7記載の通信装置であって、
    前記制御部は、前記読み出し量が所定の量を超えた場合、前記サーバに対して、前記ファイルにおける以前に先読みした範囲と連続する範囲を含むデータを先読みする、ことを特徴とする通信装置。
    The communication device according to claim 7,
    When the read amount exceeds a predetermined amount, the control unit prefetches data including a range continuous with a previously prefetched range in the file to the server.
  9. 請求項1ないし8いずれか記載の通信装置であって、
    前記クライアントからの複数のアクセスの履歴に基づいて
    前記ファイルにおける、先読みの対象を決定する、ことを特徴とする通信装置。
    The communication device according to any one of claims 1 to 8,
    A prefetch target in the file is determined based on a plurality of access histories from the client.
  10. 請求項9記載の通信装置であって、 
    前記複数のアクセスが、前記ファイルの連続する範囲を指定する場合、
    前記制御部は、前記先読み対象とする範囲を増加させる、ことを特徴とする通信装置。
    The communication device according to claim 9, wherein
    The plurality of accesses specify a continuous range of the file;
    The said control part increases the range made into the said prefetch object, The communication apparatus characterized by the above-mentioned.
  11. 請求項1ないし10記載の通信装置であって、
    前記第2のネットワークは、TCPに従うネットワークであり、
    前記サーバは、ファイル要求プロトコルに従ってファイルを前記クライアントに提供する、ことを特徴とする通信装置。
    The communication device according to claim 1, wherein
    The second network is a network according to TCP;
    The communication apparatus, wherein the server provides a file to the client according to a file request protocol.
  12. クライアントと、前記クライアントにファイルを提供するサーバとの通信を中継する通信システムであって、
    前記クライアントからのファイルに対するアクセスに応じて、バッファに格納されるデータのうち、前記ファイルに対応する部分データを読み出して前記クライアントに送信し、前記クライアントからのアクセス状況に応じて、前記ファイルに対する先読みリクエストを発行するバッファ制御装置と、
    前記先読みリクエストに基づいてサーバから前記ファイルの部分データを取得する取得装置と、
    を有する、ことを特徴とする通信システム。
    A communication system that relays communication between a client and a server that provides a file to the client,
    According to the access to the file from the client, the partial data corresponding to the file is read out of the data stored in the buffer and transmitted to the client, and the prefetching to the file is performed according to the access status from the client. A buffer controller that issues the request;
    An acquisition device that acquires partial data of the file from a server based on the prefetch request;
    A communication system characterized by comprising:
  13. 請求項12記載の通信システムであって、
    前記バッファ制御装置と、前記取得装置とは、ネットワークを介して接続され、
    前記ファイル取得装置は、前記クライアントからの前記ファイルの指定に応じて、前記サーバのファイルデータに対して前記ファイルの所定の範囲の部分データを取得し、
    前記クライアントからの前記ファイルに対する複数のリード要求により特定される先読み対象範囲に対応する部分データを取得し、前記バッファ制御装置に送信し、
    前記バッファ制御装置は、前記ファイル取得装置から受信される部分データを前記バッファに格納し、前記複数のリード要求の後に前記クライアント装置から送信されるリード要求に対応する部分データを前記バッファから読み出して前記クライアントに送信する、ことを特徴とする通信システム。
    The communication system according to claim 12, wherein
    The buffer control device and the acquisition device are connected via a network,
    The file acquisition device acquires partial data of a predetermined range of the file with respect to the file data of the server according to the specification of the file from the client,
    Obtaining partial data corresponding to a prefetch target range specified by a plurality of read requests for the file from the client, and transmitting the data to the buffer control device;
    The buffer control device stores partial data received from the file acquisition device in the buffer, and reads partial data corresponding to a read request transmitted from the client device after the plurality of read requests from the buffer. A communication system characterized by transmitting to the client.
  14. 請求項12記載の通信システムであって、
    前記バッファ制御装置と前記取得装置とはBUSを介して接続され、
    前記ファイル取得装置は、前記クライアントからの前記ファイルの指定に応じて、前記サーバのファイルデータに対して前記ファイルの所定の範囲の部分データを取得し、
    前記クライアントからの前記ファイルに対する複数のリード要求により特定される先読み対象範囲に対応する部分データを取得し、
    前記バッファ制御装置は、前記ファイル取得装置により取得される部分データを前記バッファに格納し、前記複数のリード要求の後に前記クライアント装置から送信されるリード要求に対応する部分データを前記バッファから読み出して前記クライアントに送信する、ことを特徴とする通信システム。
    The communication system according to claim 12, wherein
    The buffer control device and the acquisition device are connected via a BUS,
    The file acquisition device acquires partial data of a predetermined range of the file with respect to the file data of the server according to the specification of the file from the client,
    Obtaining partial data corresponding to a prefetch target range specified by a plurality of read requests for the file from the client;
    The buffer control device stores partial data acquired by the file acquisition device in the buffer, and reads partial data corresponding to a read request transmitted from the client device after the plurality of read requests from the buffer. A communication system characterized by transmitting to the client.
  15. クライアントとファイルサーバとがファイル共有プロトコルに従い、ファイルの部分データを通信する通信方法であって、
    前記クライアントからのファイルの指定に応じて、前記ファイルサーバからファイル識別子を取得し、
    前記ファイル識別子に対応するファイルのデータの所定の範囲について部分データの先読みリクエストを作成し、
    前記先読みリクエストをTCPに従って前記サーバに送信し、
    前記先読みリクエストに対応するレスポンスに含まれるファイルの部分データをバッファに保持し、
    前記クライアントからの前記ファイルのリード要求に対する前記バッファからの部分データの読み出し状況に基づいて、前記ファイルの先読み対象範囲を決定し、前記決定された先読み対象範囲についての先読みリクエストを前記サーバにTCPに従って送信し、前記サーバから受信するファイルの部分データを、前記クライアントからのさらなるリード要求のために前記バッファに格納する、ことを特徴とする通信方法。
    A communication method in which a client and a file server communicate partial data of a file according to a file sharing protocol,
    In response to the file designation from the client, obtain a file identifier from the file server,
    Creating a partial data prefetch request for a predetermined range of file data corresponding to the file identifier;
    Sending the prefetch request to the server according to TCP;
    Holding the partial data of the file included in the response corresponding to the prefetch request in a buffer;
    Based on a read status of partial data from the buffer in response to a read request of the file from the client, a prefetch target range of the file is determined, and a prefetch request for the determined prefetch target range is sent to the server according to TCP A communication method comprising: storing partial data of a file transmitted and received from the server in the buffer for further read request from the client.
PCT/JP2012/079310 2012-04-09 2012-11-12 Communication device, method, and system for relaying communication between client and server WO2013153694A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2012-088055 2012-04-09
JP2012088055A JP2013218505A (en) 2012-04-09 2012-04-09 Communication device and system for relaying communication between client and server

Publications (1)

Publication Number Publication Date
WO2013153694A1 true WO2013153694A1 (en) 2013-10-17

Family

ID=49327293

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2012/079310 WO2013153694A1 (en) 2012-04-09 2012-11-12 Communication device, method, and system for relaying communication between client and server

Country Status (2)

Country Link
JP (1) JP2013218505A (en)
WO (1) WO2013153694A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117130952A (en) * 2023-01-10 2023-11-28 荣耀终端有限公司 Pre-reading method and pre-reading device

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016132501A1 (en) * 2015-02-19 2016-08-25 富士通株式会社 Communications device, information processing method, and information processing program
JP6707824B2 (en) * 2015-09-07 2020-06-10 日本電気株式会社 Information terminal, information processing system, data reading method, and computer program
WO2017081801A1 (en) 2015-11-12 2017-05-18 富士通株式会社 Transfer device, transfer system, transfer method, and transfer program
WO2017163426A1 (en) * 2016-03-25 2017-09-28 富士通株式会社 Relay device, relay method, and relay program
JP7393642B2 (en) 2020-01-27 2023-12-07 富士通株式会社 Information processing device, analysis data generation program and method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007520812A (en) * 2004-01-08 2007-07-26 ネットワーク・アプライアンス・インコーポレイテッド Adaptive file look-ahead based on multiple factors
JP2011191856A (en) * 2010-03-12 2011-09-29 Hitachi Ltd Management method for file cache, file cache device, and program

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007520812A (en) * 2004-01-08 2007-07-26 ネットワーク・アプライアンス・インコーポレイテッド Adaptive file look-ahead based on multiple factors
JP2011191856A (en) * 2010-03-12 2011-09-29 Hitachi Ltd Management method for file cache, file cache device, and program

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MASAYUKI KATO ET AL.: "A Remote Access Method of Continuous Media Data with High Transparency and Portability Using File Systems", IPSJ SIG NOTES, vol. 2006, no. 26, 17 March 2006 (2006-03-17), pages 1 - 6 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117130952A (en) * 2023-01-10 2023-11-28 荣耀终端有限公司 Pre-reading method and pre-reading device

Also Published As

Publication number Publication date
JP2013218505A (en) 2013-10-24

Similar Documents

Publication Publication Date Title
WO2013153694A1 (en) Communication device, method, and system for relaying communication between client and server
US20200228433A1 (en) Computer-readable recording medium including monitoring program, programmable device, and monitoring method
US10630758B2 (en) Method and system for fulfilling server push directives on an edge proxy
CN105812351B (en) Realize the shared method and system of session
US7496678B2 (en) Method and system for unified caching of media content
RU2630377C1 (en) Method and device for the operation request processing in the data storage system
CN108429701B (en) Network acceleration system
US20040210584A1 (en) Method and apparatus for increasing file server performance by offloading data path processing
CN105224255B (en) A kind of storage file management method and device
KR20080015422A (en) Method and apparatus for increasing performance of http over long-latency links
CN108028833A (en) A kind of method, system and the relevant device of NAS data accesses
JP2008542887A5 (en)
JP2004318743A (en) File transfer device
US8819139B2 (en) Virtual desktop infrastructure (VDI) login acceleration
US9307025B1 (en) Optimized file creation in WAN-optimized storage
GB2510192A (en) Intermediate proxy server caching buffer searched with key (URI hash)
Ihm et al. Wide-area network acceleration for the developing world
US20030050996A1 (en) Appartus and method for increased data access in a network file object oriented system
US20150006622A1 (en) Web contents transmission method and apparatus
US10171582B2 (en) Method and apparatus for client to content appliance (CA) synchronization
US20060167922A1 (en) Method and apparatus for managing data object size in a multi-user environment
US10516628B2 (en) Transfer device, transfer system, and transfer method
Padmanabhan et al. Improving world wide web latency
JP5109901B2 (en) Session data sharing method
US20130054691A1 (en) Flexible rule based multi-protocol peer-to-peer caching

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12873945

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12873945

Country of ref document: EP

Kind code of ref document: A1