DEENESPTFRRUARHIKOZHNL

模块 ara::fw — Firewall

Diese Seite wurde vollständig KI-generiert auf Basis von SWS Firewall (R25-11) — kein offizieller AUTOSAR-Text und keine automatisch extrahierte API-Seite wie die übrigen Module. Als Interpretation gekennzeichnete Aussagen sind Schlussfolgerungen aus den Quellen.

模块指南人工智能生成

切换平台的基于状态的 Firewall 规则集,并将被阻止的包作为 Security Event 进行报告。
AI 生成 未审核 模型: claude-opus-5-5 · 推理强度: high · 温度: 不可控 · 提示词: 9267f9cbcba3 来源 未决问题(3)
因果锚点:R25-11 自 R25-11 起有效 为此规范版本重新合成。
译自德文指南AI 生成gemini-3.8-flash-low · 2026-10-13 · 德文原文

切换平台的基于状态的 Firewall 规则集,并将被阻止的包作为 Security Event 进行报告。

Functional Cluster Firewall 根据清单中基于状态的规则集对网络包进行过滤,并将被阻止的包作为 Security Event 报告给 IdsM(EXP_PlatformDesign 第92页)。应用程序通过 FirewallStateSwitchInterface::SwitchFirewallState 选择活动的 Firewall 状态。该方法返回一个 ara::core::Future<void> 并报告诸如 kServiceNotAvailable 或 kInvalidStateDependentFirewall 之类的错误 [AP_SWS_Fw_82008]。状态不是固定列表,而是针对每个建模的接口作为枚举生成。该接口的实例只能被移动,不能被复制。

模块 fw 规定了 Adaptive Platform 基于守护进程的 Functional Cluster Firewall。其应用程序 API 是带有操作 SwitchFirewallState() 的接口 FirewallStateSwitchInterface,由 Adaptive Application 使用(EXP_SWArchitecture 第126页)。该集群具有两项任务:它切换 Firewall 状态,并将 Security Event 报告给 Intrusion Detection System Manager(EXP_SWArchitecture 第197页)。

kontext app Adaptive Application (OEM application) fw FC Firewall «aapFunctionalCluster», daemon-based app->fw 通过 FirewallStateSwitchInterface 执行 SwitchFirewallState() eng Firewall Engine fw->eng konfiguriert Engine os Operating System fw->os applyRule() je FirewallRule (informativ) idsm Intrusion Detection System Manager (IdsM) fw->idsm meldet SEvs (blockierte Pakete) mm Machine Manifest (Filterregeln) mm->fw 提供 Firewall 配置

上下文图:FC Firewall 连接了清单配置、应用程序的状态规范、操作系统中的规则应用以及向 IdsM 发送 SEv 报告。来源:EXP_PlatformDesign 第97页、EXP_SWArchitecture 第197页

过滤是基于状态的。OEM 定义诸如行驶、停车或诊断等状态,并且对于一个包,仅活动状态的规则适用(EXP_PlatformDesign 第92页)。在清单中,AdaptiveFirewallModuleInstantiation 为此捆绑了 StateDependentFirewall 元素。每个元素包含有序的规则属性、一个可选的 defaultAction 以及对相关状态的引用(TPS_ManifestSpecification 第679页)。在代码中,状态体现为在 ara::fw::states 中针对每个接口生成的枚举 [AP_SWS_Fw_81001]。

应用程序从 ara::core::InstanceSpecifier 创建接口对象。该构造函数是线程安全的 [AP_SWS_Fw_82002]。SwitchFirewallState 是 noexcept 并返回一个 ara::core::Future<void> [AP_SWS_Fw_82008]。根据场景,集群在内部在操作系统中逐一应用每个 Firewall 规则(EXP_SWArchitecture 第232页)。实例不可复制,但可以移动。移动操作和析构函数不是线程安全的 [AP_SWS_Fw_82004] [AP_SWS_Fw_82006]。

Firewall 的状态切换Adaptive ApplicationFC Firewall (FirewallStateSwitchInterface)Operating SystemUse Case: InitialisierungFirewallStateSwitchInterface(instance)explicit, noexcept, thread-safeUse Case: ZustandswechselSwitchFirewallState(firewallState)Interpretation: 所生成状态枚举的值返回:ara::core::Future<void>alt可以切换loopforeach FirewallRuleapplyRule()«aapInformative»Future 已满足 (void)FehlerFuture 带有 FwErrc::kServiceNotAvailable或 FwErrc::kInvalidStateDependentFirewall此后仅过滤活动状态的规则

