WO2015015652A1 - サーバ間通信機構を備えるサーバシステムおよびその複数サーバ間における通信方法 - Google Patents

サーバ間通信機構を備えるサーバシステムおよびその複数サーバ間における通信方法 Download PDF

Info

Publication number
WO2015015652A1
WO2015015652A1 PCT/JP2013/071074 JP2013071074W WO2015015652A1 WO 2015015652 A1 WO2015015652 A1 WO 2015015652A1 JP 2013071074 W JP2013071074 W JP 2013071074W WO 2015015652 A1 WO2015015652 A1 WO 2015015652A1
Authority
WO
WIPO (PCT)
Prior art keywords
server
packet
communication
bus
inter
Prior art date
Application number
PCT/JP2013/071074
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 PCT/JP2013/071074 priority Critical patent/WO2015015652A1/ja
Publication of WO2015015652A1 publication Critical patent/WO2015015652A1/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
    • H04L49/3009Header conversion, routing tables or routing tags

Definitions

  • the present invention relates to a server system having an inter-server communication mechanism that enables communication between a plurality of servers, and a communication method between the plurality of servers.
  • PCI Express registered trademark, hereinafter referred to as PCI-SIG is widely used.
  • the PCIe specification defines three components: a root complex, an IO switch, and an endpoint.
  • the root complex is a component at the apex of the device tree for connecting the CPU, memory, and IO device, and is usually built in the server.
  • the endpoint is a component as a device having functions such as a graphic controller, LAN, and fiber channel.
  • the IO switch is a component for connecting the root complex, a plurality of endpoints, and another IO switch. In the device tree, the side near the root complex is called upstream, and the side near the end point is called downstream.
  • BUS # is assigned to all buses in the device tree composed of PCIe for the purpose of routing.
  • one area of an MMIO (Memory Mapped Input / Output) address space is allocated to each end point.
  • PCIe communication is performed in units of PCIe packets (hereinafter referred to as packets).
  • the IO switch performs packet routing in order to deliver the packet to the target IO device or root complex.
  • Typical routing methods defined by the PCIe specification include ID routing and address routing. ID routing is performed based on the destination BUS # included in the packet header. Address routing is performed by comparing the destination address included in the packet header with the MMIO address area assigned to each endpoint.
  • the communication path of PCIe is normally limited between a server having a root complex and an end point, and is not used for communication between servers in a general usage mode. This is because the basic PCIe specification does not allow a plurality of servers to exist in the same device tree.
  • Multi-root-I / O Virtualization has been standardized by PCI-SIG (Non-Patent Document 1), and there are a plurality of IO switches corresponding to the MR-IOV standard on the upstream side. It is possible to connect other servers.
  • an IO device compatible with the MR-IOV standard can be shared by a plurality of servers via an IO switch compatible with the MR-IOV standard.
  • a plurality of servers connected to the IO switch corresponding to the MR-IOV standard recognize different device trees. This device tree is called VirtualVHierarchy (hereinafter referred to as VH).
  • VH has the same topology as the PCIe device tree, and only one server can exist in one VH. Therefore, VH exists as many as the number of servers connected to the IO switch.
  • Each VH is distinguished by a unique VH #, and has a different bus topology for each VH, that is, an independent BUS # and address map for each VH. For this reason, ID routing and address routing cannot be applied to a route that crosses VH as it is, and communication that crosses VH is not supported even in the MR-IOV standard.
  • Patent Document 1 discloses that a communication mechanism for performing communication between servers in an environment in which a plurality of servers are connected to an IO switch is disclosed.
  • the communication mechanism accesses the communication mechanism via the IO switch
  • the communication mechanism accesses the second server via the IO switch
  • Communication is established.
  • the MR-IOV standard allows a configuration in which a plurality of servers are connected to one IO switch, but communication between servers is not defined in the standard. Further, Patent Document 1 discloses a communication mechanism that realizes communication between a plurality of servers. However, even if the technology disclosed in Patent Document 1 is applied to a system corresponding to the MR-IOV standard as it is, a bus is disclosed. Because the topology is different, communication between servers cannot be performed.
  • an object of the present invention is to enable communication between servers in a system corresponding to the MR-IOV standard.
  • a server system including an inter-server communication mechanism includes: a reception unit that receives a first packet from a communication source server; and a first packet received by the reception unit as a conversion unit.
  • the VH # and BUS # included in the header of the packet by referring to the conversion table based on the address included in the header of the packet, the address VH # to which the destination server belongs, the BUS # of the inter-server communication mechanism, and the destination server
  • a conversion unit that converts each of the first packet converted to the address of the internal memory, and a transmission unit that transmits the first packet converted by the conversion unit to the communication destination server.
  • the inter-server communication mechanism receives the second packet from the communication destination server, and the second packet received by the reception unit.
  • the BUS # of the communication source identifier and the BUS # of the communication destination identifier are converted into the BUS # of the communication source server and the BUS # of the inter-server communication mechanism, respectively, based on the VH # to which the communication source server belongs included in the header of And a transmission unit that transmits the second packet converted by the conversion unit to the communication source server.
  • the present invention is grasped as a communication method between the plurality of servers.
  • FIG. 1 is a diagram illustrating an example of the configuration of a computer system that communicates between a plurality of servers.
  • the IO switch 140 includes a plurality of ports on the upstream side and the downstream side, respectively.
  • a plurality of servers 110, 120, and 130 are connected to ports on the upstream side of the IO switch 140.
  • a plurality of IO devices 151 and 152 as endpoints and an inter-server communication mechanism 160 as endpoints are connected to the downstream side ports of the IO switch 140.
  • the inter-server communication mechanism 160 is an end point shared by the servers 110, 120, and 130.
  • the IO devices 151 and 152 may be endpoints occupied by any one of the servers 110, 120, and 130, or may be endpoints shared by a plurality of devices.
  • FIG. 1 shows an example of three servers 110, 120, and 130 connected to the IO switch 140, one server-to-server communication mechanism 160, and two IO devices 151 and 152. Good.
  • the server 110 includes a CPU (Central Processing Unit) 111, a memory 112, and a memory controller 114.
  • the memory controller 114 can interpret a memory read or write packet received from the IO switch 140 via the PCIe link and perform a read or write operation on the memory 112. Also, it operates as a root complex for the PCIe link.
  • the memory 112 stores a driver 113 that initializes and controls the inter-server communication mechanism 160.
  • the servers 120 and 130 have the same configuration, and have an area 135 in the memory 132 for explaining communication using the server 130 as a communication destination later. However, when the servers 110 and 120 are communication destinations, respectively. In the memories 112 and 122, an area corresponding to the area 132 may be secured.
  • the server 110 configures one VH of VH # 0 together with the IO device 151 and the inter-server communication mechanism 160 according to the MR-IOV standard
  • the server 130 configures VH # 2 together with the IO device 152 and the inter-server communication mechanism 160.
  • Configure VH In FIG. 1, VH of VH # 0 is shown in the range of the broken line, and VH of VH # 2 is shown in the range of the alternate long and short dash line.
  • the server 120 configures another VH of VH # 1, which is not shown here.
  • each VH independently assigns a BUS # at the time of initial setting. Therefore, regarding VH # 0 within the range of the broken line in FIG.
  • BUS # 0>, ⁇ BUS # 1>, ⁇ BUS # 2>, and ⁇ BUS # 3> are allotted, and BUS # is expressed (and) with respect to VH # 2 within the range of the one-dot chain line (BUS) # 0), (BUS # 1), (BUS # 2), and (BUS # 3) are assigned.
  • the inter-server communication mechanism 160 is shared by VH # 0 and VH # 1, but different BUS # s of ⁇ BUS # 3> and (BUS # 2) are assigned.
  • the server 110 transmits to BUS # 3 in VH # 0
  • the server 130 transmits to BUS # 3 in VH # 2, (BUS # 3)
  • the IO device 152 is reached.
  • the server 130 can reach the server communication mechanism 160 of (BUS # 2) by transmitting to BUS # 2 instead of BUS # 3 to transmit to the interserver communication mechanism 160.
  • the VH # is different, so the VH # 0 and VH # 2 are converted, and the inter-server communication mechanism between the different VH # 0 and VH # 2.
  • ⁇ BUS # 3> and (BUS # 2) are converted.
  • the address space is also assigned independently at the time of initialization in VH # 0 and VH # 2, the address is also converted.
  • FIG. 2 is a diagram illustrating an example of the internal configuration of the inter-server communication mechanism 160.
  • the inter-server communication mechanism includes an IO interface 200 and can transmit and receive PCIe packets. When receiving the packet, the IO interface 200 stores the packet in the reception packet buffer 201 and transmits the packet stored in the transmission packet buffer 202.
  • the inter-server communication mechanism 160 includes a packet type determination unit 203, a memory read / write packet conversion unit 204, and a memory return packet conversion unit 205.
  • the packet type determination unit 203 reads the packet header in the reception packet buffer 201 and determines whether it is a memory read packet, a memory write packet, or a memory return packet. When the determination result is a memory read packet or a memory write packet, the packet type determination unit 203 activates the memory read / write packet conversion unit 204 and sends the memory read / write packet conversion unit 204 and the transmission packet buffer 202 to the selection unit 207. Control to connect. When the determination result is a memory return packet, the memory return packet conversion unit 205 is activated and the selection unit 207 is controlled to connect the memory return packet conversion unit 205 and the transmission packet buffer 202. The conversion contents of the memory read / write packet conversion unit 204 and the memory return packet conversion unit 205 will be described later with reference to FIGS. 7 and 8, respectively, but both convert the packet header contents using the conversion table 206. To do.
  • the memory read packet is a packet for instructing to read data from a specific address
  • the packet for returning the read data is a memory return packet.
  • the memory write packet is a packet for writing data to a specific address
  • the write instruction and the write data are one packet, and if the data is written, the role of the packet is terminated and returned. No packet exists.
  • an address space area is assigned to each endpoint.
  • the server can access the endpoint by sending a memory write packet or a memory read packet to a specific area of the address space.
  • the communication source server implements mutual communication by using the memory read packet, the memory return packet, and the memory write packet to read and write to the memory of the communication destination server.
  • the operation sequence when the server 110 reads the memory from the server 130 so that the communication source is the server 110 and the communication destination is the server 130 and the server 110 receives a packet from the server 130 is shown in FIGS.
  • the driver 113 operating on the communication source server 110 transmits the memory read packet 301 to the inter-server communication mechanism 160 via the IO switch 140 (step 311).
  • the IO interface 200 receives the memory read packet 301 and stores it in the received packet buffer 201.
  • the packet type determination unit 203 determines the type of the memory read packet 301
  • the memory read / write packet conversion unit 204 converts the packet, and stores it in the transmission packet buffer 202 via the selection unit 207 (step). 312).
  • the IO interface 200 transmits the packet stored in the transmission packet buffer 202 as a converted memory read packet 302 to the communication destination server 130 via the IO switch 140 (step 313).
  • the driver 133 operating on the communication destination server 130 receives the converted memory read packet 302 and reads the contents of the area 135 of the memory 132 (step 314).
  • the driver 133 operating on the communication destination server 130 includes the read information in the memory return packet 303 and sends it back via the IO switch 140. (Step 315) (7)
  • the IO interface 200 receives the memory return packet 303 and stores it in the received packet buffer 201.
  • the memory return packet conversion unit 205 converts the packet, and stores the packet in the transmission packet buffer 202 via the selection unit 207 (step 316). ).
  • the IO interface 200 transmits the packet stored in the transmission packet buffer 202 as the converted memory return packet 304 to the communication source server 110 via the IO switch 140 (step 317).
  • the communication source server 110 receives the converted memory return packet 304 and successfully reads the memory 132 of the communication destination server 130.
  • the operation sequence when the communication source server 110 writes the memory to the communication destination server 130 is the memory read steps 311 to 313. It is the same operation.
  • the pre-conversion memory write packet 305 corresponds to the pre-conversion memory read packet 301
  • the post-conversion memory write packet 306 corresponds to the post-conversion memory read packet 302.
  • the read and write are different, and VH # and BUS are different. # And address conversion are the same.
  • the communication destination server 130 performs a write operation to the area 135 of the memory 132.
  • step 312 the operation of converting the memory read packet and the memory write packet in step 312, particularly the operation of converting the VH #, BUS #, and address will be described in further detail.
  • Fig. 4 shows the header format of the memory read packet and memory write packet defined in the MR-IOV standard.
  • the header of the memory read packet and the header of the memory write packet are common. Since the MR-IOV standard does not support communication across different VHs, there is one VH # in the header, which is common to the communication source and the communication destination.
  • the Requester ID (hereinafter referred to as “ReqID”) is an ID for identifying the communication source, and is composed of three types of numbers: BUS #, DEV #, and FUN #. In the PCIe bus topology, an end point is specified by a combination of these three types of numbers. Note that DEV # and FUN # are used to specify those functions when the endpoint has a plurality of functions.
  • the address is a communication destination address.
  • the communication destination is the IO devices 151 and 152 or the inter-server communication mechanism 160
  • the address is an MMIO address.
  • the communication source indicated by ReqID reads and writes to the address of the communication destination in accordance with the contents of the header packet shown in FIG.
  • VH # conversion will be described.
  • the inter-server communication mechanism 160 that has received the memory read packet 301 or the memory write packet 305 before conversion is used. Then, the VH # included in these received packets is converted into the VH # of the communication destination server 130 (hereinafter referred to as the communication destination VH #).
  • FIG. 6 shows an example of VH # mapping corresponding to addresses.
  • 0x1000 to 0x4000 (0x represents a hexadecimal number) is allocated as a memory area of the inter-server communication mechanism 160, and 0x1000 to 0x1FFF is for VH # 2, 0x2000 to 0x2FFF is for VH # 1.
  • 0x3000 to 0x3FFF are allocated for VH # 0, but since this is VH # 0 itself, this area may not be allocated.
  • VH # 0 since the area for VH # 0 is allocated in the server 120 and the server 130, it is possible to make the same area configuration in all the VHs by allocating all the VH # 0-2.
  • an address such as 0x1000 is assigned for each VH at the time of initial setting in accordance with the MR-IOV standard including PCIe, the address is not necessarily 0x1000, and is not necessarily the same address between different servers.
  • 0x1000 to 0x1FFF are assigned for VH # 2 for example, when the communication source server 110 accesses memory read from 0x1789 or memory write to 0x1789 in VH # 0, access to VH # 2 It becomes.
  • FIG. 7 is a diagram illustrating an example of a circuit of the memory read / write packet conversion unit 204.
  • the contents of the conversion table 206 shown in FIG. 7 are each value in the VH # 2 to which the communication destination server 130 belongs, and the address of the memory read packet 301 or write packet 305 before conversion stored in the reception packet buffer 201.
  • the conversion circuit 701 reads the upper digit value 1, converts the address item of the conversion table 206 into the VH # item value 2 corresponding to the value 1, and sets it to the VH # of the transmission packet buffer 202.
  • N is the upper digit of the address assigned to the area 135 at the time of initial setting of VH # 2.
  • 0x1000 to 0x1FFF of VH # 0 can be mapped to 0xN000 to 0xNFFF of VH # 2. Since this N is initialized for each different VH, it can be a different value.
  • the inter-server communication mechanism 160 since the inter-server communication mechanism 160 includes the conversion table 206 that defines the correspondence between VH # and N, N can be determined using the conversion table 206, and the address of the packet can be converted.
  • the conversion circuit 701 is an item in the area where the address item of the conversion table 206 corresponds to the value 1.
  • the copy circuit 702 reads the value 789 which is the lower digit of the address from the reception packet buffer 201 and copies it to the lower digit of the address of the transmission packet buffer 202. This converts the address from 0x1789 to 0xN789.
  • the lower digits of the addresses may be converted by providing an address conversion table or the like that associates the pre-conversion address and the post-conversion address one-to-one.
  • the communication source BUS # included in the ReqID is used as a return destination of the corresponding memory return packet. Therefore, in order for the inter-server communication mechanism 160 to receive the memory return packet 303, the BUS # of the communication source server 110 included in the ReqID of the memory read packet 301 before conversion is converted into the BUS # of the inter-server communication mechanism 160. To do. However, DEV # and FUN # do not need to be converted because they are not involved in routing.
  • the BUS # of the inter-server communication mechanism 160 is different for each different VH.
  • the inter-server communication mechanism 160 includes a conversion table 206 that defines the correspondence between VH # and BUS #. After determining the BUS # using the conversion table 206, the BUS # of the packet is converted. To do.
  • the conversion circuit 701 performs inter-server communication in which the address item of the conversion table 206 corresponds to the value 1.
  • the value is converted to the value 2 of the item of the mechanism BUS # and set to the BUS # of the ReqID of the transmission packet buffer 202.
  • the copy circuit 703 reads the value 0 of VH # stored in the reception packet buffer 201 for use in the conversion of the memory return packet 303 to be performed later. Then, copy, that is, save to the DEV # and FUN # of ReqID of the transmission packet buffer 202 is performed.
  • DEV # and FUN # are not used for routing, and the PCIe specification guarantees that the ReqID of the memory read packet 302 and the ReqID of the corresponding memory return packet 303 are the same. This can be used when the memory return packet 303 is converted.
  • each value in the packet that is shown in FIG. 4 but not shown in FIG. 7 is copied from the packet in the reception packet buffer 201 to the packet in the transmission packet buffer 202 as it is.
  • FIG. 5 is a diagram showing a header format of a memory return packet defined in the PCIe specification.
  • the ReqID in the header is a communication source and an ID indicating a return destination, and a Completer ID (hereinafter referred to as CompID) is a communication destination and an ID indicating a return source.
  • CompID Completer ID
  • FIG. 8 is a diagram illustrating an example of a circuit of the memory return packet conversion unit 205. The contents of the conversion table 206 shown in FIG. 8 are each value in VH # 0 to which the communication source server 110 belongs.
  • VH # has the value 2
  • VH # is transmitted to the communication source server 110 of VH # 0. Convert to value 0.
  • the VH # copied to the DEV # and FUN # of the ReqID of the post-conversion memory read packet 302 described with reference to FIG. 7 is used. Since the DEV # and FUN # of the post-change memory read packet 302 and the DEV # and FUN # of the ReqID of the pre-conversion memory return packet 303 are the same value and the VH # of the communication source, the copy circuit shown in FIG. 801 reads the value 0 of the communication source VH # from the reception packet buffer 201 and copies it to the VH # of the transmission packet buffer 202.
  • the conversion circuit 802 reads the value 0 of the communication source VH # and sets the value 0 of the communication source server BUS # corresponding to the value 0 of the VH # item of the conversion table 206 to the BUS # of ReqID of the transmission packet buffer 304. Set to.
  • the conversion circuit 802 sets the inter-server communication mechanism BUS # value 3 of the conversion table 206 to the CompID BUS # of the transmission packet buffer 304 based on the read VH # value 0 of the communication source.
  • the values shown in FIG. 8 other than the DEV # and FUN # of ReqID of the pre-conversion memory return packet 303 are not used.
  • the ReqID and CompID DEV # and FUN # of the post-conversion memory return packet 304 are not used for routing and are set to predetermined fixed values.
  • This fixed value is a value that can be received by the driver 113 of the communication source server 110.
  • the value K of the area of the conversion table 206 is the address of the area in the memory 112 of the server 110 used when the server 110 belonging to VH # 0 becomes the communication destination, and is not used here.
  • Each value in the packet that is shown in FIG. 5 but not shown in FIG. 8 is copied as it is from the packet in the reception packet buffer 201 to the packet in the transmission packet buffer 202.
  • the conversion table 206 is used as described with reference to FIGS. 7 and 8 show only the values to be used, but the values shown in FIG. 7 and the values shown in FIG. 8 are actually included as each row of one table, and the address of VH # 1 in FIG. Table rows such as value 2 are included, and if there are 4 or more VHs, as many table rows as VHs are included. Since each value of the conversion table 206 is determined at the time of initial setting defined in the MR-IOV standard including PCIe, the driver of the server belonging to each VH, for example, the driver 113 of the server 110 belonging to VH # 0 is shown in FIG.
  • a value related to VH # 0 of the conversion table 206 is set, and the driver 133 of the server 130 belonging to VH # 2 sets a value related to VH # 2 of the conversion table 206 shown in FIG. Similarly, a value related to VH # 1 of the conversion table 206 is set in the driver 123 of the server 120 belonging to the server 120. Note that a value related to VH # 0 of the conversion table 206 may be set via the driver 113 by the operation of the operator.
  • the inter-server communication mechanism 160 converts VH #, BUS #, and address in the MR-IOV configuration as described above, the memories 112 and 132 can be read from and written to each other between the servers 110 and 130. , 130 can be communicated with each other. Note that communication is possible not only between the servers 110 and 130 but also when more servers including the server 120 are provided. Further, it is possible to mount the inter-server communication mechanism 160 in the IO switch 140. In this case, the port connecting the inter-server communication mechanism 160 of the IO switch 140 can be used to connect another IO device. (Second Embodiment) In the above description, the inter-server communication mechanism 160 is implemented as a dedicated circuit as hardware as shown in FIGS. 2, 7, and 8, but can also be implemented as general computer software. When implemented by a computer, the computer can be used as a function other than the inter-server communication mechanism 160.
  • the computer has an interface corresponding to the PCIe specification corresponding to the IO interface 200 shown in FIG. 2, stores the conversion table 206 in a memory, and operates according to the flow described with reference to FIGS.
  • the memory read packet 302 After receiving any one of the memory read packet 301, the memory write packet 305, and the memory return packet 303, the memory read packet 302, the memory write packet 306, and the memory return packet 304 after the conversion are transmitted. It is a figure which shows the example of the flow which showed the operation
  • First it waits until a packet is received from any of the servers 110, 120, and 130, and receives the packet (step 901).
  • the received packet is stored in the received packet buffer 201 (step 902).
  • an empty packet area whose contents are not set is secured in the transmission packet buffer 202 (step 903).
  • the header of the packet stored in the reception packet buffer 201 is read out, and the type of the packet, which is a memory read packet, a memory write packet, or a memory return packet, is determined.
  • step 905 If the determined type is either a memory read packet or a memory write packet, the process proceeds to step 905, and processing corresponding to the packet conversion 312 in FIG. 3 is performed. This process will be described later with reference to FIG. If the determined type is a memory return packet, the process proceeds to step 906, and processing corresponding to the packet conversion 316 in FIG. 3 is performed. This process will be described later with reference to FIG.
  • steps 905 and 906 Since the processing in steps 905 and 906 is performed by copying or setting a value to an empty packet in the transmission packet buffer 202, the converted packet is transmitted from the transmission packet buffer 202 in step 907.
  • FIG. 10 is a diagram illustrating an example of a flow of conversion processing between a memory read packet and a memory write packet.
  • the conversion of the value in the packet is the same as the conversion described with reference to FIG.
  • the communication source VH # is saved by copying the VH # of the packet in the reception packet buffer 201 to the DEV # and FUN # of the ReqID of the packet in the transmission packet buffer (step 1001).
  • the lower digit value of the address is copied (step 1002).
  • the value of the lower digit of the address may be converted by the address conversion table.
  • the value of the upper digit of the address is acquired (step 1003).
  • the value of the upper digit of this address is a key for obtaining a value from the conversion table 206.
  • VH #, server-to-server communication mechanism BUS #, and area address are acquired from conversion table 206, and set to the empty packet VH #, ReqID BUS #, and upper digit of the address in transmission packet buffer 202 ( Steps 1004 to 1006).
  • each value of the packet in the reception packet buffer 201 other than these is copied to an empty packet in the transmission packet buffer 202.
  • the process returns to step 907 shown in FIG.
  • FIG. 11 is a diagram showing an example of a flow of memory return packet conversion processing.
  • the conversion of the value in the packet is the same as the conversion described with reference to FIG.
  • the communication source VH # saved in step 1001 is acquired from the DEV # and FUN # of ReqID of the packet in the reception packet buffer 201 (step 1101).
  • the acquired communication source VH # is copied (step 1102).
  • This VH # is a key for obtaining a value from the conversion table 206.
  • the source server BUS # and the inter-server communication mechanism BUS # are acquired from the conversion table 206, and set to the ReqID BUS # and CompID BUS # of the empty packet in the transmission packet buffer 202, respectively (step 1103, 1104).
  • step 1105 fixed values are set for ReqID DEV # and FUN # and CompID DEV # and FUN # (step 1105), and other values of the packets in the receive packet buffer 201 are empty in the transmit packet buffer 202. Copy to packet.
  • step 1106 the process returns to step 907 shown in FIG.
  • the computer functioning as the server-to-server communication mechanism 160 corresponding to the MR-IOV standard converts the VH #, BUS #, and address, it becomes possible to read and write memory between a plurality of servers. Communication between servers becomes possible.
  • the inter-server communication mechanism 160 can be realized at low cost, and the computer can be used in addition to the inter-server communication mechanism 160.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

 スイッチの上流に接続される複数のサーバと、前記スイッチの下流に接続される複数のIOデバイスと、サーバ間通信機構とを備えるサーバシステムにおいて、前記サーバ間通信機構は、通信元サーバから第1のパケットを受信する受信部と、変換部として、前記受信部の受信した第1のパケットのヘッダに含まれるアドレスに基づき変換テーブルを参照して前記パケットのヘッダに含まれるVH#、BUS#、アドレスを通信先サーバの属するVH#、前記サーバ間通信機構のBUS#、前記通信先サーバ内のメモリのアドレスへそれぞれ変換する変換部と、前記変換部により変換された第1のパケットを前記通信先サーバへ送信する送信部と、を備える。

Description

サーバ間通信機構を備えるサーバシステムおよびその複数サーバ間における通信方法
 本発明は複数サーバ間で通信を可能にするサーバ間通信機構を備えるサーバシステムおよびその複数サーバ間における通信方法に関するものである。
高速シリアルインタフェースとして、PCI-SIGによって標準化されたPCIExpress(登録商標 以下、PCIeとする)が広く用いられている。PCIeの仕様ではルートコンプレックス、IOスイッチ、エンドポイントの3つの構成要素が定義されている。ルートコンプレックスはCPUやメモリとIOデバイスを接続するためのデバイスツリーの頂点にある構成要素であり、通常はサーバに内蔵される。エンドポイントはグラフィックのコントローラやLAN、ファイバーチャネルといった機能を持ったデバイスとしての構成要素である。そしてIOスイッチはルートコンプレックスと複数のエンドポイント、別のIOスイッチを接続するための構成要素である。また、デバイスツリーにおいて、ルートコンプレックスに近い側をアップストリーム、エンドポイントに近い側をダウンストリームと呼ぶ。
 PCIeで構成されるデバイスツリー内の全てのバスには、ルーティングを行うことを目的として、BUS#が付与される。また、各エンドポイントには、MMIO(Memory Mapped Input/Output)アドレス空間の1つの領域が割り当てられる。
 PCIeにおいてはPCIeパケット(以下、パケット)を単位として通信を行う。IOスイッチは、パケットを目的のIOデバイスあるいはルートコンプレックスに届けるため、パケットルーティングを行う。PCIeの仕様が定める代表的なルーティング方法には、IDルーティングとアドレスルーティングがある。IDルーティングは、パケットヘッダに含まれる宛先のBUS#に基づいて行われる。アドレスルーティングは、パケットヘッダに含まれる宛先のアドレスと各エンドポイントに割り当てられるMMIOアドレス領域などを比較することによって行われる。
 一方、PCIeの通信経路は通常、ルートコンプレックスを持つサーバとエンドポイントの間に限られており、一般的な利用形態においては、サーバ間の通信に用いることはない。なぜならば、基本的なPCIeの仕様では、同一のデバイスツリー内に複数のサーバが存在することを許していないためである。
 これに対して、Multi-root I/O Virtualization(MR-IOV)がPCI-SIGによって規格化されており(非特許文献1)、MR-IOV規格に対応したIOスイッチは、アップストリーム側に複数のサーバを接続することが可能である。また、MR-IOV規格に対応したIOデバイスは、MR-IOV規格に対応したIOスイッチを介して、複数のサーバにより共有されることが可能である。MR-IOV規格に対応したIOスイッチに接続された複数のサーバは、それぞれ異なるデバイスツリーを認識する。このデバイスツリーのことをVirtual Hierarchy(以下、VHとする)と呼ぶ。
 VHは、PCIeのデバイスツリーと同様のトポロジーを持ち、一つのVH内には、一台のサーバしか存在できない。従ってVHはIOスイッチに接続されるサーバの数だけ存在することとなる。各VHは固有のVH#によって区別され、VH毎に異なるバストポロジーすなわちVH毎に独立したBUS#とアドレスマップを持つ。このため、IDルーティングとアドレスルーティングはそのままVHをまたがる経路に適用することはできず、MR-IOV規格においても、VHをまたがる通信はサポートされない。
 これとは別に、複数のサーバを接続する技術に関して、特許文献1には複数のサーバがIOスイッチに接続された環境下でサーバ間の通信を行う通信機構を備えることが開示されている。第1のサーバがIOスイッチを経由して通信機構へアクセスし、通信機構がIOスイッチを経由して第2のサーバへアクセスすることにより、第1のサーバと第2のサーバとの間での通信を成立するものである。
特開2009-282917号公報
「Multi-Root I/O Virtualization and Sharing Specification,Revision 1.0」、1.Architectural p.15、2008年5月発行、PCI-SIG著
 MR-IOV規格においては、1つのIOスイッチに複数のサーバが接続される構成を許すが、サーバ間の通信は規格に定められていない。また、特許文献1には複数のサーバ間の通信を実現する通信機構が開示されているが、MR-IOV規格に対応するシステムへそのまま特許文献1に開示された技術を適用しても、バストポロジーが異なるため、サーバ間の通信を行うことができない。
 そこで、本発明はMR-IOV規格に対応するシステムにおいてサーバ間の通信を可能にすることを目的とする。
 本発明にかかるサーバ間通信機構を備えるサーバシステムは、前記サーバ間通信機構が、通信元サーバから第1のパケットを受信する受信部と、変換部として、前記受信部の受信した第1のパケットのヘッダに含まれるアドレスに基づき変換テーブルを参照して前記パケットのヘッダに含まれるVH#、BUS#、アドレスを通信先サーバの属するVH#、前記サーバ間通信機構のBUS#、前記通信先サーバ内のメモリのアドレスへそれぞれ変換する変換部と、前記変換部により変換された第1のパケットを前記通信先サーバへ送信する送信部と、を備えることを特徴とする。
 また、本発明にかかるサーバ間通信機構を備えるサーバシステムは、前記サーバ間通信機構が、前記通信先サーバから第2のパケットを受信する前記受信部と、前記受信部の受信した第2のパケットのヘッダに含まれる前記通信元サーバの属するVH#に基づき通信元の識別子のBUS#と通信先の識別子のBUS#を前記通信元サーバのBUS#と前記サーバ間通信機構のBUS#へそれぞれ変換する変換部と、前記変換部により変換された第2のパケットを前記通信元サーバへ送信する前記送信部と、を備えることを特徴とする。
 また、本発明はその複数サーバ間における通信方法としても把握される。
 本発明によれば、MR-IOV規格に対応するシステムにおいてサーバ間の通信が可能になる。
