WO2014073050A1 - Information processing device and information processing method - Google Patents

Information processing device and information processing method Download PDF

Info

Publication number
WO2014073050A1
WO2014073050A1 PCT/JP2012/078830 JP2012078830W WO2014073050A1 WO 2014073050 A1 WO2014073050 A1 WO 2014073050A1 JP 2012078830 W JP2012078830 W JP 2012078830W WO 2014073050 A1 WO2014073050 A1 WO 2014073050A1
Authority
WO
WIPO (PCT)
Prior art keywords
header
data
processing unit
packets
network interface
Prior art date
Application number
PCT/JP2012/078830
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 富士通株式会社
Priority to PCT/JP2012/078830 priority Critical patent/WO2014073050A1/en
Publication of WO2014073050A1 publication Critical patent/WO2014073050A1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Definitions

  • the following technologies are known as capture technologies. Specifically, there is a technique for receiving a packet from a communication network and collecting header information included in the packet.
  • a communication board writes a packet to a storage area in a buffer by DMA (Dynamic Memory Access) transfer for the purpose of reducing CPU (Central Processing Unit) load.
  • DMA Dynamic Memory Access
  • a router having a function of collecting statistical information identifies packet flows and collects statistical information (for example, communication data amount) for each flow.
  • a terminal captures communication data on a network and detects an error (for example, cable disconnection or packet loss) that occurs during capturing.
  • an error for example, cable disconnection or packet loss
  • a high-speed communication line (hereinafter referred to as a high-speed communication line) with a communication speed of 10 Gbps or higher, for example, a dedicated LAN (Local Area Network) analyzer has been installed.
  • a dedicated LAN Local Area Network
  • To analyze since it is not easy to install such an analyzer on a network, it may take time to capture data and start analysis, and it may not be possible to quickly deal with troubles.
  • an object of the present invention is to provide a technique for enabling data transferred on a high-speed communication line to be captured.
  • An information processing apparatus includes: a network interface circuit that divides data into a plurality of packets and transmits the data; or a network interface circuit that integrates the received plurality of packets into data; and a processing device that executes a driver of the network interface circuit.
  • the network interface circuit includes a first processing unit that duplicates the header of the packet, and a second processing unit that outputs the header duplicated by the first processing unit to the driver, and is executed by the processing device. Using the header received from the second processing unit and the data obtained by the network interface circuit integrating a plurality of packets or the data before the network interface circuit divides the packet into a plurality of packets.
  • FIG. 1 is a diagram for explaining capture when the offload function is implemented.
  • FIG. 2 is a functional block diagram of the information processing apparatus.
  • FIG. 3 is a diagram showing an outline of processing executed when a frame is transmitted.
  • FIG. 4 is a diagram illustrating a processing flow of processing executed when a frame is transmitted.
  • FIG. 5 is a diagram illustrating an example of LSO data.
  • FIG. 6 is a diagram illustrating an example of data stored in the first control data storage unit.
  • FIG. 7 is a diagram illustrating a processing flow of the cooperation processing 1.
  • FIG. 8 is a diagram illustrating an example of data stored in the second control data storage unit.
  • FIG. 9 is a diagram illustrating an example of a frame obtained by dividing LSO data.
  • FIG. 1 is a diagram for explaining capture when the offload function is implemented.
  • FIG. 2 is a functional block diagram of the information processing apparatus.
  • FIG. 3 is a diagram showing an outline of processing executed when a frame is transmitted.
  • FIG. 10 is a diagram illustrating an example of a frame structure when the communication protocol is TCP.
  • FIG. 11 is a diagram illustrating an example of a frame structure when the communication protocol is UDP.
  • FIG. 12 is a diagram illustrating a process flow of the list generation process 1.
  • FIG. 13 is a diagram illustrating an example of the header list.
  • FIG. 14 is a diagram illustrating a processing flow of the frame generation processing 1.
  • FIG. 15 is a diagram showing an outline of processing executed when a frame is received.
  • FIG. 16 is a processing flow of processing executed when a frame is received.
  • FIG. 17 is a diagram illustrating a process flow of the list generation process 2.
  • FIG. 18 is a diagram illustrating an example of LRO data.
  • FIG. 19 is a diagram illustrating a processing flow of the cooperation processing 2.
  • FIG. 20 is a diagram illustrating a processing flow of the frame generation processing 2.
  • FIG. 21 is a functional block diagram of a computer.
  • Ethernet registered trademark
  • data is transferred in a format called a frame.
  • the maximum frame length is about 1500 bytes, and this size does not change even if the communication speed increases. Therefore, as the communication speed increases, the number of frames processed per unit time increases, and the amount of processing executed by the OS (Operating System) kernel increases. As a result, the load on the CPU increases, the CPU becomes a bottleneck, and the throughput decreases.
  • the process executed by the kernel is, for example, a process of dividing a TCP (Transmission Control Protocol) packet (or UDP (User Datagram Protocol) packet) into frames, and a TCP packet (or UDP packet by integrating received frames) ) And a process of calculating the value of the checksum field in the IP (Internet Protocol) header and TCP header (or UDP header).
  • TCP Transmission Control Protocol
  • UDP User Datagram Protocol
  • an offload function that causes the hardware on the network interface card to perform part of the processing executed by the OS kernel may be implemented.
  • the offload function include the following.
  • a LAN driver in the OS adds an IP header and a MAC (Media Access Control) header to a TCP packet (or UDP packet), and outputs the packet to a network interface card by DMA transfer without dividing the packet into frames.
  • the network interface card divides data into frames according to a TCP header (or UDP header), an IP header, and a MAC header.
  • the network interface card integrates a plurality of received frames into one TCP packet (or UDP packet) and outputs it to the LAN driver by DMA transfer.
  • the LAN driver outputs the packet as it is to a processing unit that executes TCP (or UDP) processing.
  • TCP or UDP
  • the hardware on the network interface executes processing for calculating the values of the checksum field of the TCP header (or UDP header) and the IP header. Thereby, the load on the CPU can be reduced.
  • an offload processing unit is provided in the network interface card. Therefore, the LAN driver does not receive the received data in the form of a frame, but is obtained by integrating the data before the division by the offload processing unit (hereinafter referred to as LSO data) and the offload processing unit. Data (hereinafter referred to as LRO data). Therefore, the capture processing unit that collects frames also receives LSO data and LRO data from the LAN driver.
  • headers of the original frames that is, headers 1-1, 1-2, and 1-3
  • checksum field values for example, checksum field values
  • FIG. 2 shows a functional block diagram of the information processing apparatus 1 in the present embodiment.
  • the information processing apparatus 1 includes a network interface card 11 that is a LAN card, for example. Then, the OS kernel 12, the communication processing unit 13, and the capture processing unit 14 are executed by a CPU (not shown).
  • the information processing apparatus 1 is connected to a transmission line 2 that is a high-speed (for example, 10 Gbps or higher) communication line. For this reason, the information processing apparatus 1 has the offload function described above.
  • the network interface card 11 includes a PHY circuit 1100, a MAC circuit 1101, a selection unit 1103 including a header processing unit 1104 and a second control data storage unit 1111, a DMA management unit 1105 including a DMA area 1106, and a cooperation unit 1108.
  • the offload processing unit 1107 includes a transmission DMA area 1109 and a reception DMA area 1110.
  • transmission DMA area 1109 and reception DMA area 1110 are each divided into a plurality of areas. By dividing into a plurality of areas, the kernel 12 recognizes that there are a plurality of network interface cards, and can assign a CPU to each of the plurality of network interface cards. This prevents the load from being concentrated on one CPU.
  • the PHY circuit 1100 executes conversion between an electric signal and a logic signal.
  • the MAC circuit 1101 executes processing for extracting a frame from the data received from the PHY circuit 1100.
  • the selection unit 1103 executes processing for determining which area of the reception DMA area 1110 to store in accordance with the MAC address included in the frame.
  • the header processing unit 1104 generates a header list and stores it in the DMA area 1106.
  • the header list includes a plurality of header lengths, payload lengths, and header sets.
  • the header includes a TCP header or UDP header, an IP header, and a MAC header.
  • the DMA areas such as the DMA area 1106, the transmission DMA area 1109, and the reception DMA area 1110 are areas secured in a memory such as SRAM (Static Random Access Memory) or DRAM (Dynamic Random Access Memory) or other storage devices. This is an area for storing data transferred by DMA.
  • SRAM Static Random Access Memory
  • DRAM Dynamic Random Access Memory
  • the DMA management unit 1105 outputs the data stored in the DMA area 1106 to the LAN driver 1207 by DMA transfer.
  • the offload processing unit 1107 divides the LSO data stored in the transmission DMA area 1109 into frames and outputs the frames to the selection unit 1103. Further, the offload processing unit 1107 generates LRO data by integrating a plurality of frames, and stores the LRO data in the reception DMA area 1110.
  • the cooperation unit 1108 outputs the length of the payload of LSO data (hereinafter referred to as LSO payload length) to the selection unit 1103. Further, when the offload processing unit 1107 integrates the frames, the cooperation unit 1108 outputs a transfer request for requesting output of the header list to the LAN driver 1207 to the DMA management unit 1105.
  • the kernel 12 includes an upper protocol processing unit 1200 and a LAN driver 1207 of the network interface card 11.
  • the LAN driver 1207 includes a frame generation unit 1203.
  • the LAN driver 1207 is assigned storage areas for a transmission buffer 1201, a reception buffer 1202, a first control data storage unit 1204, a list storage unit 1205, and a frame storage unit 1206.
  • the upper protocol processing unit 1200 executes TCP processing, UDP processing, and the like.
  • the transmission buffer 1201 stores LSO data.
  • the reception buffer 1202 stores LRO data.
  • the frame generation unit 1203 generates a frame using the data stored in the first control data storage unit 1204, the header list stored in the list storage unit 1205, and the LSO data stored in the transmission buffer 1201, Stored in the frame storage unit 1206. In addition, the frame generation unit 1203 generates a frame using the data stored in the first control data storage unit 1204, the header list stored in the list storage unit 1205, and the LRO data stored in the reception buffer 1202. And stored in the frame storage unit 1206.
  • the communication processing unit 13 executes processing of higher-layer protocols (for example, FTP (File Transfer Protocol) and TELNET (TELecommunication NETwork)) than TCP and UDP.
  • higher-layer protocols for example, FTP (File Transfer Protocol) and TELNET (TELecommunication NETwork)
  • the capture processing unit 14 reads the frame from the frame storage unit 1206 and executes frame analysis.
  • Fig. 3 shows an overview of the processing executed when transmitting a frame.
  • the LAN driver 1207 receives LSO data from the upper protocol processing unit 1200.
  • the LSO data is duplicated and output to the offload processing unit 1107 in the network interface card 11.
  • the LAN driver 1207 holds the copy source LSO data.
  • the offload processing unit 1107 divides the LSO data into frames.
  • the header processing unit 1104 in the selection unit 1103 generates a header list by duplicating the frame header, and stores the header list in the DMA area 1106 managed by the DMA management unit 1105.
  • the header processing unit 1104 outputs a transfer request for requesting transfer of the header list to the DMA management unit 1105.
  • the DMA management unit 1105 outputs the header list to the LAN driver 1207 by DMA transfer.
  • the selection unit 1103 outputs the frame to the MAC circuit 1101. The frame is transmitted to the destination device via the transmission path 2.
  • the frame generation unit 1203 in the LAN driver 1207 divides the LSO payload in the LSO data held by the LAN driver 1207.
  • the frame generation unit 1203 generates a frame by adding a header included in the header list received from the DMA management unit 1105 to the data obtained by the division.
  • the generated frames are collected by the capture processing unit 14.
  • the LAN driver 1207 can generate a frame using the header list generated in the network interface card 11 and the LSO data held by the LAN driver 1207.
  • the network interface card 11 is abbreviated as NIC.
  • the LAN driver 1207 receives the LSO data from the upper protocol processing unit 1200 and stores it in the transmission buffer 1201 (FIG. 4: step S1).
  • FIG. 5 shows an example of LSO data.
  • the LSO data includes an LSO header and an LSO payload.
  • the frame generation unit 1203 stores the start address and the end address of the LSO payload in the first control data storage unit 1204 (step S3). These addresses are addresses indicating positions in the transmission buffer 1201.
  • FIG. 6 shows an example of data stored in the first control data storage unit 1204.
  • the capture flag, the start address of the LSO payload, the end address of the LSO payload, the start address of the LRO payload, the end address of the LRO payload, the start address of the header list, and the end address of the header list And a copy destination address are stored.
  • the capture flag is set to “ON” when capture is instructed by the user, and is set to “OFF” when capture is not instructed by the user.
  • the information processing apparatus 1 executes the processing described in the present embodiment.
  • the start address and end address of the LRO payload are addresses indicating positions in the reception buffer 1202.
  • the head address and the end address of the header list are addresses indicating positions in the list storage unit 1205.
  • the copy destination address is an address indicating a position in the frame storage unit 1206.
  • the LAN driver 1207 duplicates the LSO data, and outputs the duplicated LSO data to the network interface card 11 (step S5).
  • the LAN driver 1207 keeps the copy source LSO data in the transmission buffer 1201.
  • the offload processing unit 1107 in the network interface card 11 receives the LSO data output from the LAN driver 1207 (step S7). More specifically, the process in step S7 is a process in which the LSO data output by the LAN driver 1207 by DMA transfer is stored in the transmission DMA area 1109, and the offload processing unit 1107 reads the LSO data from the transmission DMA area 1109. .
  • the offload processing unit 1107 When the offload processing unit 1107 receives the LSO data, the offload processing unit 1107 calls the cooperation unit 1108. And the cooperation part 1108 performs the cooperation process 1 (step S9).
  • the cooperation process 1 will be described with reference to FIG.
  • the cooperation unit 1108 specifies the LSO payload length of the LSO data received in step S7 (FIG. 7: step S41).
  • the cooperation unit 1108 outputs the LSO payload length specified in step S41 to the selection unit 1103 (step S43). Then, the process returns to the original process.
  • the sorting unit 1103 can control the timing of the transfer request using the LSO payload length.
  • the selection unit 1103 receives the LSO payload length from the cooperation unit 1108 (step S11) and stores it in the second control data storage unit 1111 (step S13).
  • FIG. 8 shows an example of data stored in the second control data storage unit 1111.
  • a capture flag an LSO payload length, a copied data length, a copy destination head address, and a copy destination address are stored.
  • the capture flag is set to “ON” when capture is instructed by the user, and is set to “OFF” when capture is not instructed by the user.
  • the information processing apparatus 1 executes the processing described in the present embodiment.
  • the copied data length is the length of the LSO payload that has been copied.
  • the copy destination head address and the copy destination address are addresses indicating positions in the DMA area 1106.
  • the offload processing unit 1107 divides the LSO data received in step S7 into frames (step S15).
  • FIG. 9 shows an example of a frame obtained by dividing the LSO data.
  • a frame 1 including a header 1-1 and a payload 1-1 and a frame 2 including a header 1-2 and a payload 1-2 are obtained.
  • three or more frames are obtained.
  • the header of the frame includes a MAC header, an IP header, and a TCP header.
  • the MAC header includes a destination MAC address, a source MAC address, and a type.
  • the IP header includes an IP header length, an IP packet length, an upper protocol number, an IP header checksum, and the like.
  • the TCP header includes a source port number, a destination port number, a data offset, a TCP checksum, and the like.
  • the header of the frame includes a MAC header, an IP header, and a UDP header.
  • the MAC header includes a destination MAC address, a source MAC address, and a type.
  • the IP header includes an IP header length, an IP packet length, an upper protocol number, an IP header checksum, and the like.
  • the UDP header includes a source port number, a destination port number, a packet length, and a UDP checksum.
  • the offload processing unit 1107 outputs the frame obtained by the division to the selection unit 1103 (step S17).
  • the selection unit 1103 receives the frame from the offload processing unit 1107 (step S19) and calls the header processing unit 1104. Then, the header processing unit 1104 executes list generation processing 1 (step S21). List generation processing 1 will be described with reference to FIGS. 12 and 13.
  • the list generation process 1 shown in FIG. 12 is a process for one frame. If there are a plurality of frames received in step S19, the list generation process 1 is executed for each of the plurality of frames.
  • the header processing unit 1104 specifies the header length and payload length of the frame (FIG. 12: step S51).
  • the header length is specified using header length information included in the IP header and the TCP header, for example.
  • the payload length differs between TCP and UDP.
  • TCP it is obtained by ((IP packet length included in IP header ⁇ IP header length included in IP header ⁇ 4) ⁇ (data offset included in TCP header ⁇ 4)).
  • UDP it is obtained by (packet length-8 included in UDP header).
  • the header processing unit 1104 sets the copy destination address stored in the second control data storage unit 1111 to the same address as the copy destination start address stored in the second control data storage unit 111 (step S53).
  • the header processing unit 1104 stores the header length and payload length of the frame in the area indicated by the copy destination address in the DMA area 1106 (step S55).
  • the header processing unit 1104 updates the copy destination address stored in the second control data storage unit 1111 by the amount of data stored in step S55 (step S57).
  • the header processing unit 1104 duplicates the header of the frame, and stores the header of the frame in the area indicated by the copy destination address in the DMA area 1106 (step S59). In step S59, the header length specified in step S51 is used.
  • FIG. 13 shows the contents of the header list stored in the DMA area 1106.
  • the header list includes a plurality of header lengths, payload lengths, and header sets.
  • the number of sets is the same as the number of frames obtained by dividing the LSO data.
  • the header processing unit 1104 updates the copy destination address stored in the second control data storage unit 1111 by the length of the header stored in step S59 (step S61).
  • the header processing unit 1104 adds the payload length specified in step S51 to the copied data length stored in the second control data storage unit 1111 (step S63).
  • the header processing unit 1104 determines whether the copied data length stored in the second control data storage unit 1111 is equal to the LSO payload length (step S65). If they are not equal (step S65: No route), there is a frame to be processed next, and the process proceeds to step S71. On the other hand, if they are equal (step S65: Yes route), the header processing unit 1104 outputs a transfer request to the DMA management unit 1105 (step S67).
  • the header processing unit 1104 sets the copied data length stored in the second control data storage unit 1111 to 0 (step S69).
  • the header processing unit 1104 sets the copy destination start address stored in the second control data storage unit 1111 as the start address of the free area in the DMA area 1106 (step S71). Then, the process returns to the original process.
  • the DMA transfer can be performed for each LSO data instead of the DMA transfer for each frame, so that the load on the CPU can be reduced. Also, the number of DMA areas 1106 can be small.
  • the selection unit 1103 outputs the frame obtained by the division in step S15 to the MAC circuit 1101 (step S23).
  • the DMA management unit 1105 that has received the transfer request output in step S67 outputs the header list stored in the DMA area 1106 to the LAN driver 1207 by DMA transfer (step S25).
  • the LAN driver 1207 receives the header list from the DMA management unit 1105 (step S27) and stores it in the list storage unit 1205.
  • the LAN driver 1207 processes step S27 as an interrupt.
  • the LAN driver 1207 calls the frame generation unit 1203. Then, the frame generation unit 1203 executes frame generation processing 1 (step S29).
  • the frame generation process 1 will be described with reference to FIG.
  • the frame generation unit 1203 stores the start address and end address of the header list in the first control data storage unit 1204 (FIG. 14: step S81). These addresses are addresses indicating positions in the list storage unit 1205.
  • the frame generation unit 1203 identifies one unprocessed set from the header list stored in the list storage unit 1205 (step S82).
  • the frame generation unit 1203 stores the header of the frame included in the set identified in step S82 in the area indicated by the copy destination address stored in the first control data storage unit 1204 (step S83).
  • the frame generation unit 1203 updates the copy destination address stored in the first control data storage unit 1204 by the amount of the header length of the frame stored in step S83 (step S85).
  • the frame generation unit 1203 extracts data corresponding to the payload length of the frame included in the specified set from the position indicated by the head address of the LSO payload stored in the first control data storage unit 1204 (step S87). .
  • the data extracted in step S87 corresponds to the payload corresponding to the header of the frame included in the set specified in step S82.
  • the frame generation unit 1203 stores the data extracted in step S87 in the area indicated by the copy destination address stored in the first control data storage unit 1204 (step 89).
  • the frame generation unit 1203 updates the start address of the LSO payload stored in the first control data storage unit 1204 by the payload length included in the set specified in step S82 (step S91).
  • the frame generation unit 1203 changes the copy destination address stored in the first control data storage unit 1204 to the address of the next free area in the frame storage unit 1206 (step S93).
  • the frame generation unit 1203 determines whether the start address and the end address of the LSO payload stored in the first control data storage unit 1204 are the same (step S95). If they are not the same (step S95: No route), the process returns to step S82 to process the next set. On the other hand, if they are the same (step S95: Yes route), the process returns to the original process.
  • the LAN driver 1207 outputs the frame stored in the frame storage unit 1206 to the capture processing unit 14 (step S31).
  • the data transmitted from the information processing apparatus 1 to the transmission path 2 can be acquired in the form of a frame. .
  • FIG. 15 shows an outline of processing executed when a frame is received.
  • the header processing unit 1104 in the selection unit 1103 When receiving a frame from the MAC circuit 1101, the header processing unit 1104 in the selection unit 1103 generates a header list by duplicating the header of the frame, and stores the header list in the DMA area 1106 managed by the DMA management unit 1105.
  • the sorting unit 1103 outputs the frame to the offload processing unit 1107.
  • the offload processing unit 1107 generates LRO data by integrating the frames.
  • the LRO data is output to the LAN driver 1207.
  • the cooperation unit 1108 in the offload processing unit 1107 outputs a transfer request for requesting output of the header list to the DMA management unit 1105.
  • the DMA management unit 1105 outputs the header list to the LAN driver 1207 by DMA transfer.
  • the LAN driver 1207 duplicates the LRO data received from the network interface card 11.
  • the frame generation unit 1203 in the LAN driver 1207 divides the LRO payload in the copied LRO data.
  • the frame generation unit 1203 generates a frame by adding a header included in the header list received from the DMA management unit 1105 to the data obtained by the division.
  • the generated frames are collected by the capture processing unit 14.
  • the replication source LRO data is output to the higher-level protocol processing unit 1200.
  • the LAN driver 1207 can generate a frame using the header list generated in the network interface card 11 and the LRO data obtained by integrating the frames.
  • the selection unit 1103 receives a frame from the MAC circuit 1101 (FIG. 16: step S101).
  • the sorting unit 1103 calls the header processing unit 1104. Then, the header processing unit 1104 executes list generation processing 2 (step S103).
  • the list generation process 2 will be described with reference to FIG.
  • the list generation process 2 shown in FIG. 17 is executed every time the selection unit 1103 receives a frame from the MAC circuit 1101.
  • the header processing unit 1104 identifies the header length and payload length of the frame (FIG. 17: step S131). Since the method for specifying the header length and the payload length in step S131 is the same as the method in step S51, description thereof will be omitted.
  • the header processing unit 1104 sets the copy destination address stored in the second control data storage unit 1111 to the same address as the copy destination start address stored in the second control data storage unit 111 (step S133).
  • the header processing unit 1104 stores the header length and payload length of the frame in the area indicated by the copy destination address in the DMA area 1106 (step S135).
  • the header processing unit 1104 updates the copy destination address stored in the second control data storage unit 1111 by the amount of data stored in step S135 (step S137).
  • the header processing unit 1104 duplicates the header of the frame, and stores the header of the frame in the area indicated by the copy destination address in the DMA area 1106 (step S139). In step S139, the header length specified in step S131 is used. The header processing unit 1104 updates the copy destination address stored in the second control data storage unit 1111 by the length of the header stored in step S139 (step S141). Then, the process returns to the original process.
  • the contents of the header list stored in the DMA area 1106 are as shown in FIG.
  • a header list used by the LAN driver 1207 can be prepared.
  • the selection unit 1103 outputs the frame received in step S101 to the offload processing unit 1107 (step S105).
  • the offload processing unit 1107 receives a frame from the selection unit 1103 (step S107).
  • the offload processing unit 1107 generates LRO data by integrating a plurality of frames (step S109). In step S109, the offload processing unit 1107 generates LRO data by integrating the frame received in step S107 and the frame received before receiving the frame.
  • FIG. 18 shows an example of LRO data.
  • the LRO data includes an LRO header and an LRO payload.
  • the LRO payload includes a plurality of frame payloads.
  • the offload processing unit 1107 calls the cooperation unit 1108. And the cooperation part 1108 performs the cooperation process 2 (step S111).
  • the cooperation process 2 will be described with reference to FIG.
  • the cooperation unit 1108 identifies the copy destination head address and the copy destination address from the second control data storage unit 1111 (FIG. 19: Step S151).
  • the copy destination start address represents the start address of the area where the header list is stored, and the copy destination address represents the end address of the area where the header list is stored.
  • the cooperation unit 1108 outputs a transfer request including the copy destination start address and the copy destination address specified in step S151 to the DMA management unit 1105 (step S153).
  • the DMA management unit 1105 Upon receiving the transfer request, the DMA management unit 1105 outputs the header list stored in the area specified by the copy destination start address and the copy destination address included in the transfer request to the LAN driver 1207 by DMA transfer.
  • the cooperation unit 1108 sets the copy destination head address stored in the second control data storage unit 1111 as the head address of the empty area in the DMA area 1106 (step S155). Then, the process returns to the original process.
  • the DMA transfer can be performed for each LRO data instead of the DMA transfer for each frame, so that the load on the CPU can be reduced. Also, the number of DMA areas 1106 can be small.
  • the LAN driver 1207 receives the header list from the DMA management unit 1105 (step S113) and stores it in the list storage unit 1205.
  • the LAN driver 1207 processes step S113 as an interrupt.
  • the offload processing unit 1107 stores the LRO data generated in step S109 in the reception DMA area 1110, and outputs the LRO data stored in the reception DMA area 1110 to the LAN driver 1207 by DMA transfer (step S115). ).
  • the LAN driver 1207 receives the LRO data from the offload processing unit 1107, duplicates the LRO data, and stores it in the reception buffer 1202 (step S117).
  • the replication source LRO data is output to the upper protocol processing unit 1200 in step 123.
  • the LAN driver 1207 calls the frame generation unit 1203. Then, the frame generation unit 1203 executes frame generation processing 2 (step S119).
  • the frame generation process 2 will be described with reference to FIG.
  • the frame generation unit 1203 identifies the start address and the end address of the header list stored in the list storage unit 1205 (step S161). Then, the frame generation unit 1203 stores the start address and the end address of the header list specified in step S161 in the first control data storage unit 1204 (step S163).
  • the frame generation unit 1203 identifies one unprocessed set from the header list stored in the list storage unit 1205 (step S164).
  • the frame generation unit 1203 stores the header of the frame included in the set identified in step S164 in the area indicated by the copy destination address stored in the first control data storage unit 1204 (step S165).
  • the frame generation unit 1203 updates the copy destination address stored in the first control data storage unit 1204 by the amount of the header length of the frame stored in step S165 (step S167).
  • the frame generation unit 1203 extracts data corresponding to the payload length of the frame included in the specified set from the position indicated by the head address of the LRO payload stored in the first control data storage unit 1204 (step S169). .
  • the data extracted in step S169 corresponds to the payload corresponding to the header of the frame included in the set specified in step S164.
  • the frame generation unit 1203 stores the data extracted in step S169 in the area indicated by the copy destination address stored in the first control data storage unit 1204 (step 171).
  • the frame generation unit 1203 updates the head address of the LRO payload stored in the first control data storage unit 1204 by the payload length included in the set identified in step S164 (step S173).
  • the frame generation unit 1203 changes the copy destination address stored in the first control data storage unit 1204 to the address of the next free area in the frame storage unit 1206 (step S175).
  • the frame generation unit 1203 determines whether the start address and the end address of the LRO payload stored in the first control data storage unit 1204 are the same (step S177). If they are not the same (step S177: No route), the process returns to step S164 to process the next set. On the other hand, if they are the same (step S177: Yes route), the process returns to the original process.
  • the LAN driver 1207 outputs the frame stored in the frame storage unit 1206 to the capture processing unit 14 (step S121).
  • the LAN driver 1207 outputs the replication source LRO data to the higher-level protocol processing unit 1200 (step S123).
  • the processing as described above is executed, even if the information processing apparatus 1 has an offload function, the data received by the information processing apparatus 1 from the transmission path 2 can be acquired in the form of a frame.
  • the present invention is not limited to this.
  • the functional block configuration of the information processing apparatus 1 described above may not correspond to the actual program module configuration.
  • each table described above is an example, and the configuration as described above is not necessarily required. Further, in the processing flow, the processing order can be changed if the processing result does not change. Further, it may be executed in parallel.
  • Ethernet registered trademark
  • the present embodiment may be applied to an apparatus in another network using a high-speed communication line.
  • the network interface card has been described as an example of the communication interface.
  • the communication interface is not limited to the network interface card.
  • it may be realized by a CPU such as a microcontroller mounted on a substrate or an LSI (Large Scale Integration) such as an FPGA (Field Programmable Gate Gate Array).
  • the selection unit 1103, header processing unit 1104, DMA management unit 1105, offload processing unit 1107, and linkage unit 1108 included in the network interface card 11 described above are executed by a CPU such as a microprocessor included in the expansion card. Alternatively, it may be executed by a hardware circuit.
  • the information processing apparatus 1 described above is a computer apparatus, and as shown in FIG. 21, a display connected to a memory 2501, a CPU 2503, a hard disk drive (HDD: Hard Disk Drive) 2505, and a display apparatus 2509.
  • a control unit 2507, a drive device 2513 for a removable disk 2511, an input device 2515, and a communication control unit 2517 for connecting to a network are connected by a bus 2519.
  • the operating system, application programs for executing the processing in this embodiment, the LAN driver 1207, and the like are stored in the HDD 2505, and are read from the HDD 2505 to the memory 2501 when executed by the CPU 2503.
  • the CPU 2503 controls the display control unit 2507, the communication control unit 2517, and the drive device 2513 according to the processing content of the application program or the like to perform a predetermined operation. Further, data in the middle of processing is mainly stored in the memory 2501, but may be stored in the HDD 2505.
  • an application program or the like for executing the processing described above is stored in a computer-readable removable disk 2511 and distributed, and installed in the HDD 2505 from the drive device 2513. In some cases, the HDD 2505 may be installed via a network such as the Internet and the communication control unit 2517.
  • Such a computer device realizes various functions as described above by organically cooperating hardware such as the CPU 2503 and memory 2501 described above and programs such as OS and application programs. To do.
  • the information processing apparatus includes (A) an expansion card and (B) a driver for the expansion card.
  • the expansion card described above has (a1) a first processing unit that duplicates the header of the packet, and (a2) a second processing unit that outputs the header duplicated by the first processing unit to the driver. .
  • the driver described above uses (b1) the header received from the second processing unit and the data obtained by the expansion card integrating the packets or the data before the expansion card is divided into packets. And a third processing unit for generating the same packet as the packet.
  • the driver can acquire data in the form of a packet even when the information processing apparatus has an offload function. This makes it possible to capture packets transferred on the high-speed communication line.
  • the second processing unit described above may output the header (a21) to the driver by direct memory access. In this way, the load on the CPU can be reduced.
  • a fourth processing unit that outputs the payload length of the data before being divided into packets to the first processing unit May further be included.
  • the first processing unit described above is (a11) the second processing unit when the total payload length of the packets processed by the first processing unit matches the payload length of the data before being divided into packets.
  • it may be requested to output the header to the driver. In this way, it is possible to capture a packet transmitted by the information processing apparatus. Further, since data is output for each data before division, the number of times of output is reduced as compared with the case of outputting for each packet, and the load on the CPU can be reduced.
  • the fourth processing unit described above may request (a31) that the second processing unit outputs the header to the driver when the integration of the received packets is completed. In this way, the packet received by the information processing apparatus can be captured. Further, since the data is output every time integration is completed, the number of times of output is reduced compared to the case of outputting for each packet, and the load on the CPU can be reduced.
  • the third processing unit described above (b11) divides the data obtained by the expansion card integrating the packets or the payload of the data before the expansion card divides the packet, and obtained by the division. By adding a header to the data, the same packet as the packet may be generated. In this way, the driver can convert the data into a frame format.
  • the header described above may include a TCP header or a UDP header, an IP header, and a MAC header.
  • the packet described above may be a data link layer frame.
  • a frame transferred in Ethernet registered trademark
  • the information processing method is executed by a computer having an expansion card and a driver for the expansion card. Then, the expansion card described above executes a process of (C) duplicating the header of the packet, (D) outputting the copied header to the driver, and the driver described above is (E) the expansion card.
  • a process of generating the same packet as the packet may be executed using the header received from the data and data obtained by integrating the packets by the expansion card or data before the expansion card divides the packet.
  • a program for causing a computer to perform the processing according to the above method can be created.
  • the program can be a computer-readable storage medium such as a flexible disk, a CD-ROM, a magneto-optical disk, a semiconductor memory, or a hard disk. It is stored in a storage device.
  • the intermediate processing result is temporarily stored in a storage device such as a main memory.