时序图:状态切换的请求作为 Future 返回。在此期间,逐一应用每个规则。来源:EXP_SWArchitecture 第232页、[AP_SWS_Fw_82008]

在出错时,Future 包含 FwErrc::kServiceNotAvailable 或 FwErrc::kInvalidStateDependentFirewall [AP_SWS_Fw_83001]。其含义只能从名称中推断:服务可能不可用,或者目标状态缺少有效的规则配置。 问题 Q-45e3225696efb3dc (未决)通过 FwErrorDomain::ThrowAsException 可以将错误作为 FwException 抛出 [AP_SWS_Fw_83012]。被阻止的包不是 API 错误。它们作为 Security Event 报告给 IdsM,在 R23-11 中还根据不同协议进行了额外区分(SWS_Firewall 第31页)。

FC Firewall 在应用程序、操作系统和 IdsM 之间的角色

模块fw描述了Adaptive Platform的Functional Cluster Firewall。它基于守护进程,并实现了带有操作SwitchFirewallState()的接口FirewallStateSwitchInterface。Adaptive Application通过«use»关系使用该接口(EXP_SWArchitecture 第126页)。用例将该集群限制为两项任务。“Switch Firewall State”由Adaptive Application触发,操作系统协同参与。“Report Security Event”则面向同样基于守护进程的Intrusion Detection System Manager(EXP_SWArchitecture 第197页)。

架构概览将配置、控制与执行相互分离:

  • Machine Manifest提供过滤规则。
  • FC Firewall据此配置Firewall Engine。
  • OEM应用程序设置Firewall状态。
  • 该集群向IdsM报告安全事件(SEv)(EXP_PlatformDesign 第97页)。

重点在于两个用例。第一个是用例是基于状态的过滤,具有诸如行驶、停车或诊断会话等OEM特定状态。第二个是通过针对被阻止报文的安全事件来支持Intrusion Detection System。资质认定、转发至SOC或持久化存储由IdsM负责(EXP_PlatformDesign 第92页)。该模块唯一的应用API是状态切换[AP_SWS_Fw_82008]。

kontext app Adaptive Application (OEM application) fw FC Firewall «aapFunctionalCluster», daemon-based app->fw 通过 FirewallStateSwitchInterface 执行 SwitchFirewallState() eng Firewall Engine fw->eng konfiguriert Engine os Operating System fw->os applyRule() je FirewallRule (informativ) idsm Intrusion Detection System Manager (IdsM) fw->idsm meldet SEvs (blockierte Pakete) mm Machine Manifest (Filterregeln) mm->fw 提供 Firewall 配置

上下文图:FC Firewall接收来自Machine Manifest的配置以及来自应用程序的状态预设。它控制Engine和操作系统,并向IdsM报告SEv。来源:EXP_PlatformDesign 第97页、EXP_SWArchitecture 第197页、EXP_SWArchitecture 第232页

Firewall状态:从模型中的状态机到生成的枚举

在Manifest元模型中,FirewallStateSwitchInterface特化了PortInterface。通过角色firewallStateMachine,它聚合了任意数量(0..*)的ModeDeclarationGroupPrototype元素(TPS_ManifestSpecification 第263页)。各个状态是带有可选属性value: PositiveInteger的ModeDeclaration(TPS_ManifestSpecification 第679页)。

对于每个建模的接口,都会在命名空间ara::fw::states中据此生成一个单独的枚举enum class {<fwssi-sn>} : std::uint32_t。它通过ara/fw/states/{<fwssi-sn>}.h包含[AP_SWS_Fw_81001]。每个建模的Firewall状态都会生成一个枚举项{<symbol-fw-state>} = {<fw-state-value>} [AP_SWS_Fw_81002]。

对于用户而言这意味着:不存在平台范围固定的状态列表。存在哪些状态由OEM模型决定(EXP_PlatformDesign 第92页)。SwitchFirewallState需要一个类型为EnumT的参数firewallState [AP_SWS_Fw_82008]。解释:EnumT应当对应于为相应接口生成的Firewall状态枚举。 问题 Q-26dbe38f70cb0222 (未决)支持这一点的依据是,[AP_SWS_Fw_81001]将其明确定义为“for FirewallStateSwitchInterface”的状态。

zustandsmodell pi PortInterface fwssi FirewallStateSwitchInterface fwssi->pi spezialisiert mdgp ModeDeclarationGroupPrototype fwssi->mdgp firewallStateMachine 0..* en enum class {<fwssi-sn>} : std::uint32_t namespace ara::fw::states ara/fw/states/{<fwssi-sn>}.h fwssi->en Codegenerierung je Interface md ModeDeclaration value: PositiveInteger [0..1] mdgp->md 状态 (通过 ModeDeclarationGroup) er Enumerator je Zustand {<symbol-fw-state>} = {<fw-state-value>} en->er je modelliertem Zustand api SwitchFirewallState(EnumT firewallState) er->api Interpretation: EnumT 类型的实参

上下文图(模型–代码):状态来自模型中接口的状态机。为每个接口在ara::fw::states中生成一个枚举。来源:TPS_ManifestSpecification 第263页、[AP_SWS_Fw_81001]、[AP_SWS_Fw_81002]、[AP_SWS_Fw_82008]

Manifest配置:模块实例、基于状态的规则集和端口映射

Firewall模块的机器特定设置在AdaptiveFirewallModuleInstantiation中汇总。相关规范在R25-11中的状态为DRAFT(TPS_ManifestSpecification 第677页)。模块实例特化了NonOsModuleInstantiation,并通过stateDepFirewall引用任意数量的StateDependentFirewall元素。

一个StateDependentFirewall包含:

  • 可选的一个类型为FirewallActionEnum的defaultAction,
  • 有序的firewallRuleProps,
  • 通过firewallState(instanceRef)指向其生效所在的ModeDeclaration的引用(TPS_ManifestSpecification 第679页)。

System Template将其简要描述为“Firewall rules that are defined in a firewall state”(TPS_SystemTemplate 第644页)。

规则本身是带有诸如bucketSize和refillAmount等属性的FirewallRule元素。此外,元模型还列出了NetworkLayerRule和TransportLayerRule,后者除其他项外还包含端口范围和checksumVerification。CouplingElement也可以通过firewallRule聚合规则(TPS_ManifestSpecification 第679页)。有关详细信息,System Template明确指向Manifest规范(TPS_SystemTemplate 第644页)。

与应用程序的连接由AdaptiveFirewallToPortPrototypeMapping建立。它将模块实例(引用firewall,0..1)映射到应用程序由状态切换接口类型化的RPortPrototype上(TPS_ManifestSpecification 第677页)。存在两项限制:

  • 类注释将该接口称为FirewallModeSwitchInterface,而插图标题和API则称其为FirewallStateSwitchInterface。对代码具有决定性意义的是来自[AP_SWS_Fw_82002]的名称。
  • 映射类及其引用带有状态candidate(TPS_ManifestSpecification 第677页)。
manifest inst AdaptiveFirewallModuleInstantiation (NonOsModuleInstantiation) sdf StateDependentFirewall defaultAction: FirewallActionEnum [0..1] inst->sdf stateDepFirewall 0..* props firewallRuleProps 0..*, geordnet sdf->props aggregiert md ModeDeclaration (Firewall-Zustand) sdf->md firewallState 0..* (instanceRef) ce CouplingElement rule FirewallRule bucketSize, refillAmount ce->rule firewallRule 0..* map AdaptiveFirewallToPortPrototypeMapping (candidate) map->inst firewall 0..1 rport Adaptive Application 的 RPortPrototype map->rport ordnet zu fwssi FirewallStateSwitchInterface rport->fwssi typisiert durch

上下文图(元模型):模块实例捆绑了基于状态的规则集。映射将其与应用程序的R-Port连接起来。来源:TPS_ManifestSpecification 第677页、TPS_ManifestSpecification 第679页、TPS_ManifestSpecification 第677页

使用SwitchFirewallState进行状态切换的流程

在代码端,应用程序包含ara/fw/firewall_state.h。它通过显式构造函数从ara::core::InstanceSpecifier创建ara::fw::FirewallStateSwitchInterface。该构造函数是noexcept且线程安全的[AP_SWS_Fw_82002]。

状态切换由SwitchFirewallState(EnumT firewallState)请求。该方法是noexcept并返回一个ara::core::Future<void>。因此,为其规定的错误FwErrc::kServiceNotAvailable和FwErrc::kInvalidStateDependentFirewall通过Future返回,而不是作为异常返回[AP_SWS_Fw_82008]。

