A method for routing Diameter messages, the method comprising: at a Diameter signaling router, DSR, comprising a plurality of Diameter message processors (308, 310, 312, 314): receiving, by a first of the plurality of Diameter message processors and from a first Diameter node, a first Diameter message, wherein the first Diameter message is received via a first Diameter connection utilising a Diameter protocol; determining, by the first Diameter message processor, a next-hop Diameter node for the first Diameter message and a second of the plurality of Diameter message processors within the DSR to reach the next-hop Diameter node, said determining comprising performing a Diameter routing lookup in a peer routing table; creating, by the first Diameter message processor, a non-Diameter protocol message comprising at least a portion of the first Diameter message, and adding an inter-message processor routing tag identifier to the non-Diameter protocol message before communicating to the second Diameter message processor; communicating, by the first Diameter message processor to the second Diameter message processor, the non-Diameter protocol message utilising the non-Diameter protocol; creating, by the second Diameter message processor, a second Diameter message comprising the at least portion of the first Diameter message; communicating, by the second Diameter message processor to the next-hop Diameter node, the second Diameter message, wherein the second Diameter message is communicated via a second Diameter connection utilising the Diameter protocol, wherein the second Diameter message processor is configured to communicate the second Diameter message based on the determination made by the first Diameter message processor by utilising the inter-message processor routing tag to identify the non-Diameter message as being directed to it and as not requiring another Diameter routing lookup. receiving, by a first of the plurality of Diameter message processors and from a first Diameter node, a first Diameter message, wherein the first Diameter message is received via a first Diameter connection utilising a Diameter protocol; determining, by the first Diameter message processor, a next-hop Diameter node for the first Diameter message and a second of the plurality of Diameter message processors within the DSR to reach the next-hop Diameter node, said determining comprising performing a Diameter routing lookup in a peer routing table; creating, by the first Diameter message processor, a non-Diameter protocol message comprising at least a portion of the first Diameter message, and adding an inter-message processor routing tag identifier to the non-Diameter protocol message before communicating to the second Diameter message processor; communicating, by the first Diameter message processor to the second Diameter message processor, the non-Diameter protocol message utilising the non-Diameter protocol; creating, by the second Diameter message processor, a second Diameter message comprising the at least portion of the first Diameter message; communicating, by the second Diameter message processor to the next-hop Diameter node, the second Diameter message, wherein the second Diameter message is communicated via a second Diameter connection utilising the Diameter protocol, wherein the second Diameter message processor is configured to communicate the second Diameter message based on the determination made by the first Diameter message processor by utilising the inter-message processor routing tag to identify the non-Diameter message as being directed to it and as not requiring another Diameter routing lookup.