模块 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 进行报告。
切换平台的基于状态的 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页)。
上下文图: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]。
时序图:状态切换的请求作为 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]。
上下文图: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”的状态。
上下文图(模型–代码):状态来自模型中接口的状态机。为每个接口在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页)。
上下文图(元模型):模块实例捆绑了基于状态的规则集。映射将其与应用程序的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页):
- 应用程序调用FC Firewall上的
SwitchFirewallState()。 - 该集群在“foreach FirewallRule”循环中分别调用操作系统上的
applyRule()。 - 仅在循环结束后,响应才返回给应用程序。
applyRule()在那里被标记为«aapInformative»。规则如何在操作系统中被激活,在Payload中并未定义为平台API。R22-11版本将相同的流程展示为成功场景(EXP_SWArchitecture 第158页)。切换后,仅活动状态的规则进行检查和过滤(EXP_PlatformDesign 第92页)。
时序图:状态切换通过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 |
由此得出三条使用规则:
- 实例无法被复制,只能通过移动传递[AP_SWS_Fw_82004] [AP_SWS_Fw_82006]。
- 应用程序必须自行保护移动和析构免受并发访问[AP_SWS_Fw_82003]。
- 解释:移动后的源对象大概不应再用于
SwitchFirewallState,因为需求仅描述了转移,而未描述剩余状态[AP_SWS_Fw_82007]。 问题 Q-ccf0737ee5133103 (未决)
关于SwitchFirewallState本身的线程安全性,需求文本未作说明[AP_SWS_Fw_82008]。
状态图:实例由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页)。
活动图:依据活动状态的规则检查报文。默认阻止会导致向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模式:
GetFwErrorDomain()以线程安全的方式提供域[AP_SWS_Fw_83002]。FwErrorDomain的默认构造函数已被删除[AP_SWS_Fw_83009]。MakeErrorCode创建ara::core::ErrorCode[AP_SWS_Fw_83003]。Name()和Message()提供域名和错误文本[AP_SWS_Fw_83010] [AP_SWS_Fw_83011]。- 别名
Errc和Exception指向FwErrc和FwException[AP_SWS_Fw_83007] [AP_SWS_Fw_83008]。
使用异常的用户可以通过ThrowAsException将错误码转换为FwException。该函数是noexcept(false),并被归类为“not exception safe”[AP_SWS_Fw_83012] [AP_SWS_Fw_83005]。相反,被阻止的报文并不是API错误。它们作为安全事件出现在IdsM中(EXP_PlatformDesign 第92页)。
活动图:状态切换的结果通过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])。
- [AP_SWS_Fw_82008]:唯一带有返回类型和错误列表的功能操作。
- [AP_SWS_Fw_82002]、[AP_SWS_Fw_82003]:接口类的构造与析构以及线程安全性。
- [AP_SWS_Fw_81001]、[AP_SWS_Fw_81002]:生成的状态类型。
- [AP_SWS_Fw_83001]、[AP_SWS_Fw_83012]:错误码及转换为异常。
- EXP_SWArchitecture 第126页、EXP_SWArchitecture 第197页:接口和用例。
- EXP_SWArchitecture 第232页:状态切换流程。来自R22-11的先前版本见于EXP_SWArchitecture 第158页。
- TPS_ManifestSpecification 第263页、TPS_ManifestSpecification 第679页:状态机和规则模型。
- TPS_SystemTemplate 第644页:
StateDependentFirewall的简要描述。来自R23-11的版本见于TPS_SystemTemplate 第583页。 - SWS_Firewall 第31页:默认阻止时的SEv分配,仅见于R23-11版本。
基于R25-11的Payload中所含需求和文档章节的AI生成指南。来自其他版本的陈述已作标记;标记为解释的内容未经规范性证实。
提供基于状态的整车网络访问控制、底层包过滤规则动态部署以及入侵检测安全事件上报服务。
AUTOSAR Adaptive 防火墙功能集群通过守护进程为整车网络流量提供状态感知的动态访问控制与包过滤能力 AUTOSAR_AP_EXP_SWArchitecture 第 126 页。授权应用程序通过 FirewallStateSwitchInterface::SwitchFirewallState 异步请求模式切换,驱动守护进程在底层操作系统中部署对应规则集 [AP_SWS_Fw_82008]。未命中规则的被阻断数据流将按协议失配分层向 IdsM 触发安全事件上报,全流程错误由标准 FwErrorDomain 进行管理。
在 AUTOSAR Adaptive Platform 中,防火墙功能集群(FC Firewall)作为守护进程运行,负责协调平台级网络过滤规则并对系统数据流实施访问控制 AUTOSAR_AP_EXP_SWArchitecture 第 126 页。通过将机器清单(Machine Manifest)中声明的模块实例化配置 [TPS_MANI_03296] 原文尚未导入 与目标端口原型映射,应用程序能够基于由模型生成的强类型枚举状态发起安全模式切换 [AP_SWS_Fw_81001]。
协作图: 防火墙功能集群在自适应平台中的核心实体关联、接口暴露及外部系统交互边界。来源: AUTOSAR_AP_EXP_SWArchitecture 第 126 页, AUTOSAR_AP_EXP_SWArchitecture 第 197 页, AUTOSAR_AP_EXP_PlatformDesign 第 97 页。
状态迁移通过 FirewallStateSwitchInterface 暴露的异步接口 SwitchFirewallState 触发,该操作返回 ara::core::Future<void> [AP_SWS_Fw_82008]。防火墙守护进程接收请求后,循环遍历状态对应的规则集并通过 applyRule() 依次下发至底层操作系统网络过滤组件生效 AUTOSAR_AP_EXP_SWArchitecture 第 232 页。
时序图: 客户端发起状态切换调用、守护进程循环写入操作系统规则集并完成Future通知的完整交互流。来源: AUTOSAR_AP_EXP_SWArchitecture 第 232 页, AUTOSAR_EXP_SWArchitecture 第 158 页, [AP_SWS_Fw_82008]。
当网络数据包未能匹配任何放行规则而被默认动作阻断时,模块会按网络分层评估失配协议,并向入侵检测系统管理器(IdsM)上报对应的标准化安全事件(如数据链路层、IPv4、IPv6 或 ICMP 协议失配事件)[AP_SWS_Fw_60005]、[AP_SWS_Fw_60006]。在发生守护进程不可达或状态无效等异常时,模块通过专用错误域 FwErrorDomain 及其枚举 FwErrc(kServiceNotAvailable、kInvalidStateDependentFirewall)完成异步错误返回或异常抛出 [AP_SWS_Fw_83001]、[AP_SWS_Fw_83012]。
架构角色与系统边界
在 AUTOSAR Adaptive Platform (AP) 架构中,防火墙功能集群(Functional Cluster Firewall,简称 FC Firewall)作为守护进程(daemon-based)运行在平台运行层中,专用于执行基于网络策略的访问控制与数据包过滤 AUTOSAR_AP_EXP_SWArchitecture 第 126 页。该模块承担控制面(Control Plane)职责,将静态声明的模型规则转化为底层操作系统(OS)或网络栈的具体过滤配置,同时向安全监控组件输出安全事件 AUTOSAR_AP_EXP_PlatformDesign 第 97 页。
FC Firewall 的主要协作实体包括:授权发起状态切换的应用实体(如状态管理模块 ara::sm 或安全管理进程)、底层 POSIX 操作系统内核及其网络过滤机制,以及用于接收并进一步处理安全事件的入侵检测系统管理器(Intrusion Detection System Manager, IdsM)AUTOSAR_AP_EXP_SWArchitecture 第 197 页。应用程序不能直接修改底层包过滤链条,必须通过标准服务接口发起受控的模式迁移请求 EXP_PlatformDesign 第 92 页。
协作图: 防火墙功能集群在自适应平台中的核心实体关联、接口暴露及外部系统交互边界。来源: AUTOSAR_AP_EXP_SWArchitecture 第 126 页, AUTOSAR_AP_EXP_SWArchitecture 第 197 页, AUTOSAR_AP_EXP_PlatformDesign 第 97 页。
清单建模与实例绑定
在设计和部署阶段,防火墙的运行特性通过机器清单(Machine Manifest)进行形式化定义。类 AdaptiveFirewallModuleInstantiation 继承自 NonOsModuleInstantiation,代表部署在具体机器(ECU)上的平台防火墙实例,聚合了平台级规则配置与运行参数 AUTOSAR_AP_TPS_ManifestSpecification 第 677 页。规范要求通过 [TPS_MANI_03296] 原文尚未导入 将机器特定的防火墙配置统一归集于 AdaptiveFirewallModuleInstantiation TPS_ManifestSpecification 第 677 页。
为了使 Adaptive Application 能够访问该功能集群,清单模型定义了元类 AdaptiveFirewallToPortPrototypeMapping,用于将具体防火墙模块实例与应用程序中由 FirewallStateSwitchInterface 定型的 RPortPrototype 相互映射 TPS_ManifestSpecification 第 677 页。该端口接口聚合模式声明组原型(ModeDeclarationGroupPrototype),用以枚举防火墙所支持的离散操作状态 AUTOSAR_AP_TPS_ManifestSpecification 第 263 页。
类图: 机器清单中防火墙模块实例化、端口原型映射及模式声明组元模型结构。来源: AUTOSAR_AP_TPS_ManifestSpecification 第 677 页, AUTOSAR_AP_TPS_ManifestSpecification 第 263 页, AUTOSAR_AP_TPS_ManifestSpecification 第 679 页。
状态控制与动态过滤规则切换
在代码生成阶段,工具链基于模型中为 FirewallStateSwitchInterface 声明的状态机生成专用的强类型枚举类 ara::fw::states::{<fwssi-sn>},底层类型固定为 std::uint32_t [AP_SWS_Fw_81001]。每个被建模的状态均生成对应的枚举值常量声明 [AP_SWS_Fw_81002],这使得整车制造商(OEM)能够针对不同驾驶工况(例如行车、驻车或诊断会话)定义差异化的防火墙安全状态 EXP_PlatformDesign 第 92 页。
客户端通过 ara::core::InstanceSpecifier 显式构造接口对象 FirewallStateSwitchInterface [AP_SWS_Fw_82002]。为保证资源唯一性与接口所有权语义,该类严禁任何复制构造 [AP_SWS_Fw_82004] 和复制赋值操作 [AP_SWS_Fw_82005],但支持移动构造 [AP_SWS_Fw_82006] 与移动赋值 [AP_SWS_Fw_82007]。当对象析构时执行清理,析构函数声明为非线程安全 [AP_SWS_Fw_82003]。
状态迁移核心逻辑由异步接口方法 SwitchFirewallState(EnumT firewallState) 触发,该方法返回 ara::core::Future<void>,在不阻塞调用线程的前提下通知调用者状态生效或反馈执行失败 [AP_SWS_Fw_82008]。系统依据当前激活的防火墙状态,仅启用与该状态关联的 StateDependentFirewall 规则集合对网络数据流进行检测与放行 EXP_PlatformDesign 第 92 页,相关规则细节与结构通过清单中的 StateDependentFirewall 元素完整定义 TPS_SystemTemplate 第 644 页。
OS底层规则下发与数据面执行
当应用层调用 SwitchFirewallState 后,FC Firewall 内部守护进程首先对请求状态及其包含的规则链表进行解析匹配 AUTOSAR_AP_EXP_SWArchitecture 第 232 页。在状态变更过程中,防火墙守护进程遍历目标状态所关联的全部过滤规则([foreach FirewallRule]),逐一调用操作系统的包过滤配置接口 applyRule() 将规则下发至底层运行环境 AUTOSAR_AP_EXP_SWArchitecture 第 232 页。
解读:底层操作系统通常借助内核态网络数据包捕获与过滤机制(例如 Linux 下的 Netfilter、iptables、nftables 或 eBPF 机制)直接拦截与匹配网络流量 AUTOSAR_EXP_SWArchitecture 第 158 页。规则涵盖网络层(如 IP 地址检查)、传输层(如端口范围、校验和验证)以及基于令牌桶的限流控制参数(如 bucketSize 和 refillAmount)AUTOSAR_AP_TPS_ManifestSpecification 第 679 页。当且仅当全部规则成功写入底层操作系统并激活后,防火墙守护进程才向客户端 Future 写入就绪结果 AUTOSAR_EXP_SWArchitecture 第 158 页。
时序图: 客户端发起状态切换调用、守护进程循环写入操作系统规则集并完成Future通知的完整交互流。来源: AUTOSAR_AP_EXP_SWArchitecture 第 232 页, AUTOSAR_EXP_SWArchitecture 第 158 页, [AP_SWS_Fw_82008]。
安全事件上报与IdsM协同
在网络数据流的处理过程中,如果输入数据包未能匹配当前状态下激活的任何放行规则,系统将执行预先配置的默认动作(defaultAction,通常为阻断丢弃)SWS_Firewall 第 31 页。针对被默认动作阻断的异常报文,FC Firewall 会进一步执行协议失配评估,并向入侵检测系统管理器(IdsM)上报相对应的安全事件(Security Event, SEv)EXP_PlatformDesign 第 92 页。
协议失配分析从最低网络层(OSI 分层模型)开始由下至上逐层比对各规则的成功匹配层级 SWS_Firewall 第 31 页。根据失配发生的具体网络协议层,FC Firewall 分别触发对应的标准安全事件:在以太网链路层失配时上报 SEV_FW_PACKET_BLOCKED_DATALINKLAYER_MISMATCH [AP_SWS_Fw_60005];在 IPv4 协议层失配时上报 SEV_FW_PACKET_BLOCKED_IPV4_MISMATCH [AP_SWS_Fw_60006];在 IPv6 协议层失配时上报 SEV_FW_PACKET_BLOCKED_IPV6_MISMATCH [AP_SWS_Fw_60007];在 ICMP 协议失配时上报 SEV_FW_PACKET_BLOCKED_ICMP_MISMATCH [AP_SWS_Fw_60008]。IdsM 在接收到这些安全事件后,负责安全事件的资格评定、持久化存储或进一步向车载安全运营中心(SOC)转发 EXP_PlatformDesign 第 92 页。
活动图: 数据包未命中放行规则触发默认动作阻断时,逐层判定失配协议并上报IdsM安全事件的决策分支。来源: SWS_Firewall 第 31 页, [AP_SWS_Fw_60005], [AP_SWS_Fw_60006], [AP_SWS_Fw_60007], [AP_SWS_Fw_60008]。
行为规则与运行时约束
在多线程或并发调用环境下,构建 FirewallStateSwitchInterface 实例的操作属于线程安全调用 [AP_SWS_Fw_82002],这使得不同控制线程可以独立根据配置的实例标识符创建访问句柄。然而,接口对象的析构过程以及移动构造/移动赋值均被显式界定为非线程安全(not thread-safe)[AP_SWS_Fw_82003]、[AP_SWS_Fw_82006]、[AP_SWS_Fw_82007]。因此,在跨线程传递或销毁对象时,应用程序必须自行提供必要的互斥同步屏障。
在接口方法执行层面,SwitchFirewallState 接口本身声明为 noexcept [AP_SWS_Fw_82008],方法调用过程不会向外部抛出 C++ 运行时异常。所有在状态转换评估、通信连接或规则写入底层过程中检测到的运行错误,均通过异步通道由 ara::core::Future 对象承载错误码进行返回传递 [AP_SWS_Fw_82008]。
故障处理与错误行为
防火墙模块严格遵循 AUTOSAR Adaptive Platform 的错误处理架构规范。模块定义了专用的错误枚举类 ara::fw::FwErrc(底层继承自 ara::core::ErrorDomain::CodeType)[AP_SWS_Fw_83001]。该枚举包含两个标准错误码:其一为 kServiceNotAvailable(数值 1),表明底层的防火墙服务未能就绪或守护进程不可达;其二为 kInvalidStateDependentFirewall(数值 2),表明所请求切换的防火墙状态未在模型中定义有效规则集或状态标识非法 [AP_SWS_Fw_83001]、[AP_SWS_Fw_82008]。
模块错误上下文通过单例错误域 FwErrorDomain 进行封装。该错误域禁止默认构造 [AP_SWS_Fw_83009],开发人员可通过线程安全接口 GetFwErrorDomain() 获取其常量引用 [AP_SWS_Fw_83002]。错误域对象提供 Name() 查询域名 [AP_SWS_Fw_83010],并提供 Message(CodeType errorCode) 获取对应的错误文字描述 [AP_SWS_Fw_83011]。使用 MakeErrorCode 工厂方法可构造标准的 ara::core::ErrorCode 实例 [AP_SWS_Fw_83003]。
在以异常为中心的应用架构中,开发者可以通过类型别名 FwErrorDomain::Errc [AP_SWS_Fw_83007] 和 FwErrorDomain::Exception 简化类型引用 [AP_SWS_Fw_83008]。当需要将底层错误转换为异常时,FwErrorDomain::ThrowAsException 接口负责根据传入的错误码创建并直接抛出 FwException 异常对象 [AP_SWS_Fw_83012]、[AP_SWS_Fw_83005]。
核心规范与依据索引
本模块的技术规范主要由以下核心条目构建:
- 状态枚举与定义:[AP_SWS_Fw_81001] 和 [AP_SWS_Fw_81002] 规定了模型化状态枚举的生成约定与值定义。
- 控制接口操作:[AP_SWS_Fw_82002] 至 [AP_SWS_Fw_82007] 规范了
FirewallStateSwitchInterface的生命周期与移动语义,核心异步方法由 [AP_SWS_Fw_82008] 定义。 - 清单配置支撑:[TPS_MANI_03296] 原文尚未导入 确立了机器清单中模块配置的聚合规范。
- 错误域与异常处理:[AP_SWS_Fw_83001] 至 [AP_SWS_Fw_83012] 建立了完整的平台错误处理与异常抛出体系。
- 入侵检测协同:[AP_SWS_Fw_60005] 至 [AP_SWS_Fw_60008] 严格限定了各类网络协议层失配时的标准安全事件编码。
本指南基于 AUTOSAR Adaptive Platform R25-11 规范数据自动化整理生成,涵盖接口原型、清单元模型、动态切换流与错误域定义。
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;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>};
gemini-3.8-flash-low· 2026-10-13 · 德文原文