WO2013136522A1 - 計算機システム及び計算機間のデータ通信方法 - Google Patents

計算機システム及び計算機間のデータ通信方法 Download PDF

Info

Publication number
WO2013136522A1
WO2013136522A1 PCT/JP2012/056932 JP2012056932W WO2013136522A1 WO 2013136522 A1 WO2013136522 A1 WO 2013136522A1 JP 2012056932 W JP2012056932 W JP 2012056932W WO 2013136522 A1 WO2013136522 A1 WO 2013136522A1
Authority
WO
WIPO (PCT)
Prior art keywords
computer
nic
pcie switch
tlp
logic
Prior art date
Application number
PCT/JP2012/056932
Other languages
English (en)
French (fr)
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 US14/360,022 priority Critical patent/US9479461B2/en
Priority to PCT/JP2012/056932 priority patent/WO2013136522A1/ja
Publication of WO2013136522A1 publication Critical patent/WO2013136522A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network

Definitions

  • the present invention relates to a computer system and a data communication method between computers, and more particularly to data communication between servers connected using a switch based on the PCI Express standard (hereinafter referred to as a PCIe switch).
  • a PCIe switch based on the PCI Express standard
  • Ethernet (registered trademark) is mainly used as a communication means between servers in the data center.
  • Ethernet registered trademark
  • there is a large amount of data for server-to-server communication in a data center and there is a problem that the cost of introducing equipment such as a network switch, a cable, and an Ethernet card for communicating via Ethernet is high.
  • Patent Document 1 discloses a computer system in which a plurality of computers and a plurality of input / output devices are connected by a PCIe switch.
  • Japanese Patent Application Laid-Open No. 2005-228561 discloses a technique for sharing an I / O device by assigning a plurality of virtual functions (VF) possessed by a PCI device to a plurality of blades using a PCIe switch.
  • Patent Document 3 discloses a technique for detecting a path abnormality in a communication system in which servers are connected by a layer 2 switch.
  • the PCIe switch is a common technique for connecting a server and a device connected to a slot in a chassis. Recently, communication between servers using a PCIe switch has been proposed. However, the software for server-to-server communication running on the server is created on the assumption that server-to-server communication is performed using Ethernet. For this reason, there is a problem that existing software for server-to-server communication cannot be used simply by replacing Ethernet with a PCIe switch.
  • An object of the present invention is to realize data communication between computers by using a PCIe switch without using a conventionally used Ethernet network device.
  • the present invention preferably includes a plurality of computers that execute programs under the OS, and a plurality of switches based on the PCI Express standard (referred to as PCIe switches) connected to the computers via the PCIe switches.
  • a computer system that performs packet communication between the computers,
  • the PCIe switch has an external port to which the computer is connected, an internal port to which another PCIe switch is connected, and a network network card (NIC) logic recognized as an endpoint from the computer, and the external port And the NIC logic is assigned a unique system port address (SPA) in association with the destination bus number
  • the first computer on the transmission side has an NW driver that is recognized by the OS as a network interface card (NIC) driver, the NW driver stores data to be transmitted and a destination SPA in a memory, and the first computer Output the transaction layer packet (TLP) generated in one computer to the PCIe switch,
  • the first NIC logic adds the SPA to the TLP transferred from the first computer, and another NIC logic having the destination (destination SPA
  • the present invention is preferably a switch based on the PCI Express standard connected to a plurality of computers that have a virtual computer that executes a program under the OS and may have a virtual computer via a PCIe link.
  • the PCIe switch the PCIe switches are connected to each other via a PCIe link, and communicates packets between the computers through the PCIe switch,
  • the port connected to the computer of the PCIe switch has a conversion table that can subtract Endpoint VH (EVH), which is a number assigned without duplication to a computer with which one NIC logic communicates, from the destination bus number.
  • ESH Endpoint VH
  • TLP transaction layer packet
  • Each PCIe switch has NIC logic recognized as an endpoint from the computer
  • the memory of the computer has an NW driver that is recognized by the OS as a NIC driver, and the NW driver writes transmission data and a destination SPA on the memory
  • the first NIC logic corresponding to the first computer on the transmission side reads the data written by the NW driver on the memory and the destination SPA
  • the first NIC logic transmits data read from the memory to the other NIC logic (second NIC logic) having a destination SPA
  • the second NIC logic that has received the data writes the received data in the memory of the second computer on the receiving side connected to the PCIe switch in which the second NIC logic is present.
  • the present invention is configured as a data communication method between computers performed in the above computer system.
  • communication between servers can be realized using a PCIe switch.
  • Ethernet network devices can be eliminated in a computer system that conventionally connects servers via Ethernet.
  • data communication between servers can be performed using existing software for server-to-server communication using Ethernet.
  • FIG. 3 is a diagram showing details of the NIC logic 130 in the first embodiment.
  • 3 is a diagram showing a data structure of a server memory in Embodiment 1.
  • FIG. 3 is a diagram illustrating a detailed configuration of a TX-Descriptor according to the first embodiment.
  • 3 is a flowchart illustrating a network packet transmission operation in the transmission server in the first embodiment.
  • 3 is a flowchart illustrating processing of NIC logic of a transmission side PCIe switch according to the first embodiment.
  • 3 is a flowchart illustrating NIC logic processing of a receiving side PCIe switch according to the first embodiment.
  • FIG. 3 is a flowchart illustrating network packet reception processing in the reception server according to the first embodiment.
  • FIG. 3 is a diagram illustrating an overall configuration of a computer system according to a second embodiment.
  • FIG. 6 is a simplified configuration diagram of a computer system for explaining a second embodiment.
  • FIG. 10 is a diagram illustrating an example of TLP transmitted and received between NIC logics in the second embodiment.
  • FIG. 10 is a diagram illustrating a configuration example of a Bus # -SPA conversion table according to the second embodiment. 10 is a flowchart showing processing when the NIC logic in the second embodiment confirms an access right.
  • FIG. 9 is a flowchart illustrating processing during NIC logic broadcasting in the transmission side server according to the second embodiment.
  • 9 is a flowchart showing processing during broadcast of a PCIe switch and a virtual NIC in a receiving server according to the second embodiment.
  • FIG. 1 shows the overall configuration of a computer system according to an embodiment.
  • the computer system 100 includes a CPU 110, a memory 111, and a chipset 112, and is connected to a plurality of servers 101 that execute programs under a certain OS (operating system) and each server 101 via a PCIe link 102.
  • a switch (PCIe switch) 103 based on a plurality of PCIe standards, and an I / O device (hereinafter referred to as a PCIe device) 104 based on the PCIe standards connected to the PCIe switch 103.
  • PCIe switch PCIe switch
  • the PCIe switch 103 has a port for connecting to a server, a PCIe device, and another PCIe switch. There are two ports: port 120 (referred to as an external port) connected to the server 101 or the PCIe device 104 via a PCIe link, and port 121 (referred to as an internal port) connected to another PCIe switch via the PCIe link. There are types.
  • a system port address (SPA) 105 is assigned to the external port 120.
  • the SPA is unique identification information (for example, a number) that is statically assigned to all external ports existing in the system.
  • the external port 120 has a Bus # -SPA conversion table 301.
  • the internal port is not assigned a SPA and does not have a Bus # -SPA conversion table.
  • the PCIe switch 103 is provided with a NIC logic (network interface card) 130 that can transmit and receive TLPs with the server 101 and is recognized as an endpoint from the server. Similar to the external port 120, the NIC logic 130 is assigned the SPA 105 and is stored in the range register 300 indicating the SPA range.
  • NIC logic network interface card
  • the reason why it is called NIC logic is that this logic uses the PCIe network to make it appear to the server 101 as if there is an Ethernet network (ie Ethernet communication is realized). Logic to realize the network). Focusing on the functional point, it may be referred to as PCIe switch NIC logic.
  • the range register 300 can represent the SPA range by storing two SPAs.
  • the SPA range set in the range register is the range of the TLP (transaction layer packet) destination SPA that can pass through the external port 120 from the inside of the PCIe switch to the outside. TLP can pass from the outside to the inside of the switch regardless of the setting of the range register.
  • a SPA range assigned to a port included in a subset of the PCIe topology connected to the port is set.
  • the Bus # -SPA conversion table 301 registers the SPA corresponding to the destination bus number. Both the external port 120 and the internal port 121 have a range register 300 indicating the SPA range. The range of the SPA is set in the range register 300 to include the SPA of the external port existing at the end of the bus connected to the port.
  • the contents of the SPA 105, the range register 300, and the Bus # -SPA conversion table 301 are stored in advance by the management system using a management system (not shown) such as a management terminal connected to the computer system 100 at the time of initial setting. This is done based on the setting information that you have. For example, a plurality of types may be prepared as setting information in advance according to the topology, and it may be selected which type should be used. In addition, the management system may automatically detect the topology at the time of initial setting, and automatically generate conversion table and SPA setting information. It is not limited to any method.
  • the destination SPA is added to the TLP as a label.
  • routing is performed using the SPA 105 instead of the destination bus number. Specifically, routing is performed by repeatedly transferring the SPA added as a label to the TLP to a port that falls within the range of the SPA set in the range register. When the TLP leaves the external port, the SPA label is deleted.
  • NW Network Work driver 5173
  • the server 101 can communicate with the NIC logic 130, and communication between servers is possible.
  • software created on the premise that Ethernet is available can be used as it is.
  • FIG. 2 shows the details of the NIC logic.
  • the NIC logic 130 transmits and receives data by dividing an Ethernet network packet into TLPs which are PCIe transfer units.
  • TLPs which are PCIe transfer units.
  • SPA Packet Transfer Protocol
  • the NIC logic 130 has a range register 300, and SPA 105 is assigned in the same manner as the external port 120.
  • the NIC logic 130 further includes a TX Descriptor Get Pointer 400, a transmission TLP header changing unit 401, a TX Command Pool 402, a receiving TLP header changing unit 410, and an RX Key Table411.
  • the TX Descriptor Get Point 400 indicates which TX Descriptor (described later) existing on the memory 111 of the server 101 will be transferred next time.
  • the transmission TLP header replacement unit 401 is a unit that replaces a TLP header including network packet data received from the server 101 in order to transfer it to a NIC logic existing in another PCIe switch.
  • the TX Command Pool 402 temporarily stores the TX Descriptor transferred from the server in the NIC logic 130.
  • the reception TLP header replacement unit 410 is a part that replaces a TLP header received from another NIC logic with a header addressed to a destination server.
  • RX Key Table 411 is a list indicating addresses on normal reception buffers (described later) on the memory of the server and whether or not each normal reception buffer is in use.
  • FIG. 3 shows a data structure in the memory of the server related to communication of network packets.
  • the memory 111 of the server 103 includes a copy 500 of the TX Descriptor Get Poiter 400, a TX Descriptor Put Pointer 501, a TX Descriptor Table 502, a Normal reception buffer 510, an Overflow reception buffer 511, and a Chunk 512.
  • the TX Descriptor Table 502 is for holding network packet information to be transmitted, and one entry is used for each network packet. Each entry is called TX Descriptor.
  • the TX-Descriptor-Get-Pointer copy 500 indicates which TX-Descriptor is to be transferred to the NIC logic 130 next.
  • the TX-Descriptor-Put-Pointer 501 is the network packet information when the next network packet transmission request is made. Shows where to record in TX Descriptor Table502.
  • TX Descriptor Tabl502 has a ring shape, and TX Descriptor Get Pointer400 and TX Descriptor Put Pointer501 point to the end of TX Descriptor Table 502, and then return to the beginning.
  • the normal reception buffer 510 When the normal reception buffer 510 receives a TLP including network packet information from the NIC logic 130, the normal reception buffer 510 temporarily stores the information. A plurality of normal reception buffers 501 exist on the assumption that information of a plurality of network packets arrives.
  • the overflow reception buffer 511 is prepared for a situation in which reception data is stored in all of the normal reception buffer 510 and the normal reception buffer 510 overflows. Unlike the normal reception buffer 510, the overflow reception buffer 511 may store a mixture of different network packet information. Information of one network packet exists in a distributed manner on the memory, and each division unit is referred to as a chunk 512.
  • FIG. 4 shows a detailed configuration of the TX Descriptor.
  • the TX Descriptor 520 recorded in the TX Descriptor Table 502 includes a dest SPA 521 indicating a transfer destination of a network packet, a Frame Length (frame length) 522 indicating a frame length of the network packet, and a Chunk length (Length) for each Chunk. Each information of the address (Addr) list 523 is included. Frame Length 522 indicates the total length of all chunks. These pieces of information are stored in the TX Descriptor when the NW driver 513 receives a network packet transfer request from the CPU 110.
  • FIG. 5 shows network packet transmission processing in the transmission-side server.
  • the NW driver 513 When the CPU 110 of the sending server requests the NW driver 513 to send a network packet (S1000), the NW driver 513 generates TX Descriptor information, that is, destination (dest) SPA, Frame Length, Chunk length and address. (S1001).
  • the NW driver 513 checks whether there is an empty space in the TX Descriptor Table 502 (S1002). This compares TX 500 Descriptor Put Pointer 501 with TX Descriptor Get Pointer 500, and as a result, if TX Descriptor Put Pointer 501 is not equal (e.g. (not equal to (TX Descriptor Get Pointer copy 500) -1), Judge that TX Descriptor Table 502 is empty. If there is no space in TX Descriptor Table 502, the process waits until space is available, and if there is space, the process proceeds to S1003.
  • the NW driver 513 stores the TX Descriptor at the position of the TX Descriptor Table corresponding to the address indicated by the TX Descriptor Put Pointer 501 (S1003). Then, the NW driver 513 advances TX Descriptor Put Pointer by one (S1004).
  • FIG. 6 shows the processing of the NIC logic 130 in the transmitting side PCIe switch.
  • S1101 it is confirmed whether there is a space in the TX Command Pool 402 (that is, there is a space in which the TX Descriptor transferred from the server should be temporarily stored). As a result of the confirmation, if there is no space, the processing of S1101 is repeated until there is a space. As a result of the confirmation, if there is a vacancy, the process proceeds to S1102. In S1102, the NIC logic 130 issues a memory read (MRd) request to the server 101, obtains the address of TX Descriptor by calculation from TX Descriptor Get Pointer400, and performs memory read on the calculated address. Read TX Descriptor. When the completion of the MRd request returns to the NIC logic and the reading is completed, the process proceeds to S1103.
  • MRd memory read
  • the TX Descriptor Get Pointer 400 is incremented by 1, and the read TX Descriptor Table 502 entry is released. Then, the read TX Descriptor is written in TX Command Pool 402 (S1104). Since the read TX and Descriptor records the address and length of each Chunk, an MRd request is issued to the server based on this information, and the Chunk is read (S1105).
  • the read chunk is sent to the NIC logic of the PCIe switch of the receiving server (S1106). Since the read chunk data is returned from the server in the form of a completion TLP, the transmission TLP header replacement unit 401 replaces the TLP header with the TLP header destined for the receiving TLP. Since the information of the NIC logical SPA of the receiving server is recorded in the TX-Descriptor, the TLP is transmitted to the SPA (dest-SPA 521).
  • FIG. 7 shows NIC logic processing on the receiving side.
  • the chunk data TLP arrives at the NIC logic 130 of the PCIe switch 103 connected to the receiving server 101 (S1200), check whether the frame to which the received chunk belongs hits (Hits) the RX Key Table 411 (S1201). “Hit” in the RX Key Table 411 means that the Normal reception buffer is reserved for the frame in the memory 111 of the server 101. As a result of the confirmation, if it is hit, the process proceeds to S1205;
  • the process proceeds to S1203 to check whether there is a normal reception buffer 510 that can be used (S1203). If there is a normal reception buffer that can be used as a result of the confirmation, the processing of S1206 is performed. On the other hand, if there is no available Normal reception buffer, the process proceeds to S1204. That is, since it has been confirmed that there is an empty space in the RX Key Table 411 and the Normal reception buffer 510, the Normal reception buffer and the RX Key Table are reserved for the received frame, and necessary information is written in the reserved RX Key Table ( S1204).
  • the received Chunk data is transmitted to the MWr request addressed to the address of the Normal reception buffer by the reception TLP header replacement unit 410, and the TLP is transmitted (S1205).
  • Information on the normal reception buffer reserved for the frame for transmitting the TLP is written in RX Key Table411.
  • FIG. 8 shows reception processing in the receiving server.
  • This embodiment shows an example in which a plurality of servers are connected to one PCIe switch, and a plurality of VLANs (Virtual-LAN) exist in the computer system.
  • VLANs Virtual-LAN
  • FIG. 9 is an overall configuration diagram of the computer system.
  • the same reference numerals as those shown in FIG. 1 of the first embodiment have the same configuration or function. Description of these portions is omitted to avoid duplication.
  • 9 is different from the configuration of FIG. 1 in that a plurality of servers 101 are connected to one PCIe switch 103, and the NIC logic 130 includes a SUBA_ALCMAP (Sub Address Allocation Map) 302, a VLAN_MAP 303, a Broadcast Routing Table 304, and an NUA 305. It is a point which has. NUA is a unique number in the system that is assigned to each NIC logic to identify each NIC logic. Also, the Bus # -SPA conversion table 301 has an extended field.
  • SUBA_ALCMAP Sub Address Allocation Map
  • FIG. 10 is a simplified configuration diagram of a computer system for explaining the present embodiment.
  • each NIC logic 130 will be You must pretend that virtual NICs exist for each server or virtual machine. This apparent NIC is called a virtual NIC 107. What is added in the NIC logic in FIG. 9 is necessary for realizing the virtual NIC.
  • a number uniquely assigned to each virtual NIC in order from 0 in each NIC logic is called a Sub Address (SUBA).
  • SUBA Sub Address
  • FIG. 11 shows a TLP for each of Unicast and Broadcast transmitted / received between NIC logics.
  • A shows TLP200 for Unicast
  • (b) shows TLP201 for Broadcast.
  • 210 is a broadcast bit, and “1” is recorded when it is a TLP for broadcast, and “0” is recorded when it is a TLP for unicast.
  • the VLAN # field 211 the sub # corresponding to the server that is the destination of the TLP is recorded in the destSUBA field 212 in which the VLAN # to which the server that output the TLP belongs is written.
  • the destSPA field 213 the NIC logical SPA that is the destination of the Unicast TLP is recorded.
  • the NUA of NIC logic that is the output source of Broadcast TLP is recorded.
  • the destSPA field is unnecessary because the TLP is delivered to all the SUBAs belonging to the same VLAN.
  • FIG. 12 shows a configuration example of the Bus # -SPA conversion table 301 according to this embodiment.
  • the broadcast packet When multiple servers are connected to a single PCIe switch, or when multiple virtual machines are operating on a server, there is virtually one NIC for each server or virtual machine. There must be.
  • the broadcast packet When a plurality of VLANs exist, when transferring a broadcast packet, the broadcast packet should be transferred only to servers belonging to the same VLAN, and the broadcast packet should not be transferred to servers belonging to different VLANs.
  • the Bus # -SPA conversion table 301 is expanded to provide an Endpoint Virtual Hierarchy (EVH) field 312 in addition to the existing BUS # field 310 and SPA field 311.
  • EVH 312 is a number that is uniquely assigned to each of a plurality of servers that communicate with one NIC logic. Servers communicating with different NIC logic may be assigned the same number.
  • EVH is added together with SPA.
  • the EVH field value is determined in advance so that the added EVH matches the SUBA of the virtual NIC used by the server.
  • the NIC logic can distinguish the TLP output from which server by checking EVH.
  • EVH312 makes it possible to distinguish between servers, but it cannot distinguish between multiple virtual machines running on a server. This is because an external port to which EVH is added cannot distinguish from which virtual machine the input TLP is output.
  • BDF # which is a field that originally exists in TLP, is used. Some parts of BDF # are not actually used for routing. Part of this part is used to distinguish each virtual machine. This part is called a virtual machine identifier.
  • FIG. 14 shows the configuration of SUBA_ALCMAP 302.
  • FIG. 15 is a diagram for explaining the creation.
  • SUB Address (SUBA) is recorded in the SUBA field 320.
  • ALCMP field 321 “1” is recorded if it is the smallest SUBA assigned to a certain server, and “0” is recorded otherwise. For example, if three virtual machines are operating on the server # 3, three of SUBA4 to 6 are allocated. Since the smallest one of these three SUBAs is “4”, “1” is recorded in the fourth position of the ALCMP field, and “0” is recorded in the positions 5 and 6.
  • virtual machine identifiers are used in order from 0, they are assigned to one server that has (SUBA_ALCMAP '1' recorded in SUBA_1) and (SUBA_ALCMAP '1' recorded in SUBA-1). Is the range of SUBA that is being used. This property can be used to prevent misidentification of a server that outputs NIC logic TLP.
  • FIG. 13 shows a processing flowchart when the NIC logic confirms the access right.
  • the SUBA is calculated (S1501). That is, it is confirmed whether the virtual machine identifier is “0”. If the virtual machine identifier is '0', it is trying to access the smallest SUBA assigned to the server that output the TLP. Since at least one SUBA is assigned to each server and access by the SUBA is possible, the process proceeds to S1504. Otherwise, go to S1503.
  • FIG. 16 shows VLAN_MAP303.
  • VLAN_MAP 303 is a list indicating which VLAN each SUBA belongs to. There is a SUBA field 331 with respect to the VLAN field 330, and "1" is recorded in the portion of SUBA belonging to the VLAN. Since SUBA is uniquely assigned to each server or virtual machine, VLAN_MAP 303 indicates which server or virtual machine belongs to which VLAN.
  • FIG. 17 shows the Broadcast Routing Table 304.
  • the Broadcast Routing Table 304 indicates to which port the TLP is transferred according to the NIC logic that issued the Broadcast TLP when the TLP is input to the PCIe switch 101.
  • the NUA field 340 the NUA of the NIC T logic that issued the Broadcast TLP is recorded.
  • the Port # field 341 when a TLP originated from a certain NUA is entered, the port part of the PCIe switch to be transferred is set to '1'. ', But' 0 'is recorded in the port part of the switch that should not be forwarded.
  • FIG. 18 shows the NIC logic processing of the sending server.
  • S1600 the same processing as S1100 to S1105 in FIG. 6 is performed, and the NIC logic obtains Chunk information on the server memory based on the TX Descriptor information.
  • a TLP for Broadcast is created using the contents of Chunk as the payload based on the information of TX Descriptor.
  • the entry of [Own NUA] in Broadcast_Routing_Table 304 is referenced. Since the TLP must be transferred to the port in which “1” is recorded in the Port # field 341, the TLP created in S1601 is transferred to the corresponding port. If “1” is not recorded in any of the Port # fields 341, the packet is not transferred.
  • the VLAN_Map 303 is referenced, and the TLP created in S1601 is transferred to all the SUBAs belonging to the VLAN to which the Broadcast packet belongs.
  • the SUBA that has received the TLP performs the same processing as the processing illustrated in FIG. 7 and receives the TLP.
  • the NIC logic performs the same processing as S1107 to S1109 in FIG. 6, and acquires the remaining Chunk or terminates the transmission processing.
  • FIG. 19 shows NIC logic processing in the receiving server.
  • the PCIe switch 101 of the receiving server receives the Broadcast TLP (S1700)
  • the PCIe switch 101 transfers the Broadcast TLP to the NIC logic 130 in the switch (S1701). If it is a TLP for Unicast, it is transferred by looking at the destination SPA, but if it is a TLP for Broadcast, it is transferred unconditionally to the NIC logic 130 in the PCIe switch.
  • step S1703 the TLP input to all the SUBAs belonging to the VLAN to which the broadcast packet belongs is transferred with reference to the VLAN_Map 303.
  • the SUBA that has received the TLP performs the same processing as the processing shown in FIG. 7, and receives the TLP (S1704).

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Abstract

従来用いられていたEthernetのネットワーク機器を用いないで、PCIeスイッチを用いてサーバ間の通信を実現する。 送信側の計算機において、OSからNICのドライバとして認識されるNWドライバが、送信するデータと宛先SPAをメモリに格納し、かつ第1の計算機で生成されたトランザクション層パケット(TLP)をPCIeスイッチへ出力する。送信側の第1の計算機に対応するPCIeスイッチの第1のNIC論理は、第1の計算機から転送されたTLPにSPA(システムポートアドレス)を付加し、SPAが示す宛先(宛先SPA)を持つ第2のNIC論理に対するポートへTLPのデータを転送する。データを受信した第2のNIC論理は、第2のNIC論理が在る他のPCIeスイッチに接続された受信側の第2の計算機のメモリに、受信したデータを書き込む。

Description

計算機システム及び計算機間のデータ通信方法
 本発明は、計算機システム及び計算機間のデータ通信方法に係り、特に、PCI Express規格に基づくスイッチ(以下PCIeスイッチという)を用いて接続されたサーバ間のデータ通信に関する。
 データセンタ内のサーバ間の通信手段として、主にイーサネット(Ethernet(登録商標))が使用されている。一般にデータセンタ内のサーバ間通信のデータ量は多く、Ethernetで通信するためのネットワークスイッチやケーブル、Ethernetカードなどの設備の導入のコストが大きいという問題がある。
 また、高速なサーバとそれに接続されたデバイスとの間の通信手段として、PCIeスイッチが用いられている。例えば、特許文献1には、複数の計算機と複数の入出力装置との間をPCIeスイッチで接続した計算機システムが開示されている。特許文献2には、PCIeスイッチを用いて、PCIデバイスが持つ複数の仮想的な機能(VF)を複数のブレードに割り当ててI/Oデバイスを共用する技術が開示されている。また、特許文献3には、サーバ間をレイヤ2スイッチで接続した通信システムにおける経路異常を検出する技術が開示されている。
特開2011-107858号公報 特開2010-79816号公報 特開2010-273135号公報
 PCIeスイッチは、サーバとシャーシ内のスロットに接続されているデバイスとを接続する技術として一般的である。最近、サーバ間でPCIeスイッチを用いて通信することが提唱されている。
しかし、サーバ上で動作しているサーバ間通信用のソフトウェアは、Ethernetによってサーバ間通信を行う前提で作られている。このため、Ethernetを単にPCIeスイッチに置き換えただけでは、サーバ間通信を行う既存のソフトウェアが使えなくなるという問題がある。
 本発明の目的は、従来用いられていたEthernetのネットワーク機器を用いないで、PCIeスイッチを用いて計算機間のデータ通信を実現することにある。
 本発明は、好ましくは、OSの元でプログラムを実行する複数の計算機と、複数の該計算機に接続されたPCI Express規格に基づくスイッチ(PCIeスイッチという)とを有し、該PCIeスイッチを介して該計算機間でパケットの通信を行う計算機システムであって、
該PCIeスイッチは、該計算機が接続される外部ポートと、他のPCIeスイッチが接続される内部ポートと、該計算機からエンドポイントとして認識されるネットワークネットワークカード(NIC)論理を有し、該外部ポートと該NIC論理には、宛先バス番号に対応付けて一意のシステムポートアドレス(SPA)が割当てられ、
送信側の第1の計算機は、該OSからネットワークインタフェースカード(NIC)のドライバとして認識されるNWドライバを有し、該NWドライバは、送信するデータと宛先SPAをメモリに格納し、かつ該第1の計算機において生成されたトランザクション層パケット(TLP)を該PCIeスイッチへ出力し、
該PCIeスイッチにおいて、第1のNIC論理は、該第1の計算機から転送された該TLPに該SPAを付加し、該SPAが示す宛先(宛先SPA)を持つ他のNIC論理(第2のNIC論理)に対して該メモリから読み出したデータを転送し、
データを受信した該第2のNIC論理は、該第2のNIC論理が在る該他のPCIeスイッチに接続された受信側の第2の計算機のメモリに、受信したデータを書き込むことを特徴とする計算機システムとして構成される。
 また、本発明は、好ましくは、OSの元でプログラムを実行する、仮想計算機を有することがある複数の計算機と、複数の該計算機にPCIeのリンクを介して接続されたPCI Express規格に基づくスイッチ(PCIeスイッチという)とを有し、該PCIeスイッチは互いにPCIeのリンクを介して接続され、該PCIeスイッチを通して該計算機間でパケットの通信を行う計算機システムであって、
前記PCIeスイッチの、前記計算機と接続されるポートは、宛先バス番号から、1つのNIC論理が通信する計算機に対して重複なく割り当てられる番号であるEndpoint VH(EVH)を引くことができる変換テーブルを有し、
前記計算機から前記PCIeスイッチに入力されるトランザクション層パケット(TLP)には、前記変換テーブルを参照して求められるEVHが付加され、
前記各PCIeスイッチは、該計算機からエンドポイントとして認識されるNIC論理を有し、
前記計算機のメモリには、OSからNICのドライバとして認識されるNWドライバを有し、前記NWドライバは、メモリ上に送信データと宛先SPAを書き込み、
送信側の第1の計算機に対応する第1のNIC論理は、前記NWドライバがメモリ上に書き込んだデータと宛先SPAを読み出し、
前記第1のNIC論理は、宛先SPAを持つ他の前記NIC論理(第2のNIC論理)に対して該メモリから読み出したデータを送信し、
データを受信した前記第2のNIC論理は、前記第2のNIC論理が在る前記PCIeスイッチに接続される受信側の第2の計算機のメモリに、受信したデータを書き込むことを特徴とする計算機システムとして構成される。
 さらに、本発明は上記計算機システムにおいて行われる計算機間のデータ通信方法として構成される。
 本発明によれば、PCIeスイッチを用いてサーバ間の通信を実現することが可能となる。そのため、従来、Ethernetによってサーバ間を接続していた計算機システムではEthernetのネットワーク機器を不要とすることができる。また、PCIeスイッチを用いてサーバ間の通信を実現した場合でも、Ethernetを用いたサーバ間通信のための既存のソフトウェアを利用して、サーバ間でのデータ通信が可能となる。
一実施例(実施例1)による計算機システムの全体構成を示す図。 実施例1におけるNIC論理130の詳細を示す図。 実施例1におけるサーバのメモリのデータ構造を示す図。 実施例1におけるTX Descriptorの詳細な構成を示す図。 実施例1における送信側サーバにおけるネットワークパケットの送信動作を示すフローチャート。 実施例1における送信側PCIeスイッチのNIC論理の処理を示すフローチャート。 実施例1における受信側PCIeスイッチのNIC論理の処理を示すフローチャート。 実施例1における受信サーバにおけるネットワークパケットの受信処理を示すフローチャート。 実施例2による計算機システムの全体構成を示す図。 実施例2を説明するための計算機システムの簡略構成図。 実施例2におけるNIC論理同士で送受信されるTLPの例を示す図。 実施例2におけるBus#-SPA変換テーブルの構成例を示す図。 実施例2におけるNIC論理がアクセス権を確認する時の処理を示すフローチャート。 実施例2におけるSub Address Allocation Mapの構成を示す図。 実施例2におけるSub Address Allocation Mapの作成を説明するための図。 実施例2におけるVLAN Mapの構成を示す図。 実施例2におけるBroadcast Routing Tableの構成を示す図。 実施例2の送信側サーバにおけるNIC論理のBroadcast時の処理を示すフローチャート。 実施例2の受信側サーバにおけるPCIeスイッチ・仮想NICのBroadcast時の処理を示すフローチャート。
 以下、図面を参照して、実施例について説明する。
 図1は、一実施例による計算機システム全体構成を示す。
計算機システム100は、CPU110、メモリ111及びチップセット112を有し、あるOS(オペテーティングシステム)の元でプログラムを実行する複数のサーバ101と、各サーバ101にPCIeリンク102を介して接続される複数のPCIe規格に基づくスイッチ(PCIeスイッチ)103と、PCIeスイッチ103に接続されるPCIe規格に基づくI/Oデバイス(以下PCIeデバイスという)104を有して構成される。
 PCIeスイッチ103は、サーバやPCIeデバイス、及び他のPCIeスイッチと接続するためのポートを有する。ポートには、サーバ101やPCIeデバイス104とPCIeリンクを介して接続されるポート120(外部ポートという)と、他のPCIeスイッチとPCIeリンクを介して接続されるポート121(内部ポートという)の2種類がある。外部ポート120には、システムポートアドレス(SPA)105が割り当てられている。SPAとは、システム内に存在する全ての外部ポートに静的に割り当てられる一意の識別情報(例えば番号)である。また、外部ポート120は、Bus#-SPA変換テーブル301を持つ。内部ポートはSPAが割り当てられず、またBus#-SPA変換テーブルを持たない。
 PCIeスイッチ103には、サーバ101との間でTLPの送受信ができ、サーバからエンドポイント(Endpoint)として認識されるNIC論理(ネットワークインタフェースカード)130が設けられる。NIC論理130は、外部ポート120と同様に、SPA105が割り当てられ、SPAの範囲を示すレンジレジスタ300に格納される。ここで、NIC論理と称した理由は、この論理がPCIeのネットワークを用いて、あたかもEthernetのネットワークが存在するかのようにサーバ101に見せかけて、サーバ間通信を実現するからである(即ちEthernetのネットワークを実現するための論理)。なお、機能的な点に着目して、PCIeスイッチNIC論理と称してもよい。
 レンジレジスタ300は2つのSPAを記憶することより、SPAの範囲を表すことができる。レンジレジスタに設定されているSPAの範囲は、外部ポート120をPCIeスイッチ内部から外部方向へ通過することができるTLP(トランザクション層パケット)の宛先SPAの範囲である。なお、TLPはスイッチ外部から内部方向へはレンジレジスタの設定にかかわらず通過することができる。レンジレジスタ300には、ポートに接続されているPCIeのトポロジのサブセット内に含まれるポートに割り当てられているSPAの範囲が設定される。
 Bus#-SPA変換テーブル301は、宛先バス番号と対応するSPAを登録する。外部ポート120も内部ポート121も、SPAの範囲を示すレンジレジスタ300を持つ。レンジレジスタ300には、ポートに接続されているバスの先に存在する外部ポートのSPAを含むようにSPAの範囲が設定される。
 SPA105、レンジレジスタ300、Bus#-SPA変換テーブル301の内容は、それらの初期設定時に、この計算機システム100に接続される管理端末などの管理系(図示せず)を用いて、管理系があらかじめ持っている設定情報を基に行われる。例えば、設定情報としてトポロジに応じて複数種類をあらかじめ用意しておき、いずれの種類を用いたらよいかを選択してもよい。また、初期設定時に管理系が自動的にトポロジを検出し、自動的に変換テーブルやSPAの設定情報を生成してもよい。何れの方法に限定されるものではない。
 宛先SPAは、ラベルとしてTLPに付加される。PCIeスイッチ103のネットワーク内では、宛先バス番号ではなくSPA105を用いてルーティングを行う。具体的には、TLPにラベルとして付加されているSPAを、レンジレジスタに設定されているSPAの範囲に入るポートに転送することの繰り返しでルーティングを行う。TLPが外部ポートから出るときに、SPAラベルが削除される。
 ここで、サーバ101のOS(Operating System)(図示せず)とドライバとの間のI/FをNICのドライバに合せてあり、OSからはNICのドライバとして認識されるソフトウェア(以下、これをNW(Net Work)ドライバ513という)がメモリ111に用意される(図3参照)。このNWドライバ513(即ちCPU110でこのソフトウェアを実行することで実現させる機能)を用いて、サーバ101がNIC論理130と通信することができ、サーバ間通信が可能となる。これにより、従来Ethernetが在ることを前提で作られたソフトウェアをそのまま利用することができる。
 図2は、NIC論理の詳細を示す。
NIC論理130は、EthernetのネットワークパケットをPCIeの転送単位であるTLPに分割してデータを送受信する。SPAを用いることにより、異なるPCIeスイッチ内のNIC論理同士やNIC論理とサーバ101間でTLPの送受信ができるようになる。
 NIC論理130はレンジレジスタ300を有し、外部ポート120と同様にSPA105が割り当てられる。NIC論理130は更に、TX Descriptor Get Pointer400と、送信TLPヘッダ付け替え部401と、TX Command Pool402と、受信TLPヘッダ付け替え部410と、RX Key Table411を有する。
 TX Descriptor Get Pointe400は、サーバ101のメモリ111上に存在するTX Descriptor(後述する)のうち、次回に何れを転送してくるかを示す。送信TLPヘッダ付け替え部401は、サーバ101から受信したネットワークパケットのデータを含むTLPのヘッダを、他のPCIeスイッチ内に存在するNIC論理に転送するために付け替える部分である。TX Command Pool402は、サーバから転送されてきたTX Descriptorを、一時的にNIC論理130内に格納する。受信TLPヘッダ付け替え部410は、他のNIC論理から受信したTLPのヘッダを、送信先のサーバ宛のヘッダに付け替える部分である。RX Key Table411は、サーバのメモリ上にあるNormal受信バッファ(後述)のメモリ上のアドレスと、各Normal受信バッファが使用中か否かを示す一覧表である。
 図3は、ネットワークパケットの通信に係わるサーバのメモリ内のデータ構造を示す。
サーバ103のメモリ111は、TX Descriptor Get Poiter400のコピー500と、TX Descriptor Put Pointer501と、TX Descriptor Table502と、Normal受信バッファ510と、Overflow受信バッファ511と、Chunk512を有する。
 TX Descriptor Table502は、送信するネットワークパケットの情報を保持するためのものであり、ネットワークパケット1つにつき1つのエントリが用いられる。各エントリをTX Descriptorと呼ぶ。TX Descriptor Get Pointerのコピー500は、次に何れのTX DescriptorをNIC論理130に転送するかを示し、TX Descriptor Put Pointer501は、次にネットワークパケットの送信要求があった場合に、そのネットワークパケットの情報をTX Descriptor Table502のどこに記録するかを示している。TX Descriptor Tabl502はリング状になっており、TX Descriptor Get Pointer400とTX Descriptor Put Pointer501は、TX Descriptor Table502の最後を指すと、次は最初に戻るようになっている。
 Normal受信バッファ510は、NIC論理130からネットワークパケットの情報を含むTLPを受信したときに、その情報を一時的に格納するものである。複数のネットワークパケットの情報が届くことを前提にして、Normal受信バッファ501は複数存在する。Overflow受信バッファ511は、Normal受信バッファ510の全てに受信データが格納されていて、Normal受信バッファ510がオーバーフローする事態に備えて、用意されている。Overflow受信バッファ511は、Normal受信バッファ510と異なり、異なるネットワークパケットの情報が混ざって保存することがある。
ある1つのネットワークパケットの情報はメモリ上に分散して存在するが、それぞれの分割単位のことをチャンク(Chunk)512と称する。
 図4は、TX Descriptorの詳細な構成を示す。
TX Descriptor Table502に記録されるTX Descriptor520は、ネットワークパケットの転送先を示すdest SPA521と、ネットワークパケットのフレーム長さを示すFrame Length(フレーム長)522と、ChunkごとにChunkの長さ(Length)とアドレス(Addr)の一覧523の各情報を含む。Frame Length522は全てのChunkの長さの合計値を示す。
これらの情報は、NWドライバ513がCPU110からネットワークパケットの転送要求を受けた時にTX Descriptorに格納される。
 次に、図5~図8を参照して、計算機システム100におけるサーバ101間のネットワークパケットの送受信の動作について説明する。以下、本実施例における送受信処理動作を4つの態様、即ち、送信側サーバにおける(主にNWドライバによる)ネットワークパケットの処理、送信側PCIeスイッチ内のNIC論理130における処理、受信側PCIeスイッチ内のNIC論理130における処理、及び受信側サーバにおける(主にNWドライバによる)処理について、それぞれ説明する。
<送信側サーバの処理>
 図5は、送信側サーバにおけるネットワークパケットの送信処理を示す。
送信側サーバのCPU110がNWドライバ513にネットワークパケットの送信を要求すると(S1000)、NWドライバ513が、TX Descriptorの情報、すなわち宛先(dest)SPAと、Frame Length、Chunkの長さとアドレスを生成する(S1001)。
 次に、NWドライバ513がTX Descriptor Table502に空きがあるかをチェックする(S1002)。これは、TX Descriptor Put Pointer501とTX Descriptor Get Pointerのコピー500を比較して、その結果、TX Descriptor Put Pointer501が等しくなければ(例えば(TX Descriptor Get Pointerのコピー500)-1と等しくなければ)、TX Descriptor Table502に空きがある状態と判断する。TX Descriptor Table502に空きが無ければ、空きが生じるまで待ち、空きがあればS1003に進む。
 S1003では、NWドライバ513は、TX Descriptor Put Pointer501が示すアドレスに対応する、TX Descriptor Tableの位置にTX Descriptorを格納する(S1003)。そして、NWドライバ513はTX Descriptor Put Pointerを1つ進める(S1004)。
 <送信側PCIeスイッチ内のNIC論理の処理>
図6は、送信側PCIeスイッチ内のNIC論理130の処理を示す。
 まず、TX Descriptor Table502にエントリが存在するかを確認する(S1100)。TX Descriptor Table502にエントリが存在しない場合は、S1100の処理を繰り返し、一方、エントリが存在すればS1101に進む(S1100)。
 S1101では、TX Command Pool402に空きがあるか(即ちサーバから転送されたTX Descriptorを一時的に格納すべき空きが在るか)を確認する。確認の結果、空きが無ければ、空きが存在するまでS1101の処理を繰り返す。そして確認の結果、空きが在れば、S1102に進む。S1102では、NIC論理130がサーバ101に対してメモリリード(MRd)要求を発行して、TX Descriptor Get Pointer400から計算によってTX Descriptorのアドレスを求め、算出したアドレスに対してメモリリードを行うことによって、TX Descriptorを読み出す。MRd要求のコンプリーションがNIC論理に戻り、読み出しが完了したらS1103に進む。
 S1103では、TX Descriptor Get Pointer400を1つ進め、読み出したTX Descriptor Table502のエントリを開放する。そして、読み出したTX DescriptorをTX Command Pool402に書き込む(S1104)。読み出したTX Descriptorには、各Chunkのアドレスと長さが記録されているので、その情報を元にMRd要求をサーバに対して発行し、Chunkを読み出す(S1105)。
 読み出したChunkは、受信側サーバのPCIeスイッチのNIC論理宛へ送出される(S1106)。読み出したChunkのデータは、コンプリーションTLPの形でサーバから返ってくるので、送信TLPヘッダ付け替え部401でそのTLPのヘッダを受信側TLP宛のTLPヘッダに付け替える。TX Descriptorに受信側サーバのNIC論理のSPAの情報が記録されているので、そのSPA宛(dest SPA521)にTLPが送信される。
 その後、最後のTLPかを判断する(S1107)。これは、これまでに読出し要求(MRd要求)を出したChunkの長さの累積と、TLP Descriptorに含まれているフレーム長さ522を比較して、両者が一致すれば、全てのChunkの読み出しが完了したと判断して、S1108に進む。一方、両者が不一致であれば、全てのChunkの読み出しが終了していないと判断して、S1105に戻る。
 S1108では、Chunkの読み出しが完了して、TX Descriptorの情報は不要となるので、TX Command pool402のエントリを解放する(S1108)。そして、送信側サーバに対して送信完了割り込みを上げ、ネットワークパケットの送信が終了したことを伝える(S1109)。
 <受信側PCIeスイッチ内のNIC論理の処理>
図7は、受信側のNIC論理の処理を示す。
ChunkのデータのTLPが、受信側サーバ101と接続しているPCIeスイッチ103のNIC論理130に到着すると(S1200)、受信したChunkが属するフレームが、RX Key Table411にヒット(Hit)するかを確認する(S1201)。RX Key Table411にHitするということは、サーバ101のメモリ111に、当該フレーム用にNormal受信バッファが確保されているということを意味する。確認の結果、Hitした場合はS1205に進み、Hitしない場合はS1202に進む。
 S1202では、RX Key Table411に空きがあるかを確認する。確認の結果、空きがなければS1206に進む。即ち、受信したフレーム用にNormal受信バッファ又はRX Key Table411が確保できなかった場合には、受信したChunkのデータを受信TLPヘッダ付け替え部410で、Overflow受信バッファのアドレス宛のメモリライト(MWr)要求に付け替えて、そのTLPを送信する(S1206)。
 一方、上記S1202における確認の結果、空きがあればS1203に進み、利用可能なNormal受信バッファ510があるかを確認する(S1203)。確認の結果、利用可能なNormal受信バッファがあれば、S1206の処理を行う。一方、利用可能なNormal受信バッファが無ければS1204に進む。即ち、RX Key Table411とNormal受信バッファ510に空きがあることが確認できているので、受信したフレーム用としてNormal受信バッファとRX Key Tableを確保し、確保したRX Key Tableに必要な情報を書き込む(S1204)。
 S1205では、受信したChunkのデータを受信TLPヘッダ付け替え部410で、Normal受信バッファのアドレス宛のMWr要求に付け替えてTLPを送信する(S1205)。TLPを送信する当該フレーム用に確保されたNormal受信バッファの情報はRX Key Table411に書かれている。
 その後、受信したTLPが最後のChunkであったかを確認する(S1207)。受信側NIC論理が受信するChunkは、アドレス順に到着するとは限らないため、全てのChunkを受信し終わったかは、受信したChunkの長さの累積がFrame長さと等しいかどうかを見て判断する。この判断の結果、最後のChunkでなければS1210に進み、受信処理を完了する。
 一方、最後のChunkであれば、S1208に進む。即ち、当該フレームに属するChunkを全て受信し終わっているので、当該フレーム用に確保したRX Key Table411とNormal受信バッファ510を解放する(S1208)。その後、受信が終了したことをサーバに伝えるために、サーバに割り込みを上げて(S1209)、受信処理を終了する(S1210)。当該TLPの受信処理が終了すると、次のTLPが到着するまで待つことになる。
 <受信側サーバの処理>
図8は、受信側サーバにおける受信処理を示す。
 受信側サーバのNIC論理130からの割り込みを受け取った時に(S1300)、受信バッファ510にフレームの全データは届いており、受信したデータはメモリ111上に到着時間順で並んでいる。そこで、NWドライバが受信バッファ上のデータをアドレス順に並び替え、ネットワークパケットを復元する(S1301)。データを並び替えたら、CPU110にネットワークパケットを渡す(S1302)。
以上、送信側サーバから受信側サーバにネットワークパケットを転送する手順について説明した。
本実施例は、1つのPCIeスイッチに複数のサーバが接続されており、複数のVLAN(Virtual LAN)が計算機システム内に存在する例を示す。
 図9は、計算機システムの全体構成図である。
図9の計算機システム100のうち、実施例1の図1に示した符号と同一の符号は、同じ構成乃至機能を有する。これらの部分については、重複をさけるため説明を省略する。
図9において、図1の構成と異なる点は、1つのPCIeスイッチ103に複数のサーバ101が接続される点、NIC論理130が、SUBA_ALCMAP(Sub Address Allocation Map)302、VLAN_MAP303、Broadcast Routing Table304、NUA305を有する点である。NUAとは、各NIC論理を識別するために各NIC論理に割り当てられる、システム内では一意の番号である。また、Bus#-SPA変換テーブル301もフィールドが拡張されている。
 図10は、本実施例を説明するための計算機システムの簡略構成図である。
1つのPCIeスイッチ103に複数のサーバ101が接続され、サーバ内に複数の仮想マシン(VM)が存在する場合、NIC論理130はPCIeスイッチ103内に1つずつしか存在しないにもかかわらず、各サーバ又や仮想マシンに対して1つずつ仮想的に仮想NICが存在するように見せかけなければならない。この見かけのNICのことを仮想NIC107と呼ぶ。図9でNIC論理内に追加されたものは、仮想NIC実現するために必要なものである。また、各NIC論理内での各仮想NICに一意に0から順番に振られた番号のことを、Sub Address(SUBA)と呼ぶ。
 図11は、NIC論理間で送受信される、UnicastとBroadcastそれぞれの場合のTLPを示す。(a)はUnicast用TLP200を示し、(b)はBroadcast用TLP201を示す。
210はBroadcast bitであり、Broadcast用TLPである場合は’1’、Unicast用TLPの場合は’0’が記録される。VLAN#フィールド211には、TLPを出力したサーバが属するVLAN#が書かれているdestSUBAフィールド212には、TLPの宛先となるサーバと対応するSUBAが記録される。destSPAフィールド213には、Unicast用TLPの宛先となるNIC論理のSPAが記録される。srcNUAフィールドにはBroadcast用TLPの出力元であるNIC論理のNUAが記録される。Broadcast用TLPの場合には、同じVLANに属するSUBA全てにTLPを届けるため、destSPAフィールドは不要である。
 図12は、本実施例によるBus#-SPA変換テーブル301の構成例を示す。
1つのPCIeスイッチに複数のサーバが接続されている場合や、あるサーバ上で複数の仮想マシンが動作している場合、それぞれのサーバや仮想マシンに対して1つずつ仮想的にNICが存在しなければならない。また、複数のVLANが存在する場合、Broadcastパケットを転送する時には、同じVLANに属するサーバに対してだけBroadcastパケットを転送し、異なるVLANに属するサーバに対してはBroadcastパケットを転送してはならない。
 そのため、NIC論理側では、受信TLPが、どのサーバ又は仮想マシンから送られてきたものかを区別する手段が必要である。そこでBus#-SPA変換テーブル301を拡張し、既に存在するBUS#フィールド310、SPAフィールド311に加え、Endpoint Virtual Hierarchy(EVH)フィールド312を設ける。EVH312は、ある1つのNIC論理が通信する複数の各サーバに対しては一意に割り振られている番号である。異なるNIC論理と通信するサーバであれば同じ番号が割り振られることもありうる。
 サーバから外部ポートにTLPが入力される時に、SPAと合わせてEVHを付加する。付加するEVHは、サーバが利用する仮想NICのSUBAと一致するように、あらかじめEVHフィールドの値を定めておく。このTLPがNIC論理に到達した時に、NIC論理はEVHを確認することによって、どのサーバから出力されたTLPかを区別することができる。
 EVH312でサーバの区別は可能になるが、サーバ上で動作する複数の仮想マシンの区別はできない。何故ならば、EVHを付加する外部ポートでは、入力されたTLPがどの仮想マシンから出力されたTLPかを区別することができないためである。仮想マシンを区別するために、TLPの中に元々存在するフィールドであるBDF#を用いる。BDF#の中には、実際にはルーティングに用いられていない部分もある。この部分の一部を各仮想マシンの区別に用いる。この部分を仮想マシン識別子と呼ぶ。
 初期設定を行う際に、仮想マシン識別子は0から順番に用いることとする。(EVH+仮想マシン識別子)が、各サーバの各仮想マシンに割り当てられたSUBAと一致するように割り当てると、NIC論理がTLPを受信した際に、そのTLPがどのサーバ又は仮想マシンから出力されたかを区別することができる。(以下、SUBAのフィールドがXの場所に書かれているALCMAPの値を、SUBA_ALCMAP[X]と表す)
 バグや悪意のあるユーザによって、サーバが正しくない仮想マシン識別子を持つTLPを出力すると、NIC論理がTLPを出力したサーバを誤認する恐れがある。なお、EVHはサーバではなくスイッチ側で付加するため、サーバが偽る恐れはない。
NIC論理のサーバの誤認を防ぐために必要なのがSUBA_ALCMAP(Sub Address Allocation Map)302(図14参照)である。
 図14は、SUBA_ALCMAP302の構成を示す。また、図15はその作成について説明するための図である。
SUBA_ALCMAP302において、SUBAフィールド320にはSUB Address(SUBA)が記録される。ALCMPフィールド321には、そのSUBAがあるサーバに割り当てられているSUBAのうち最小のものであれば’1’が、そうでなければ’0’が記録される。例えば、サーバ#3上では3つの仮想マシンが動作しているとすると、SUBA4~6の3つが割り当てられる。そして、この3つのSUBAのうち最小のものは’4’なので、ALCMPフィールドの4番目の位置には’1’が、5及び6の位置には’0’が記録される。
 仮想マシン識別子は0から順番に用いられているため、(SUBA_ALCMAPに’1’が記録されるSUBA)~(次のSUBA_ALCMAPに’1’が記録されるSUBA-1)がある1つのサーバに割り当てられているSUBAの範囲である。この性質を用いて、NIC論理のTLPを出力したサーバを誤認するのを防ぐことができる。
 図13は、NIC論理がアクセス権を確認する時の処理フローチャートを示す。
TLPがNIC論理130に到着すると(S1500)、SUBAの計算を行う(S1501)。即ち、仮想マシン識別子が’0’かを確認する。仮想マシン識別子が’0’であれば、TLPを出力したサーバに割り当てられているSUBAのうち最小のものにアクセスしようとしている。SUBAは各サーバに最低1つは割り当てられており、そのSUBAでのアクセスは可能であるため、S1504に進む。そうでなければS1503に進む。
 S1503では、SUBA_ALCMP[EVH+1]~SUBA_ALCMP[SUBA]が全て’0’であるかを確認する。もし全て’0’でなければ、そのSUBAは、サーバに割り当てられているSUBAより大きいSUBAであるため、アクセスは不可であり、S1505に進む。全て’0’であればアクセスは可能であるため、S1504に進む。
 次に、Ethernetで行われているbroadcastを行う方法について説明する。
 図16はVLAN_MAP303を示す。VLAN_MAP303は、各SUBAがどのVLANに属しているかを示す一覧表である。VLANフィールド330に対してSUBAフィールド331があり、VLANに属しているSUBAの部分には’1’が記録される。SUBAは各サーバ又は仮想マシンごとに一意に割り当てられているので、VLAN_MAP303はどのサーバ又は仮想マシンがどのVLANに属しているかを示している。
 図17は、Broadcast Routing Table304を示す。
Broadcast Routing Table304は、TLPがPCIeスイッチ101に入力された場合、Broadcast TLPの発行元NIC論理に応じてどのポートにそのTLPを転送するかを示すものである。
NUAフィールド340には、Broadcast TLPの発行元NIC論理のNUAが記録され、Port#フィールド341には、あるNUA発のTLPが入力された場合に、転送すべきPCIeスイッチのポートの部分に’1’が、転送してはいけないスイッチのポートの部分には’0’が記録される。
 次に、サーバ間のBroadcastパケットの転送処理について説明する。
 <送信処理>
送信側のサーバにおける処理は、図5に示す処理と同様である。
 図18は、送信側サーバのNIC論理の処理を示す。
S1600では、図6のS1100~S1105と同様な処理を行い、NIC論理はTX Descriptorの情報を元に、サーバのメモリ上にあるChunkの情報を取得する。
 S1601では、TX Descriptorの情報を元にして、Chunkの内容をペイロードとした、Broadcast用のTLPを作る。
S1602では、Broadcast_Routing_Table304の[自NUA]のエントリを参照する。Port#フィールド341に’1’が記録されているポートにはTLPを転送しなければならないので、該当するポートに、S1601で作ったTLPを転送する。なお、Port#フィールド341の何れにも’1’が記録されていなければ、パケットを転送しない。
 そしてS1603で、VLAN_Map303を参照して、Broadcastパケットが属しているVLANに属するSUBA全てに、S1601で作ったTLPを転送する。
S1604では、TLPを受信したSUBAは、図7に示す処理と同様の処理を行い、TLPの受信を行う。また、S1605では、NIC論理は、図6のS1107~S1109と同様な処理を行い、残りのChunkの取得又は送信処理の終了を行う。
 <受信・転送処理>
図19は受信側サーバにおけるNIC論理の処理を示す。
 受信側サーバのPCIeスイッチ101が、Broadcast用TLPを受信すると(S1700)、PCIeスイッチ101は、Broadcast用TLPをスイッチ内のNIC論理130に転送する(S1701)。Unicast用TLPであれば宛先SPAを見て転送するが、Broadcast用TLPの場合は、無条件にPCIeスイッチ内のNIC論理130に転送する。
 S1702では、Broadcast_Routing_Table304の[srcNUA]のエントリを参照する。ここで、srcNUAとは、Broadcast TLPの発行元NIC論理のNUAである’1’が記録されているポートにはTLPを転送しなければならないので、各ポートに入力されたTLPを転送する。
 そしてS1703では、VLAN_Map303を参照して、Broadcastパケットが属しているVLANに属するSUBA全てに入力されたTLPを転送する。
TLPを受信したSUBAは、図7に示す処理と同様の処理を行い、TLPの受信を行う(S1704)。
100:計算機システム
101:サーバ
102:PCIeリンク
103:PCIeスイッチ
104:PCIeデバイス
105:システムポートアドレス(SPA)
110:CPU
111:メモリ
112:チップセット
120:外部ポート
121:内部ポート
130:NIC論理
200:Unicast用TLP
202:Broadcast用TLP
211:Broadcast bit
211:VLAN#フィールド
212:destSUBAフィールド
213:destNUAフィールド
214:srcNUAフィールド
300:SPAレンジレジスタ
301:Bus#-SPA変換テーブル
302:Sub Address Allocation Map
303:VLAN Map
304:Broadcast Routing Table
400:TX Descriptor Get Pointer
401:送信TLPヘッダ付け替え部
402:TX Command Pool
410:受信TLPヘッダ付け替え部
411:RX Key Table
500:TX Descriptor Get Pointerのコピー
501:TX Descriptor Put Pointer
502:TX Descriptor Table
510:Normal受信バッファ
511:Overflow受信バッファ
512:チャンク
513:NWドライバ
521:DestSPAフィールド
522:FrameLengthフィールド
523:Chunk情報フィールド

Claims (11)

  1. OSの元でプログラムを実行する複数の計算機と、複数の該計算機に接続されたPCI Express規格に基づくスイッチ(PCIeスイッチという)とを有し、該PCIeスイッチを介して該計算機間でパケットの通信を行う計算機システムであって、
    該PCIeスイッチは、該計算機が接続される外部ポートと、他のPCIeスイッチが接続される内部ポートと、該計算機からエンドポイントとして認識されるネットワークネットワークカード(NIC)論理を有し、該外部ポートと該NIC論理には、宛先バス番号に対応付けて一意のシステムポートアドレス(SPA)が割当てられ、
    送信側の第1の計算機は、該OSからネットワークインタフェースカード(NIC)のドライバとして認識されるNWドライバを有し、該NWドライバは、送信するデータと宛先SPAをメモリに格納し、かつ該第1の計算機において生成されたトランザクション層パケット(TLP)を該PCIeスイッチへ出力し、
    該PCIeスイッチにおいて、第1のNIC論理は、該第1の計算機から転送された該TLPに該SPAを付加し、該SPAが示す宛先(宛先SPA)を持つ他のNIC論理(第2のNIC論理)に対して該メモリから読み出したデータを転送し、
    データを受信した該第2のNIC論理は、該第2のNIC論理が在る該他のPCIeスイッチに接続された受信側の第2の計算機のメモリに、受信したデータを書き込むことを特徴とする計算機システム。
  2.  前記第1のNIC論理は、読み出しTLPを発行することにより、前記第1の計算機のメモリに格納された該パケットのデータを分割して取得し、取得した該データを順に第2のNIC論理に送信し、
     前記第2のNIC論理は、受信した該データを受信した順に、該PCIeスイッチに接続される前記第2の計算機へ送信し、
     前記第2の計算機のメモリは、前記NWドライバが読み書きできる、ネットワークパケット個別の受信バッファ(第1のバッファ)を複数、及びネットワークパケットを問わずにデータを格納できる受信バッファ(第2のバッファ)を有し、
     前記第2の計算機は、受信したデータを前記第1のバッファ又は前記第2のバッファに受信した順に書き込み、
     前記NWドライバが、到着時間順に前記第1のバッファ又は前記第二のバッファに格納されたデータを、再びネットワークパケットの形式に構築することを特徴とする請求項1の計算機システム。
  3. 前記第1の計算機の前記NWドライバは、該TLPに付加される、該パケットの転送先を示す宛先SPAと、該パケットのフレーム長さを示すフレーム長と、該パケットの情報であって分割された単位であるチャンクごとに該チャンクの長さと、該チャンクのアドレスの一覧の情報を生成し、
    前記第1の計算機のメモリは、生成された、該宛先SPAと、該パケットのフレーム長と、該チャンクごとに該チャンクの長さと、該チャンクのアドレスの一覧の情報を格納し、
    前記PCIeスイッチは、前記各ポート及び該NIC論理は、該PCIeスイッチの内部から外部方向へ該外部ポートを通過することができるTLPの宛先SPAの範囲を格納するレンジレジスタを有し、
    前記PCIeスイッチの該NIC論理は、該メモリに格納された該チャンクをそれぞれ読み出して、該PCIeスイッチのネットワーク内で、該レンジレジスタを参照しながら該SPAを用いてルーティングを行って、各該チャンクをそのアドレスが示す前記第2の計算機に対応する該NIC論理へ送信する
    ことを特徴とする請求項1の計算機システム。
  4. 前記PCIeスイッチの該NIC論理は、該メモリから読み出した複数の各該チャンクの長さを累積し、該累積した値が、予め該メモリに格納された、送信すべきパケットのフレームの全体の長さに等しくなった場合、送信の対象とする全てのチャンクの読み出しが完了したと判断する
    ことを特徴とする請求項3の計算機システム。
  5. 送信側の前記PCIeスイッチの該NIC論理は、
    前記第1の計算機のメモリから読み出されたチャンクのデータの前記TLPのヘッダを受信側TLP宛てのTLPヘッダに付け替えて、前記第2の計算機に対応する前記NIC論理のSPA宛てに該TLPを送信する
    ことを特徴とする請求項3の計算機システム。
  6. 受信側の前記PCIeスイッチの該NIC論理は、
    受信したフレームを受信バッファに格納し、かつ受信した複数のチャンクのデータを、該受信バッファのアドレス宛の書き込み要求に付け替えて該TLPを送信し、
    前記第2の計算機のNWドライバは、該NIC論理からの割り込みを受けて、該受信バッファに格納されたデータをアドレス順に並び替えて、パケットを復元する
    ことを特徴とする請求項3の計算機システム。
  7. OSの元でプログラムを実行する、仮想計算機を有することがある複数の計算機と、複数の該計算機にPCIeのリンクを介して接続されたPCI Express規格に基づくスイッチ(PCIeスイッチという)とを有し、該PCIeスイッチは互いにPCIeのリンクを介して接続され、該PCIeスイッチを通して該計算機間でパケットの通信を行う計算機システムであって、
    前記PCIeスイッチの、前記計算機と接続されるポートは、宛先バス番号から、1つのNIC論理が通信する計算機に対して重複なく割り当てられる番号であるEndpoint VH(EVH)を引くことができる変換テーブルを有し、
    前記計算機から前記PCIeスイッチに入力されるトランザクション層パケット(TLP)には、前記変換テーブルを参照して求められるEVHが付加され、
    前記各PCIeスイッチは、該計算機からエンドポイントとして認識されるNIC論理を有し、
    前記計算機のメモリには、OSからNICのドライバとして認識されるNWドライバを有し、前記NWドライバは、メモリ上に送信データと宛先SPAを書き込み、
    送信側の第1の計算機に対応する第1のNIC論理は、前記NWドライバがメモリ上に書き込んだデータと宛先SPAを読み出し、
    前記第1のNIC論理は、宛先SPAを持つ他の前記NIC論理(第2のNIC論理)に対して該メモリから読み出したデータを送信し、
    データを受信した前記第2のNIC論理は、前記第2のNIC論理が在る前記PCIeスイッチに接続される受信側の第2の計算機のメモリに、受信したデータを書き込むことを特徴とする計算機システム。
  8. 前記NIC論理内に、前記EVHとTLPにはじめから存在する一部のフィールドの和から、1つの前記PCIeスイッチに接続される複数の計算機、又は仮想計算機に重複なく割り当てられる番号であるSUBA(サブアドレス)を引くことができる変換テーブルを有し、
    前記NIC論理に入力されるTLPによって、何れの前記計算機から出力されたものかを区別する
    ことを特徴とする請求項7記載の計算機システム。
  9. 前記NIC論理は、各SUBAが何れのVLAN(Virtual LAN)に属するかを管理するテーブルと、各VLANが属するSUBAを有する他PCIeスイッチが、自PCIeスイッチの何れのポートに接続されているかを管理するテーブルを有し、
    Broadcastパケットが入力したときに、前記テーブルを参照して、同じVLANに属するSUBAに対してだけTLPをコピーして転送することにより、同じVLANに属する計算機に対してだけBroadcastパケットを転送する
    ことを特徴とする請求項8記載の計算機システム。
  10. 前記NIC論理は、同じ前記計算機に割り当てられているSUBAのうち最小のものを管理するテーブルを有し、
    前記NIC論理にTLPが入力したときに、(前記EVH+1)以上かつ(前記EVH+前記フィールド)の間に前記テーブルに記されたSUBAがないことを確認して、
    前記計算機が、前記計算機に割り当てられていないSUBAに対して前記ネットワークパケットを送信しようとしていることを検出する
    ことを特徴とする請求項8記載の計算機システム。
  11. OSの元でプログラムを実行する複数の計算機と、複数の該計算機に接続されたPCI Express規格に基づくスイッチ(PCIeスイッチという)とを有し、該PCIeスイッチは、外部ポートを介して該計算機に接続され、かつ内部ポートを介して他のPCIeスイッチに接続されて、該PCIeスイッチを通して該計算機間でパケットの通信を行う計算機システムにおけるデータ通信方法であって、
    該PCIeスイッチが有する、該計算機からエンドポイントとして認識される仮想ネットワークネットワークカード(NIC)論理と該外部ポートに、宛先バス番号に対応付けて一意のシステムポートアドレス(SPA)を割り当て、
    送信側の第1の計算機において、該第1の計算機のOSからネットワークインタフェースカード(NIC)のドライバとして認識されるNWドライバが、送信するデータと宛先SPAをメモリに格納し、かつ該第1の計算機で生成されたトランザクション層パケット(TLP)を該PCIeスイッチへ出力し、
    送信側の該第1の計算機に対応する該PCIeスイッチの第1のNIC論理は、該第1の計算機から転送された該TLPに該SPAを付加し、該SPAが示す宛先(宛先SPA)を持つ他のNIC論理(第2のNIC論理)に対して該メモリから読み出したデータを転送し、
    データを受信した該第2のNIC論理は、該第2のNIC論理が在る該他のPCIeスイッチに接続された受信側の第2の計算機のメモリに、受信したデータを書き込む
    ことを特徴とする計算機間のデータ通信方法。
PCT/JP2012/056932 2012-03-16 2012-03-16 計算機システム及び計算機間のデータ通信方法 WO2013136522A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US14/360,022 US9479461B2 (en) 2012-03-16 2012-03-16 Computer system and method for communicating data between computers
PCT/JP2012/056932 WO2013136522A1 (ja) 2012-03-16 2012-03-16 計算機システム及び計算機間のデータ通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/056932 WO2013136522A1 (ja) 2012-03-16 2012-03-16 計算機システム及び計算機間のデータ通信方法

Publications (1)

Publication Number Publication Date
WO2013136522A1 true WO2013136522A1 (ja) 2013-09-19

Family

ID=49160487

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2012/056932 WO2013136522A1 (ja) 2012-03-16 2012-03-16 計算機システム及び計算機間のデータ通信方法

Country Status (2)

Country Link
US (1) US9479461B2 (ja)
WO (1) WO2013136522A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015186263A (ja) * 2014-03-25 2015-10-22 ディ・エス・エス・ディ・インコーポレイテッドDssd, Inc. 十分に接続されたメッシュトポロジーのためのPCIExpressファブリックルーティング
JP5943110B1 (ja) * 2015-03-12 2016-06-29 日本電気株式会社 情報処理システム、情報処理方法、及び、プログラム
WO2018101136A1 (ja) 2016-11-30 2018-06-07 株式会社ソシオネクスト 情報処理システム、半導体集積回路及び情報処理方法
US11003611B2 (en) 2018-03-30 2021-05-11 Socionext Inc. Information processing system, information processing method, and semiconductor device

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012086068A1 (ja) * 2010-12-24 2012-06-28 株式会社日立製作所 計算機システムおよびルーティング制御方法
WO2015033384A1 (ja) * 2013-09-03 2015-03-12 株式会社アキブシステムズ I/oデバイスの仮想化のためのコンピュータシステム及びその運用方法並びにhub装置
US9374305B2 (en) * 2013-10-24 2016-06-21 Dell Products L.P. Packet transfer system
US11962518B2 (en) 2020-06-02 2024-04-16 VMware LLC Hardware acceleration techniques using flow selection
US11875172B2 (en) 2020-09-28 2024-01-16 VMware LLC Bare metal computer for booting copies of VM images on multiple computing devices using a smart NIC
US20220100432A1 (en) 2020-09-28 2022-03-31 Vmware, Inc. Distributed storage services supported by a nic
US11593278B2 (en) * 2020-09-28 2023-02-28 Vmware, Inc. Using machine executing on a NIC to access a third party storage not supported by a NIC or host
US11792134B2 (en) 2020-09-28 2023-10-17 Vmware, Inc. Configuring PNIC to perform flow processing offload using virtual port identifiers
US11636053B2 (en) 2020-09-28 2023-04-25 Vmware, Inc. Emulating a local storage by accessing an external storage through a shared port of a NIC
US11665113B2 (en) * 2021-07-28 2023-05-30 Hewlett Packard Enterprise Development Lp System and method for facilitating dynamic triggered operation management in a network interface controller (NIC)
US11863376B2 (en) 2021-12-22 2024-01-02 Vmware, Inc. Smart NIC leader election
US11928367B2 (en) 2022-06-21 2024-03-12 VMware LLC Logical memory addressing for network devices
US11928062B2 (en) 2022-06-21 2024-03-12 VMware LLC Accelerating data message classification with smart NICs
US11899594B2 (en) 2022-06-21 2024-02-13 VMware LLC Maintenance of data message classification cache on smart NIC

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008181389A (ja) * 2007-01-25 2008-08-07 Nec Computertechno Ltd ノード制御装置および情報処理装置
JP2011097497A (ja) * 2009-11-02 2011-05-12 Sony Corp データ転送装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7830882B2 (en) * 2006-11-17 2010-11-09 Intel Corporation Switch scaling for virtualized network interface controllers
US7796585B2 (en) * 2008-05-21 2010-09-14 Dell Products, Lp Network switching in a network interface device and method of use thereof
JP5272265B2 (ja) 2008-09-29 2013-08-28 株式会社日立製作所 Pciデバイス共有方法
US8503468B2 (en) * 2008-11-05 2013-08-06 Fusion-Io, Inc. PCI express load sharing network interface controller cluster
JP2010273135A (ja) 2009-05-21 2010-12-02 Fujitsu Ltd 通信システム、中継装置、送信装置および経路異常検出方法
JP2011107858A (ja) 2009-11-16 2011-06-02 Hitachi Ltd 通信インタフェースの種類が異なる複数の入出力装置に複数の計算機が通信可能に接続される計算機システム
WO2012073304A1 (ja) 2010-11-29 2012-06-07 株式会社日立製作所 計算機システム、それに使用されるスイッチ及びパケット転送制御方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008181389A (ja) * 2007-01-25 2008-08-07 Nec Computertechno Ltd ノード制御装置および情報処理装置
JP2011097497A (ja) * 2009-11-02 2011-05-12 Sony Corp データ転送装置

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015186263A (ja) * 2014-03-25 2015-10-22 ディ・エス・エス・ディ・インコーポレイテッドDssd, Inc. 十分に接続されたメッシュトポロジーのためのPCIExpressファブリックルーティング
US9460039B2 (en) 2014-03-25 2016-10-04 DSSD, Inc. PCI express fabric routing for a fully-connected mesh topology
JP5943110B1 (ja) * 2015-03-12 2016-06-29 日本電気株式会社 情報処理システム、情報処理方法、及び、プログラム
US10025739B2 (en) 2015-03-12 2018-07-17 Nec Corporation Information processing system, information processing method, and recording medium
WO2018101136A1 (ja) 2016-11-30 2018-06-07 株式会社ソシオネクスト 情報処理システム、半導体集積回路及び情報処理方法
US10853287B2 (en) 2016-11-30 2020-12-01 Socionext Inc. Information processing system, semiconductor integrated circuit, and information processing method
US11003611B2 (en) 2018-03-30 2021-05-11 Socionext Inc. Information processing system, information processing method, and semiconductor device

Also Published As

Publication number Publication date
US9479461B2 (en) 2016-10-25
US20140269754A1 (en) 2014-09-18

Similar Documents

Publication Publication Date Title
WO2013136522A1 (ja) 計算機システム及び計算機間のデータ通信方法
US8615623B2 (en) Internet connection switch and internet connection system
US8683110B2 (en) I/O system and I/O control method
US8412875B2 (en) Switch and network bridge apparatus
CN100579108C (zh) 一种远程密钥验证的方法和主机结构适配器
US6622193B1 (en) Method and apparatus for synchronizing interrupts in a message passing queue oriented bus system
CN102648455B (zh) 服务器和流控制程序
US6859867B1 (en) Translation and protection table and method of using the same to validate access requests
US20170359198A1 (en) Non-transitory computer-readable storage medium, communication control method, and communication control device
JPH10301873A (ja) 通信システムで比較的大きなデータ・オブジェクトの伝送を制御するシステムと方法
CN103117929A (zh) 一种基于PCIe数据交换的通信方法及系统
US20040213243A1 (en) Transmission components for processing VLAN tag and priority packets supported by using single chip's buffer structure
US9087162B2 (en) Using a PCI standard hot plug controller to modify the hierarchy of a distributed switch
US20120183001A1 (en) Network apparatus, network configuration method and program recording medium which records a network apparatus program
CN109302466A (zh) 数据处理方法、相关设备及计算机存储介质
US9015380B2 (en) Exchanging message data in a distributed computer system
KR20160031494A (ko) 캡슐화 가능한 pcie 가상화
CN104731635A (zh) 一种虚拟机访问控制方法,及虚拟机访问控制系统
JP6492083B2 (ja) インフィニバンド(IB)上で仮想ホストバスアダプタ(vHBA)を管理およびサポートするためのシステムおよび方法、ならびに単一の外部メモリインターフェイスを用いてバッファの効率的な使用をサポートするためのシステムおよび方法
US8352667B2 (en) I/O connection system and I/O connection method
US10284672B2 (en) Network interface
US20120311208A1 (en) Method and system for processing commands on an infiniband host channel adaptor
CN104102550A (zh) 一种多主机进程间通信的方法
JP2014187430A (ja) 通信システム、中継装置、通信方法、及びプログラム
JP5110156B2 (ja) スイッチ及びネットワークブリッジ装置

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

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 14360022

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12871464

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP