# Parallel Redundancy Protocol

Parallel Redundancy Protocol (PRP) is a network protocol standard for Ethernet that provides seamless failover against failure of any network component. This redundancy is invisible to the application.
PRP nodes have two ports and are attached to two separated networks of similar topology. PRP can be implemented entirely in software, i.e. integrated in the network driver. Nodes with single attachment can be attached to one network only. This is in contrast to the companion standard HSR (IEC 62439-3 Clause 5), with which PRP shares the operating principle.
PRP and HSR are independent of the application-protocol and can be used by most Industrial Ethernet protocols in the IEC 61784 suite. PRP and HSR are standardized by the IEC 62439-3:2016). They have been adopted for substation automation in the framework of IEC 61850.
PRP and HSR are suited for applications that request high availability and short switchover time, such as: protection for electrical substation, synchronized drives, for instance in printing machines or high power inverters. For such applications, the recovery time of commonly used protocols such as the Rapid Spanning Tree Protocol (RSTP) is too long.
The cost of PRP is a duplication of all network elements that require it. Cost impact is low since it makes little difference if the spares lie on the shelf or are actually working in the plant. The maintenance interval is shortened since more components can fail in use, but such outage will remain invisible to the application.
PRP does not cover end node failures, but redundant nodes may be connected via a PRP network.

## Topology

* PRP network operation
* PRP frame format (with trailer)
* PRP nodes (DANP) interaction
Each PRP network node (DANP) has two Ethernet ports attached to two separate local area networks of arbitrary, but similar topology. The two LANs have no links connecting them and are assumed to be fail-independent, to avoid common mode failures.
Nodes with single attachment (such as a printer) are either attached to one network only (and therefore can communicate only with other nodes attached to the same network), or are attached through a RedBox, a device that behaves like a doubly attached node.
Since HSR and PRP use the same duplicate identification mechanism, PRP and HSR networks can be connected without single point of failure and the same nodes can be built to be used in both PRP and HSR networks.

## Operation

A source node (DANP) sends simultaneously two copies of a frame, one over each port. The two frames travel through their respective LANs until they reach a destination node (DANP) with a certain time skew. The destination node accepts the first frame of a pair and discards the second (if it arrives). Therefore, as long as one LAN is operational, the destination application always receives one frame. PRP provides zero-time recovery and allows to check the redundancy continuously to detect lurking failures.

## Frame format

To simplify the detection of duplicates, the frames are identified by their source address and a sequence number that is incremented for each frame sent according to the PRP protocol. The sequence number, the frame size, the path identifier and an Ethertype are appended just before the Ethernet checksum in a 6-octet PRP trailer. This trailer is ignored (considered as padding) by all nodes that are unaware of the PRP protocol, and therefore these singly attached nodes (SAN) can operate in the same network. NOTE: all legacy devices should accept Ethernet frames up to 1528 octets, this is below the theoretical limit of 1535 octets.

## Implementation

The two Ethernet interfaces of a node use the same MAC address. This is allowed since the two LANs have no connection. Therefore, PRP is a layer 2 redundancy, which allows higher layer network protocols to operate without modification. A PRP node needs only one IP address. Especially, the ARP protocol will correctly relate the MAC to the IP address.

## Clock synchronization

IEC 62439-3 Annex C specifies the Precision Time Protocol Industry Profile that support a clock synchronization over PRP with an accuracy of 1 μs after 15 network elements, as profile of IEEE Std 1588 Precision Time Protocol.
Clocks can be doubly attached according to PRP, but since the correction is different according to the path, the duplicate discard method of PRP is not applicable. Also, delay measurement messages (Pdelay_Req & Pdelay_Resp) are not duplicated since they are link-local.
About every second, a master clock sends two copies of a Sync message, but not at exactly the same time since the ports are separate, therefore the original Syncs have already different time stamps.
A slave receives the two Sync messages at different times and applies the Best Master Clock Algorithm (BMCA), and when the two Sync come from the same grandmaster, the clock quality is used as a tie-breaker. A slave will normally listen to one port and supervise the other, rather than switching back and forth or using both Syncs.
This method works for several options in 1588, with Layer 2 / Layer 3 operation, and with peer-to-peer / end-to-end delay measurement. IEC 62439-3 defines these two profiles as:
* L3E2E (Layer 3, end-to-end) that addresses the requirements of ODVA
* L2P2P (Layer 2, peer-to-peer) that addresses the requirements of power utility in IEC 61850 and has been adopted by IEEE in IEC&IEEE 61850-9-3.

## Legacy versions

The original standard IEC 62439:2010 incremented the sequence number of the Redundancy Control Trailer (RCT) in the PRP frames on a per-connection basis. This gave a good error detection coverage but made difficult the transition from PRP to the High-availability Seamless Redundancy (HSR) protocol, which uses a ring topology instead of parallel networks.
The revised standard IEC 62439-3:2012 aligned PRP with HSR using the same duplicate discard algorithm. This allowed building transparent PRP-HSR connection bridges and nodes that can operate both as PRP (DANP) and HSR (DANH).
The old IEC 62439:2010 standard is sometimes referred to as PRP-0 as it is still used in some control systems, and PRP 2012 as "PRP".

## Applications

An interesting application of PRP was found in the area of wireless communication as "Timing Combiner", yielding significant improvement in packet loss and timing behaviour over parallel redundant wireless links.