Abstract

An information processing device according to the present embodiment has: a network interface circuit which segments data into a plurality of packets and transmits the same, or combines a received plurality of packets into data; and a processing device which executes a driver for the network interface circuit. In addition, the network interface circuit has: a first processing unit which replicates headers of packets; and a second processing unit which outputs the headers replicated by the first processing unit to the driver. The driver which is executed by the processing device has a third processing unit which generates packets corresponding to the first-mentioned packets, using the headers received from the second processing unit and data acquired by combining the plurality of the packets with the network interface circuit or data prior to being segmented into the plurality of the packets by the network interface circuit.

Description

情報処理装置及び情報処理方法Information processing apparatus and information processing method
 通信データの解析技術に関する。 Related to communication data analysis technology.
 通信のトラブルが発生した場合には、通信回線上で転送されるデータをキャプチャし、キャプチャしたデータに含まれるヘッダ等を解析することによってトラブルの発生原因等を特定する。 If a communication trouble occurs, capture the data transferred on the communication line and analyze the header included in the captured data to identify the cause of the trouble.
 キャプチャに関する技術として、以下のような技術が知られている。具体的には、通信ネットワークからパケットを受信し、パケットに含まれるヘッダ情報を収集する技術がある。この技術においては、通信ボードが、CPU(Central Processing Unit)負荷の軽減を目的として、DMA(Dynamic Memory Access)転送によってパケットをバッファ内の記憶領域に書き込む。 The following technologies are known as capture technologies. Specifically, there is a technique for receiving a packet from a communication network and collecting header information included in the packet. In this technique, a communication board writes a packet to a storage area in a buffer by DMA (Dynamic Memory Access) transfer for the purpose of reducing CPU (Central Processing Unit) load.
 また、統計情報を収集する機能を備えたルータが、パケットのフローを識別し、フロー別に統計情報(例えば通信データ量等)を収集する技術がある。 Also, there is a technology in which a router having a function of collecting statistical information identifies packet flows and collects statistical information (for example, communication data amount) for each flow.
 また、端末が、ネットワーク上の通信データをキャプチャし、キャプチャリングの実行時に発生したエラー(例えば、ケーブルの抜け或いはパケットの取りこぼし)を検出する技術がある。 Also, there is a technology in which a terminal captures communication data on a network and detects an error (for example, cable disconnection or packet loss) that occurs during capturing.
 ところで、通信速度が例えば10Gbps以上である高速の通信回線(以下、高速通信回線と呼ぶ)を用いたネットワークでトラブルが発生した場合、従来は、専用のLAN(Local Area Network)アナライザ等を設置して解析を行う。しかし、このようなアナライザをネットワークに設置する作業は容易ではないため、データをキャプチャして解析を開始するまでに時間がかかり、トラブルの発生に迅速に対処できないことがある。 By the way, if a problem occurs in a network using a high-speed communication line (hereinafter referred to as a high-speed communication line) with a communication speed of 10 Gbps or higher, for example, a dedicated LAN (Local Area Network) analyzer has been installed. To analyze. However, since it is not easy to install such an analyzer on a network, it may take time to capture data and start analysis, and it may not be possible to quickly deal with troubles.
