Skip to main content

Upgrade from 5.6 to 6.1 may result in missing FIB entries

Upgrade from 5.6.8 to 6.1.7 may result in missing FIB entries and service-paths, causing connectivity issues.

Issue ID: I95-55904
Last Updated: 2024-04-24
Introduced in SSR Version: 6.1.7

Problem

The key of the data structure storing service configuration is a net::IpMask, which has custom operator< and operator== operator functions. These operators treat the bits after the prefix length as 1s, so 147.161.128.0/17 should be equal to 147.161.254.0/23 (as an example). The container used in 5.6 uses the operator<. The container used in 6.1 takes a hash operator which is not hashing these equivalent net::IpMasks to be equal, hence the difference in behavior.

Release Notes

Fix case where adding services with overlapping address prefixes would cause config to not apply in highway.

Severity

info

The potential impact of a software defect if encountered. Severity levels are:

  • Critical: Could severely affect service, capacity/traffic, and maintenance capabilities. May have a prolonged impact to the entire system.
  • Major: Could seriously affect system operation, maintenance, administration and related tasks.
  • Minor: Would not significantly impair the functioning or affect service.

Critical

Status

Closed

Resolved In

6.1.8

Product

SSR

Functional Area

Routing

Workaround

info

Juniper may provide a method to temporarily circumvent a problem; workarounds do not exist for all issues.

curl -JLO https://github.com/majes-git/128t-scripts/raw/main/t128-show-ip-prefix-conflicts.pyz
chmod +x t128-show-ip-prefix-conflicts.pyz

Command Help

$ ./t128-show-ip-prefix-conflicts.pyz --help
usage: t128-show-ip-prefix-conflicts.pyz [-h] [-c HOST] [-u USER] [-p PASSWORD] [--config-store {running,candidate}] [-r READ_JSON] [--dump-json]

Show overlapping ip prefixes in 128T services

optional arguments:
-h, --help show this help message and exit
-c HOST, --host HOST Conductor/router hostname
-u USER, --user USER Conductor/router username (if no key auth)
-p PASSWORD, --password PASSWORD
Conductor/router password (if no key auth)
--config-store {running,candidate}
Config store to be used (running/candidate)
-r READ_JSON, --read-json READ_JSON
Read services config from json file
--dump-json Write config dump to json file "t128-show-ip-prefix-conflicts.json"

Sample

$ ./t128-show-ip-prefix-conflicts.pyz -r ssr-configuration.json
WARNING: Service "zscaler__client.internet" has conflicting addresses:
* 147.161.254.0/23 and 147.161.128.0/17
* 104.129.192.0/20 and 104.129.206.0/23
* 136.226.0.0/16 and 136.226.254.0/23