WO2013136522A1 - 計算機システム及び計算機間のデータ通信方法 - Google Patents
計算機システム及び計算機間のデータ通信方法 Download PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling 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スイッチで接続した通信システムにおける経路異常を検出する技術が開示されている。
PCIeスイッチは、サーバとシャーシ内のスロットに接続されているデバイスとを接続する技術として一般的である。最近、サーバ間でPCIeスイッチを用いて通信することが提唱されている。
しかし、サーバ上で動作しているサーバ間通信用のソフトウェアは、Ethernetによってサーバ間通信を行う前提で作られている。このため、Ethernetを単に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の計算機のメモリに、受信したデータを書き込むことを特徴とする計算機システムとして構成される。
該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スイッチの、前記計算機と接続されるポートは、宛先バス番号から、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は、一実施例による計算機システム全体構成を示す。
計算機システム100は、CPU110、メモリ111及びチップセット112を有し、あるOS(オペテーティングシステム)の元でプログラムを実行する複数のサーバ101と、各サーバ101にPCIeリンク102を介して接続される複数のPCIe規格に基づくスイッチ(PCIeスイッチ)103と、PCIeスイッチ103に接続されるPCIe規格に基づくI/Oデバイス(以下PCIeデバイスという)104を有して構成される。
計算機システム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は、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を有する。
サーバ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と称する。
ある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に格納される。
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)。
<送信側サーバの処理>
図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の処理を示す。
図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に進む。
図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は、受信側サーバにおける受信処理を示す。
図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もフィールドが拡張されている。
図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)と呼ぶ。
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フィールドは不要である。
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パケットを転送してはならない。
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参照)である。
バグや悪意のあるユーザによって、サーバが正しくない仮想マシン識別子を持つ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’が記録される。
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に進む。
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 Routing Table304は、TLPがPCIeスイッチ101に入力された場合、Broadcast TLPの発行元NIC論理に応じてどのポートにそのTLPを転送するかを示すものである。
NUAフィールド340には、Broadcast TLPの発行元NIC論理のNUAが記録され、Port#フィールド341には、あるNUA発のTLPが入力された場合に、転送すべきPCIeスイッチのポートの部分に’1’が、転送してはいけないスイッチのポートの部分には’0’が記録される。
次に、サーバ間のBroadcastパケットの転送処理について説明する。
<送信処理>
送信側のサーバにおける処理は、図5に示す処理と同様である。
送信側のサーバにおける処理は、図5に示す処理と同様である。
図18は、送信側サーバのNIC論理の処理を示す。
S1600では、図6のS1100~S1105と同様な処理を行い、NIC論理はTX Descriptorの情報を元に、サーバのメモリ上にあるChunkの情報を取得する。
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’が記録されていなければ、パケットを転送しない。
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の取得又は送信処理の終了を行う。
S1604では、TLPを受信したSUBAは、図7に示す処理と同様の処理を行い、TLPの受信を行う。また、S1605では、NIC論理は、図6のS1107~S1109と同様な処理を行い、残りのChunkの取得又は送信処理の終了を行う。
<受信・転送処理>
図19は受信側サーバにおけるNIC論理の処理を示す。
図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)。
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情報フィールド
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)
- 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の計算機のメモリに、受信したデータを書き込むことを特徴とする計算機システム。 - 前記第1のNIC論理は、読み出しTLPを発行することにより、前記第1の計算機のメモリに格納された該パケットのデータを分割して取得し、取得した該データを順に第2のNIC論理に送信し、
前記第2のNIC論理は、受信した該データを受信した順に、該PCIeスイッチに接続される前記第2の計算機へ送信し、
前記第2の計算機のメモリは、前記NWドライバが読み書きできる、ネットワークパケット個別の受信バッファ(第1のバッファ)を複数、及びネットワークパケットを問わずにデータを格納できる受信バッファ(第2のバッファ)を有し、
前記第2の計算機は、受信したデータを前記第1のバッファ又は前記第2のバッファに受信した順に書き込み、
前記NWドライバが、到着時間順に前記第1のバッファ又は前記第二のバッファに格納されたデータを、再びネットワークパケットの形式に構築することを特徴とする請求項1の計算機システム。 - 前記第1の計算機の前記NWドライバは、該TLPに付加される、該パケットの転送先を示す宛先SPAと、該パケットのフレーム長さを示すフレーム長と、該パケットの情報であって分割された単位であるチャンクごとに該チャンクの長さと、該チャンクのアドレスの一覧の情報を生成し、
前記第1の計算機のメモリは、生成された、該宛先SPAと、該パケットのフレーム長と、該チャンクごとに該チャンクの長さと、該チャンクのアドレスの一覧の情報を格納し、
前記PCIeスイッチは、前記各ポート及び該NIC論理は、該PCIeスイッチの内部から外部方向へ該外部ポートを通過することができるTLPの宛先SPAの範囲を格納するレンジレジスタを有し、
前記PCIeスイッチの該NIC論理は、該メモリに格納された該チャンクをそれぞれ読み出して、該PCIeスイッチのネットワーク内で、該レンジレジスタを参照しながら該SPAを用いてルーティングを行って、各該チャンクをそのアドレスが示す前記第2の計算機に対応する該NIC論理へ送信する
ことを特徴とする請求項1の計算機システム。 - 前記PCIeスイッチの該NIC論理は、該メモリから読み出した複数の各該チャンクの長さを累積し、該累積した値が、予め該メモリに格納された、送信すべきパケットのフレームの全体の長さに等しくなった場合、送信の対象とする全てのチャンクの読み出しが完了したと判断する
ことを特徴とする請求項3の計算機システム。 - 送信側の前記PCIeスイッチの該NIC論理は、
前記第1の計算機のメモリから読み出されたチャンクのデータの前記TLPのヘッダを受信側TLP宛てのTLPヘッダに付け替えて、前記第2の計算機に対応する前記NIC論理のSPA宛てに該TLPを送信する
ことを特徴とする請求項3の計算機システム。 - 受信側の前記PCIeスイッチの該NIC論理は、
受信したフレームを受信バッファに格納し、かつ受信した複数のチャンクのデータを、該受信バッファのアドレス宛の書き込み要求に付け替えて該TLPを送信し、
前記第2の計算機のNWドライバは、該NIC論理からの割り込みを受けて、該受信バッファに格納されたデータをアドレス順に並び替えて、パケットを復元する
ことを特徴とする請求項3の計算機システム。 - 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の計算機のメモリに、受信したデータを書き込むことを特徴とする計算機システム。 - 前記NIC論理内に、前記EVHとTLPにはじめから存在する一部のフィールドの和から、1つの前記PCIeスイッチに接続される複数の計算機、又は仮想計算機に重複なく割り当てられる番号であるSUBA(サブアドレス)を引くことができる変換テーブルを有し、
前記NIC論理に入力されるTLPによって、何れの前記計算機から出力されたものかを区別する
ことを特徴とする請求項7記載の計算機システム。 - 前記NIC論理は、各SUBAが何れのVLAN(Virtual LAN)に属するかを管理するテーブルと、各VLANが属するSUBAを有する他PCIeスイッチが、自PCIeスイッチの何れのポートに接続されているかを管理するテーブルを有し、
Broadcastパケットが入力したときに、前記テーブルを参照して、同じVLANに属するSUBAに対してだけTLPをコピーして転送することにより、同じVLANに属する計算機に対してだけBroadcastパケットを転送する
ことを特徴とする請求項8記載の計算機システム。 - 前記NIC論理は、同じ前記計算機に割り当てられているSUBAのうち最小のものを管理するテーブルを有し、
前記NIC論理にTLPが入力したときに、(前記EVH+1)以上かつ(前記EVH+前記フィールド)の間に前記テーブルに記されたSUBAがないことを確認して、
前記計算機が、前記計算機に割り当てられていないSUBAに対して前記ネットワークパケットを送信しようとしていることを検出する
ことを特徴とする請求項8記載の計算機システム。 - 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の計算機のメモリに、受信したデータを書き込む
ことを特徴とする計算機間のデータ通信方法。
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)
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)
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)
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)
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 | 株式会社日立製作所 | 計算機システム、それに使用されるスイッチ及びパケット転送制御方法 |
-
2012
- 2012-03-16 WO PCT/JP2012/056932 patent/WO2013136522A1/ja active Application Filing
- 2012-03-16 US US14/360,022 patent/US9479461B2/en active Active
Patent Citations (2)
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)
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 |