特開2003-87255号公報JP 2003-87255 A 特開2006-5402号公報JP 2006-5402 A 特開2009-27297号公報JP 2009-27297 A
 従って、1つの側面では、本発明の目的は、高速通信回線上で転送されるデータをキャプチャできるようにするための技術を提供することである。 Accordingly, in one aspect, an object of the present invention is to provide a technique for enabling data transferred on a high-speed communication line to be captured.
 本発明に係る情報処理装置は、データを複数のパケットに分割して送信し、又は、受信した複数のパケットをデータに統合するネットワークインタフェース回路と当該ネットワークインタフェース回路のドライバを実行する処理装置とを有する。そして、上記ネットワークインタフェース回路が、パケットのヘッダを複製する第1処理部と、第1処理部により複製されたヘッダを、ドライバに出力する第2処理部とを有し、上記処理装置により実行されるドライバが、第2処理部から受け取ったヘッダと、ネットワークインタフェース回路が複数のパケットを統合することにより得られたデータ又はネットワークインタフェース回路が複数のパケットに分割する前のデータとを用いて、パケットに対応するパケットを生成する第3処理部を有する。 An information processing apparatus according to the present invention includes: a network interface circuit that divides data into a plurality of packets and transmits the data; or a network interface circuit that integrates the received plurality of packets into data; and a processing device that executes a driver of the network interface circuit. Have. The network interface circuit includes a first processing unit that duplicates the header of the packet, and a second processing unit that outputs the header duplicated by the first processing unit to the driver, and is executed by the processing device. Using the header received from the second processing unit and the data obtained by the network interface circuit integrating a plurality of packets or the data before the network interface circuit divides the packet into a plurality of packets. A third processing unit for generating a packet corresponding to.
 高速通信回線上で転送されるデータをキャプチャできるようになる。 It will be possible to capture data transferred over high-speed communication lines.
図1は、オフロード機能が実装された場合におけるキャプチャについて説明するための図である。FIG. 1 is a diagram for explaining capture when the offload function is implemented. 図2は、情報処理装置の機能ブロック図である。FIG. 2 is a functional block diagram of the information processing apparatus. 図3は、フレームを送信する際に実行する処理の概要を示す図である。FIG. 3 is a diagram showing an outline of processing executed when a frame is transmitted. 図4は、フレームを送信する際に実行する処理の処理フローを示す図である。FIG. 4 is a diagram illustrating a processing flow of processing executed when a frame is transmitted. 図5は、LSOデータの一例を示す図である。FIG. 5 is a diagram illustrating an example of LSO data. 図6は、第1制御データ格納部に格納されているデータの一例を示す図である。FIG. 6 is a diagram illustrating an example of data stored in the first control data storage unit. 図7は、連携処理1の処理フローを示す図である。FIG. 7 is a diagram illustrating a processing flow of the cooperation processing 1. 図8は、第2制御データ格納部に格納されているデータの一例を示す図である。FIG. 8 is a diagram illustrating an example of data stored in the second control data storage unit. 図9は、LSOデータを分割することにより得られるフレームの一例を示す図である。FIG. 9 is a diagram illustrating an example of a frame obtained by dividing LSO data. 図10は、通信プロトコルがTCPである場合におけるフレームの構造の一例を示す図である。FIG. 10 is a diagram illustrating an example of a frame structure when the communication protocol is TCP. 図11は、通信プロトコルがUDPである場合におけるフレームの構造の一例を示す図である。FIG. 11 is a diagram illustrating an example of a frame structure when the communication protocol is UDP. 図12は、リスト生成処理1の処理フローを示す図である。FIG. 12 is a diagram illustrating a process flow of the list generation process 1. 図13は、ヘッダリストの一例を示す図である。FIG. 13 is a diagram illustrating an example of the header list. 図14は、フレーム生成処理1の処理フローを示す図である。FIG. 14 is a diagram illustrating a processing flow of the frame generation processing 1. 図15は、フレームを受信した際に実行する処理の概要を示す図である。FIG. 15 is a diagram showing an outline of processing executed when a frame is received. 図16は、フレームを受信した際に実行する処理の処理フローである。FIG. 16 is a processing flow of processing executed when a frame is received. 図17は、リスト生成処理2の処理フローを示す図である。FIG. 17 is a diagram illustrating a process flow of the list generation process 2. 図18は、LROデータの一例を示す図である。FIG. 18 is a diagram illustrating an example of LRO data. 図19は、連携処理2の処理フローを示す図である。FIG. 19 is a diagram illustrating a processing flow of the cooperation processing 2. 図20は、フレーム生成処理2の処理フローを示す図である。FIG. 20 is a diagram illustrating a processing flow of the frame generation processing 2. 図21は、コンピュータの機能ブロック図である。FIG. 21 is a functional block diagram of a computer.
 例えば、イーサネット(登録商標)においては、フレームと呼ばれる形式でデータが転送される。フレーム長は最大約1500バイトであり、たとえ通信速度が速くなったとしてもこのサイズは変わらない。そのため、通信速度が速くなると単位時間あたりに処理するフレームの数が多くなり、OS(Operating System)のカーネルが実行する処理の量が増える。その結果、CPUの負荷が増大し、CPUがボトルネックとなりスループットが低下する。ここで、カーネルが実行する処理とは、例えばTCP(Transmission Control Protocol)パケット(又はUDP(User Datagram Protocol)パケット)をフレームに分割する処理、受信したフレームを統合することによりTCPパケット(又はUDPパケット)を生成する処理、及びIP(Internet Protocol)ヘッダ及びTCPヘッダ(又はUDPヘッダ)内のチェックサムフィールドの値を演算する処理等である。 For example, in Ethernet (registered trademark), data is transferred in a format called a frame. The maximum frame length is about 1500 bytes, and this size does not change even if the communication speed increases. Therefore, as the communication speed increases, the number of frames processed per unit time increases, and the amount of processing executed by the OS (Operating System) kernel increases. As a result, the load on the CPU increases, the CPU becomes a bottleneck, and the throughput decreases. Here, the process executed by the kernel is, for example, a process of dividing a TCP (Transmission Control Protocol) packet (or UDP (User Datagram Protocol) packet) into frames, and a TCP packet (or UDP packet by integrating received frames) ) And a process of calculating the value of the checksum field in the IP (Internet Protocol) header and TCP header (or UDP header).
 そこで、CPUの負荷を軽減するため、OSのカーネルが実行する処理の一部をネットワークインタフェースカード上のハードウェアに行わせる機能(以下、オフロード機能と呼ぶ)を実装することがある。ここで、オフロード機能には、例えば以下のようなものがある。 Therefore, in order to reduce the load on the CPU, a function (hereinafter referred to as an offload function) that causes the hardware on the network interface card to perform part of the processing executed by the OS kernel may be implemented. Here, examples of the offload function include the following.