场景“Switch Firewall State”分三步展示了内部流程(EXP_SWArchitecture 第232页):

  1. 应用程序调用FC Firewall上的SwitchFirewallState()。
  2. 该集群在“foreach FirewallRule”循环中分别调用操作系统上的applyRule()。
  3. 仅在循环结束后,响应才返回给应用程序。

applyRule()在那里被标记为«aapInformative»。规则如何在操作系统中被激活,在Payload中并未定义为平台API。R22-11版本将相同的流程展示为成功场景(EXP_SWArchitecture 第158页)。切换后,仅活动状态的规则进行检查和过滤(EXP_PlatformDesign 第92页)。

Firewall 的状态切换Adaptive ApplicationFC Firewall (FirewallStateSwitchInterface)Operating SystemUse Case: InitialisierungFirewallStateSwitchInterface(instance)explicit, noexcept, thread-safeUse Case: ZustandswechselSwitchFirewallState(firewallState)Interpretation: 所生成状态枚举的值返回:ara::core::Future<void>alt可以切换loopforeach FirewallRuleapplyRule()«aapInformative»Future 已满足 (void)FehlerFuture 带有 FwErrc::kServiceNotAvailable或 FwErrc::kInvalidStateDependentFirewall此后仅过滤活动状态的规则

时序图:状态切换通过Future进行异步确认返回。在内部,集群逐个应用每条规则。来源:EXP_SWArchitecture 第232页、[AP_SWS_Fw_82002]、[AP_SWS_Fw_82008]

接口类的生命周期、复制和移动规则

FirewallStateSwitchInterface的特殊成员函数规定了可以如何传递实例([AP_SWS_Fw_82003]至[AP_SWS_Fw_82007]):

元素规定线程安全
来自 InstanceSpecifier 的构造函数explicit, noexcept [AP_SWS_Fw_82002]thread-safe
复制构造函数 / 复制赋值运算符=delete [AP_SWS_Fw_82004] [AP_SWS_Fw_82005]–
移动构造函数 / 移动赋值运算符noexcept [AP_SWS_Fw_82006] [AP_SWS_Fw_82007]not thread-safe
析构函数noexcept [AP_SWS_Fw_82003]not thread-safe

由此得出三条使用规则:

关于SwitchFirewallState本身的线程安全性,需求文本未作说明[AP_SWS_Fw_82008]。

lebenszyklus start gueltig 有效实例 start->gueltig FirewallStateSwitchInterface(instance) noexcept, thread-safe gueltig->gueltig SwitchFirewallState(...) gueltig->gueltig 作为 Move 的目标对象 (Interpretation: 接管角色) uebertragen Move 后的源对象 (Interpretation: 不再继续使用) gueltig->uebertragen Move-Konstruktor / Move-Zuweisung noexcept, not thread-safe (Kopieren: =delete) zerstoert 已销毁 gueltig->zerstoert ~FirewallStateSwitchInterface() noexcept, not thread-safe uebertragen->zerstoert ~FirewallStateSwitchInterface()

状态图:实例由InstanceSpecifier创建,仅通过移动传递,并最终被销毁。来源:[AP_SWS_Fw_82002]、[AP_SWS_Fw_82003]、[AP_SWS_Fw_82006]、[AP_SWS_Fw_82007]

活动状态下的报文过滤与安全事件报告

Firewall规则可以分配给Firewall状态。为了检查报文,仅采用当前活动状态的规则(EXP_PlatformDesign 第92页)。每个状态下,StateDependentFirewall提供有序的规则属性和可选的defaultAction(TPS_ManifestSpecification 第679页)。

SWS版本R23-11更详细地描述了安全事件的分配(SWS_Firewall 第31页):

  • 若报文与任何规则均不匹配,则应用默认动作。
  • 若默认动作阻止了该报文,则集群确定不匹配的协议。具有最多匹配ISO/OSI层(从最低层开始计算)的规则具有决定性。其上方第一个不匹配的层决定协议。
  • 针对该协议向IdsM报告SEv,例如SEV_FW_PACKET_BLOCKED_DATALINKLAYER_MISMATCH(Ethernet)、SEV_FW_PACKET_BLOCKED_IPV4_MISMATCH、SEV_FW_PACKET_BLOCKED_IPV6_MISMATCH或SEV_FW_PACKET_BLOCKED_ICMP_MISMATCH。

这些细节来自R23-11。相关需求不属于R25-11 Payload,因此在此仅作说明性而非规范性呈现。根据架构描述,被阻止的报文作为SEv发送给IdsM这一原则同样适用于R25-11(EXP_PlatformDesign 第92页)。

paketpruefung start ein 网络数据包到达 start->ein regeln 采用活动 Firewall 状态的规则 ein->regeln passt 是否存在匹配规则? regeln->passt regel 应用匹配的规则 passt->regel 是 da defaultAction greift passt->da 不 ende regel->ende blockiert durch Default-Aktion blockiert? da->blockiert ebene 确定偏离协议: 从最底层起具有最多匹配层的规则 (R23-11) blockiert->ebene 是 blockiert->ende 不 sev SEv an IdsM, z. B. SEV_FW_PACKET_BLOCKED_IPV4_MISMATCH ebene->sev sev->ende

活动图:依据活动状态的规则检查报文。默认阻止会导致向IdsM发送特定于协议的SEv。来源:EXP_PlatformDesign 第92页、SWS_Firewall 第31页(R23-11)

发生错误时的行为

该模块的错误码由头文件ara/fw/fw_error_domain.h中的FwErrc定义:kServiceNotAvailable=1和kInvalidStateDependentFirewall=2 [AP_SWS_Fw_83001]。两者均被规定为SwitchFirewallState的可能错误[AP_SWS_Fw_82008]。由于需求未给出触发条件,对名称的解释如下:

  • kServiceNotAvailable大概报告基于守护进程的FC Firewall无法提供服务。 问题 (未决)
  • kInvalidStateDependentFirewall大概报告所请求的状态不存在有效的StateDependentFirewall。 问题 (未决)

错误域遵循通用的ara::core模式:

使用异常的用户可以通过ThrowAsException将错误码转换为FwException。该函数是noexcept(false),并被归类为“not exception safe”[AP_SWS_Fw_83012] [AP_SWS_Fw_83005]。相反,被阻止的报文并不是API错误。它们作为安全事件出现在IdsM中(EXP_PlatformDesign 第92页)。

fehler start aufruf SwitchFirewallState(firewallState) start->aufruf fut 评估来自 ara::core::Future<void> 的结果 aufruf->fut ok Fehler? fut->ok erfolg Zustandswechsel abgeschlossen ok->erfolg 不 code FwErrc ok->code 是 ende erfolg->ende sna kServiceNotAvailable (1) Interpretation: FC Firewall 不可用 code->sna inv kInvalidStateDependentFirewall (2) Interpretation: 目标状态无有效的 StateDependentFirewall code->inv diag Diagnose: GetFwErrorDomain(), Name(), Message(errorCode) sna->diag inv->diag thr optional: ThrowAsException() wirft FwException diag->thr diag->ende 无异常 thr->ende

活动图:状态切换的结果通过Future进行评估。错误通过FwErrorDomain处理,并可选择性地作为FwException抛出。来源:[AP_SWS_Fw_82008]、[AP_SWS_Fw_83001]、[AP_SWS_Fw_83011]、[AP_SWS_Fw_83012]

进一步详细证据

以下章节支持本指南的论述;这些需求对R25-11具有规范性([AP_SWS_Fw_82008])。

基于R25-11的Payload中所含需求和文档章节的AI生成指南。来自其他版本的陈述已作标记;标记为解释的内容未经规范性证实。

Spezifikation: AUTOSAR_AP_SWS_Firewall.pdf (R25-11) · 23 API-Records

3 Klassen2 Namespaces1 Enumeration2 freie Funktionen

ara::fw

Returns a reference to the FwErrorDomain object.

constexpr const ara::core::ErrorDomain &GetFwErrorDomain() noexcept;

Creates an ErrorCode instance.

constexpr ara::core::ErrorCode MakeErrorCode(ara::fw::FwErrc code, ara::core::ErrorDomain::SupportDataType data) noexcept;
FwErrc 枚举

Defines the error codes for FwErrorDomain.

enum class FwErrc : ara::core::ErrorDomain::CodeType {...};

ara::fw::states

Defines the firewall states for FirewallStateSwitchInterface. The actual type is generated for each modeled interface.

enum class {<fwssi-sn>} : std::uint32_t {...};

Generated enumerator declaration for each modeled firewall state.

{<symbol-fw-state>} = {<fw-state-value>};

命名空间

类