サーバ間通信機構を備えるサーバシステムの構成の例を示す図である。 サーバ間通信機構の内部構成の例を示す図である。 サーバ間通信の動作シーケンスの例を示す図である。 MR-IOV規格に定められたメモリ読み出しおよび書き込みパケットのヘッダのフォーマットを示す図である。 MR-IOV規格に定められたメモリ返却パケットのヘッダのフォーマットを示す図である。 VH#0のアドレス空間とVH#2のアドレス空間とのマッピングの例を示す図である。 メモリ読み出しおよび書き込みパケットを変換する回路の例を示す図である。 メモリ返却パケットを変換する回路の例を示す図である。 サーバ間通信機構をコンピュータで実装する動作フローの例を示す図である。 メモリ読み出しあるいは書き込みパケットを変換する動作フローの例を示す図である。 メモリ返却パケットを変換する動作フローの例を示す図である。
 以下、サーバ間通信機構を備えるサーバシステムおよびその複数サーバ間における通信方法の好ましい実施の形態を図面に基づいて詳細に説明する。
(第1の実施の形態)
 図1は複数サーバ間で通信するコンピュータシステムの構成の例を示す図である。 IOスイッチ140はアップストリーム側、ダウンストリーム側にそれぞれ複数のポートを備える。IOスイッチ140のアップストリーム側のポートには、複数のサーバ110、120、130がそれぞれ接続される。IOスイッチ140のダウンストリーム側のポートには、エンドポイントである複数のIOデバイス151、152、およびエンドポイントであるサーバ間通信機構160がそれぞれ接続される。
 サーバ間通信機構160は、サーバ110、120、130によって共有されたエンドポイントである。IOデバイス151、152はサーバ110、120、130のいずれか1台から占有されるエンドポイントであってもよく、複数台から共有されるエンドポイントであってもよい。
 図1ではIOスイッチ140に接続されるサーバ110、120、130の3台、サーバ間通信機構160の1台、IOデバイス151、152の2台の例を示したが、それぞれさらに多数設けてもよい。
 サーバ110は、CPU(中央処理装置)111、メモリ112、メモリコントローラ114を備える。メモリコントローラ114は、CPU111からのメモリアクセスに加えて、PCIeリンクを介してIOスイッチ140から受信したメモリ読み出しあるいは書き込みパケットを解釈し、メモリ112に対して読み出しあるいは書き込み動作を行うことができる。また、PCIeリンクに対してはルートコンプレックスとして動作する。メモリ112にはサーバ間通信機構160を初期設定し、制御するドライバ113が格納されている。サーバ120、130も同じ構成を有しており、後でサーバ130を通信先とした通信を説明するためのメモリ132内の領域135を有するが、サーバ110、120が通信先となる場合はそれぞれのメモリ112、122でも領域132に相当する領域を確保してもよい。
 図1ではMR-IOV規格にしたがってサーバ110がIOデバイス151とサーバ間通信機構160と共にVH#0の1つのVHを構成し、サーバ130がIOデバイス152とサーバ間通信機構160と共にVH#2のVHを構成する。図1では破線の範囲でVH#0のVHを示し、一点鎖線の範囲でVH#2のVHを示している。サーバ120はさらに他のVH#1のVHを構成するが、ここでは図示を省略する。PCIeを含むMR-IOV規格によれば初期設定時に各VHは独立してBUS#を割り当てるため、図1の破線の範囲内でVH#0に関し、BUS#を表現上<と>で囲んだ<BUS#0>、<BUS#1>、<BUS#2>、<BUS#3>をそれぞれ割り当て、一点鎖線の範囲内でVH#2に関し、BUS#を表現上(と)で囲んだ(BUS#0)、(BUS#1)、(BUS#2)、(BUS#3)をそれぞれ割り当てる。
 ここで、サーバ間通信機構160はVH#0とVH#1とで共有されるが、それぞれ<BUS#3>と(BUS#2)の異なるBUS#が割り当てられる。例えば、VH#0においてサーバ110がBUS#3へ送信すると<BUS#3>のサーバ間通信機構160へ到達するが、VH#2においてサーバ130がBUS#3へ送信すると(BUS#3)のIOデバイス152へ到達することになる。VH#2においてサーバ130がサーバ間通信機構160へ送信するにはBUS#3ではなくBUS#2へ送信することにより(BUS#2)のサーバ通信機構160へ到達できる。
 以上のように、例えばサーバ110とサーバ130との間で通信するためにはVH#が異なるのでVH#0とVH#2とを変換し、異なるVH#0とVH#2でサーバ間通信機構160を使用するためには<BUS#3>と(BUS#2)とを変換する。さらに、VH#0とVH#2では初期設定時にアドレス空間も独立して割り当てるため、アドレスも変換する。
 図2は、サーバ間通信機構160の内部構成の例を示す図である。サーバ間通信機構は、IOインタフェース200を備え、PCIeパケットの送受信を行うことができる。IOインタフェース200は、パケットを受信すると受信パケットバッファ201に格納し、送信パケットバッファ202に格納したパケットを送信する。また、サーバ間通信機構160は、パケット種別判別部203、メモリ読み出しおよび書き込みパケット変換部204、メモリ返却パケット変換部205を備える。
 パケット種別判別部203は受信パケットバッファ201内のパケットヘッダを読み出して、メモリ読み出しパケットであるかメモリ書き込みパケットであるかメモリ返却パケットであるかを判別する。パケット種別判別部203はその判別結果がメモリ読み出しパケットあるいはメモリ書き込みパケットの場合、メモリ読み出しおよび書き込みパケット変換部204を起動すると共に選択部207へメモリ読み出しおよび書き込みパケット変換部204と送信パケットバッファ202とを接続するように制御する。その判別結果がメモリ返却パケットの場合、メモリ返却パケット変換部205を起動すると共に選択部207へメモリ返却パケット変換部205と送信パケットバッファ202とを接続するように制御する。メモリ読み出しおよび書き込みパケット変換部204とメモリ返却パケット変換部205の変換内容に関しては図7と図8を用いてそれぞれ後で説明するが、いずれも変換テーブル206を使用してパケットヘッダの内容を変換する。
 PCIeの仕様に定められているパケットはアクセス形態に応じていくつかの種別がある。サーバ間通信で必要となるパケット種別は、メモリ読出しパケット、メモリ返却パケット、メモリ書き込みパケットの3種類である。メモリ読み出しパケットは特定のアドレスからデータを読み出すことを指示するためのパケットであり、読み出されたデータを返すためのパケットがメモリ返却パケットである。これに対し、メモリ書き込みパケットは特定のアドレスへデータを書き込むためのパケットであり、書き込みの指示と書き込みデータとが1つのパケットであって、データを書き込めばパケットの役割が終了するため、返却されるパケットは存在しない。
 また、PCIeでは、各エンドポイントにアドレス空間の領域が割り当てられる。サーバはアドレス空間の特定の領域に対してメモリ書き込みパケット、あるいはメモリ読出しパケットを送信することで、エンドポイントに対してアクセスすることができる。
 通信元サーバは、メモリ読み出しパケットとメモリ返却パケットとメモリ書き込みパケットを利用し、通信先サーバのメモリに対してリード及びライトを行うことによって相互通信を実現する。
 以下、通信元をサーバ110とし、通信先をサーバ130として、サーバ110がサーバ130からパケットを受信するために、サーバ110がサーバ130に対してメモリ読み出しを行う場合の動作シーケンスを図2、3に基づいて説明する。
