From 03c1ae8ae912d37d5d774d3ec32f8bdc103f9cb4 Mon Sep 17 00:00:00 2001 From: jcf94-node19 Date: Mon, 27 Nov 2017 14:35:30 +0800 Subject: [PATCH] First commit --- .gitignore | 4 + Makefile | 28 ++++ README.md | 1 + log | Bin 0 -> 574144 bytes main.cpp | 50 +++++++ src/rdma_buffer.cpp | 31 +++++ src/rdma_buffer.h | 38 ++++++ src/rdma_endpoint.cpp | 215 ++++++++++++++++++++++++++++++ src/rdma_endpoint.h | 51 ++++++++ src/rdma_message.cpp | 108 +++++++++++++++ src/rdma_message.h | 61 +++++++++ src/rdma_pre.cpp | 296 ++++++++++++++++++++++++++++++++++++++++++ src/rdma_pre.h | 47 +++++++ src/rdma_session.cpp | 261 +++++++++++++++++++++++++++++++++++++ src/rdma_session.h | 53 ++++++++ src/rdma_util.cpp | 35 +++++ src/rdma_util.h | 134 +++++++++++++++++++ 17 files changed, 1413 insertions(+) create mode 100755 .gitignore create mode 100755 Makefile create mode 100755 README.md create mode 100755 log create mode 100755 main.cpp create mode 100755 src/rdma_buffer.cpp create mode 100755 src/rdma_buffer.h create mode 100755 src/rdma_endpoint.cpp create mode 100755 src/rdma_endpoint.h create mode 100755 src/rdma_message.cpp create mode 100755 src/rdma_message.h create mode 100755 src/rdma_pre.cpp create mode 100755 src/rdma_pre.h create mode 100755 src/rdma_session.cpp create mode 100755 src/rdma_session.h create mode 100755 src/rdma_util.cpp create mode 100755 src/rdma_util.h diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..d81646e --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +all +rdmalib.a +src/*.o +.vscode/* \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100755 index 0000000..6adb087 --- /dev/null +++ b/Makefile @@ -0,0 +1,28 @@ +CXX = g++ +CXXFLAGS = -std=c++11 -g3 + +SRC = $(wildcard src/*.cpp) +OBJ = $(patsubst %.cpp,%.o,$(SRC)) + +CLEAN-O = rm -f src/*.o + +all: main.cpp rdmalib.a + $(CXX) $(CXXFLAGS) -o $@ $^ -libverbs -lmlx4 -pthread + $(CLEAN-O) + @echo "┌──────────────────────────────┐" + @echo "| Target Make Success |" + @echo "└──────────────────────────────┘" + +rdmalib.a: $(OBJ) + ar rc $@ $^ + +clean: + rm -f all rdmalib.a + $(CLEAN-O) + @echo "┌──────────────────────────────┐" + @echo "| Target Clean Success |" + @echo "└──────────────────────────────┘" + +aaa: + @echo $(SRC) + @echo $(OBJ) \ No newline at end of file diff --git a/README.md b/README.md new file mode 100755 index 0000000..44adafa --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# A Simple RDMA based communication framework diff --git a/log b/log new file mode 100755 index 0000000000000000000000000000000000000000..68cd5decdee20ef19417a58ecf47567f798b6a25 GIT binary patch literal 574144 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%0Dx_zZgELJgS4Jn*e`tudK^X@yHUJ}0&Y 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 + } + + //session.endpoint_->send_message(RDMA_MESSAGE_ACK); + //session.endpoint_->send_message(RDMA_MESSAGE_CLOSE); + } + + return 0; +} \ No newline at end of file diff --git a/src/rdma_buffer.cpp b/src/rdma_buffer.cpp new file mode 100755 index 0000000..63e076d --- /dev/null +++ b/src/rdma_buffer.cpp @@ -0,0 +1,31 @@ +/* *********************************************** +MYID : Chen Fan +LANG : G++ +PROG : RDMA_BUFFER_CPP +************************************************ */ + +#include "rdma_buffer.h" + +RDMA_Buffer::RDMA_Buffer(ibv_pd* pd, int size) + : size_(size), status_(IDLE) +{ + buffer_ = malloc(size_); + mr_ = ibv_reg_mr(pd, buffer_, size_, + IBV_ACCESS_LOCAL_WRITE | IBV_ACCESS_REMOTE_WRITE | IBV_ACCESS_REMOTE_READ); + if (!mr_) + { + log_error("Failed to register memory region"); + } + + log_info("RDMA_Buffer Created"); +} + +RDMA_Buffer::~RDMA_Buffer() +{ + if (ibv_dereg_mr(mr_)) + { + log_error("ibv_dereg_mr failed"); + } + + log_info("RDMA_Buffer Deleted"); +} \ No newline at end of file diff --git a/src/rdma_buffer.h b/src/rdma_buffer.h new file mode 100755 index 0000000..4296e25 --- /dev/null +++ b/src/rdma_buffer.h @@ -0,0 +1,38 @@ +/* *********************************************** +MYID : Chen Fan +LANG : G++ +PROG : RDMA_BUFFER_H +************************************************ */ + +#ifndef RDMA_BUFFER_H +#define RDMA_BUFFER_H + +#include "rdma_util.h" + +enum Buffer_status +{ + NONE, + IDLE, + LOCK +}; + +class RDMA_Buffer +{ +public: + friend class RDMA_Pre; + friend class RDMA_Endpoint; + friend class RDMA_Message; + friend class RDMA_Session; + + RDMA_Buffer(ibv_pd* pd, int size); + ~RDMA_Buffer(); + +private: + + void* buffer_ = NULL; + uint64_t size_; + ibv_mr* mr_; + Buffer_status status_; +}; + +#endif // !RDMA_BUFFER_H \ No newline at end of file diff --git a/src/rdma_endpoint.cpp b/src/rdma_endpoint.cpp new file mode 100755 index 0000000..94fd01e --- /dev/null +++ b/src/rdma_endpoint.cpp @@ -0,0 +1,215 @@ +/* *********************************************** +MYID : Chen Fan +LANG : G++ +PROG : RDMA_ENDPOINT_CPP +************************************************ */ + +#include "rdma_endpoint.h" + +RDMA_Endpoint::RDMA_Endpoint(RDMA_Session* session, int ib_port) + : session_(session), ib_port_(ib_port), connected_(false) +{ + // create the Queue Pair + struct ibv_qp_init_attr qp_init_attr; + memset(&qp_init_attr, 0, sizeof(qp_init_attr)); + + qp_init_attr.qp_type = IBV_QPT_RC; + // qp_init_attr.sq_sig_all = 1; + qp_init_attr.send_cq = session_->cq_; + qp_init_attr.recv_cq = session_->cq_; + qp_init_attr.cap.max_send_wr = RDMA_Session::CQ_SIZE; + qp_init_attr.cap.max_recv_wr = RDMA_Session::CQ_SIZE; + qp_init_attr.cap.max_send_sge = 1; + qp_init_attr.cap.max_recv_sge = 1; + + qp_ = ibv_create_qp(session_->pd_, &qp_init_attr); + if (!qp_) + { + log_error("failed to create QP"); + // return 1; + } + + log_info(make_string("QP was created, QP number=0x%x\n", qp_->qp_num)); + + modify_qp_to_init(); + + // Local address + struct ibv_port_attr attr; + if (ibv_query_port(session_->context_, ib_port_, &attr)) + { + log_error(make_string("ibv_query_port on port %u failed", ib_port_)); + } + self_.lid = attr.lid; + self_.qpn = qp_->qp_num; + self_.psn = static_cast(New64()) & 0xffffff; + + // int SIZE = 32; + // // Create Message Buffer ...... + // incoming_mbuffer_ = new RDMA_Buffer(this, SIZE); + // outgoing_mbuffer_ = new RDMA_Buffer(this, SIZE); + // // ACK Buffer ...... + // incoming_abuffer_ = new RDMA_Buffer(this, SIZE); + // outgoing_abuffer_ = new RDMA_Buffer(this, SIZE); + message_ = new RDMA_Message(session_->pd_, qp_); + + // post recv + for (int i=0;i<100;i++) + { + recv(); + } + + log_info("RDMA_Endpoint Created"); +} + +RDMA_Endpoint::~RDMA_Endpoint() +{ + delete message_; + + if (ibv_destroy_qp(qp_)) + { + log_error("Failed to destroy QP"); + } + + log_info("RDMA_Endpoint Deleted"); +} + +void RDMA_Endpoint::connect() +{ + if (connected_) + { + log_info("Channel Already Connected."); + } else + { + modify_qp_to_rtr(); + modify_qp_to_rts(); + + connected_ = true; + } +} + +void RDMA_Endpoint::recv() +{ + struct ibv_recv_wr wr; + memset(&wr, 0, sizeof(wr)); + wr.wr_id = (uint64_t) this; // Which RDMA_Endpoint get this message + struct ibv_recv_wr* bad_wr; + if (ibv_post_recv(qp_, &wr, &bad_wr)) + { + log_error("Failed to post recv"); + } +} + +void RDMA_Endpoint::send_message(Message_type msgt) +{ + message_->send(msgt); +} + +void RDMA_Endpoint::read_data(RDMA_Buffer* buffer, Remote_info msg) +{ + struct ibv_sge list; + list.addr = (uint64_t) buffer->buffer_; + list.length = msg.buffer_size_; + list.lkey = buffer->mr_->lkey; + + struct ibv_send_wr wr; + memset(&wr, 0, sizeof(wr)); + wr.wr_id = (uint64_t) buffer; + wr.sg_list = &list; + wr.num_sge = 1; + wr.opcode = IBV_WR_RDMA_READ; + wr.send_flags = IBV_SEND_SIGNALED; + wr.wr.rdma.remote_addr = (uint64_t) msg.remote_addr_; + wr.wr.rdma.rkey = msg.rkey_; + + struct ibv_send_wr *bad_wr; + if (ibv_post_send(qp_, &wr, &bad_wr)) + { + log_error("Failed to post send"); + } +} + +int RDMA_Endpoint::modify_qp_to_init() +{ + struct ibv_qp_attr attr; + int flags; + int rc; + + // do the following QP transition: RESET -> INIT + memset(&attr, 0, sizeof(attr)); + attr.qp_state = IBV_QPS_INIT; + attr.port_num = ib_port_; + attr.pkey_index = 0; + attr.qp_access_flags = IBV_ACCESS_LOCAL_WRITE | IBV_ACCESS_REMOTE_WRITE | IBV_ACCESS_REMOTE_READ; + + flags = IBV_QP_STATE | IBV_QP_PKEY_INDEX | IBV_QP_PORT | IBV_QP_ACCESS_FLAGS; + + rc = ibv_modify_qp(qp_, &attr, flags); + if (rc) { + fprintf(stderr, "failed to modify QP state to INIT\n"); + return rc; + } + + return 0; +} + +int RDMA_Endpoint::modify_qp_to_rtr() +{ + struct ibv_qp_attr attr; + int flags; + int rc; + + // do the following QP transition: INIT -> RTR + memset(&attr, 0, sizeof(attr)); + + attr.qp_state = IBV_QPS_RTR; + attr.path_mtu = IBV_MTU_4096; + attr.dest_qp_num = remote_.qpn; + attr.rq_psn = remote_.psn; + attr.max_dest_rd_atomic = 1; + attr.min_rnr_timer = 0x12; + attr.ah_attr.is_global = 0; + attr.ah_attr.dlid = remote_.lid; + attr.ah_attr.sl = 0; + attr.ah_attr.src_path_bits = 0; + attr.ah_attr.port_num = ib_port_; + + flags = IBV_QP_STATE | IBV_QP_AV | IBV_QP_PATH_MTU | IBV_QP_DEST_QPN | + IBV_QP_RQ_PSN | IBV_QP_MAX_DEST_RD_ATOMIC | IBV_QP_MIN_RNR_TIMER; + + rc = ibv_modify_qp(qp_, &attr, flags); + if (rc) { + fprintf(stderr, "failed to modify QP state to RTR\n"); + return rc; + } + + return 0; +} + +int RDMA_Endpoint::modify_qp_to_rts() +{ + struct ibv_qp_attr attr; + int flags; + int rc; + + // do the following QP transition: RTR -> RTS + memset(&attr, 0, sizeof(attr)); + + attr.qp_state = IBV_QPS_RTS; + attr.timeout = 0x14; + attr.retry_cnt = 7; + attr.rnr_retry = 7; // infinite + attr.sq_psn = self_.psn; + attr.max_rd_atomic = 1; + + flags = IBV_QP_STATE | IBV_QP_TIMEOUT | IBV_QP_RETRY_CNT | + IBV_QP_RNR_RETRY | IBV_QP_SQ_PSN | IBV_QP_MAX_QP_RD_ATOMIC; + + rc = ibv_modify_qp(qp_, &attr, flags); + if (rc) { + fprintf(stderr, "failed to modify QP state to RTS\n"); + return rc; + } + + return 0; +} + diff --git a/src/rdma_endpoint.h b/src/rdma_endpoint.h new file mode 100755 index 0000000..0628176 --- /dev/null +++ b/src/rdma_endpoint.h @@ -0,0 +1,51 @@ +/* *********************************************** +MYID : Chen Fan +LANG : G++ +PROG : RDMA_ENDPOINT_H +************************************************ */ + +#ifndef RDMA_ENDPOINT_H +#define RDMA_ENDPOINT_H + +#include + +#include "rdma_session.h" +#include "rdma_message.h" + +class RDMA_Buffer; +class RDMA_Session; + +class RDMA_Endpoint +{ +public: + friend class RDMA_Pre; + friend class RDMA_Buffer; + friend class RDMA_Message; + friend class RDMA_Session; + + RDMA_Endpoint(RDMA_Session* session, int ib_port); + ~RDMA_Endpoint(); + + void connect(); + void recv(); + void send_message(Message_type msgt); + void read_data(RDMA_Buffer* buffer, Remote_info msg); + +private: + int modify_qp_to_init(); + int modify_qp_to_rtr(); + int modify_qp_to_rts(); + + bool connected_; + int ib_port_; + + RDMA_Session* session_; + // Queue Pair + ibv_qp* qp_; + RDMA_Address self_, remote_; + // Message Buffer + RDMA_Message* message_; + //std::map buffer_table_; +}; + +#endif // !RDMA_ENDPOINT_H \ No newline at end of file diff --git a/src/rdma_message.cpp b/src/rdma_message.cpp new file mode 100755 index 0000000..ee1808d --- /dev/null +++ b/src/rdma_message.cpp @@ -0,0 +1,108 @@ +/* *********************************************** +MYID : Chen Fan +LANG : G++ +PROG : RDMA_MESSAGE_CPP +************************************************ */ + +#include "rdma_message.h" + +std::string get_message(Message_type msgt) +{ + switch(msgt) + { + case RDMA_MESSAGE_ACK: + return "RDMA_MESSAGE_ACK"; + break; + case RDMA_MESSAGE_BUFFER_UNLOCK: + return "RDMA_MESSAGE_BUFFER_UNLOCK"; + break; + case RDMA_MESSAGE_READ_REQUEST: + return "RDMA_MESSAGE_READ_REQUEST"; + break; + case RDMA_MESSAGE_CLOSE: + return "RDMA_MESSAGE_CLOSE"; + break; + default: + return "UNKNOWN MESSAGE"; + } +} + +RDMA_Message::RDMA_Message(ibv_pd* pd, ibv_qp* qp) + : qp_(qp), pd_(pd) +{ + // Create Message Buffer ...... + incoming_ = new RDMA_Buffer(pd_, kMessageTotalBytes); + outgoing_ = new RDMA_Buffer(pd_, kMessageTotalBytes); + + log_info("RDMA_Message Created"); +} + +RDMA_Message::~RDMA_Message() +{ + delete incoming_; + delete outgoing_; + + log_info("RDMA_Message Deleted"); +} + +void RDMA_Message::write(uint32_t imm_data, size_t size) +{ + struct ibv_sge list; + list.addr = (uint64_t) outgoing_->buffer_; // Message + list.length = size; // Message size + list.lkey = outgoing_->mr_->lkey; + + struct ibv_send_wr wr; + memset(&wr, 0, sizeof(wr)); + wr.wr_id = (uint64_t) this; // Which RDMA_Message send this message + wr.sg_list = &list; + wr.num_sge = 1; + wr.opcode = IBV_WR_RDMA_WRITE_WITH_IMM; + wr.send_flags = IBV_SEND_SIGNALED; + wr.imm_data = imm_data; + wr.wr.rdma.remote_addr = (uint64_t) remote_mr_.remote_addr; + wr.wr.rdma.rkey = remote_mr_.rkey; + + struct ibv_send_wr *bad_wr; + if (ibv_post_send(qp_, &wr, &bad_wr)) + { + log_error("Failed to send message: ibv_post_send error"); + } else + { + log_info(make_string("Message post: %s", get_message((Message_type)imm_data).data())); + } + +} + +void RDMA_Message::send(Message_type msgt, Remote_info* msg) +{ + switch(msgt) + { + case RDMA_MESSAGE_ACK: + case RDMA_MESSAGE_BUFFER_UNLOCK: + case RDMA_MESSAGE_CLOSE: + { + write(msgt, 0); + break; + } + case RDMA_MESSAGE_READ_REQUEST: + { + outgoing_->status_ = LOCK; + char* target = (char*)outgoing_->buffer_; + + char a[] = "helloworld"; + RDMA_Buffer* test_new = new RDMA_Buffer(pd_, sizeof(a)); + memcpy(test_new->buffer_, &a, sizeof(a)); + memcpy(&target[kBufferSizeStartIndex], &(test_new->size_), sizeof(test_new->size_)); + memcpy(&target[kRemoteAddrStartIndex], &(test_new->buffer_), sizeof(test_new->buffer_)); + memcpy(&target[kRkeyStartIndex], &(test_new->mr_->rkey), sizeof(test_new->mr_->rkey)); + + write(msgt, kMessageTotalBytes); + break; + } + default: + { + + } + } +} \ No newline at end of file diff --git a/src/rdma_message.h b/src/rdma_message.h new file mode 100755 index 0000000..80592d2 --- /dev/null +++ b/src/rdma_message.h @@ -0,0 +1,61 @@ +/* *********************************************** +MYID : Chen Fan +LANG : G++ +PROG : RDMA_MESSAGE_H +************************************************ */ + +#ifndef RDMA_MESSAGE_H +#define RDMA_MESSAGE_H + +#include "rdma_buffer.h" + +enum Message_type +{ + RDMA_MESSAGE_ACK, + RDMA_MESSAGE_BUFFER_UNLOCK, + RDMA_MESSAGE_READ_REQUEST, + RDMA_MESSAGE_CLOSE +}; + +std::string get_message(Message_type msgt); + +struct Remote_info +{ + uint64_t buffer_size_; + uint64_t remote_addr_; + uint32_t rkey_; + + // |buffer_size|remote_addr|rkey| + // | 8B | 8B | 4B | +}; + +static const size_t kBufferSizeStartIndex = 0; +static const size_t kRemoteAddrStartIndex = kBufferSizeStartIndex + sizeof(Remote_info::buffer_size_); +static const size_t kRkeyStartIndex = kRemoteAddrStartIndex + sizeof(Remote_info::remote_addr_); +static const size_t kMessageTotalBytes = kRkeyStartIndex + sizeof(Remote_info::rkey_); + +class RDMA_Message +{ +public: + friend class RDMA_Pre; + friend class RDMA_Session; + friend class RDMA_Endpoint; + + RDMA_Message(ibv_pd* pd, ibv_qp* qp); + ~RDMA_Message(); + + void send(Message_type msgt, Remote_info* msg = NULL); + void write(uint32_t imm_data, size_t size); + +private: + void ParseMessage(Message_type& rm, void* buffer); + + ibv_pd* pd_; + ibv_qp* qp_; + + RDMA_Buffer* incoming_; + RDMA_Buffer* outgoing_; + Remote_MR remote_mr_; +}; + +#endif // !RDMA_MESSAGE_H \ No newline at end of file diff --git a/src/rdma_pre.cpp b/src/rdma_pre.cpp new file mode 100755 index 0000000..8e23274 --- /dev/null +++ b/src/rdma_pre.cpp @@ -0,0 +1,296 @@ +/* *********************************************** +MYID : Chen Fan +LANG : G++ +PROG : RDMA_PRE_CPP +************************************************ */ + +#include +#include +#include +#include + +#include "rdma_pre.h" + +// structure to exchange data which is needed to connect the QPs +struct cm_con_data_t { + uint64_t maddr; // Buffer address + uint32_t mrkey; // Remote key + uint32_t qpn; // QP number + uint32_t lid; // LID of the IB port + uint32_t psn; +} __attribute__ ((packed)); + +RDMA_Pre::RDMA_Pre() +{ + log_info("RDMA_Pre Created"); +} + +RDMA_Pre::~RDMA_Pre() +{ + log_info("RDMA_Pre Deleted"); +} + +void RDMA_Pre::print_config() +{ + log_func(); + fprintf(stdout, " ------------------------------------------------\n"); + if (config.dev_name) fprintf(stdout, " Device name : \"%s\"\n", config.dev_name); + else fprintf(stdout, " Device name : No Default Device\n"); + fprintf(stdout, " IB port : %u\n", config.ib_port); + if (config.server_name) + fprintf(stdout, " IP : %s\n", config.server_name); + fprintf(stdout, " TCP port : %u\n", config.tcp_port); + fprintf(stdout, " ------------------------------------------------\n\n"); +} + +void RDMA_Pre::tcp_sock_connect() +{ + if (config.server_name) + { + remote_sock_ = sock_client_connect(config.server_name, config.tcp_port); + if (remote_sock_ < 0) { + log_error(make_string("failed to establish TCP connection to server %s, port %d", config.server_name, config.tcp_port)); + return; + } + } else + { + log_ok(make_string("waiting on port %d for TCP connection\n", config.tcp_port)); + remote_sock_ = sock_daemon_connect(config.tcp_port); + if (remote_sock_ < 0) { + log_error(make_string("failed to establish TCP connection with client on port %d", config.tcp_port)); + return; + } + } + log_ok("TCP connection was established"); +} + +int RDMA_Pre::tcp_endpoint_connect(RDMA_Endpoint* endpoint) +{ + struct cm_con_data_t local_con_data, tmp_con_data; + int rc; + + // exchange using TCP sockets info required to connect QPs + local_con_data.maddr = htonll((uintptr_t)endpoint->message_->incoming_->buffer_); + local_con_data.mrkey = htonl(endpoint->message_->incoming_->mr_->rkey); + local_con_data.qpn = htonl(endpoint->self_.qpn); + local_con_data.lid = htonl(endpoint->self_.lid); + local_con_data.psn = htonl(endpoint->self_.psn); + + log_info(make_string("Local QP number = 0x%x", endpoint->self_.qpn)); + log_info(make_string("Local LID = 0x%x", endpoint->self_.lid)); + log_info(make_string("Local PSN = 0x%x", endpoint->self_.psn)); + + if (sock_sync_data(remote_sock_, !config.server_name, sizeof(struct cm_con_data_t), &local_con_data, &tmp_con_data) < 0) + { + log_error("failed to exchange connection data between sides"); + return 1; + } + + endpoint->message_->remote_mr_.remote_addr = ntohll(tmp_con_data.maddr); + endpoint->message_->remote_mr_.rkey = ntohl(tmp_con_data.mrkey); + endpoint->remote_.qpn = ntohl(tmp_con_data.qpn); + endpoint->remote_.lid = ntohl(tmp_con_data.lid); + endpoint->remote_.psn = ntohl(tmp_con_data.psn); + + /* save the remote side attributes, we will need it for the post SR */ + + //fprintf(stdout, "Remote address = 0x%"PRIx64"\n", remote_con_data.addr); + //fprintf(stdout, "Remote rkey = 0x%x\n", remote_con_data.rkey); + log_info(make_string("Remote QP number = 0x%x", endpoint->remote_.qpn)); + log_info(make_string("Remote LID = 0x%x", endpoint->remote_.lid)); + log_info(make_string("Remote PSN = 0x%x", endpoint->remote_.psn)); +} + +/***************************************** +* Function: sock_daemon_connect +*****************************************/ +int RDMA_Pre::sock_daemon_connect(int port) +{ + struct addrinfo *res, *t; + struct addrinfo hints = { + .ai_flags = AI_PASSIVE, + .ai_family = AF_UNSPEC, + .ai_socktype = SOCK_STREAM + }; + char *service; + int n; + int sockfd = -1, connfd; + + if (asprintf(&service, "%d", port) < 0) { + log_error("asprintf failed"); + return -1; + } + + n = getaddrinfo(NULL, service, &hints, &res); + if (n < 0) { + log_error(make_string("%s for port %d", gai_strerror(n), port)); + free(service); + return -1; + } + + for (t = res; t; t = t->ai_next) { + sockfd = socket(t->ai_family, t->ai_socktype, t->ai_protocol); + if (sockfd >= 0) { + n = 1; + + setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &n, sizeof n); + + if (!bind(sockfd, t->ai_addr, t->ai_addrlen)) + break; + close(sockfd); + sockfd = -1; + } + } + + freeaddrinfo(res); + free(service); + + if (sockfd < 0) { + log_error(make_string("couldn't listen to port %d", port)); + return -1; + } + + listen(sockfd, 1); + connfd = accept(sockfd, NULL, 0); + close(sockfd); + if (connfd < 0) { + log_error("accept() failed"); + return -1; + } + + return connfd; +} + +/***************************************** +* Function: sock_client_connect +*****************************************/ +int RDMA_Pre::sock_client_connect(const char *server_name, int port) +{ + struct addrinfo *res, *t; + struct addrinfo hints = { + .ai_flags = AI_PASSIVE, + .ai_family = AF_UNSPEC, + .ai_socktype = SOCK_STREAM + }; + + char *service; + int n; + int sockfd = -1; + + if (asprintf(&service, "%d", port) < 0) { + log_error("asprintf failed"); + return -1; + } + + n = getaddrinfo(server_name, service, &hints, &res); + if (n < 0) { + log_error(make_string("%s for %s:%d", gai_strerror(n), server_name, port)); + free(service); + return -1; + } + + for (t = res; t; t = t->ai_next) { + sockfd = socket(t->ai_family, t->ai_socktype, t->ai_protocol); + if (sockfd >= 0) { + if (!connect(sockfd, t->ai_addr, t->ai_addrlen)) + break; + close(sockfd); + sockfd = -1; + } + } + freeaddrinfo(res); + free(service); + + if (sockfd < 0) { + log_error(make_string("couldn't connect to %s:%d", server_name, port)); + return -1; + } + + return sockfd; +} + +/***************************************** +* Function: sock_recv +*****************************************/ +int RDMA_Pre::sock_recv(int sock_fd, size_t size, void *buf) +{ + int rc; + +retry_after_signal: + rc = recv(sock_fd, buf, size, MSG_WAITALL); + if (rc != size) { + fprintf(stderr, "recv failed: %s, rc=%d\n", strerror(errno), rc); + + if ((errno == EINTR) && (rc != 0)) + goto retry_after_signal; /* Interrupted system call */ + if (rc) + return rc; + else + return -1; + } + + return 0; +} + +/***************************************** +* Function: sock_send +*****************************************/ +int RDMA_Pre::sock_send(int sock_fd, size_t size, const void *buf) +{ + int rc; + + +retry_after_signal: + rc = send(sock_fd, buf, size, 0); + + if (rc != size) { + fprintf(stderr, "send failed: %s, rc=%d\n", strerror(errno), rc); + + if ((errno == EINTR) && (rc != 0)) + goto retry_after_signal; /* Interrupted system call */ + if (rc) + return rc; + else + return -1; + } + + return 0; +} + +/***************************************** +* Function: sock_sync_data +*****************************************/ +int RDMA_Pre::sock_sync_data(int sock_fd, int is_daemon, size_t size, const void *out_buf, void *in_buf) +{ + int rc; + + + if (is_daemon) { + rc = sock_send(sock_fd, size, out_buf); + if (rc) + return rc; + + rc = sock_recv(sock_fd, size, in_buf); + if (rc) + return rc; + } else { + rc = sock_recv(sock_fd, size, in_buf); + if (rc) + return rc; + + rc = sock_send(sock_fd, size, out_buf); + if (rc) + return rc; + } + + return 0; +} + +/***************************************** +* Function: sock_sync_ready +*****************************************/ +int RDMA_Pre::sock_sync_ready(int sock_fd, int is_daemon) +{ + char cm_buf = 'a'; + return sock_sync_data(sock_fd, is_daemon, sizeof(cm_buf), &cm_buf, &cm_buf); +} \ No newline at end of file diff --git a/src/rdma_pre.h b/src/rdma_pre.h new file mode 100755 index 0000000..7116da9 --- /dev/null +++ b/src/rdma_pre.h @@ -0,0 +1,47 @@ +/* *********************************************** +MYID : Chen Fan +LANG : G++ +PROG : RDMA_PRE_H +************************************************ */ + +#ifndef RDMA_PRE_H +#define RDMA_PRE_H + +#include "rdma_util.h" +#include "rdma_endpoint.h" + +static char LOCALHOST[] = "localhost"; + +class RDMA_Endpoint; + +class RDMA_Pre +{ +public: + RDMA_Pre(); + ~RDMA_Pre(); + + void print_config(); + void tcp_sock_connect(); + int tcp_endpoint_connect(RDMA_Endpoint* endpoint); + + config_t config = { + NULL, // dev_name + NULL, // server_name + 23333, // tcp_port + 1 // ib_port + }; + +private: + // tcp_socket + int sock_daemon_connect(int port); + int sock_client_connect(const char *server_name, int port); + int sock_recv(int sock_fd, size_t size, void *buf); + int sock_send(int sock_fd, size_t size, const void *buf); + int sock_sync_data(int sock_fd, int is_daemon, size_t size, const void *out_buf, void *in_buf); + int sock_sync_ready(int sock_fd, int is_daemon); + + int remote_sock_; + +}; + +#endif // !RDMA_PRE_H \ No newline at end of file diff --git a/src/rdma_session.cpp b/src/rdma_session.cpp new file mode 100755 index 0000000..572ac02 --- /dev/null +++ b/src/rdma_session.cpp @@ -0,0 +1,261 @@ +/* *********************************************** +MYID : Chen Fan +LANG : G++ +PROG : RDMA_SESSION_CPP +************************************************ */ + +#include "rdma_session.h" +#include +#include + +#define MSG_SIZE 20 + +RDMA_Session::RDMA_Session(RDMA_Pre* pre) + : config(pre->config) +{ + // init all of the resources, so cleanup will be easy + if (open_ib_device()) + { + return; + //goto cleanup; + } + + /* allocate Protection Domain */ + pd_ = ibv_alloc_pd(context_); + if (!pd_) + { + log_error("Failed to allocate protection domain"); + //return 1; + } + + /* Create completion endpoint */ + event_channel_ = ibv_create_comp_channel(context_); + if (!event_channel_) + { + log_error("Failed to create completion endpoint"); + //return 1; + } + + cq_ = ibv_create_cq(context_, CQ_SIZE, NULL, event_channel_, 0); + if (!cq_) + { + log_error(make_string("failed to create CQ with %u entries", CQ_SIZE)); + //return 1; + } + + if (ibv_req_notify_cq(cq_, 0)) + { + log_error("Countn't request CQ notification"); + //goto cleanup; + } + + // ------- new thread + //thread_ = new std::thread(std::bind(&RDMA_Adapter::Adapter_processCQ, this)); + thread_.reset(new std::thread(std::bind(&RDMA_Session::session_processCQ, this))); + + endpoint_ = new RDMA_Endpoint(this, config.ib_port); + + pre->tcp_endpoint_connect(endpoint_); + + endpoint_->connect(); + + log_info("RDMA_Session Created"); +} + +RDMA_Session::~RDMA_Session() +{ + stop_process(); + + delete endpoint_; + + thread_.reset(); + + if (ibv_destroy_cq(cq_)) + { + log_error("Failed to destroy CQ"); + } + + if (ibv_destroy_comp_channel(event_channel_)) + { + log_error("Failed to destroy completion channel"); + } + + if (ibv_dealloc_pd(pd_)) + { + log_error("Failed to deallocate PD"); + } + + log_info("RDMA_Session Deleted"); +} + +int RDMA_Session::open_ib_device() +{ + int i, num_devices; + struct ibv_device *ib_dev = NULL; + struct ibv_device **dev_list; + + log_ok("Starting Resources Initialization"); + log_ok("Searching for IB devices in host"); + + // get device names in the system + dev_list = ibv_get_device_list(&num_devices); + if (!dev_list) + { + log_error("failed to get IB devices list"); + return 1; + } + + // if there isn't any IB device in host + if (!num_devices) + { + log_error(make_string("found %d device(s)", num_devices)); + return 1; + } + log_info(make_string("found %d device(s)", num_devices)); + + if (!config.dev_name) + { + ib_dev = *dev_list; + if (!ib_dev) + { + log_error("No IB devices found"); + return 1; + } + } else + { + // search for the specific device we want to work with + for (i = 0; i < num_devices; i ++) + { + if (!strcmp(ibv_get_device_name(dev_list[i]), config.dev_name)) + { + ib_dev = dev_list[i]; + break; + } + } + // if the device wasn't found in host + if (!ib_dev) + { + log_error(make_string("IB device %s wasn't found", config.dev_name)); + return 1; + } + } + + // get device handle + context_ = ibv_open_device(ib_dev); + if (!context_) + { + log_error(make_string("failed to open device %s", config.dev_name)); + return 1; + } + + return 0; +} + +void RDMA_Session::stop_process() +{ + thread_->join(); +} + +void RDMA_Session::session_processCQ() +{ + bool doit = true; + while (doit) + { + ibv_cq* cq; + void* cq_context; + + if (ibv_get_cq_event(event_channel_, &cq, &cq_context)) + { + log_error("Failed to get cq_event"); + } + + if (cq != cq_) + { + log_error(make_string("CQ event for unknown CQ %p", cq)); + } + + ibv_ack_cq_events(cq, 1); + + if (ibv_req_notify_cq(cq_, 0)) + { + log_error("Countn't request CQ notification"); + } + + int ne = ibv_poll_cq(cq_, CQ_SIZE, static_cast(wc_)); + // VAL(ne); + if (ne > 0) + for (int i=0;i(wc_[i].wr_id); + // Consumed a ibv_post_recv, so add one + rc->recv(); + + Message_type msgt = (Message_type)wc_[i].imm_data; + log_info(make_string("Message Recv: %s", get_message(msgt).data())); + switch(msgt) + { + case RDMA_MESSAGE_ACK: + rc->message_->outgoing_->status_ = IDLE; + break; + case RDMA_MESSAGE_BUFFER_UNLOCK: + // + break; + case RDMA_MESSAGE_READ_REQUEST: + { + char* temp = (char*)rc->message_->incoming_->buffer_; + Remote_info msg; + memcpy(&(msg.buffer_size_), &temp[kBufferSizeStartIndex], 8); + memcpy(&(msg.remote_addr_), &temp[kRemoteAddrStartIndex], 8); + memcpy(&(msg.rkey_), &temp[kRkeyStartIndex], 4); + rc->send_message(RDMA_MESSAGE_ACK); + + RDMA_Buffer* test_new = new RDMA_Buffer(pd_, msg.buffer_size_); + rc->read_data(test_new, msg); + + // RDMA_READ + break; + } + case RDMA_MESSAGE_CLOSE: + doit = false; + break; + default: + ; + } + break; + } + case IBV_WC_RDMA_WRITE: // Send RDMA Message or Data + { + // Which RDMA_Message send this message/data + RDMA_Message* rm = reinterpret_cast(wc_[i].wr_id); + log_info(make_string("Message Send Success")); + + break; + } + case IBV_WC_RDMA_READ: + { + RDMA_Buffer* rb = reinterpret_cast(wc_[i].wr_id); + char* temp = (char*)rb->buffer_; + log_info(make_string("RDMA Read: %s", temp)); + + + + break; + } + default: + { + log_error("Unsupported opcode"); + } + } + } + } +} \ No newline at end of file diff --git a/src/rdma_session.h b/src/rdma_session.h new file mode 100755 index 0000000..9e4377f --- /dev/null +++ b/src/rdma_session.h @@ -0,0 +1,53 @@ +/* *********************************************** +MYID : Chen Fan +LANG : G++ +PROG : RDMA_SESSION_H +************************************************ */ + +#ifndef RDMA_SESSION_H +#define RDMA_SESSION_H + +#include "rdma_util.h" +#include "rdma_endpoint.h" +#include "rdma_pre.h" + +class RDMA_Endpoint; +class RDMA_Pre; + +class RDMA_Session +{ +public: + + friend class RDMA_Endpoint; + + RDMA_Session(RDMA_Pre* pre); + ~RDMA_Session(); + + void stop_process(); + + const static int CQ_SIZE = 1000; + // + RDMA_Endpoint* endpoint_; + +private: + int open_ib_device(); + void session_processCQ(); + + // device handle + ibv_context* context_; + // ibverbs protection domain + ibv_pd* pd_; + // Completion event endpoint, to wait for work completions + ibv_comp_channel* event_channel_; + // Completion queue, to poll on work completions + ibv_cq* cq_; + // Pre-allocated work completions array used for polling + ibv_wc wc_[CQ_SIZE]; + + //std::thread* thread_; + std::unique_ptr thread_; + + config_t config; +}; + +#endif // !RDMA_SESSION_H \ No newline at end of file diff --git a/src/rdma_util.cpp b/src/rdma_util.cpp new file mode 100755 index 0000000..064d90f --- /dev/null +++ b/src/rdma_util.cpp @@ -0,0 +1,35 @@ +/* *********************************************** +MYID : Chen Fan +LANG : G++ +PROG : RDMA_UTIL_CPP +************************************************ */ + +#include "rdma_util.h" + +std::string make_string(const char *fmt, ...) +{ + char * sz; + va_list ap; + va_start(ap, fmt); + if (vasprintf(&sz, fmt, ap) == -1) + throw std::runtime_error("memory allocation failed\n"); + va_end(ap); + std::string str(sz); + free(sz); + + return str; +} + +std::mt19937_64* InitRng() +{ + std::random_device device("/dev/urandom"); + return new std::mt19937_64(device()); +} + +long long New64() +{ + static std::mt19937_64* rng = InitRng(); + // static mutex mu; + // mutex_lock l(mu); + return (*rng)(); +} \ No newline at end of file diff --git a/src/rdma_util.h b/src/rdma_util.h new file mode 100755 index 0000000..074bbfd --- /dev/null +++ b/src/rdma_util.h @@ -0,0 +1,134 @@ +/* *********************************************** +MYID : Chen Fan +LANG : G++ +PROG : RDMA_UTIL_H +************************************************ */ + +#ifndef RDMA_UTIL_H +#define RDMA_UTIL_H + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#define DEV_MODE + +// ---- WHEEL +#ifdef _WIN32 +#define RESET "" +#define BLACK "" +#define RED "" +#define GREEN "" +#define YELLOW "" +#define BLUE "" +#define MAGENTA "" +#define CYAN "" +#define WHITE "" +#define BOLD_BLACK "\033[1m\033[30m" +#define BOLD_RED "\033[1m\033[31m" +#define BOLD_GREEN "\033[1m\033[32m" +#define BOLD_YELLOW "\033[1m\033[33m" +#define BOLD_BLUE "\033[1m\033[34m" +#define BOLD_MAGENTA "\033[1m\033[35m" +#define BOLD_CYAN "\033[1m\033[36m" +#define BOLD_WHITE "\033[1m\033[37m" +#else +#define RESET "\033[0m" +#define BLACK "\033[30m" +#define RED "\033[31m" +#define GREEN "\033[32m" +#define YELLOW "\033[33m" +#define BLUE "\033[34m" +#define MAGENTA "\033[35m" +#define CYAN "\033[36m" +#define WHITE "\033[37m" +#define BOLD_BLACK "\033[1m\033[30m" +#define BOLD_RED "\033[1m\033[31m" +#define BOLD_GREEN "\033[1m\033[32m" +#define BOLD_YELLOW "\033[1m\033[33m" +#define BOLD_BLUE "\033[1m\033[34m" +#define BOLD_MAGENTA "\033[1m\033[35m" +#define BOLD_CYAN "\033[1m\033[36m" +#define BOLD_WHITE "\033[1m\033[37m" +#endif // _WIN32 + +#define DIM(a) (sizeof(a)/sizeof(a[0])) + +#define log_error(x) do{std::cerr << RED << "[Error] " << x << " @" << __FILE__ << ":" << __LINE__ << RESET << std::endl;}while(false) +#define log_warning(x) do{std::cerr << YELLOW << "[Warning] " << x << " @" << __FILE__ << ":" << __LINE__ << RESET << std::endl;}while(false) +#define log_ok(x) do{std::cerr << GREEN << "[Ok] " << x << " @" << __FILE__ << ":" << __LINE__ << RESET << std::endl;}while(false) + +#ifdef DEV_MODE +#define VAL(x) do{std::cout << #x << " = " << (x) << std::endl;}while(false) +#define VAL_ARRAY(a) do{std::cout << #a << " = ["; std::for_each(a, a + DIM(a), [](int val__){std::cout << " " << val__ << " ";}); std::cout << "]\n";}while(false) +#ifdef _WIN32 +#define log_func() do{std::cerr << CYAN << "[Function] " << __FUNCTION__ << RESET << std::endl;}while(false) +#else +#define log_func() do{std::cerr << CYAN << "[Function] " << __PRETTY_FUNCTION__ << RESET << std::endl;}while(false) +#endif // _WIN32 +#define log_info(x) do{std::cerr << CYAN << "[Info] " << x << " @" << __FILE__ << ":" << __LINE__ << RESET << std::endl;}while(false) +#else +#define VAL(x) +#define VAL_ARRAY(a) +#define log_func() +#define log_info(x) +#endif // DEV_MODE + +#define ADDR(x) ((void**)&(x)) + +std::string make_string(const char *fmt, ...); +// ---- WHEEL + +// ---- UTILS +std::mt19937_64* InitRng(); +long long New64(); + +#if __BYTE_ORDER == __LITTLE_ENDIAN +static inline uint64_t htonll(uint64_t x) { return bswap_64(x); } +static inline uint64_t ntohll(uint64_t x) { return bswap_64(x); } +#elif __BYTE_ORDER == __BIG_ENDIAN +static inline uint64_t htonll(uint64_t x) { return x; } +static inline uint64_t ntohll(uint64_t x) { return x; } +#else +#error __BYTE_ORDER is neither __LITTLE_ENDIAN nor __BIG_ENDIAN +#endif +// ---- UTILS + +// ---- RDMA +struct RDMA_Address +{ + uint32_t lid; + uint32_t qpn; + uint32_t psn; +}; + +struct Remote_MR +{ + uint64_t remote_addr; + uint32_t rkey; +}; + +/* structure of test parameters */ +struct config_t +{ + char *dev_name; /* IB device name */ + char *server_name; /* daemon host name */ + uint32_t tcp_port; /* daemon TCP port */ + int ib_port; /* local IB port to work with */ +}; + +// ---- RDMA + +#endif // !RDMA_UTIL_H \ No newline at end of file