(1)LSO(Large Send Offload)
(2)LRO(Large Receive Offload)
(3)チェックサムオフロード
(1) LSO (Large Send Offload)
(2) LRO (Large Receive Offload)
(3) Checksum off-road
 LSOにおいては、OSにおけるLANドライバが、TCPパケット(又はUDPパケット)にIPヘッダ及びMAC(Media Access Control)ヘッダを付与し、パケットをフレームに分割せずにDMA転送でネットワークインタフェースカードに出力する。ネットワークインタフェースカードは、TCPヘッダ(又はUDPヘッダ)、IPヘッダ及びMACヘッダに従って、データをフレームに分割する。これにより、送信処理における単位時間あたりのDMA転送の回数が減るので、CPUの負荷を減らすことができる。 In LSO, a LAN driver in the OS adds an IP header and a MAC (Media Access Control) header to a TCP packet (or UDP packet), and outputs the packet to a network interface card by DMA transfer without dividing the packet into frames. The network interface card divides data into frames according to a TCP header (or UDP header), an IP header, and a MAC header. As a result, the number of DMA transfers per unit time in the transmission process is reduced, so that the load on the CPU can be reduced.
 LROにおいては、ネットワークインタフェースカードが、受信した複数のフレームを1つのTCPパケット(又はUDPパケット)に統合し、DMA転送でLANドライバに出力する。LANドライバは、パケットをそのままの形式でTCP(又はUDP)の処理を実行する処理部に出力する。これにより、受信における単位時間あたりのDMA転送の回数が減るので、CPUの負荷を減らすことができる。 In LRO, the network interface card integrates a plurality of received frames into one TCP packet (or UDP packet) and outputs it to the LAN driver by DMA transfer. The LAN driver outputs the packet as it is to a processing unit that executes TCP (or UDP) processing. As a result, the number of DMA transfers per unit time during reception is reduced, so that the load on the CPU can be reduced.
 チェックサムオフロードにおいては、ネットワークインタフェース上のハードウェアが、TCPヘッダ(又はUDPヘッダ)及びIPヘッダのチェックサムフィールドの値を演算する処理を実行する。これにより、CPUの負荷を減らすことができる。 In the checksum offload, the hardware on the network interface executes processing for calculating the values of the checksum field of the TCP header (or UDP header) and the IP header. Thereby, the load on the CPU can be reduced.
 但し、オフロード機能が実装されると、通信回線上で転送されるフレームそのものをキャプチャすることができなくなる。図1を用いて、オフロード機能が実装された場合におけるキャプチャについて説明する。図1においては、LSO及びLROの実装として、ネットワークインタフェースカードにオフロード処理部が設けられている。そのため、LANドライバは、受信したデータをフレームの形式で受け取ることはなく、オフロード処理部による分割前のデータ(以下、LSOデータと呼ぶ)及びオフロード処理部がフレームを統合することにより得られたデータ(以下、LROデータと呼ぶ)を受け取ることになる。よって、フレームを収集するキャプチャ処理部も、LSOデータ及びLROデータをLANドライバから受け取ることになる。LSOデータ及びLROデータのヘッダには、元のフレームのヘッダ(すなわち、ヘッダ1-1、1-2及び1-3)の情報(例えばチェックサムフィールドの値)は含まれていない。そのため、キャプチャ処理部がLSOデータ及びLROデータを収集しても、フレームの解析を行うことができない。 However, if the offload function is implemented, it will not be possible to capture the frame transferred on the communication line. The capture when the offload function is implemented will be described with reference to FIG. In FIG. 1, as an implementation of LSO and LRO, an offload processing unit is provided in the network interface card. Therefore, the LAN driver does not receive the received data in the form of a frame, but is obtained by integrating the data before the division by the offload processing unit (hereinafter referred to as LSO data) and the offload processing unit. Data (hereinafter referred to as LRO data). Therefore, the capture processing unit that collects frames also receives LSO data and LRO data from the LAN driver. The headers of the original frames (that is, headers 1-1, 1-2, and 1-3) (for example, checksum field values) are not included in the headers of the LSO data and the LRO data. Therefore, even if the capture processing unit collects LSO data and LRO data, the frame cannot be analyzed.
 そこで、以下では、通信速度が速いためオフロード機能が実装されている場合であっても、キャプチャ処理部がフレームをキャプチャできるようにする技術について説明する。 Therefore, in the following, a technique for enabling the capture processing unit to capture a frame even when an offload function is implemented due to a high communication speed will be described.
 図2に、本実施の形態における情報処理装置1の機能ブロック図を示す。情報処理装置1は、例えばLANカードであるネットワークインタフェースカード11を有する。そして、図示しないCPUにより、OSのカーネル12と、通信処理部13と、キャプチャ処理部14とが実行される。情報処理装置1は、高速の(例えば10Gbps以上の)通信回線である伝送路2に接続されている。そのため、情報処理装置1には、上で説明したオフロード機能が実装されている。 FIG. 2 shows a functional block diagram of the information processing apparatus 1 in the present embodiment. The information processing apparatus 1 includes a network interface card 11 that is a LAN card, for example. Then, the OS kernel 12, the communication processing unit 13, and the capture processing unit 14 are executed by a CPU (not shown). The information processing apparatus 1 is connected to a transmission line 2 that is a high-speed (for example, 10 Gbps or higher) communication line. For this reason, the information processing apparatus 1 has the offload function described above.
 ネットワークインタフェースカード11は、PHY回路1100と、MAC回路1101と、ヘッダ処理部1104及び第2制御データ格納部1111を含む選別部1103と、DMA領域1106を含むDMA管理部1105と、連携部1108を含むオフロード処理部1107と、送信DMA領域1109と、受信DMA領域1110とを有する。なお、本実施の形態における主要な部分とは直接関係が無いため図示していないが、送信DMA領域1109及び受信DMA領域1110は、各々、複数の領域に分けて利用される。複数の領域に分けることで、カーネル12は、ネットワークインタフェースカードが複数あると認識し、複数のネットワークインタフェースカードの各々に対してCPUを割り当てることができるようになる。これにより、1つのCPUに負荷が集中することを防いでいる。 The network interface card 11 includes a PHY circuit 1100, a MAC circuit 1101, a selection unit 1103 including a header processing unit 1104 and a second control data storage unit 1111, a DMA management unit 1105 including a DMA area 1106, and a cooperation unit 1108. The offload processing unit 1107 includes a transmission DMA area 1109 and a reception DMA area 1110. Although not shown in the figure because it is not directly related to the main part in the present embodiment, transmission DMA area 1109 and reception DMA area 1110 are each divided into a plurality of areas. By dividing into a plurality of areas, the kernel 12 recognizes that there are a plurality of network interface cards, and can assign a CPU to each of the plurality of network interface cards. This prevents the load from being concentrated on one CPU.
 PHY回路1100は、電気信号と論理信号との変換等を実行する。 The PHY circuit 1100 executes conversion between an electric signal and a logic signal.
 MAC回路1101は、PHY回路1100から受け取ったデータからフレームを取り出す処理等を実行する。 The MAC circuit 1101 executes processing for extracting a frame from the data received from the PHY circuit 1100.
 選別部1103は、フレームに含まれるMACアドレスに応じて、受信DMA領域1110のうちいずれの領域に格納するか判定する処理等を実行する。ヘッダ処理部1104は、ヘッダリストを生成し、DMA領域1106に格納する。ヘッダリストは、ヘッダ長、ペイロード長及びヘッダのセットを複数含む。ヘッダは、TCPヘッダ又はUDPヘッダと、IPヘッダと、MACヘッダとを含む。 The selection unit 1103 executes processing for determining which area of the reception DMA area 1110 to store in accordance with the MAC address included in the frame. The header processing unit 1104 generates a header list and stores it in the DMA area 1106. The header list includes a plurality of header lengths, payload lengths, and header sets. The header includes a TCP header or UDP header, an IP header, and a MAC header.
 なお、DMA領域1106、送信DMA領域1109、受信DMA領域1110等のDMA領域は、例えばSRAM(Static Random Access Memory)及びDRAM(Dynamic Random Access Memory)等のメモリ又はその他の記憶装置に確保される領域であり、DMA転送されるデータを格納する領域である。 The DMA areas such as the DMA area 1106, the transmission DMA area 1109, and the reception DMA area 1110 are areas secured in a memory such as SRAM (Static Random Access Memory) or DRAM (Dynamic Random Access Memory) or other storage devices. This is an area for storing data transferred by DMA.
 DMA管理部1105は、DMA領域1106に格納されているデータをDMA転送によりLANドライバ1207に出力する。 The DMA management unit 1105 outputs the data stored in the DMA area 1106 to the LAN driver 1207 by DMA transfer.
 オフロード処理部1107は、送信DMA領域1109に格納されているLSOデータをフレームに分割し、選別部1103に出力する。また、オフロード処理部1107は、複数のフレームを統合することによりLROデータを生成し、受信DMA領域1110に格納する。連携部1108は、LSOデータのペイロードの長さ(以下、LSOペイロード長と呼ぶ)を選別部1103に出力する。また、連携部1108は、オフロード処理部1107がフレームを統合した場合に、ヘッダリストをLANドライバ1207に出力することを要求する転送要求をDMA管理部1105に出力する。 The offload processing unit 1107 divides the LSO data stored in the transmission DMA area 1109 into frames and outputs the frames to the selection unit 1103. Further, the offload processing unit 1107 generates LRO data by integrating a plurality of frames, and stores the LRO data in the reception DMA area 1110. The cooperation unit 1108 outputs the length of the payload of LSO data (hereinafter referred to as LSO payload length) to the selection unit 1103. Further, when the offload processing unit 1107 integrates the frames, the cooperation unit 1108 outputs a transfer request for requesting output of the header list to the LAN driver 1207 to the DMA management unit 1105.
 カーネル12は、上位プロトコル処理部1200と、ネットワークインタフェースカード11のLANドライバ1207とを含む。LANドライバ1207は、フレーム生成部1203を含む。また、LANドライバ1207には、送信バッファ1201、受信バッファ1202、第1制御データ格納部1204、リスト格納部1205及びフレーム格納部1206のための記憶領域が割り当てられている。 The kernel 12 includes an upper protocol processing unit 1200 and a LAN driver 1207 of the network interface card 11. The LAN driver 1207 includes a frame generation unit 1203. The LAN driver 1207 is assigned storage areas for a transmission buffer 1201, a reception buffer 1202, a first control data storage unit 1204, a list storage unit 1205, and a frame storage unit 1206.
 上位プロトコル処理部1200は、TCPの処理及びUDPの処理等を実行する。 The upper protocol processing unit 1200 executes TCP processing, UDP processing, and the like.
 送信バッファ1201には、LSOデータが格納される。受信バッファ1202には、LROデータが格納される。 The transmission buffer 1201 stores LSO data. The reception buffer 1202 stores LRO data.
 フレーム生成部1203は、第1制御データ格納部1204に格納されているデータ、リスト格納部1205に格納されているヘッダリスト及び送信バッファ1201に格納されているLSOデータを用いてフレームを生成し、フレーム格納部1206に格納する。また、フレーム生成部1203は、第1制御データ格納部1204に格納されているデータ、リスト格納部1205に格納されているヘッダリスト及び受信バッファ1202に格納されているLROデータを用いてフレームを生成し、フレーム格納部1206に格納する。 The frame generation unit 1203 generates a frame using the data stored in the first control data storage unit 1204, the header list stored in the list storage unit 1205, and the LSO data stored in the transmission buffer 1201, Stored in the frame storage unit 1206. In addition, the frame generation unit 1203 generates a frame using the data stored in the first control data storage unit 1204, the header list stored in the list storage unit 1205, and the LRO data stored in the reception buffer 1202. And stored in the frame storage unit 1206.
 通信処理部13は、TCP及びUDPより上位層のプロトコル(例えば、FTP(File Transfer Protocol)及びTELNET(TELecommunication NETwork))の処理を実行する。 The communication processing unit 13 executes processing of higher-layer protocols (for example, FTP (File Transfer Protocol) and TELNET (TELecommunication NETwork)) than TCP and UDP.
 キャプチャ処理部14は、フレーム格納部1206からフレームを読み出し、フレームの解析を実行する。 The capture processing unit 14 reads the frame from the frame storage unit 1206 and executes frame analysis.
 次に、図3乃至図20を用いて、情報処理装置1の動作について説明する。第1に、図3乃至図14を用いて、フレームを送信する際に実行する処理について説明する。 Next, the operation of the information processing apparatus 1 will be described with reference to FIGS. First, processing executed when transmitting a frame will be described with reference to FIGS. 3 to 14.
 図3に、フレームを送信する際に実行する処理の概要を示す。図をわかりやすくするため、符号等は省略されている。LANドライバ1207は、上位プロトコル処理部1200からLSOデータを受け取る。LSOデータは複製され、ネットワークインタフェースカード11におけるオフロード処理部1107に出力される。ここで、LANドライバ1207は複製元のLSOデータを保持しておく。 Fig. 3 shows an overview of the processing executed when transmitting a frame. In order to make the figure easy to understand, reference numerals and the like are omitted. The LAN driver 1207 receives LSO data from the upper protocol processing unit 1200. The LSO data is duplicated and output to the offload processing unit 1107 in the network interface card 11. Here, the LAN driver 1207 holds the copy source LSO data.
 オフロード処理部1107は、LSOデータをフレームに分割する。選別部1103におけるヘッダ処理部1104は、フレームのヘッダを複製することによりヘッダリストを生成し、DMA管理部1105が管理するDMA領域1106に格納する。また、ヘッダ処理部1104は、ヘッダリストを転送することを要求する転送要求をDMA管理部1105に出力する。DMA管理部1105は、DMA転送によりヘッダリストをLANドライバ1207に出力する。一方、選別部1103は、フレームをMAC回路1101に出力する。フレームは、伝送路2を介して宛先の装置に送信される。 The offload processing unit 1107 divides the LSO data into frames. The header processing unit 1104 in the selection unit 1103 generates a header list by duplicating the frame header, and stores the header list in the DMA area 1106 managed by the DMA management unit 1105. In addition, the header processing unit 1104 outputs a transfer request for requesting transfer of the header list to the DMA management unit 1105. The DMA management unit 1105 outputs the header list to the LAN driver 1207 by DMA transfer. On the other hand, the selection unit 1103 outputs the frame to the MAC circuit 1101. The frame is transmitted to the destination device via the transmission path 2.
 LANドライバ1207におけるフレーム生成部1203は、LANドライバ1207が保持しているLSOデータにおけるLSOペイロードを分割する。また、フレーム生成部1203は、分割により得られたデータに、DMA管理部1105から受け取ったヘッダリストに含まれるヘッダを付与することによって、フレームを生成する。生成されたフレームは、キャプチャ処理部14によって収集される。 The frame generation unit 1203 in the LAN driver 1207 divides the LSO payload in the LSO data held by the LAN driver 1207. The frame generation unit 1203 generates a frame by adding a header included in the header list received from the DMA management unit 1105 to the data obtained by the division. The generated frames are collected by the capture processing unit 14.
 このように、ネットワークインタフェースカード11において生成したヘッダリストと、LANドライバ1207が保持しているLSOデータとを用いて、LANドライバ1207がフレームを生成できるようにしている。 In this way, the LAN driver 1207 can generate a frame using the header list generated in the network interface card 11 and the LSO data held by the LAN driver 1207.
 図4乃至図14を用いて、フレームを送信する際に実行する処理を詳細に説明する。図4においては、ネットワークインタフェースカード11をNICと略している。まず、LANドライバ1207は、上位プロトコル処理部1200からLSOデータを受け取り、送信バッファ1201に格納する(図4:ステップS1)。図5に、LSOデータの一例を示す。図5の例では、LSOデータは、LSOヘッダとLSOペイロードとを含む。 The processing executed when transmitting a frame will be described in detail with reference to FIGS. In FIG. 4, the network interface card 11 is abbreviated as NIC. First, the LAN driver 1207 receives the LSO data from the upper protocol processing unit 1200 and stores it in the transmission buffer 1201 (FIG. 4: step S1). FIG. 5 shows an example of LSO data. In the example of FIG. 5, the LSO data includes an LSO header and an LSO payload.
 フレーム生成部1203は、LSOデータが送信バッファ1201に格納されると、LSOペイロードの先頭アドレス及び末尾アドレスを第1制御データ格納部1204に格納する(ステップS3)。これらのアドレスは、送信バッファ1201内の位置を示すアドレスである。 When the LSO data is stored in the transmission buffer 1201, the frame generation unit 1203 stores the start address and the end address of the LSO payload in the first control data storage unit 1204 (step S3). These addresses are addresses indicating positions in the transmission buffer 1201.
 図6に、第1制御データ格納部1204に格納されるデータの一例を示す。図6の例では、キャプチャフラグと、LSOペイロードの先頭アドレスと、LSOペイロードの末尾アドレスと、LROペイロードの先頭アドレスと、LROペイロードの末尾アドレスと、ヘッダリストの先頭アドレスと、ヘッダリストの末尾アドレスと、コピー先アドレスとが格納される。キャプチャフラグは、ユーザからキャプチャを指示されている場合には「ON」に設定され、ユーザからキャプチャを指示されていない場合には「OFF」に設定される。キャプチャフラグが「ON」に設定されていると、情報処理装置1は本実施の形態で説明する処理を実行する。LROペイロードの先頭アドレス及び末尾アドレスは、受信バッファ1202内の位置を示すアドレスである。ヘッダリストの先頭アドレス及び末尾アドレスは、リスト格納部1205内の位置を示すアドレスである。コピー先アドレスは、フレーム格納部1206内の位置を示すアドレスである。 FIG. 6 shows an example of data stored in the first control data storage unit 1204. In the example of FIG. 6, the capture flag, the start address of the LSO payload, the end address of the LSO payload, the start address of the LRO payload, the end address of the LRO payload, the start address of the header list, and the end address of the header list And a copy destination address are stored. The capture flag is set to “ON” when capture is instructed by the user, and is set to “OFF” when capture is not instructed by the user. When the capture flag is set to “ON”, the information processing apparatus 1 executes the processing described in the present embodiment. The start address and end address of the LRO payload are addresses indicating positions in the reception buffer 1202. The head address and the end address of the header list are addresses indicating positions in the list storage unit 1205. The copy destination address is an address indicating a position in the frame storage unit 1206.
 LANドライバ1207は、LSOデータを複製し、複製されたLSOデータをネットワークインタフェースカード11に出力する(ステップS5)。なお、LANドライバ1207は、複製元のLSOデータを、送信バッファ1201に保持したままにしておく。 The LAN driver 1207 duplicates the LSO data, and outputs the duplicated LSO data to the network interface card 11 (step S5). The LAN driver 1207 keeps the copy source LSO data in the transmission buffer 1201.
 ネットワークインタフェースカード11におけるオフロード処理部1107は、LANドライバ1207が出力したLSOデータを受け取る(ステップS7)。ステップS7の処理は、より具体的には、LANドライバ1207がDMA転送により出力したLSOデータが送信DMA領域1109に格納され、オフロード処理部1107が送信DMA領域1109からLSOデータを読み出す処理である。 The offload processing unit 1107 in the network interface card 11 receives the LSO data output from the LAN driver 1207 (step S7). More specifically, the process in step S7 is a process in which the LSO data output by the LAN driver 1207 by DMA transfer is stored in the transmission DMA area 1109, and the offload processing unit 1107 reads the LSO data from the transmission DMA area 1109. .
 オフロード処理部1107は、LSOデータを受け取ると、連携部1108を呼び出す。そして、連携部1108は、連携処理1を実行する(ステップS9)。連携処理1については、図7を用いて説明する。 When the offload processing unit 1107 receives the LSO data, the offload processing unit 1107 calls the cooperation unit 1108. And the cooperation part 1108 performs the cooperation process 1 (step S9). The cooperation process 1 will be described with reference to FIG.
 まず、連携部1108は、ステップS7において受け取ったLSOデータのLSOペイロード長を特定する(図7:ステップS41)。 First, the cooperation unit 1108 specifies the LSO payload length of the LSO data received in step S7 (FIG. 7: step S41).
 連携部1108は、ステップS41において特定されたLSOペイロード長を選別部1103に出力する(ステップS43)。そして元の処理に戻る。 The cooperation unit 1108 outputs the LSO payload length specified in step S41 to the selection unit 1103 (step S43). Then, the process returns to the original process.
 このようにすれば、選別部1103はLSOペイロード長を利用して転送要求のタイミングを制御できるようになる。 In this way, the sorting unit 1103 can control the timing of the transfer request using the LSO payload length.
 図4の説明に戻り、選別部1103は、連携部1108からLSOペイロード長を受け取り(ステップS11)、第2制御データ格納部1111に格納する(ステップS13)。 Returning to the description of FIG. 4, the selection unit 1103 receives the LSO payload length from the cooperation unit 1108 (step S11) and stores it in the second control data storage unit 1111 (step S13).
 図8に、第2制御データ格納部1111に格納されているデータの一例を示す。図8の例では、キャプチャフラグと、LSOペイロード長と、コピー済みデータ長と、コピー先先頭アドレスと、コピー先アドレスとが格納されている。キャプチャフラグは、ユーザからキャプチャを指示されている場合には「ON」に設定され、ユーザからキャプチャを指示されていない場合には「OFF」に設定される。キャプチャフラグが「ON」に設定されていると、情報処理装置1は本実施の形態で説明する処理を実行する。コピー済データ長は、コピーが済んだLSOペイロードの長さである。コピー先先頭アドレス及びコピー先アドレスは、DMA領域1106内の位置を示すアドレスである。 FIG. 8 shows an example of data stored in the second control data storage unit 1111. In the example of FIG. 8, a capture flag, an LSO payload length, a copied data length, a copy destination head address, and a copy destination address are stored. The capture flag is set to “ON” when capture is instructed by the user, and is set to “OFF” when capture is not instructed by the user. When the capture flag is set to “ON”, the information processing apparatus 1 executes the processing described in the present embodiment. The copied data length is the length of the LSO payload that has been copied. The copy destination head address and the copy destination address are addresses indicating positions in the DMA area 1106.
 一方、オフロード処理部1107は、ステップS7において受け取ったLSOデータをフレームに分割する(ステップS15)。 Meanwhile, the offload processing unit 1107 divides the LSO data received in step S7 into frames (step S15).
 LSOデータを分割すると、複数のフレームが得られる。図9に、LSOデータを分割することにより得られるフレームの一例を示す。図9の例では、ヘッダ1-1及びペイロード1-1を含むフレーム1と、ヘッダ1-2及びペイロード1-2を含むフレーム2とが得られている。なお、得られるフレームは3つ以上である場合もある。 When dividing the LSO data, multiple frames are obtained. FIG. 9 shows an example of a frame obtained by dividing the LSO data. In the example of FIG. 9, a frame 1 including a header 1-1 and a payload 1-1 and a frame 2 including a header 1-2 and a payload 1-2 are obtained. In some cases, three or more frames are obtained.
 通信プロトコルがTCPである場合には、フレームの構造は図10の例に示すようになる。図10の例では、フレームのヘッダは、MACヘッダ、IPヘッダ及びTCPヘッダを含む。MACヘッダは、宛先MACアドレス、送信元MACアドレス及びタイプを含む。IPヘッダは、IPヘッダ長、IPパケット長、上位プロトコル番号及びIPヘッダチェックサム等を含む。TCPヘッダは、送信元ポート番号、宛先ポート番号、データオフセット及びTCPチェックサム等を含む。 When the communication protocol is TCP, the frame structure is as shown in the example of FIG. In the example of FIG. 10, the header of the frame includes a MAC header, an IP header, and a TCP header. The MAC header includes a destination MAC address, a source MAC address, and a type. The IP header includes an IP header length, an IP packet length, an upper protocol number, an IP header checksum, and the like. The TCP header includes a source port number, a destination port number, a data offset, a TCP checksum, and the like.
 通信プロトコルがUDPである場合には、フレームの構造は図11の例に示すようになる。図11の例では、フレームのヘッダは、MACヘッダ、IPヘッダ及びUDPヘッダを含む。MACヘッダは、宛先MACアドレス、送信元MACアドレス及びタイプを含む。IPヘッダは、IPヘッダ長、IPパケット長、上位プロトコル番号及びIPヘッダチェックサム等を含む。UDPヘッダは、送信元ポート番号、宛先ポート番号、パケット長及びUDPチェックサムを含む。 When the communication protocol is UDP, the frame structure is as shown in the example of FIG. In the example of FIG. 11, the header of the frame includes a MAC header, an IP header, and a UDP header. The MAC header includes a destination MAC address, a source MAC address, and a type. The IP header includes an IP header length, an IP packet length, an upper protocol number, an IP header checksum, and the like. The UDP header includes a source port number, a destination port number, a packet length, and a UDP checksum.
 オフロード処理部1107は、分割が完了すると、分割により得られたフレームを選別部1103に出力する(ステップS17)。 When the division is completed, the offload processing unit 1107 outputs the frame obtained by the division to the selection unit 1103 (step S17).
 これに応じ、選別部1103は、オフロード処理部1107からフレームを受け取り(ステップS19)、ヘッダ処理部1104を呼び出す。そして、ヘッダ処理部1104は、リスト生成処理1を実行する(ステップS21)。リスト生成処理1については、図12及び図13を用いて説明する。図12に示したリスト生成処理1は、1つのフレームに対する処理であるが、ステップS19において受け取ったフレームが複数ある場合には、複数のフレームの各々についてリスト生成処理1を実行する。 In response, the selection unit 1103 receives the frame from the offload processing unit 1107 (step S19) and calls the header processing unit 1104. Then, the header processing unit 1104 executes list generation processing 1 (step S21). List generation processing 1 will be described with reference to FIGS. 12 and 13. The list generation process 1 shown in FIG. 12 is a process for one frame. If there are a plurality of frames received in step S19, the list generation process 1 is executed for each of the plurality of frames.
 まず、ヘッダ処理部1104は、フレームのヘッダ長及びペイロード長を特定する(図12:ステップS51)。ヘッダ長は、例えばIPヘッダ及びTCPヘッダに含まれるヘッダ長の情報を用いて特定する。ペイロード長は、TCPの場合とUDPの場合とで異なる。TCPの場合は、((IPヘッダに含まれるIPパケット長-IPヘッダに含まれるIPヘッダ長×4)-(TCPヘッダに含まれるデータオフセット×4))で求める。UDPの場合は、(UDPヘッダに含まれるパケット長-8)で求める。 First, the header processing unit 1104 specifies the header length and payload length of the frame (FIG. 12: step S51). The header length is specified using header length information included in the IP header and the TCP header, for example. The payload length differs between TCP and UDP. In the case of TCP, it is obtained by ((IP packet length included in IP header−IP header length included in IP header × 4) − (data offset included in TCP header × 4)). In the case of UDP, it is obtained by (packet length-8 included in UDP header).
 ヘッダ処理部1104は、第2制御データ格納部1111に格納されているコピー先アドレスを、第2制御データ格納部111に格納されているコピー先先頭アドレスと同じアドレスに設定する(ステップS53)。 The header processing unit 1104 sets the copy destination address stored in the second control data storage unit 1111 to the same address as the copy destination start address stored in the second control data storage unit 111 (step S53).
 ヘッダ処理部1104は、DMA領域1106内における、コピー先アドレスが指す領域に、フレームのヘッダ長及びペイロード長を格納する(ステップS55)。 The header processing unit 1104 stores the header length and payload length of the frame in the area indicated by the copy destination address in the DMA area 1106 (step S55).
 ヘッダ処理部1104は、第2制御データ格納部1111に格納されているコピー先アドレスを、ステップS55において格納したデータ量の分だけ更新する(ステップS57)。 The header processing unit 1104 updates the copy destination address stored in the second control data storage unit 1111 by the amount of data stored in step S55 (step S57).
 ヘッダ処理部1104は、フレームのヘッダを複製し、DMA領域1106内における、コピー先アドレスが指す領域に、フレームのヘッダを格納する(ステップS59)。ステップS59においては、ステップS51において特定されたヘッダ長を用いる。 The header processing unit 1104 duplicates the header of the frame, and stores the header of the frame in the area indicated by the copy destination address in the DMA area 1106 (step S59). In step S59, the header length specified in step S51 is used.
 図13に、DMA領域1106に格納されるヘッダリストの内容を示す。ヘッダリストは、ヘッダ長、ペイロード長及びヘッダのセットを複数含む。セットの数は、LSOデータの分割により得られたフレームの数と同じである。 FIG. 13 shows the contents of the header list stored in the DMA area 1106. The header list includes a plurality of header lengths, payload lengths, and header sets. The number of sets is the same as the number of frames obtained by dividing the LSO data.
 ヘッダ処理部1104は、第2制御データ格納部1111に格納されているコピー先アドレスを、ステップS59において格納したヘッダ長の分だけ更新する(ステップS61)。 The header processing unit 1104 updates the copy destination address stored in the second control data storage unit 1111 by the length of the header stored in step S59 (step S61).
 ヘッダ処理部1104は、第2制御データ格納部1111に格納されているコピー済みデータ長に、ステップS51において特定されたペイロード長を加算する(ステップS63)。 The header processing unit 1104 adds the payload length specified in step S51 to the copied data length stored in the second control data storage unit 1111 (step S63).
 ヘッダ処理部1104は、第2制御データ格納部1111に格納されているコピー済みデータ長とLSOペイロード長とが等しいか否かを判断する(ステップS65)。等しくない場合(ステップS65:Noルート)、次に処理すべきフレームがあるので、ステップS71の処理に移行する。一方、等しい場合(ステップS65:Yesルート)、ヘッダ処理部1104は、DMA管理部1105に転送要求を出力する(ステップS67)。 The header processing unit 1104 determines whether the copied data length stored in the second control data storage unit 1111 is equal to the LSO payload length (step S65). If they are not equal (step S65: No route), there is a frame to be processed next, and the process proceeds to step S71. On the other hand, if they are equal (step S65: Yes route), the header processing unit 1104 outputs a transfer request to the DMA management unit 1105 (step S67).
 ヘッダ処理部1104は、第2制御データ格納部1111に格納されているコピー済みデータ長を0に設定する(ステップS69)。 The header processing unit 1104 sets the copied data length stored in the second control data storage unit 1111 to 0 (step S69).
 ヘッダ処理部1104は、第2制御データ格納部1111に格納されているコピー先先頭アドレスを、DMA領域1106における空き領域の先頭アドレスに設定する(ステップS71)。そして元の処理に戻る。 The header processing unit 1104 sets the copy destination start address stored in the second control data storage unit 1111 as the start address of the free area in the DMA area 1106 (step S71). Then, the process returns to the original process.
 以上のような処理を実行すれば、フレーム毎にDMA転送を行うのではなく、LSOデータ毎にDMA転送を行えるので、CPUの負荷を軽減できるようになる。また、DMA領域1106の数は少なくて済む。 If the above processing is executed, the DMA transfer can be performed for each LSO data instead of the DMA transfer for each frame, so that the load on the CPU can be reduced. Also, the number of DMA areas 1106 can be small.
 図4の説明に戻り、選別部1103は、ステップS15における分割により得られたフレームをMAC回路1101に出力する(ステップS23)。 Returning to the description of FIG. 4, the selection unit 1103 outputs the frame obtained by the division in step S15 to the MAC circuit 1101 (step S23).
 一方、ステップS67において出力された転送要求を受け取ったDMA管理部1105は、DMA領域1106に格納されているヘッダリストをDMA転送によりLANドライバ1207に出力する(ステップS25)。 On the other hand, the DMA management unit 1105 that has received the transfer request output in step S67 outputs the header list stored in the DMA area 1106 to the LAN driver 1207 by DMA transfer (step S25).
 これに応じ、LANドライバ1207は、DMA管理部1105からヘッダリストを受け取り(ステップS27)、リスト格納部1205に格納する。LANドライバ1207は、ステップS27を割り込みとして処理する。 In response, the LAN driver 1207 receives the header list from the DMA management unit 1105 (step S27) and stores it in the list storage unit 1205. The LAN driver 1207 processes step S27 as an interrupt.
 LANドライバ1207は、フレーム生成部1203を呼び出す。そして、フレーム生成部1203は、フレーム生成処理1を実行する(ステップS29)。フレーム生成処理1については、図14を用いて説明する。 The LAN driver 1207 calls the frame generation unit 1203. Then, the frame generation unit 1203 executes frame generation processing 1 (step S29). The frame generation process 1 will be described with reference to FIG.
 まず、フレーム生成部1203は、ヘッダリストの先頭アドレス及び末尾アドレスを第1制御データ格納部1204に格納する(図14:ステップS81)。これらのアドレスは、リスト格納部1205内の位置を示すアドレスである。 First, the frame generation unit 1203 stores the start address and end address of the header list in the first control data storage unit 1204 (FIG. 14: step S81). These addresses are addresses indicating positions in the list storage unit 1205.
 フレーム生成部1203は、リスト格納部1205に格納されているヘッダリストから、未処理のセットを1つ特定する(ステップS82)。 The frame generation unit 1203 identifies one unprocessed set from the header list stored in the list storage unit 1205 (step S82).
 フレーム生成部1203は、第1制御データ格納部1204に格納されているコピー先アドレスが指す領域に、ステップS82において特定されたセットに含まれるフレームのヘッダを格納する(ステップS83)。 The frame generation unit 1203 stores the header of the frame included in the set identified in step S82 in the area indicated by the copy destination address stored in the first control data storage unit 1204 (step S83).
 フレーム生成部1203は、第1制御データ格納部1204に格納されているコピー先アドレスを、ステップS83において格納したフレームのヘッダ長の分だけ更新する(ステップS85)。 The frame generation unit 1203 updates the copy destination address stored in the first control data storage unit 1204 by the amount of the header length of the frame stored in step S83 (step S85).
 フレーム生成部1203は、第1制御データ格納部1204に格納されているLSOペイロードの先頭アドレスが指す位置から、特定されたセットに含まれるフレームのペイロード長の分だけデータを抽出する(ステップS87)。ステップS87において抽出されたデータは、ステップS82において特定されたセットに含まれるフレームのヘッダに対応するペイロードに相当する。 The frame generation unit 1203 extracts data corresponding to the payload length of the frame included in the specified set from the position indicated by the head address of the LSO payload stored in the first control data storage unit 1204 (step S87). . The data extracted in step S87 corresponds to the payload corresponding to the header of the frame included in the set specified in step S82.
 フレーム生成部1203は、第1制御データ格納部1204に格納されているコピー先アドレスが指す領域に、ステップS87において抽出されたデータを格納する(ステップ89)。 The frame generation unit 1203 stores the data extracted in step S87 in the area indicated by the copy destination address stored in the first control data storage unit 1204 (step 89).
 フレーム生成部1203は、第1制御データ格納部1204に格納されているLSOペイロードの先頭アドレスを、ステップS82において特定されたセットに含まれるペイロード長の分だけ更新する(ステップS91)。 The frame generation unit 1203 updates the start address of the LSO payload stored in the first control data storage unit 1204 by the payload length included in the set specified in step S82 (step S91).
 フレーム生成部1203は、第1制御データ格納部1204に格納されているコピー先アドレスを、フレーム格納部1206内の次の空き領域のアドレスに変更する(ステップS93)。 The frame generation unit 1203 changes the copy destination address stored in the first control data storage unit 1204 to the address of the next free area in the frame storage unit 1206 (step S93).
 フレーム生成部1203は、第1制御データ格納部1204に格納されているLSOペイロードの先頭アドレスと末尾アドレスとが同じであるか判断する(ステップS95)。同じではない場合(ステップS95:Noルート)、次のセットについて処理するため、ステップS82の処理に戻る。一方、同じである場合(ステップS95:Yesルート)、元の処理に戻る。 The frame generation unit 1203 determines whether the start address and the end address of the LSO payload stored in the first control data storage unit 1204 are the same (step S95). If they are not the same (step S95: No route), the process returns to step S82 to process the next set. On the other hand, if they are the same (step S95: Yes route), the process returns to the original process.
 図4の説明に戻り、LANドライバ1207は、フレーム格納部1206に格納されているフレームをキャプチャ処理部14に出力する(ステップS31)。 Returning to the description of FIG. 4, the LAN driver 1207 outputs the frame stored in the frame storage unit 1206 to the capture processing unit 14 (step S31).
 以上のような処理を実行すれば、情報処理装置1がオフロード機能を有する場合であっても、情報処理装置1が伝送路2に対して送信するデータをフレームの形式で取得できるようになる。 By executing the processing as described above, even if the information processing apparatus 1 has an offload function, the data transmitted from the information processing apparatus 1 to the transmission path 2 can be acquired in the form of a frame. .
 第2に、図15乃至図20を用いて、フレームを受信した際に実行する処理について説明する。 Secondly, processing executed when a frame is received will be described with reference to FIGS. 15 to 20.
 図15に、フレームを受信した際に実行する処理の概要を示す。図をわかりやすくするため、符号等は省略されている。選別部1103におけるヘッダ処理部1104は、MAC回路1101からフレームを受信すると、フレームのヘッダを複製することによりヘッダリストを生成し、DMA管理部1105が管理するDMA領域1106に格納する。また、選別部1103は、フレームをオフロード処理部1107に出力する。オフロード処理部1107は、フレームを統合することによりLROデータを生成する。LROデータは、LANドライバ1207に出力される。また、オフロード処理部1107における連携部1108は、統合が完了すると、ヘッダリストを出力することを要求する転送要求をDMA管理部1105に出力する。DMA管理部1105は、DMA転送によりヘッダリストをLANドライバ1207に出力する。 FIG. 15 shows an outline of processing executed when a frame is received. In order to make the figure easy to understand, reference numerals and the like are omitted. When receiving a frame from the MAC circuit 1101, the header processing unit 1104 in the selection unit 1103 generates a header list by duplicating the header of the frame, and stores the header list in the DMA area 1106 managed by the DMA management unit 1105. The sorting unit 1103 outputs the frame to the offload processing unit 1107. The offload processing unit 1107 generates LRO data by integrating the frames. The LRO data is output to the LAN driver 1207. In addition, when the integration is completed, the cooperation unit 1108 in the offload processing unit 1107 outputs a transfer request for requesting output of the header list to the DMA management unit 1105. The DMA management unit 1105 outputs the header list to the LAN driver 1207 by DMA transfer.
 LANドライバ1207は、ネットワークインタフェースカード11から受け取ったLROデータを複製する。LANドライバ1207におけるフレーム生成部1203は、複製されたLROデータにおけるLROペイロードを分割する。また、フレーム生成部1203は、分割により得られたデータに、DMA管理部1105から受け取ったヘッダリストに含まれるヘッダを付与することによって、フレームを生成する。生成されたフレームは、キャプチャ処理部14によって収集される。一方、複製元のLROデータは、上位プロトコル処理部1200に出力される。 The LAN driver 1207 duplicates the LRO data received from the network interface card 11. The frame generation unit 1203 in the LAN driver 1207 divides the LRO payload in the copied LRO data. The frame generation unit 1203 generates a frame by adding a header included in the header list received from the DMA management unit 1105 to the data obtained by the division. The generated frames are collected by the capture processing unit 14. On the other hand, the replication source LRO data is output to the higher-level protocol processing unit 1200.
 このように、ネットワークインタフェースカード11において生成したヘッダリストと、フレームを統合することにより得られるLROデータとを用いて、LANドライバ1207がフレームを生成できるようにしている。 As described above, the LAN driver 1207 can generate a frame using the header list generated in the network interface card 11 and the LRO data obtained by integrating the frames.
 図16乃至図20を用いて、フレームを受信した際に実行する処理を詳細に説明する。まず、選別部1103は、MAC回路1101からフレームを受け取る(図16:ステップS101)。 A process executed when a frame is received will be described in detail with reference to FIGS. First, the selection unit 1103 receives a frame from the MAC circuit 1101 (FIG. 16: step S101).
 選別部1103は、ヘッダ処理部1104を呼び出す。そして、ヘッダ処理部1104は、リスト生成処理2を実行する(ステップS103)。リスト生成処理2については、図17を用いて説明する。図17に示したリスト生成処理2は、選別部1103がMAC回路1101からフレームを受け取る度に実行する。 The sorting unit 1103 calls the header processing unit 1104. Then, the header processing unit 1104 executes list generation processing 2 (step S103). The list generation process 2 will be described with reference to FIG. The list generation process 2 shown in FIG. 17 is executed every time the selection unit 1103 receives a frame from the MAC circuit 1101.
 まず、ヘッダ処理部1104は、フレームのヘッダ長及びペイロード長を特定する(図17:ステップS131)。ステップS131においてヘッダ長及びペイロード長を特定する方法は、ステップS51の方法と同様であるので、説明を省略する。 First, the header processing unit 1104 identifies the header length and payload length of the frame (FIG. 17: step S131). Since the method for specifying the header length and the payload length in step S131 is the same as the method in step S51, description thereof will be omitted.
 ヘッダ処理部1104は、第2制御データ格納部1111に格納されているコピー先アドレスを、第2制御データ格納部111に格納されているコピー先先頭アドレスと同じアドレスに設定する(ステップS133)。 The header processing unit 1104 sets the copy destination address stored in the second control data storage unit 1111 to the same address as the copy destination start address stored in the second control data storage unit 111 (step S133).
 ヘッダ処理部1104は、DMA領域1106内における、コピー先アドレスが指す領域に、フレームのヘッダ長及びペイロード長を格納する(ステップS135)。 The header processing unit 1104 stores the header length and payload length of the frame in the area indicated by the copy destination address in the DMA area 1106 (step S135).
 ヘッダ処理部1104は、第2制御データ格納部1111に格納されているコピー先アドレスを、ステップS135において格納したデータ量の分だけ更新する(ステップS137)。 The header processing unit 1104 updates the copy destination address stored in the second control data storage unit 1111 by the amount of data stored in step S135 (step S137).
 ヘッダ処理部1104は、フレームのヘッダを複製し、DMA領域1106内における、コピー先アドレスが指す領域に、フレームのヘッダを格納する(ステップS139)。ステップS139においては、ステップS131において特定されたヘッダ長を用いる。ヘッダ処理部1104は、第2制御データ格納部1111に格納されているコピー先アドレスを、ステップS139において格納したヘッダ長の分だけ更新する(ステップS141)。そして元の処理に戻る。DMA領域1106に格納されるヘッダリストの内容は、図13に示したとおりである。 The header processing unit 1104 duplicates the header of the frame, and stores the header of the frame in the area indicated by the copy destination address in the DMA area 1106 (step S139). In step S139, the header length specified in step S131 is used. The header processing unit 1104 updates the copy destination address stored in the second control data storage unit 1111 by the length of the header stored in step S139 (step S141). Then, the process returns to the original process. The contents of the header list stored in the DMA area 1106 are as shown in FIG.
 以上のような処理を実行すれば、LANドライバ1207が利用するヘッダリストを用意することができるようになる。 If the above processing is executed, a header list used by the LAN driver 1207 can be prepared.
 図16の説明に戻り、選別部1103は、ステップS101において受け取ったフレームをオフロード処理部1107に出力する(ステップS105)。 Returning to the description of FIG. 16, the selection unit 1103 outputs the frame received in step S101 to the offload processing unit 1107 (step S105).
 これに応じ、オフロード処理部1107は、選別部1103からフレームを受け取る(ステップS107)。 In response, the offload processing unit 1107 receives a frame from the selection unit 1103 (step S107).
 オフロード処理部1107は、複数のフレームを統合することによりLROデータを生成する(ステップS109)。ステップS109において、オフロード処理部1107は、ステップS107において受け取ったフレームと、当該フレームを受け取る前に受け取ったフレームとを統合することによりLROデータを生成する。 The offload processing unit 1107 generates LRO data by integrating a plurality of frames (step S109). In step S109, the offload processing unit 1107 generates LRO data by integrating the frame received in step S107 and the frame received before receiving the frame.
 図18に、LROデータの一例を示す。図18の例では、LROデータは、LROヘッダと、LROペイロードとを含む。LROペイロードは、複数のフレームのペイロードを含む。 FIG. 18 shows an example of LRO data. In the example of FIG. 18, the LRO data includes an LRO header and an LRO payload. The LRO payload includes a plurality of frame payloads.
 オフロード処理部1107は、連携部1108を呼び出す。そして、連携部1108は、連携処理2を実行する(ステップS111)。連携処理2については、図19を用いて説明する。 The offload processing unit 1107 calls the cooperation unit 1108. And the cooperation part 1108 performs the cooperation process 2 (step S111). The cooperation process 2 will be described with reference to FIG.
 まず、連携部1108は、第2制御データ格納部1111から、コピー先先頭アドレス及びコピー先アドレスを特定する(図19:ステップS151)。コピー先先頭アドレスはヘッダリストが格納されている領域の先頭アドレスを表し、コピー先アドレスはヘッダリストが格納されている領域の末尾アドレスを表す。 First, the cooperation unit 1108 identifies the copy destination head address and the copy destination address from the second control data storage unit 1111 (FIG. 19: Step S151). The copy destination start address represents the start address of the area where the header list is stored, and the copy destination address represents the end address of the area where the header list is stored.
 連携部1108は、ステップS151において特定されたコピー先先頭アドレス及びコピー先アドレスを含む転送要求をDMA管理部1105に出力する(ステップS153)。DMA管理部1105は、転送要求を受け取ると、転送要求に含まれるコピー先先頭アドレス及びコピー先アドレスによって特定される領域に格納されているヘッダリストを、LANドライバ1207にDMA転送により出力する。 The cooperation unit 1108 outputs a transfer request including the copy destination start address and the copy destination address specified in step S151 to the DMA management unit 1105 (step S153). Upon receiving the transfer request, the DMA management unit 1105 outputs the header list stored in the area specified by the copy destination start address and the copy destination address included in the transfer request to the LAN driver 1207 by DMA transfer.
 連携部1108は、第2制御データ格納部1111に格納されているコピー先先頭アドレスを、DMA領域1106における空き領域の先頭アドレスに設定する(ステップS155)。そして元の処理に戻る。 The cooperation unit 1108 sets the copy destination head address stored in the second control data storage unit 1111 as the head address of the empty area in the DMA area 1106 (step S155). Then, the process returns to the original process.
 以上のような処理を実行すれば、フレーム毎にDMA転送を行うのではなく、LROデータ毎にDMA転送を行えるので、CPUの負荷を軽減できるようになる。また、DMA領域1106の数は少なくて済む。 If the above processing is executed, the DMA transfer can be performed for each LRO data instead of the DMA transfer for each frame, so that the load on the CPU can be reduced. Also, the number of DMA areas 1106 can be small.
 図16の説明に戻り、LANドライバ1207は、DMA管理部1105からヘッダリストを受け取り(ステップS113)、リスト格納部1205に格納する。LANドライバ1207は、ステップS113を割り込みとして処理する。 16, the LAN driver 1207 receives the header list from the DMA management unit 1105 (step S113) and stores it in the list storage unit 1205. The LAN driver 1207 processes step S113 as an interrupt.
 一方、オフロード処理部1107は、ステップS109において生成されたLROデータを受信DMA領域1110に格納し、受信DMA領域1110に格納されているLROデータをDMA転送によりLANドライバ1207に出力する(ステップS115)。 On the other hand, the offload processing unit 1107 stores the LRO data generated in step S109 in the reception DMA area 1110, and outputs the LRO data stored in the reception DMA area 1110 to the LAN driver 1207 by DMA transfer (step S115). ).
 これに応じ、LANドライバ1207は、LROデータをオフロード処理部1107から受け取り、LROデータを複製し、受信バッファ1202に格納する(ステップS117)。なお、複製元のLROデータは、ステップ123において上位プロトコル処理部1200に出力される。 In response, the LAN driver 1207 receives the LRO data from the offload processing unit 1107, duplicates the LRO data, and stores it in the reception buffer 1202 (step S117). The replication source LRO data is output to the upper protocol processing unit 1200 in step 123.
 LANドライバ1207は、フレーム生成部1203を呼び出す。そして、フレーム生成部1203は、フレーム生成処理2を実行する(ステップS119)。フレーム生成処理2については、図20を用いて説明する。 The LAN driver 1207 calls the frame generation unit 1203. Then, the frame generation unit 1203 executes frame generation processing 2 (step S119). The frame generation process 2 will be described with reference to FIG.
 まず、フレーム生成部1203は、リスト格納部1205に格納されているヘッダリストの先頭アドレス及び末尾アドレスを特定する(ステップS161)。そして、フレーム生成部1203は、ステップS161において特定されたヘッダリストの先頭アドレス及び末尾アドレスを第1制御データ格納部1204に格納する(ステップS163)。 First, the frame generation unit 1203 identifies the start address and the end address of the header list stored in the list storage unit 1205 (step S161). Then, the frame generation unit 1203 stores the start address and the end address of the header list specified in step S161 in the first control data storage unit 1204 (step S163).
 フレーム生成部1203は、リスト格納部1205に格納されているヘッダリストから、未処理のセットを1つ特定する(ステップS164)。 The frame generation unit 1203 identifies one unprocessed set from the header list stored in the list storage unit 1205 (step S164).
 フレーム生成部1203は、第1制御データ格納部1204に格納されているコピー先アドレスが指す領域に、ステップS164において特定されたセットに含まれるフレームのヘッダを格納する(ステップS165)。 The frame generation unit 1203 stores the header of the frame included in the set identified in step S164 in the area indicated by the copy destination address stored in the first control data storage unit 1204 (step S165).
 フレーム生成部1203は、第1制御データ格納部1204に格納されているコピー先アドレスを、ステップS165において格納したフレームのヘッダ長の分だけ更新する(ステップS167)。 The frame generation unit 1203 updates the copy destination address stored in the first control data storage unit 1204 by the amount of the header length of the frame stored in step S165 (step S167).
 フレーム生成部1203は、第1制御データ格納部1204に格納されているLROペイロードの先頭アドレスが指す位置から、特定されたセットに含まれるフレームのペイロード長の分だけデータを抽出する(ステップS169)。ステップS169において抽出されたデータは、ステップS164において特定されたセットに含まれるフレームのヘッダに対応するペイロードに相当する。 The frame generation unit 1203 extracts data corresponding to the payload length of the frame included in the specified set from the position indicated by the head address of the LRO payload stored in the first control data storage unit 1204 (step S169). . The data extracted in step S169 corresponds to the payload corresponding to the header of the frame included in the set specified in step S164.
 フレーム生成部1203は、第1制御データ格納部1204に格納されているコピー先アドレスが指す領域に、ステップS169において抽出されたデータを格納する(ステップ171)。 The frame generation unit 1203 stores the data extracted in step S169 in the area indicated by the copy destination address stored in the first control data storage unit 1204 (step 171).
 フレーム生成部1203は、第1制御データ格納部1204に格納されているLROペイロードの先頭アドレスを、ステップS164において特定されたセットに含まれるペイロード長の分だけ更新する(ステップS173)。 The frame generation unit 1203 updates the head address of the LRO payload stored in the first control data storage unit 1204 by the payload length included in the set identified in step S164 (step S173).
 フレーム生成部1203は、第1制御データ格納部1204に格納されているコピー先アドレスを、フレーム格納部1206内の次の空き領域のアドレスに変更する(ステップS175)。 The frame generation unit 1203 changes the copy destination address stored in the first control data storage unit 1204 to the address of the next free area in the frame storage unit 1206 (step S175).
 フレーム生成部1203は、第1制御データ格納部1204に格納されているLROペイロードの先頭アドレスと末尾アドレスとが同じであるか判断する(ステップS177)。同じではない場合(ステップS177:Noルート)、次のセットについて処理するため、ステップS164の処理に戻る。一方、同じである場合(ステップS177:Yesルート)、元の処理に戻る。 The frame generation unit 1203 determines whether the start address and the end address of the LRO payload stored in the first control data storage unit 1204 are the same (step S177). If they are not the same (step S177: No route), the process returns to step S164 to process the next set. On the other hand, if they are the same (step S177: Yes route), the process returns to the original process.
 図16の説明に戻り、LANドライバ1207は、フレーム格納部1206に格納されているフレームをキャプチャ処理部14に出力する(ステップS121)。 16, the LAN driver 1207 outputs the frame stored in the frame storage unit 1206 to the capture processing unit 14 (step S121).
 また、LANドライバ1207は、複製元のLROデータを上位プロトコル処理部1200に出力する(ステップS123)。 Also, the LAN driver 1207 outputs the replication source LRO data to the higher-level protocol processing unit 1200 (step S123).
 以上のような処理を実行すれば、情報処理装置1がオフロード機能を有する場合であっても、情報処理装置1が伝送路2から受信するデータをフレームの形式で取得できようになる。 If the processing as described above is executed, even if the information processing apparatus 1 has an offload function, the data received by the information processing apparatus 1 from the transmission path 2 can be acquired in the form of a frame.
 以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した情報処理装置1の機能ブロック構成は実際のプログラムモジュール構成に対応しない場合もある。 Although one embodiment of the present invention has been described above, the present invention is not limited to this. For example, the functional block configuration of the information processing apparatus 1 described above may not correspond to the actual program module configuration.
 また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。 Further, the configuration of each table described above is an example, and the configuration as described above is not necessarily required. Further, in the processing flow, the processing order can be changed if the processing result does not change. Further, it may be executed in parallel.
 上ではイーサネット(登録商標)を例にして説明したが、イーサネット(登録商標)に限られるわけではない。高速通信回線を利用した他のネットワークにおける装置に対して本実施の形態を適用してもよい。 In the above description, Ethernet (registered trademark) is used as an example, but it is not limited to Ethernet (registered trademark). The present embodiment may be applied to an apparatus in another network using a high-speed communication line.
 また、上では通信インタフェースとしてネットワークインタフェースカードを例にして説明したが、ネットワークインタフェースカードに限られるわけではない。例えば、基板上に搭載されたマイクロコントローラ等のCPU又はFPGA(Field Programmable Gate Array)等のLSI(Large Scale Integration)で実現してもよい。 In the above description, the network interface card has been described as an example of the communication interface. However, the communication interface is not limited to the network interface card. For example, it may be realized by a CPU such as a microcontroller mounted on a substrate or an LSI (Large Scale Integration) such as an FPGA (Field Programmable Gate Gate Array).
 また、上で述べたネットワークインタフェースカード11に含まれる選別部1103、ヘッダ処理部1104、DMA管理部1105、オフロード処理部1107及び連携部1108は、拡張カードに含まれるマイクロプロセッサ等のCPUで実行してもよいし、また、ハードウェア回路によって実行してもよい。 The selection unit 1103, header processing unit 1104, DMA management unit 1105, offload processing unit 1107, and linkage unit 1108 included in the network interface card 11 described above are executed by a CPU such as a microprocessor included in the expansion card. Alternatively, it may be executed by a hardware circuit.
 なお、上で述べた情報処理装置1は、コンピュータ装置であって、図21に示すように、メモリ2501とCPU2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム並びに本実施例における処理を実施するためのアプリケーション・プログラム及びLANドライバ1207等は、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラム等の処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラム等はコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラム等などのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。 The information processing apparatus 1 described above is a computer apparatus, and as shown in FIG. 21, a display connected to a memory 2501, a CPU 2503, a hard disk drive (HDD: Hard Disk Drive) 2505, and a display apparatus 2509. A control unit 2507, a drive device 2513 for a removable disk 2511, an input device 2515, and a communication control unit 2517 for connecting to a network are connected by a bus 2519. The operating system, application programs for executing the processing in this embodiment, the LAN driver 1207, and the like are stored in the HDD 2505, and are read from the HDD 2505 to the memory 2501 when executed by the CPU 2503. The CPU 2503 controls the display control unit 2507, the communication control unit 2517, and the drive device 2513 according to the processing content of the application program or the like to perform a predetermined operation. Further, data in the middle of processing is mainly stored in the memory 2501, but may be stored in the HDD 2505. In the embodiment of the present invention, an application program or the like for executing the processing described above is stored in a computer-readable removable disk 2511 and distributed, and installed in the HDD 2505 from the drive device 2513. In some cases, the HDD 2505 may be installed via a network such as the Internet and the communication control unit 2517. Such a computer device realizes various functions as described above by organically cooperating hardware such as the CPU 2503 and memory 2501 described above and programs such as OS and application programs. To do.
 以上述べた本実施の形態をまとめると以下のようになる。 The above-described embodiment can be summarized as follows.
 本実施の形態の第1の態様に係る情報処理装置は、(A)拡張カードと(B)当該拡張カードのドライバとを有する。そして、上で述べた拡張カードが、(a1)パケットのヘッダを複製する第1処理部と、(a2)第1処理部により複製されたヘッダを、ドライバに出力する第2処理部とを有する。そして、上で述べたドライバが、(b1)第2処理部から受け取ったヘッダと、拡張カードがパケットを統合することにより得られたデータ又は拡張カードがパケットに分割する前のデータとを用いて、パケットと同じパケットを生成する第3処理部を有する。 The information processing apparatus according to the first aspect of the present embodiment includes (A) an expansion card and (B) a driver for the expansion card. The expansion card described above has (a1) a first processing unit that duplicates the header of the packet, and (a2) a second processing unit that outputs the header duplicated by the first processing unit to the driver. . Then, the driver described above uses (b1) the header received from the second processing unit and the data obtained by the expansion card integrating the packets or the data before the expansion card is divided into packets. And a third processing unit for generating the same packet as the packet.
 このようにすれば、情報処理装置がオフロード機能を有する場合であっても、ドライバはパケットの形式でデータを取得できる。これにより、高速通信回線上で転送されるパケットをキャプチャできるようになる。 In this way, the driver can acquire data in the form of a packet even when the information processing apparatus has an offload function. This makes it possible to capture packets transferred on the high-speed communication line.
 また、上で述べた第2処理部が、(a21)ヘッダを、ダイレクトメモリアクセスによって前記ドライバに出力してもよい。このようにすれば、CPUの負荷を軽減できるようになる。 Further, the second processing unit described above may output the header (a21) to the driver by direct memory access. In this way, the load on the CPU can be reduced.
 また、上で述べた拡張カードが、(a3)パケットに分割する前のデータをドライバから受け取った場合に、パケットに分割する前のデータのペイロード長を第1処理部に出力する第4処理部をさらに有してもよい。そして、上で述べた第1処理部が、(a11)第1処理部が処理したパケットのペイロード長の合計が、パケットに分割する前のデータのペイロード長と一致した場合に、第2処理部に対し、ヘッダをドライバに出力することを要求してもよい。このようにすれば、情報処理装置が送信するパケットをキャプチャできるようになる。また、分割する前のデータ毎に出力するようになるので、パケット毎に出力する場合と比べると出力回数が減り、CPUの負荷を軽減できるようになる。 Further, when the expansion card described above receives (a3) data before being divided into packets from the driver, a fourth processing unit that outputs the payload length of the data before being divided into packets to the first processing unit May further be included. The first processing unit described above is (a11) the second processing unit when the total payload length of the packets processed by the first processing unit matches the payload length of the data before being divided into packets. On the other hand, it may be requested to output the header to the driver. In this way, it is possible to capture a packet transmitted by the information processing apparatus. Further, since data is output for each data before division, the number of times of output is reduced as compared with the case of outputting for each packet, and the load on the CPU can be reduced.
 また、上で述べた第4処理部が、(a31)受信したパケットの統合が完了した場合に、第2処理部に対し、ヘッダをドライバに出力することを要求してもよい。このようにすれば、情報処理装置が受信したパケットをキャプチャできるようになる。また、統合が完了する度に出力するようになるので、パケット毎に出力する場合と比べると出力回数が減り、CPUの負荷を軽減できるようになる。 Further, the fourth processing unit described above may request (a31) that the second processing unit outputs the header to the driver when the integration of the received packets is completed. In this way, the packet received by the information processing apparatus can be captured. Further, since the data is output every time integration is completed, the number of times of output is reduced compared to the case of outputting for each packet, and the load on the CPU can be reduced.
 また、上で述べた第3処理部が、(b11)拡張カードがパケットを統合することにより得られたデータ又は拡張カードがパケットに分割する前のデータのペイロードを分割し、分割により得られたデータにヘッダを付与することにより、パケットと同じパケットを生成してもよい。このようにすれば、ドライバがデータをフレームの形式にすることができるようになる。 Also, the third processing unit described above (b11) divides the data obtained by the expansion card integrating the packets or the payload of the data before the expansion card divides the packet, and obtained by the division. By adding a header to the data, the same packet as the packet may be generated. In this way, the driver can convert the data into a frame format.
 また、上で述べたヘッダが、TCPヘッダ又はUDPヘッダ、IPヘッダ及びMACヘッダを含むようにしてもよい。 Further, the header described above may include a TCP header or a UDP header, an IP header, and a MAC header.
 また、上で述べたパケットは、データリンク層のフレームであってもよい。これにより、例えばイーサネット(登録商標)において転送されるフレームをキャプチャできるようになる。 Further, the packet described above may be a data link layer frame. As a result, for example, a frame transferred in Ethernet (registered trademark) can be captured.
 本実施の形態の第2の態様に係る情報処理方法は、拡張カードと当該拡張カードのドライバとを有するコンピュータにより実行される。そして、上で述べた拡張カードが、(C)パケットのヘッダを複製し、(D)複製されたヘッダを、ドライバに出力する処理を実行し、上で述べたドライバが、(E)拡張カードから受け取ったヘッダと、拡張カードがパケットを統合することにより得られたデータ又は拡張カードがパケットに分割する前のデータとを用いて、パケットと同じパケットを生成する処理を実行してもよい。 The information processing method according to the second aspect of the present embodiment is executed by a computer having an expansion card and a driver for the expansion card. Then, the expansion card described above executes a process of (C) duplicating the header of the packet, (D) outputting the copied header to the driver, and the driver described above is (E) the expansion card. A process of generating the same packet as the packet may be executed using the header received from the data and data obtained by integrating the packets by the expansion card or data before the expansion card divides the packet.
 なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD-ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。 A program for causing a computer to perform the processing according to the above method can be created. The program can be a computer-readable storage medium such as a flexible disk, a CD-ROM, a magneto-optical disk, a semiconductor memory, or a hard disk. It is stored in a storage device. The intermediate processing result is temporarily stored in a storage device such as a main memory.

