Load balancing (based on NAPT)

A common way to realise a Load balancing is happening based on NAPT (Network Address Port Translation).

      Client 1                    Client 2                    Client 3
 SRC: 10.11.12.13:111        SRC: 10.11.12.13:222        SRC: 15.16.17.18:111
 DST: 20.21.22.23:443        DST: 20.21.22.23:80         DST: 20.21.22.23:443
                |                      |                     |
                |----------|           |          |----------|            WAN
-----------------------------------------------------------------------------
                           ↓           ↓          ↓                       LAN
                      |--------------------------------|
                      |        LB Session Table        | WAN to LAN:
                      |--------------------------------| Modifies Dest.-IP
                      |   Public Addr   | Private Addr | (Public --> Private)
Public IPv4 from ISP: |--------------------------------|
    20.21.22.23       | 10.11.12.13:111 | 10.0.0.1:443 | LAN to WAN:
                      | 10.11.12.13:222 | 10.0.0.2:80  | Modifies Source-IP
                      | 15.16.17.18:111 | 10.0.0.3:443 | (Private --> Public)
                      |--------------------------------|
                           |           |          |
                |----------|           |          |----------|
                ↓                      ↓                     ↓
      Server 1                    Server 2                    Server 3
 SRC: 10.11.12.13:111        SRC: 10.11.12.13:222        SRC: 15.16.17.18:111
 DST: 10.0.0.1:443           DST: 10.0.0.2:80            DST: 10.0.0.3:443

PS: Another possibility is using DNS, which circles on a list of server IP’s on each request.