Например, если поднять новую сессию, и до прихода первого Interim-ALive пакета уронить пир, чтобы она закрылась по LCP таймауту с кодом Lost-Carrier, то во всех счётчиках Acct-* всегда приходят нулевые значения. Если при тех же условиях бросить сессию корректно по CoA, через консоль или по требованию пира, то счётчики отдаются с реальными значениями трафика.
Ниже пример Stop пакета для сессии 183 сек., закрытой по LCP таймату с кодом Lost-Carrier, в которой был прогнан тестовый трафик, Inetrim-Interval = 300.
В счётчиках нули. Баг присутствует много лет.
*** DUMP OF RADIUS PACKET (Radius::Packet=HASH(0x56289a765318)) Code: Accounting-Request Identifier: 2 Authentic: \x{ba}~\x{c0}\x{11}\x{cd}p\x{9d}El\x{1a}\x{f3}\x{d5}\x{b3}\x{8}\x{b8}\x{92} Attributes: User-Name: 2796 NAS-Identifier: bras02 NAS-IP-Address: 1.2.3.4 NAS-Port: 231 NAS-Port-Id: ppp231 NAS-Port-Type: Virtual Service-Type: Framed-User Framed-Protocol: PPP Calling-Station-Id: A0:F3:C1:C8:0C:D3 Called-Station-Id: 90:E2:BA:84:88:96 Acct-Status-Type: Stop Acct-Authentic: RADIUS Acct-Session-Id: 4D51DFC408E60D1A Acct-Session-Time: 183 Acct-Input-Octets: 0 Acct-Output-Octets: 0 Acct-Input-Packets: 0 Acct-Output-Packets: 0 Acct-Input-Gigawords: 0 Acct-Output-Gigawords: 0 Framed-IP-Address: 2.3.4.5 Delegated-IPv6-Prefix: \x{0}@ \x{0}\x{0}x\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0} Acct-Terminate-Cause: Lost-Carrier VSA for vendor 3561 ADSL-Agent-Remote-Id: ADSL-Agent-Circuit-Id: A0:F3:C1:C8:0C:D3::192.168.254.54::10 *** END DUMP
Провёл дополнительный тест.
00:00:00 Acct-Start
*Почти ничего не шлю через туннель
00:05:00 Interim-Update (пришли некие мелкие корректные Acct-*)
*Шлю много тестового трафика после чего отключаю порт.
00:06:30 Acct-Stop LCP timeout - Все данные о трафике после последнего Inerim потеряны, счётчики в стопе равны тому, что было на момент 00:05:00
При этом в логе:
Nov 14 16:27:30 bras02 accel-pppd[3872]: ppp57:2796: lcp: no echo reply Nov 14 16:27:30 bras02 accel-pppd[3872]: ppp57:2796: failed to get interface statistics Nov 14 16:27:30 bras02 accel-pppd[3872]: ppp57:2796: failed to get interface statistics
Таким образом другими словам:
При завершении сессии по LCP timeout всегда теряются данные счётчиков Acct* в Stop пакете и они всегда равны тому что было в последнем Interim-Update по причине, что PPP интерфейс скорее всего роняется раньше, чем происходит попытка получения последних данных счётчиков с него.