Claims (9)

  1.  データを複数のパケットに分割して送信し、又は、受信した複数のパケットをデータに統合するネットワークインタフェース回路と当該ネットワークインタフェース回路のドライバを実行する処理装置とを有し、
     前記ネットワークインタフェース回路が、
     前記パケットのヘッダを複製する第1処理部と、
     前記第1処理部により複製された前記ヘッダを、前記ドライバに出力する第2処理部と、
     を有し、
     前記処理装置により実行されるドライバが、
     前記第2処理部から受け取った前記ヘッダと、前記ネットワークインタフェース回路が前記複数のパケットを統合することにより得られたデータ又は前記ネットワークインタフェース回路が前記複数のパケットに分割する前のデータとを用いて、前記パケットに対応するパケットを生成する第3処理部
     を有する
     情報処理装置。
    A network interface circuit that divides data into a plurality of packets and transmits or integrates a plurality of received packets into data and a processing device that executes a driver of the network interface circuit,
    The network interface circuit comprising:
    A first processing unit for copying the header of the packet;
    A second processing unit that outputs the header replicated by the first processing unit to the driver;
    Have
    The driver executed by the processing device is
    Using the header received from the second processing unit and data obtained by integrating the plurality of packets by the network interface circuit or data before the network interface circuit divides the plurality of packets. An information processing apparatus comprising: a third processing unit that generates a packet corresponding to the packet.
  2.  前記第2処理部が、
     前記ヘッダを、ダイレクトメモリアクセスによって前記ドライバに出力する
     ことを特徴とする請求項1記載の情報処理装置。
    The second processing unit is
    The information processing apparatus according to claim 1, wherein the header is output to the driver by direct memory access.
  3.  前記ネットワークインタフェース回路が、
     前記複数のパケットに分割する前のデータを前記ドライバから受け取った場合に、前記複数のパケットに分割する前のデータのペイロード長を前記第1処理部に出力する第4処理部
     をさらに有し、
     前記第1処理部が、
     前記第1処理部が処理したパケットのペイロード長の合計が、前記複数のパケットに分割する前のデータのペイロード長と一致した場合に、前記第2処理部に対し、前記ヘッダを前記ドライバに出力することを要求する
     ことを特徴とする請求項1又は2記載の情報処理装置。
    The network interface circuit comprising:
    A fourth processing unit that outputs the payload length of the data before being divided into the plurality of packets to the first processing unit when the data before being divided into the plurality of packets is received from the driver;
    The first processing unit is
    When the total payload length of the packets processed by the first processing unit matches the payload length of the data before being divided into the plurality of packets, the header is output to the driver to the second processing unit The information processing apparatus according to claim 1, wherein the information processing apparatus is requested to perform.
  4.  前記第4処理部が、
     受信した前記複数のパケットの統合が完了した場合に、前記第2処理部に対し、前記ヘッダを前記ドライバに出力することを要求する
     ことを特徴とする請求項3記載の情報処理装置。
    The fourth processing unit is
    The information processing apparatus according to claim 3, wherein when the integration of the plurality of received packets is completed, the second processing unit is requested to output the header to the driver.
  5.  前記第3処理部が、
     前記ネットワークインタフェース回路が前記複数のパケットを統合することにより得られたデータ又は前ネットワークインタフェース回路が前記複数のパケットに分割する前のデータのペイロードを分割し、分割により得られたデータに前記ヘッダを付与することにより、前記パケットに対応するパケットを生成する
     ことを特徴とする請求項1記載の情報処理装置。
    The third processing unit is
    The network interface circuit divides the data obtained by integrating the plurality of packets or the payload of the data before the previous network interface circuit divides the plurality of packets, and the header is added to the data obtained by the division. The information processing apparatus according to claim 1, wherein a packet corresponding to the packet is generated by adding the packet.
  6.  前記ヘッダは、TCPヘッダ又はUDPヘッダ、IPヘッダ及びMACヘッダを含む
     ことを特徴とする請求項1記載の情報処理装置。
    The information processing apparatus according to claim 1, wherein the header includes a TCP header or a UDP header, an IP header, and a MAC header.
  7.  前記パケットは、データリンク層のフレームである
     ことを特徴とする請求項1記載の情報処理装置。
    The information processing apparatus according to claim 1, wherein the packet is a data link layer frame.
  8.  データを複数のパケットに分割して送信し又は受信した複数のパケットをデータに統合するネットワークインタフェース回路と、当該ネットワークインタフェース回路のドライバを実行する処理装置とを有するコンピュータにより実行される情報処理方法であって、
     前記ネットワークインタフェース回路が、
     前記パケットのヘッダを複製し、
     複製された前記ヘッダを、前記ドライバに出力する
     処理を実行し、
     前記処理装置により実行されるドライバが、
     前記ネットワークインタフェース回路から受け取った前記ヘッダと、前記ネットワークインタフェース回路が前記複数のパケットを統合することにより得られたデータ又は前記ネットワークインタフェース回路が前記複数のパケットに分割する前のデータとを用いて、前記パケットに対応するパケットを生成する
     処理を実行する
     情報処理方法。
    An information processing method executed by a computer having a network interface circuit that divides data into a plurality of packets and transmits or receives a plurality of received packets into data and a processing device that executes a driver of the network interface circuit There,
    The network interface circuit comprising:
    Duplicate the header of the packet;
    Execute the process to output the duplicated header to the driver,
    The driver executed by the processing device is
    Using the header received from the network interface circuit and the data obtained by integrating the plurality of packets by the network interface circuit or the data before the network interface circuit divides the plurality of packets, An information processing method for executing processing for generating a packet corresponding to the packet.
  9.  データを複数のパケットに分割して送信し又は受信した複数のパケットをデータに統合するネットワークインタフェース回路を有するコンピュータに実行させるためのプログラムであって、
     前記コンピュータに、
     前記ネットワークインタフェース回路により複製された、パケットのヘッダと、前記ネットワークインタフェース回路が前記複数のパケットを統合することにより得られたデータ又は前記ネットワークインタフェース回路が前記複数のパケットに分割する前のデータとを用いて、前記パケットに対応するパケットを生成する
     処理を実行させるためのプログラム。
    A program for causing a computer having a network interface circuit to divide data into a plurality of packets and transmit or receive the received plurality of packets into the data,
    In the computer,
    A packet header copied by the network interface circuit, and data obtained by the network interface circuit integrating the plurality of packets or data before the network interface circuit divides the plurality of packets. A program for executing processing for generating a packet corresponding to the packet.
