Summary
Starting from version 8.0, Continuity Engine changed the way it monitors, controls and filters server's public IP addresses. This article summarizes them.
Public IP addresses management
Simplified configuration
If you want to change the Public IP addresses, you can do this via the Configuration Wizard - you don't need to add the new ones or remove the old ones from the physical interfaces or fiddle with the packet filter we can just change them in the Configuration Wizard and once Engine has restarted it will remove the old public IPs and add the new public IPs to the active server and update the packet filter settings. Notice the check box used to configure the SkipAsSource setting for the public IP and how it is displayed in the list with the additional text (SkipAsSource).
More robust network configuration monitoring
Because Continuity Engine is in charge of network configuration it means it can monitor the network configuration and fix it up if it goes wrong. For example if someone disables a network adapter by accident Continuity Engine spots this and re-enables the adapter and checks that the public and channel IPs are in place, putting them back if they are not.
Public IP addresses new behaviour
The Public IP addresses are now added when a machine goes active and removed when a machine goes passive (they are also filtered by the new packet filter too but this is just an additional safety net).
Whilst Continuity Engine is running the public IP addresses on the active server are in memory only; they are not persisted, however when Engine exits on the active server it converts the in memory public IP(s) to persistent IP(s). Why? Suppose the active server fails; some one pulls the plug, because the public IP is in memory only, when the machine is restarted it will not have the public IP and hence no chance of IP conflicts, once the servers re-connect they will establish which should be active and which gets the public IP.
Things to watch out for
On the Active server while Continuity Engine is running, the Public IPs are stored in memory only. If, while Engine is running, you do an ipconfig then you'll see that the Public IPs are listed, however, if you were to look in the network configuration properties dialog for the public interface then the IPs will not be listed. This is because while Engine is running they are in memory only.
If Engine is stopped on the active server then the Public IPs that are currently in memory will be persisted and will appear in the network properties dialog.
On the passive server the public IPs are removed so will not appear in an ipconfig listing or in the network properties dialog.
Here is a snippet of the logs from an active server so you can see an example of the logging for public IPs.
- doActiveID() logging NICConfig :
GUID : {EA4B6AB0-8F98-4506-92F3-0AF9352C67D0}, MetricLogic : LOW, IPOrder : PMC, Public IPs : [192.168.13.5 / 255.255.255.0]
GUID : {DDC611D4-A1C4-420F-B272-0EA49FF5F2D6}, MetricLogic : LOW, IPOrder : PMC, Channel IPs : [192.168.50.24 / 255.255.255.0]
doActiveID() logging physical network adapter settings
Network Adapter : public
GUID : {EA4B6AB0-8F98-4506-92F3-0AF9352C67D0}
Metric : 10
IP: 192.168.13.5 / 255.255.255.0 (Memory) (IpDadStatePreferred)
Network Adapter : channel
GUID : {DDC611D4-A1C4-420F-B272-0EA49FF5F2D6}
Metric : 1000
IP: 192.168.13.11 / 255.255.255.0 (Memory & Persisted) (SkipAsSource) (IpDadStatePreferred)
IP: 192.168.13.12 / 255.255.255.0 (Memory & Persisted) (SkipAsSource) (IpDadStatePreferred)
IP: 192.168.50.24 / 255.255.255.0 (Memory & Persisted) (SkipAsSource) (IpDadStatePreferred)
The public IP 192.168.13.5 and the channel IP are highlighted notice that the channel IP 192.168.50.24 has the text (Memory & Persisted) after it, whilst the public IP 192.168.13.5 has (Memory). This identifies that the public IP is in memory only whilst the channel IP is in memory and persisted.
SkipAsSource
The public IP addresses can now be configured to have the SkipAsSource flag set to on or off; setting the SkipAsSource flag prevents the IP address from being selected by the operating system when an application opens a socket and the application does not specify a source IP. The use case for the inclusion of the SkipAsSource flag on public IPs is when the user has multiple public IPs, and they want to have one primary public IP that is used for all out going and incoming public traffic, but have other public IPs that are used for secondary purposes; in this case they typically set the SkipAsSource flag on the secondary public IP addresses. Note that setting the SkipAsSource flag also prevents an IP address from being registered in DNS via Automatic DNS Registration; Engine automatically disables Automatic DNS. Registration.
WFP Packet Filter
NDIS 5.1 Packet Filter is replaced with WFP Packet Filter.
Applies to
Continuity Engine - all versions starting from v8.0