This article describes a common scenario where the modem/CPE fails to establish a PPPoE session when running an Enhanced Subscriber Management build starting from Junos 15.1R3 and higher, which is a next-generation broadband edge software architecture for wireline Subscriber Management.
With Juniper's recommended Junos Enhanced Subscriber Management build to archive high performance and scaling, ISP operators usually run regression tests on targeted Junos build in a lab environment before deploying live services. During the tests, the subscribers fail to establish a session with server (B-RAS) while the following error is seen:
NACK received for profile request with id=0xd182a2c from bbe-smgd daemon: Invalid argument supplied retry FALSE
Upon debugging the error condition extensively from the SMGD daemon point of view, it was revealed that all the variables configured in dynamic profile were not found:
Mar 24 14:35:09 sdb_get_internal_variables_internal_sts: 15018 err=SDB data not found Mar 24 14:35:09 sdb_get_internal_variables_internal_sts:15109: Failed to get dyn attr: junos-stacked-vlan-id, vid: 20, session_id=3587642,err=SDB data not found Mar 24 14:35:09 sdb_get_internal_variables_internal_sts: 15018 err=SDB data not found Mar 24 14:35:09 sdb_get_internal_variables_internal_sts:15109: Failed to get dyn attr: junos-vlan-id, vid: 19, session_id=3587642,err=SDB data not found Mar 24 14:35:09 sdb_update_client_session_internal_sts 8058: updated counter first state:0 last state:0 for session id 3587642 ! Mar 24 14:35:09 sdb_get_internal_variables_internal_sts: 14759 err=SDB data not found Mar 24 14:35:09 sdb_get_internal_variables_internal_sts:15109: Failed to get dyn attr: junos-loopback-interface, vid: 52, session_id=3587642,err=SDB data not found Mar 24 14:35:09 ERR: dprof_get_var_value: Failed to resolve var $junos-loopback-interface for sid: 1 ! Mar 24 14:35:09 bbe_if_ppp_output: Send PPP IPCP NACK packet on ifl pp0.3221644001 Mar 24 14:35:09 PppoeBbePlugin::bbePppoeIflOutput: Send PKT to pppoe ifl=pp0.3221644001 Mar 24 14:35:09 PppoeBbePlugin::bbePppoeIflOutput: Send PKT to ifl=pp0.3221644001 Mar 24 14:35:09 bbe_vlan_ifl_output: Send PKT to vlan_ifl=demux0.3221644000 Mar 24 14:35:09 bbe_if_l2_input: ifl demux0.3221644000: Got PKT Mar 24 14:35:09 PppoeBbePlugin::bbeIfPppoeSessionInput: Send PPP packet on ifl pp0.3221644001 to io. Mar 24 14:35:09 bbe_if_ppp_input: Send PPP IPCP REQ packet on ifl pp0.3221644001 to jpppd Mar 24 14:35:09 bbe_ppp_inbound_pkt_handler: Got packet on IFL=pp0.3221644001 index=537302355 Mar 24 14:35:09 bbe_ppp_inbound_pkt_handler: sending packet received on IFL=537302355 to jpppd Mar 24 14:35:10 ==> BEGIN Dynamic Request( "pppoe-client-profile$$06" Mar 24 14:35:10 Info< session=3587642 action=ADD data_id=0x95ad450> Mar 24 14:35:10 bbe_process_dynamic_request: request to dprof plugin succeeded Mar 24 14:35:10 dprof_process_request: Received cfg bits 0x00000002 0xf239c0fe Mar 24 14:35:10 dprof_process_request: Received ADD request for profile: "pppoe-client-profile$$06" from plugin: Central, Aux = 0 Mar 24 14:35:10 sdb_get_internal_variables_internal_sts: 14759 err=SDB data not found Mar 24 14:35:10 sdb_get_internal_variables_internal_sts:15109: Failed to get dyn attr: junos-loopback-interface, vid: 52, session_id=3587642,err=SDB data not found Mar 24 14:35:10 ERR: dprof_get_var_value: Failed to resolve var $junos-loopback-interface for sid: 1 Mar 24 14:35:10 sdb_update_client_session_internal_sts 8058: updated counter first state:0 last state:0 for session id 3587642 Mar 24 14:35:10 sdb_get_internal_variables_internal_sts: 15018 err=SDB data not found Mar 24 14:35:10 sdb_get_internal_variables_internal_sts:15109: Failed to get dyn attr: junos-cos-shaping-mode, vid: 26, session_id=3587642,err=SDB data not found Mar 24 14:35:10 sdb_get_internal_variables_internal_sts: 15018 err=SDB data not found Mar 24 14:35:10 sdb_get_internal_variables_internal_sts:15109: Failed to get dyn attr: junos-cos-shaping-mode, vid: 26, session_id=3587642,err=SDB data not found ... ... Mar 24 14:35:10 bbe_central_dprof_response_handler: response received, dprof response = 0x0xbd9a598, data id = 0x95ad450 Mar 24 14:35:10 bbe_dyn_prof_send_response: NACKing dynamic profile, plugin error: Invalid argument supplied
When reviewing the dynamic-profiles: “pppoe-client-profile” nested with “vlan-prof-0” , all the required attributes and variable are present. However, the SDB still fails to fetch them. dynamic-profiles { vlan-prof-0 { interfaces { demux0 { unit "$junos-interface-unit" { no-traps; proxy-arp; vlan-tags outer "$junos-stacked-vlan-id" inner "$junos-vlan-id"; demux-options { underlying-interface "$junos-interface-ifd-name"; } family pppoe { duplicate-protection; dynamic-profile pppoe-client-profile; } } } } class-of-service { interfaces { demux0 { unit "$junos-interface-unit" { classifiers { ieee-802.1 DOT1P-CLASSIFIER; } rewrite-rules { ieee-802.1 DOT1P-REWRITE vlan-tag outer-and-inner; } } } } } } pppoe-client-profile { predefined-variable-defaults { inactive: cos-excess-rate proportion 1; cos-scheduler-tx { rate 64k; percent 75; } cos-byte-adjust -28; input-filter pl-ip-set-be; output-filter pl-ip-set-be; cos-shaping-rate 6m; cos-scheduler-map SCHEDULER-MAP-1PLAY; cos-shaping-mode frame-mode; cos-guaranteed-rate 96k; inactive: routing-instances NULL; } routing-instances { "$junos-routing-instance" { interface "$junos-interface-name"; routing-options { access { route $junos-framed-route-ip-address-prefix { next-hop "$junos-framed-route-nexthop"; metric "$junos-framed-route-cost"; preference "$junos-framed-route-distance"; } } access-internal { route $junos-subscriber-ip-address { qualified-next-hop "$junos-interface-name"; } } } } } interfaces { interface-set "$junos-svlan-interface-set-name" { interface pp0 { unit "$junos-interface-unit"; } } pp0 { unit "$junos-interface-unit" { no-traps; ppp-options { chap; pap; } pppoe-options { underlying-interface "$junos-underlying-interface"; server; } keepalives interval 30; family inet { rpf-check; filter { input "$junos-input-filter"; output "$junos-output-filter"; } unnumbered-address "$junos-loopback-interface"; } inactive: family inet6 { address $junos-ipv6-address; unnumbered-address "$junos-loopback-interface"; } } } } For initial setup, operators normally follow Juniper's tech document, Configuring Junos OS Enhanced Subscriber Management . In dual routing-engine setup, due to certain misconceptions, operators may not follow the complete procedure in order for the router to enable Enhanced Subscriber Management features. In the above scenario, the operator had upgraded both routing-engines; one at a time. But after the upgrade, the operator did not reboot the system as a whole. As a result, the Session Database known as SDB which holds each individual subscriber's control information could not find the variables within the dynamic-profile. Hence, the subscriber could not establish a session. This indicates the upgrade was not properly performed.
dynamic-profiles { vlan-prof-0 { interfaces { demux0 { unit "$junos-interface-unit" { no-traps; proxy-arp; vlan-tags outer "$junos-stacked-vlan-id" inner "$junos-vlan-id"; demux-options { underlying-interface "$junos-interface-ifd-name"; } family pppoe { duplicate-protection; dynamic-profile pppoe-client-profile; } } } } class-of-service { interfaces { demux0 { unit "$junos-interface-unit" { classifiers { ieee-802.1 DOT1P-CLASSIFIER; } rewrite-rules { ieee-802.1 DOT1P-REWRITE vlan-tag outer-and-inner; } } } } } } pppoe-client-profile { predefined-variable-defaults { inactive: cos-excess-rate proportion 1; cos-scheduler-tx { rate 64k; percent 75; } cos-byte-adjust -28; input-filter pl-ip-set-be; output-filter pl-ip-set-be; cos-shaping-rate 6m; cos-scheduler-map SCHEDULER-MAP-1PLAY; cos-shaping-mode frame-mode; cos-guaranteed-rate 96k; inactive: routing-instances NULL; } routing-instances { "$junos-routing-instance" { interface "$junos-interface-name"; routing-options { access { route $junos-framed-route-ip-address-prefix { next-hop "$junos-framed-route-nexthop"; metric "$junos-framed-route-cost"; preference "$junos-framed-route-distance"; } } access-internal { route $junos-subscriber-ip-address { qualified-next-hop "$junos-interface-name"; } } } } } interfaces { interface-set "$junos-svlan-interface-set-name" { interface pp0 { unit "$junos-interface-unit"; } } pp0 { unit "$junos-interface-unit" { no-traps; ppp-options { chap; pap; } pppoe-options { underlying-interface "$junos-underlying-interface"; server; } keepalives interval 30; family inet { rpf-check; filter { input "$junos-input-filter"; output "$junos-output-filter"; } unnumbered-address "$junos-loopback-interface"; } inactive: family inet6 { address $junos-ipv6-address; unnumbered-address "$junos-loopback-interface"; } } } }
In a dual routing engine setup, after upgrading from previous builds such as Junos 12.3, 13.3, 14.1x50 or on a fresh install of the Junos Subscriber Management build, the system must be rebooted. Refer to Configuring Junos OS Enhanced Subscriber Management .