PCT/JP2012/078830 2012-11-07 2012-11-07 Information processing device and information processing method WO2014073050A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/078830 WO2014073050A1 (en) 2012-11-07 2012-11-07 Information processing device and information processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/078830 WO2014073050A1 (en) 2012-11-07 2012-11-07 Information processing device and information processing method

Publications (1)

Publication Number Publication Date
WO2014073050A1 true WO2014073050A1 (en) 2014-05-15

Family

ID=50684188

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2012/078830 WO2014073050A1 (en) 2012-11-07 2012-11-07 Information processing device and information processing method

Country Status (1)

Country Link
WO (1) WO2014073050A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016152464A (en) * 2015-02-17 2016-08-22 日本電信電話株式会社 Virtual network system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007266759A (en) * 2006-03-27 2007-10-11 Sony Computer Entertainment Inc Network processing apparatus, multiprocessor system, and network protocol processing method
JP2011193412A (en) * 2010-03-17 2011-09-29 Nippon Telegraph & Telephone East Corp Packet capture apparatus and packet capture method
JP2012151673A (en) * 2011-01-19 2012-08-09 Oki Networks Co Ltd Communications device, communication system, and communication program

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007266759A (en) * 2006-03-27 2007-10-11 Sony Computer Entertainment Inc Network processing apparatus, multiprocessor system, and network protocol processing method
JP2011193412A (en) * 2010-03-17 2011-09-29 Nippon Telegraph & Telephone East Corp Packet capture apparatus and packet capture method
JP2012151673A (en) * 2011-01-19 2012-08-09 Oki Networks Co Ltd Communications device, communication system, and communication program

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016152464A (en) * 2015-02-17 2016-08-22 日本電信電話株式会社 Virtual network system