(1)通信元のサーバ110で動作するドライバ113がサーバ間通信機構160へメモリ読み出しパケット301をIOスイッチ140経由で送信する(ステップ311)。
(2)サーバ間通信機構160ではIOインタフェース200がメモリ読出しパケット301を受信し、受信パケットバッファ201へ格納する。
(3)パケット種別判別部203がメモリ読み出しパケット301の種別を判別した後、メモリ読み出しおよび書き込みパケット変換部204がパケットを変換し、選択部207を経由して送信パケットバッファ202へ格納する(ステップ312)。
(4)IOインタフェース200は送信パケットバッファ202に格納されたパケットを変換後メモリ読み出しパケット302として通信先のサーバ130へIOスイッチ140経由で送信する(ステップ313)。
(5)通信先のサーバ130で動作するドライバ133は変換後メモリ読み出しパケット302を受信し、メモリ132の領域135の内容を読み出す(ステップ314)。
(6)通信先のサーバ130で動作するドライバ133は読み出した情報をメモリ返却パケット303に含めてIOスイッチ140経由で返信する。(ステップ315)
(7)サーバ間通信機構160ではIOインタフェース200がメモリ返却パケット303を受信し、受信パケットバッファ201へ格納する。
(8)パケット種別判別部203がメモリ返却パケット303の種別を判別した後、メモリ返却パケット変換部205にてパケットを変換し、選択部207を経由して送信パケットバッファ202へ格納する(ステップ316)。
(9)IOインタフェース200は送信パケットバッファ202に格納されたパケットを変換後メモリ返却パケット304として通信元のサーバ110へIOスイッチ140経由で送信する(ステップ317)。
(10)通信元サーバ110は、変換後メモリ返却パケット304を受信し、通信先サーバ130のメモリ132を読み出すことに成功する。
 通信元のサーバ110が通信先のサーバ130へパケットを送信するために、通信元のサーバ110が通信先のサーバ130に対してメモリ書き込みを行う場合の動作シーケンスはメモリ読み出しのステップ311~313と同じ動作である。ここで、変換前メモリ書き込みパケット305は変換前メモリ読み出しパケット301に相当し、変換後メモリ書き込みパケット306は変換後メモリ読み出しパケット302に相当するが、読み出しと書き込みということでは異なり、VH#とBUS#とアドレスの変換は同じである。また、ステップ318では通信先サーバ130がメモリ132の領域135への書き込み動作を行う。
 図3の動作シーケンスの内、ステップ312におけるメモリ読み出しパケットとメモリ書き込みパケットの変換の動作、特にVH#とBUS#とアドレスの変換の動作についてさらに詳細を説明する。
 図4にMR-IOV規格に定められたメモリ読み出しパケットとメモリ書き込みパケットのヘッダのフォーマットを示す。メモリ読み出しパケットのヘッダとメモリ書き込みパケットのヘッダは共通である。MR-IOV規格としては異なるVHをまたいだ通信はサポートされていないため、ヘッダにVH#は1つであり、通信元と通信先とで共通である。Requester ID(以下、ReqIDとする)は通信元を識別するためのIDであり、BUS#、DEV#、FUN#の三種類の番号から構成される。PCIeのバストポロジーでは、これら三種類の番号の組合せでエンドポイントを特定する。なお、DEV#とFUN#に関しては、エンドポイント内に複数の機能を有する場合にそれらの機能を特定するのに用いられるものである。アドレスは通信先のアドレスであり、通信先がIOデバイス151、152かサーバ間通信機構160の場合はMMIOアドレスである。このため、図4に示したヘッダのパケットの内容にしたがってReqIDの示す通信元が、通信先のアドレスへ読み書きすることになる。
 まず、VH#の変換について説明する。通信元のサーバ110から通信先のサーバ130へのアクセスに応じてVH#0をVH#2へ変換するため、変換前のメモリ読み出しパケット301あるいはメモリ書き込みパケット305を受信したサーバ間通信機構160は、受信したこれらのパケットに含まれるVH#を通信先のサーバ130のVH#(以下、通信先VH#とする)へ変換する。
 図6にアドレスと対応するVH#のマッピングの一例を示す。通信元のサーバ110の属するVH#0のアドレス空間には0x1000~0x4000(0xは16進数を表す)がサーバ間通信機構160のメモリ領域として割り当てられ、0x1000~0x1FFFがVH#2用、0x2000~0x2FFFがVH#1用となっている。ここで、0x3000~0x3FFFはVH#0用に割り当てられているが、VH#0自体であるので、この領域は割り当てなくてもよい。また、サーバ120、サーバ130ではVH#0用の領域が割り当てられるため、すべてのVH#0~2を必ず割り当てることにより、すべてのVHにおいて同一の領域構成としてもよい。ただし、0x1000などのアドレスはPCIeを含むMR-IOV規格にしたがって初期設定時にVH毎に割り当てるものであるから、必ずしも0x1000となるとは限らず、異なるサーバ間で同じアドレスになるとは限らない。図6ではVH#2用に0x1000~0x1FFFを割り当てているので、例えば通信元のサーバ110がVH#0内で0x1789からメモリ読み出し、あるいは0x1789へメモリ書き込みのアクセスをすると、VH#2へのアクセスとなる。
 図7はメモリ読み出しおよび書き込みパケット変換部204の回路の例を示す図である。図7に示した変換テーブル206の内容は通信先のサーバ130が属するVH#2における各値であって、受信パケットバッファ201に格納された変換前のメモリ読み出しパケット301あるいは書き込みパケット305のアドレスの上位桁である値1を変換回路701が読み取り、変換テーブル206のアドレスの項目が値1に対応するVH#の項目の値2へ変換して、送信パケットバッファ202のVH#へ設定する。
 次に、アドレスの変換について説明する。図6に示したとおり、通信元のサーバ110のVH#0の0x1789をVH#2のサーバ130のメモリ132内の領域135の0xN789へ変換する。ここでNはVH#2の初期設定時に領域135へ割り当てられたアドレスの上位桁である。このように上位桁のみを変換することによりVH#0の0x1000~0x1FFFをVH#2の0xN000~0xNFFFへマッピングさせることができる。このNは異なるVHごとに初期設定されるため、異なる値となり得る。これに対し、サーバ間通信機構160はVH#とNの対応関係を定めた変換テーブル206を備えるので、変換テーブル206を用いてNを決定することができ、パケットのアドレスを変換できる。
 具体的には図7に示したとおり、受信パケットバッファ201に格納されたアドレスの上位桁である値1に基づき、変換回路701は変換テーブル206のアドレスの項目が値1に対応する領域の項目のNへ変換して、送信パケットバッファ202のアドレスの上位桁へ設定する。また、アドレスの下位桁である値789を受信パケットバッファ201からコピー回路702が読み取り、送信パケットバッファ202のアドレスの下位桁へコピーする。これによりアドレスを0x1789から0xN789へ変換する。なお、ここでは下位桁をそのままコピーするとしたが、変換前アドレスと変換後アドレスとを1対1に対応付けるアドレス変換テーブルなどを別に設けてアドレスの下位桁を変換してもよい。
 次に、ReqIDの変換について説明する。ReqIDに含まれる通信元のBUS#は、対応するメモリ返却パケットの返信先として用いられる。このため、メモリ返却パケット303をサーバ間通信機構160が受信するには、変換前のメモリ読み出しパケット301のReqIDに含まれる通信元のサーバ110のBUS#をサーバ間通信機構160のBUS#へ変換する。ただし、DEV#とFUN#はルーティングに関与しないため変換の必要はない。
 また、図1を用いて説明したとおり、異なるVHごとにサーバ間通信機構160のBUS#は異なる値となる。これに対し、サーバ間通信機構160はVH#とBUS#の対応関係を定めた変換テーブル206を備えており、変換テーブル206を用いてBUS#を決定した上で、当該パケットのBUS#を変換する。
 具体的には図7に示したとおり、受信パケットバッファ201に格納されたアドレスの上位桁である値1に基づき、変換回路701は変換テーブル206のアドレスの項目が値1に対応するサーバ間通信機構BUS#の項目の値2へ変換して、送信パケットバッファ202のReqIDのBUS#へ設定する。
 そして、メモリ読み出しパケット301自体の変換としては必要ないが、後で行われるメモリ返却パケット303の変換で利用するために、受信パケットバッファ201に格納されたVH#の値0をコピー回路703が読み取り、送信パケットバッファ202のReqIDのDEV#、FUN#へコピーすなわち退避する。DEV#、FUN#はルーティングに使用されず、メモリ読み出しパケット302のReqIDと対応するメモリ返却パケット303のReqIDは同一であることがPCIeの仕様で保証されているため、退避領域とすることができ、メモリ返却パケット303の変換時に利用できる。
 なお、図4には示したが図7には示していないパケット内の各値は、受信パケットバッファ201内のパケットから送信パケットバッファ202内のパケットへそのままコピーされる。
 図3の動作シーケンスの内、ステップ316で行われるメモリ返却パケットの変換の動作について説明する。図5はPCIeの仕様に定められたメモリ返却パケットのヘッダのフォーマットを示す図である。ヘッダのReqIDが通信元であって返却先を示すIDであり、Completer ID(以下、CompIDとする)が通信先であって返却元を示すIDである。ここでもVH#は通信元と通信先では共通なため、ヘッダにはVH#が1つである。図8はメモリ返却パケット変換部205の回路の例を示す図である。図8に示した変換テーブル206の内容は通信元のサーバ110が属するVH#0における各値である。
 まず、変換前メモリ返却パケット303はVH#2内の通信先のサーバ130からの送信であるためVH#が値2であり、VH#0の通信元のサーバ110へ送信するにはVH#を値0へ変換する。このため、図7を用いて説明した変換後メモリ読み出しパケット302のReqIDのDEV#、FUN#へコピーしておいたVH#を利用する。変化後メモリ読み出しパケット302のDEV#、FUN#と変換前メモリ返却パケット303のReqIDのDEV#、FUN#とは同じ値であって通信元のVH#であるので、図8に示したコピー回路801がこの通信元のVH#の値0を受信パケットバッファ201から読み取り、送信パケットバッファ202のVH#へコピーする。
 次に、変換前メモリ返却パケット303のReqIDのBUS#はサーバ間通信機構160の値2であるから、通信元のサーバ110へ返信するにはBUS#を値0へ変換する。このため、変換回路802は通信元のVH#の値0を読み取り、変換テーブル206のVH#の項目の値0に対応する通信元サーバBUS#の値0を送信パケットバッファ304のReqIDのBUS#へ設定する。
 次に、変換前メモリ返却パケット303はBUS#の値0の通信先のサーバ130からの送信であるためCompIDのBUS#が値0であり、サーバ間通信機構160から通信元のサーバ110へ送信するにはCompIDのBUS#をサーバ間通信機構160のVH#0におけるBUS#の値3へ変換する。このため、変換回路802は読み取った通信元のVH#の値0に基づいて変換テーブル206のサーバ間通信機構BUS#の値3を送信パケットバッファ304のCompIDのBUS#へ設定する。
 なお、変換前メモリ返却パケット303のReqIDのDEV#、FUN#以外の図8に示した値は使用しない。また、変換後メモリ返却パケット304のReqIDとCompIDのDEV#、FUN#はルーティングには使用されないため所定の固定値を設定する。この固定値は通信元のサーバ110のドライバ113で受信可能な値である。変換テーブル206の領域の値KはVH#0に属するサーバ110が通信先となったときに使用されるサーバ110のメモリ112内の領域のアドレスであり、ここでは使用しない。そして、図5には示したが図8には示していないパケット内の各値は、受信パケットバッファ201内のパケットから送信パケットバッファ202内のパケットへそのままコピーする。
 変換テーブル206は図7、8を用いて説明したとおりに使用される。図7、8ではそれぞれ使用する値のみを図示したが、実際は図7で示した値と図8で示した値は1つのテーブルの各行として両方含まれ、図6のVH#1に関してもアドレスの値2などのテーブルの行が含まれ、さらにVHの個数が4以上存在すればVHの個数分のテーブルの行が含まれる。変換テーブル206の各値はPCIeを含むMR-IOV規格に定められた初期設定時に決定されるため、各VHに属するサーバのドライバ、例えばVH#0に属するサーバ110のドライバ113が図8に示した変換テーブル206のVH#0に関係する値を設定し、VH#2に属するサーバ130のドライバ133が図7に示した変換テーブル206のVH#2に関係する値を設定し、VH#1に属するサーバ120のドライバ123も同じように変換テーブル206のVH#1に関係する値を設定する。なお、オペレータの操作によりドライバ113を経由して変換テーブル206のVH#0に関係する値を設定してもよい。
 以上、説明したようにMR-IOVの構成においてサーバ間通信機構160がVH#、BUS#、アドレスを変換するため、サーバ110、130の間で互いにメモリ112、132の読み書きが可能となり、サーバ110、130の間で通信が可能となる。なお、サーバ110、130の間だけではなく、サーバ120も含めてさらに多くのサーバを備えた場合においてもそれらのサーバ間で通信が可能となる。また、サーバ間通信機構160をIOスイッチ140の内部へ組み込む実装も可能である。この場合はIOスイッチ140のサーバ間通信機構160を接続するポートを他のIOデバイスを接続するために利用可能となる。
(第2の実施の形態)
 以上の説明では図2、7、8で示したようにサーバ間通信機構160をハードウェアとして専用の回路で実装したが、一般的なコンピュータのソフトウェアとして実装することも可能である。コンピュータで実装した場合、そのコンピュータはサーバ間通信機構160以外に他の機能としても利用可能である。
 コンピュータは図2に示したIOインタフェース200に相当するPCIeの仕様に対応したインタフェースを備え、変換テーブル206をメモリに記憶して、図9~11を用いて説明するフローにしたがって動作する。
 図9は、メモリ読み出しパケット301、メモリ書き込みパケット305、メモリ返却パケット303のいずれかを受信してから、変換後のメモリ読み出しパケット302、メモリ書き込みパケット306、メモリ返却パケット304のいずれかを送信するまでの動作を示したフローの例を示す図である。まず、サーバ110、120、130のいずれからパケットを受信するまで待機し、パケットを受信する(ステップ901)。受信したパケットは受信パケットバッファ201に格納する(ステップ902)。変換したパケットを生成するために送信パケットバッファ202内に内容が未設定の空のパケットの領域を確保する(ステップ903)。ステップ902で受信パケットバッファ201へ格納したパケットのヘッダを読み出して、メモリ読み出しパケットであるかメモリ書き込みパケットであるかメモリ返却パケットであるかのパケットの種別を判別する。
 判別した種別がメモリ読み出しパケットあるいはメモリ書き込みパケットのいずれかである場合はステップ905へ進み、図3におけるパケット変換312に相当する処理を行う。この処理に関しては図10を用いて後で説明する。判別した種別がメモリ返却パケットの場合はステップ906へ進み、図3におけるパケット変換316に相当する処理を行う。この処理に関しては図11を用いて後で説明する。
 ステップ905、906の処理は送信パケットバッファ202内の空のパケットへ値をコピーあるいは設定することにより変換するため、ステップ907ではその変換したパケットを送信パケットバッファ202から送信する。
 図10はメモリ読み出しパケットとメモリ書き込みパケットの変換処理のフローの例を示す図である。パケット内の値の変換は図7を用いて説明した変換と同じである。まず、受信パケットバッフ201内のパケットのVH#を送信パケットバッファ内のパケットのReqIDのDEV#、FUN#へコピーすることにより通信元VH#を退避する(ステップ1001)。次に、アドレスの下位桁の値をコピーする(ステップ1002)。ここで、単にコピーせず、アドレス変換テーブルによりアドレスの下位桁の値を変換してもよい。
 次に、アドレスの上位桁の値を取得する(ステップ1003)。このアドレスの上位桁の値は変換テーブル206から値を取得する際のキーとなる。このキーに基づき変換テーブル206からVH#とサーバ間通信機構BUS#と領域アドレスを取得し、送信パケットバッファ202内の空パケットのVH#とReqIDのBUS#とアドレスの上位桁へそれぞれ設定する(ステップ1004~1006)。また、これら以外の受信パケットバッファ201内のパケットの各値は送信パケットバッファ202内の空のパケットへコピーする。そして、ステップ1007で図8に示したステップ907へ戻る。
 図11はメモリ返却パケットの変換処理のフローの例を示す図である。パケット内の値の変換は図8を用いて説明した変換と同じである。まず、ステップ1001で退避しておいた通信元VH#を受信パケットバッファ201内のパケットのReqIDのDEV#、FUN#から取得する(ステップ1101)。次に、取得した通信元VH#をコピーする(ステップ1102)。このVH#は変換テーブル206から値を取得する際のキーとなる。このキーに基づき変換テーブル206から通信元サーバBUS#とサーバ間通信機構BUS#を取得し、送信パケットバッファ202内の空パケットのReqIDのBUS#とCompIDのBUS#へそれぞれ設定する(ステップ1103、1104)。また、ReqIDのDEV#、FUN#とCompIDのDEV#、FUN#に固定値を設定し(ステップ1105)、これら以外の受信パケットバッファ201内のパケットの各値は送信パケットバッファ202内の空のパケットへコピーする。そして、ステップ1106で図8に示したステップ907へ戻る。
 以上、説明したようにMR-IOV規格に対応したサーバ間通信機構160として機能するコンピュータがVH#、BUS#、アドレスを変換するため、複数のサーバ間で互いにメモリの読み書きが可能となり、複数のサーバ間で通信が可能となる。特に、一般的なコンピュータを用いることにより低コストでサーバ間通信機構160を実現でき、コンピュータはサーバ間通信機構160以外にも利用可能である。
110、120、130 サーバ
140 IOスイッチ
151、152 IOデバイス
160 サーバ間通信機構
200 IOインタフェース
201 受信パケットバッファ
202 送信パケットバッファ
203 パケット種別判別部
204 メモリ読み出しおよび書き込みパケット変換部
205 メモリ返却パケット変換部
206 変換テーブル

Claims (9)

  1.  スイッチの上流に接続される複数のサーバと、前記スイッチの下流に接続される複数のIOデバイスと、サーバ間通信機構とを備えるサーバシステムにおいて、
    前記サーバ間通信機構は、
    通信元サーバから第1のパケットを受信する受信部と、
    変換部として、前記受信部の受信した第1のパケットのヘッダに含まれるアドレスに基づき変換テーブルを参照して前記第1のパケットのヘッダに含まれるVH#、BUS#、アドレスを通信先サーバの属するVH#、前記サーバ間通信機構のBUS#、前記通信先サーバ内のメモリのアドレスへそれぞれ変換する変換部と、
    前記変換部により変換された第1のパケットを前記通信先サーバへ送信する送信部と、
    を備えることを特徴とするサーバシステム。
  2.  前記サーバ間通信機構は、
    前記通信先サーバから第2のパケットを受信する前記受信部と、
    前記受信部の受信した第2のパケットのヘッダに含まれる前記通信元サーバの属するVH#に基づき前記変換テーブルを参照して通信元の識別子のBUS#と通信先の識別子のBUS#を前記通信元サーバのBUS#と前記サーバ間通信機構のBUS#へそれぞれ変換する変換部と、
    前記変換部により変換された第2のパケットを前記通信元サーバへ送信する前記送信部と、
    を備えることを特徴とする請求項1に記載のサーバシステム。
  3.  前記第1のパケットはメモリ読み出しパケットあるいはメモリ書き込みパケットであり、
    前記第2のパケットはメモリ返却パケットであり、
    前記サーバ間通信機構は、前記第1のパケットと前記第2のパケットとを判別する判別部を備えたことを特徴とする請求項2に記載のサーバシステム。
  4.  前記変換テーブルは、前記第1のパケットのヘッダに含まれるアドレスの一部と、
    前記通信元サーバのBUS#と、前記通信先サーバの属するVH#と、前記通信先サーバが認識する前記サーバ間通信機構のBUS#と、前記通信先サーバのメモリ領域のアドレスの一部との少なくとも2つを対応付ける情報を含むことを特徴とする請求項3に記載のサーバシステム。
  5.  前記サーバ間通信機構は前記スイッチ内部に組み込まれることを特徴とする請求項1に記載のサーバシステム。
  6.  複数サーバとスイッチ経由で接続されるサーバ間通信機構を用いた前記複数サーバ間における通信方法であって、
    前記サーバ間通信機構は、
    通信元サーバから第1のパケットを受信し、
    前記受信した第1のパケットのヘッダに含まれるアドレスに基づき変換テーブルを参照し、
    前記参照した変換テーブルに基づき前記第1のパケットのヘッダに含まれるVH#、BUS#、アドレスを通信先サーバの属するVH#、前記サーバ間通信機構のBUS#、前記通信先サーバ内のメモリのアドレスへそれぞれ変換し、
    前記変換された第1のパケットを前記通信先サーバへ送信すること
    を特徴とする複数サーバ間における通信方法。
  7.  前記サーバ間通信機構は、
    前記通信先サーバから第2のパケットを受信し、
    前記受信した第2のパケットのヘッダに含まれる前記通信元サーバの属するVH#に基づき前記変換テーブルを参照し、
    前記参照した変換テーブルに基づき通信元の識別子のBUS#と通信先の識別子のBUS#を前記通信元サーバのBUS#と前記サーバ間通信機構のBUS#へそれぞれ変換し、
    前記変換された第2のパケットを前記通信元サーバへ送信すること
    を特徴とする請求項6に記載の複数サーバ間における通信方法。
  8.  前記第1のパケットはメモリ読み出しパケットあるいはメモリ書き込みパケットであり、
    前記第2のパケットはメモリ返却パケットであり、
    前記サーバ間通信機構は、前記第1のパケットと前記第2のパケットとを判別することを特徴とする請求項7に記載の複数サーバ間における通信方法。
  9.  前記変換テーブルは、前記第1のパケットのヘッダに含まれるアドレスの一部と、
    前記通信元サーバのBUS#と、前記通信先サーバの属するVH#と、前記通信先サーバが認識する前記サーバ間通信機構のBUS#と、前記通信先サーバのメモリ領域のアドレスの一部との少なくとも2つを対応付ける情報を含むことを特徴とする請求項8に記載の複数サーバ間における通信方法。
PCT/JP2013/071074 2013-08-02 2013-08-02 サーバ間通信機構を備えるサーバシステムおよびその複数サーバ間における通信方法 WO2015015652A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/071074 WO2015015652A1 (ja) 2013-08-02 2013-08-02 サーバ間通信機構を備えるサーバシステムおよびその複数サーバ間における通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/071074 WO2015015652A1 (ja) 2013-08-02 2013-08-02 サーバ間通信機構を備えるサーバシステムおよびその複数サーバ間における通信方法

Publications (1)

Publication Number Publication Date
WO2015015652A1 true WO2015015652A1 (ja) 2015-02-05

Family

ID=52431222

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/071074 WO2015015652A1 (ja) 2013-08-02 2013-08-02 サーバ間通信機構を備えるサーバシステムおよびその複数サーバ間における通信方法

Country Status (1)

Country Link
WO (1) WO2015015652A1 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006058956A (ja) * 2004-08-17 2006-03-02 Nec Corp マルチノードコンピュータシステム、マルチノード間におけるデータの転送方法及びプログラム
JP2009282917A (ja) * 2008-05-26 2009-12-03 Hitachi Ltd サーバ間通信機構及びコンピュータシステム
US20110029734A1 (en) * 2009-07-29 2011-02-03 Solarflare Communications Inc Controller Integration
JP2011180933A (ja) * 2010-03-03 2011-09-15 Hitachi Ltd I/oスイッチおよびそれを備えたコンピュータシステム
WO2012150608A1 (en) * 2011-04-30 2012-11-08 Ineda Systems Pvt. Ltd Peripheral device sharing in multi host computing systems
WO2012157103A1 (ja) * 2011-05-19 2012-11-22 株式会社日立製作所 マルチルートスイッチ、計算機、及び計算機間通信方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006058956A (ja) * 2004-08-17 2006-03-02 Nec Corp マルチノードコンピュータシステム、マルチノード間におけるデータの転送方法及びプログラム
JP2009282917A (ja) * 2008-05-26 2009-12-03 Hitachi Ltd サーバ間通信機構及びコンピュータシステム
US20110029734A1 (en) * 2009-07-29 2011-02-03 Solarflare Communications Inc Controller Integration
JP2011180933A (ja) * 2010-03-03 2011-09-15 Hitachi Ltd I/oスイッチおよびそれを備えたコンピュータシステム
WO2012150608A1 (en) * 2011-04-30 2012-11-08 Ineda Systems Pvt. Ltd Peripheral device sharing in multi host computing systems
WO2012157103A1 (ja) * 2011-05-19 2012-11-22 株式会社日立製作所 マルチルートスイッチ、計算機、及び計算機間通信方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JIM BARDGETT ET AL.: "nSwitching: Virtual Machine Aware Relay Hardware Switching to improve intra-NIC Virtual Machine Traffic", 2012 IEEE INTERNATIONAL CONFERENCE ON COMMUNICATIONS (ICC, 15 June 2012 (2012-06-15), pages 2700 - 2705 *

Similar Documents

Publication Publication Date Title
US8463934B2 (en) Unified system area network and switch
US9025495B1 (en) Flexible routing engine for a PCI express switch and method of use
JP5360607B2 (ja) Pciエクスプレススイッチ、pciエクスプレスシステム、及びネットワーク制御方法
US10263891B2 (en) Switching device, computer system, method, and program
US9146890B1 (en) Method and apparatus for mapped I/O routing in an interconnect switch
US9519606B2 (en) Network switch
JP2015537310A (ja) データ処理システム及びデータ処理方法
CN103117929A (zh) 一种基于PCIe数据交换的通信方法及系统
US9292462B2 (en) Broadcast for a distributed switch network
JP5660053B2 (ja) ネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体
WO2021051919A1 (zh) 一种数据转发芯片及服务器
US9021125B2 (en) Control path I/O virtualisation
EP2515241B1 (en) Unified system area network and switch
US11409679B2 (en) System component and use of a system component
JP2008541276A (ja) 同時読み出し応答確認拡張ダイレクト・メモリ・アクセス・ユニット
US10599600B2 (en) Peripheral Component Interconnect Express (PCIe) switching for multi-host computing system deployments
TWI791134B (zh) 通信裝置、資訊處理系統及通信方法
WO2015015652A1 (ja) サーバ間通信機構を備えるサーバシステムおよびその複数サーバ間における通信方法
US11386031B2 (en) Disaggregated switch control path with direct-attached dispatch
WO2023112646A1 (ja) 情報処理装置、及び情報処理装置の制御方法
JP2023143302A (ja) 中継装置および中継方法
KR102496994B1 (ko) PCIe 인터페이스 장치 및 그 동작 방법
US20200341928A1 (en) Information processing system
CN116955250A (zh) 快速外围组件互连设备及其操作方法

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13890720

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP