This paper proposes a congestion control algorithm for message routing in structured P2P networks by changing the routing table of nodes in the network to route the packet to the destination without going through congested nodes. The performance of the proposed the method has been evaluated and compared with the conventional Chord protocol. | Journal of Computer Science and Cybernetics, , (2018), 145–159 DOI CONGESTION CONTROL ALGORITHM FOR MESSAGE ROUTING IN STRUCTURED PEER-TO-PEER NETWORKS NGUYEN DINH NGHIA1 , NGUYEN HOAI SON2 1 People’s Security Academy of Engineering and Technology 1 nghiahvan@ 2 VNU-University Abstract. In structured peer-to-peer (P2P) networks, every node must perform message routing to deliver query messages to destination nodes. Therefore, they often have to process a large number of query messages quickly and efficiently. When the number of query messages sending to a node exceeds its routing capacity, a local congestion on the node occurs and reduces the information processing of the other nodes in the network. This paper proposes a congestion control algorithm for message routing in structured P2P networks by changing the routing table of nodes in the network to route the packet to the destination without going through congested nodes. The performance of the proposed the method has been evaluated and compared with the conventional Chord protocol. The result shows that our proposed method improves the query success rate significantly while minimizing the number of packets generated during congestion control process. Keywords. Peer-to-peer, distributed hash, DHash, Chord. 1. INTRODUCTION Distributed hash tables (DHTs) are efficient routing algorithms for storing and searching data in structured peer-to-peer networks. DHT algorithms determine data location through an identifier (. a key) in the identifier space. Each node is responsible for managing a subset of identifiers. The basic operation of a DHT is to search for an identifier and return the address (. IP address and port number) of the node responsible for the identifier. Each node maintains a routing table to forward queries that it does not manage. DHTs, such as P-Grid [1], Chord [2] or Pastry [3] create routing tables to move the packet to the destination .