Similar Documents

Publication Publication Date Title
Lu et al. {ServerSwitch}: A Programmable and High Performance Platform for Data Center Networks
JP4942375B2 (en) Network processing equipment
US7106751B2 (en) Apparatus for linking a SAN with a LAN
WO2022095348A1 (en) Remote mapping method and apparatus for computing resources, device and storage medium
CN113326228B (en) Message forwarding method, device and equipment based on remote direct data storage
US20080077724A1 (en) Interrupt coalescing control scheme
US7269661B2 (en) Method using receive and transmit protocol aware logic modules for confirming checksum values stored in network packet
US11902184B2 (en) Methods and systems for providing a virtualized NVMe over fabric service
US8687505B2 (en) Apparatus and method for controlling traffic
US11895027B2 (en) Methods and systems for service distribution using data path state replication and intermediate device mapping
US9203758B2 (en) Network system, packet processing method and recording medium
US11593294B2 (en) Methods and systems for loosely coupled PCIe service proxy over an IP network
US10205787B2 (en) Method, system, and apparatus for reducing the size of route updates
WO2014073050A1 (en) Information processing device and information processing method
WO2014125636A1 (en) Communication device or packet transfer method
JP6677052B2 (en) Communication management device, communication management method and program
US20220141320A1 (en) Storage interface command packets over fibre channel with transport and network headers as payloads
JP4978732B2 (en) Transfer control device, multiplexed frame transfer system, transfer control method, and transfer control program
BR102019009234A2 (en) network device and method for dynamically processing network traffic with sdn structure and protocol independent
US11949589B2 (en) Methods and systems for service state replication using original data packets
JP7480907B2 (en) CONVERSION DEVICE, CONVERSION METHOD, AND CONVERSION PROGRAM
Kuga et al. A packet I/O architecture for shell script-based packet processing
CN115701063A (en) Message transmission method and communication device
WO2023219718A1 (en) Re-simulation of updated sdn connection flows
CN114968471A (en) Stream unloading method and equipment

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: 12888089

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: 12888089

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP