CAN・Gatewayの機能・動作仕様

文書バージョン:1.1.1 対象GitHubバージョン:main @ c67e153cc3bcf1f6ac0303d23023ce8ae4a4f533 収録リリース:v1.1.6(本文・画像の調査基準は上記commitを維持)

更新履歴

文書バージョン 更新日 更新内容
1.1.1 2026-10-20 Issue #116〜#119の正式v1.1.6実測記事への相互参照を追加し、既存実習との比較範囲を明示
1.1.0 2026-10-17 CAN・複数バスGateway・CAN FD・CAN↔Ethernetの機能と動作を採否判断用に整理。v1.1.6へ収録し、本文・画像の調査基準を維持

文書ID:guide-reference-can-gateway 文書状態:レビュー用参考資料。現行仕様・実装を読み解くための初版草案であり、新しい規範要件を追加しない。正本と差が見つかった場合は、以下の参照先と対象commitのソースを確認して修正する。

本書でいう「変更できる」は、入力が受理される設定変更を指す。「固定」は、このprofileでは設定項目がなく、変更に仕様・コード・検証の更新を要することを指す。全章の時刻は整数ps、実行範囲は [0,T)。u32max=4294967295、u64max=18446744073709551615。各表の既定値は参照仕様・配布入力の定義を示す。NEDのdefaultやINI overrideを変更した場合の実効値は実行metadataで確認する。必須JSON項目にサンプル値があっても、省略時の既定値が存在するとは限らない。

判断したいこと 主な参照箇所
バス速度、負荷、ID、待ち行列容量を変える 1・2・3節
アプリ受信の遅延・フィルタを変える 4節
複数CAN間の経路・保持容量・処理時間を変える 5節
FDのデータ速度を比較する 6節。位相bit数は外部入力
CANとEthernetを接続する 7節とEthernet編

第1節 Classical CANの選択・構成・負荷生成

概要

機能仕様:can.cc.ideal.v1は、1個の共有Busと2個以上のControllerでClassical CANのDATAフレームを評価する既定profile。標準11bit・拡張29bit、決定的な明示/周期負荷、仲裁、内容依存のCRC・stuffing、有限TXキューを提供する。

動作仕様:INI/NED/負荷を準備検証し、時刻がT未満のgenerator発火を要求へ変える。要求はTX処理→キュー入場→仲裁→SOF→EOF→解放へ進む。Busごとに同じ(format,ID)の送信Controllerを一つに限定し、発火時刻が違っても別送信者の同じkeyは準備拒否する。

詳細

機能仕様:構成の入口と入力範囲は次のとおり。相対ファイルパスの基準はINIの親ディレクトリ。

設定場所・キー 値・既定・単位 設定/固定と制約
INI [General] model-profile can.cc.ideal.v1、省略時も同値 設定可。他profileへの変更時は型・schemaも合わせる
INI network / ned-path 実行network名/NED探索先 実構成を指定。Controllerのtx→Bus入力、Bus出力→同Controllerのrxを対にする
Bus bitrate 必須、整数換算1..1000000 bps NED又はINIで設定。非整数bps・0・上限超過拒否
Controller queueCapacity 既定64、0..u32max frame 待機要求だけを数える。3節参照
Controller txProcessingDelay / rxProcessingDelay 各既定0ps、0..u64max ps 非負の時間値。単一CPUのサービス能力ではなく要求ごとの固定遅延
Controller rxFilter 既定"*" 4節の文字列構文
dir.link.FixedDelayのdelay 既定0ps、0..u64max ps 観測通知の遅延。仲裁・ACKの物理伝搬を表さない
INI workload UTF-8 JSON、省略時generatorなし idealはschema_version=1。model-configの追加は拒否
負荷root {schema_version:1,generators:[]} 必須キー。未知・重複キー拒否
generator共通 id,kind,node,frame必須 idは一意な[A-Za-z_][A-Za-z0-9_]*、nodeはController完全パス
frame.format / frame.id standard:0..2047、extended:0..536870911 JSON整数ID。formatは必須。両formatは別key
frame.data 必須、0..8 byteの偶数桁hex、空文字可 0x・空白・奇数桁拒否。DLCは長さから導出
kind=can.explicit.v1 必須times=時間文字列配列 非減少、同時刻重複・空列可
kind=can.periodic.v1 必須start,period、任意phase,end,count phase既定0、period>0、0≤phase<period、end≥start、countは0..u64max整数

動作仕様:周期時刻は start+phase+k*period。指定されたcountとendの双方を満たす候補だけを使い、endとTは未満で判定する。同時刻生成はgenerator ID辞書順、同一generatorではordinal順。request_id=id:ordinalは繰返しの各送信を識別し、CAN IDとは区別する。負荷は遅延展開し、長期間の全要求を初めに配列化しない。

正常例は同梱最小INIとそのworkloadを一緒に使う。count=0・空timesは正常な0件負荷であり、入力検証は省略しない。T以降しか発火しないgeneratorも、不正frameや所有者競合は準備失敗となる。RTR・独立DLC・任意ACK・確率負荷の追加キーは受理範囲外。

下位実装はNED・profile解決とCAN runtime。Rustのserde_json等の入力基盤と共通schedulerを利用するが、外部CANシミュレータを呼び出す構成ではない。仕様・設計・検証の入口はCAN仕様、CAN設計、製品試験。

変更判断:決定的負荷の再現だけで足りるか、確率生成が必要か。周期キーの追加・所有者制限の緩和は入力だけで済まず、同時刻順序、衝突表現、要求ID、旧schema1との互換試験に影響する。

第2節 ローカル候補とバス仲裁

概要

機能仕様:同じBusを共有する複数Controllerのready要求から、CAN仲裁列に従って次の1件を選ぶ。Controller内もID優先であり、単純FIFOではない。

動作仕様:各Controllerが待機中の最優先1件を提出し、Busが全候補を比較する。敗者は保持し、次回は新着を含め再選択する。SOF後の高優先要求は進行中フレームを中断しない。

詳細

機能仕様:比較方式・非プリエンプト・敗者保持は固定。利用者が変えられるのはframeのformat/ID、生成時刻、TX処理遅延、バス速度など。独立の「優先度」設定はない。

比較対象 固定規則
standard仲裁列 ID11bit、RTR=0、IDE=0
extended仲裁列 ID上位11bit、SRR=1、IDE=1、ID下位18bit、RTR=0
bit比較 MSBから最初に違うbitで0が1に勝つ。stuff bitは優先度keyに入れない
Controller内の同じ仲裁列 generated時刻、generator ID辞書順、ordinalの生成順
Busの別Controllerで同じkey 準備時に所有者一意を検査し拒否。正常時に同値勝者を作らない

動作仕様:共通phase0の完了・解放、phase1の生成/ready処理の後、phase2で候補を集める。仲裁の論理選択に追加の時間は加えず、仲裁フィールドは勝者フレーム長に一回含める。仲裁敗者も勝者の受信対象になる。

standard 0x123 とextended 0x048C0000は先頭11bitが同じためstandardが先行する。extended 0x00000123は先頭11bitが0なのでstandard 0x123より先行する。29bitの数値と11bitの数値をそのまま比較すると誤る。SOF直前のreadyは参加でき、SOF後のreadyは次のreleaseを待つ。後着高優先要求が先の低優先要求を繰返し追い越すことはあり、最大待ち時間保証を自動付与しない。

結果ではsof_psとready_ps、仲裁待ちを照合する。multibusではTX受理待ちが追加されるため、tx_enqueued_ps以後の仲裁待ちと区別する。仕様 → 設計 → 選択実装・内部試験。操作例はCANの調停。

変更判断:Controller内FIFOが必要か、現在のID優先が必要か。仲裁方式の変更は送信順だけでなく、キュー滞留、drop、受信順、Gateway下流の負荷へ波及する。

第3節 CRC・stuffing・TX容量・媒体占有

概要

機能仕様:payloadの内容を含むClassical CAN bit列からCRC-15とstuff bit数を算出し、SOF→EOFと次送信が可能になるreleaseを分ける。有限TXキューが過負荷時の新着破棄を表す。

動作仕様:生成要求はTX処理完了時に待機容量を検査する。通常Controllerの満杯は新着をqueue_fullで破棄する。送信開始でキューから外し、EOFで送信成功、3bit intermissionを終えたreleaseでBusを再利用する。

詳細

機能仕様:CRC・stuff規則・intermission=3bitは固定。queueCapacityとbitrateは1節の範囲で設定できる。CRCやstuff数を入力で上書きするキーはない。

項目 固定計算/容量契約
CRC入力 非stuffのSOFからDATA末尾。standardは19+8D bit、extendedは39+8D bit
CRC-15 多項式下位係数0x4599、初期0、最終XORなし。算出値を15bitとして付加
stuff SOFからCRC最終bitまで連続5個の同bit後に反対bitを挿入。field境界でも連続数を保持
frame_bits standard=44+8D+S、extended=64+8D+S。Dはbyte、Sはstuff数
EOF / release SOF+ceil(frame_bits*10^12/R) / SOF+ceil((frame_bits+3)*10^12/R)
待機容量 ready待機件数。TX処理中と送信中を除外。容量0は全新着をdrop
満杯の規則 同時刻phase1はphase2の取出しを先取りしない。通常Controllerはdrop-newest

動作仕様:standard ID0/data空はframe_bits=50、500kbpsでEOF=SOF+100us、release=SOF+106us。これは全0byteフレーム共通の長さではなく、ID・dataが変わるとCRCとstuff数も変わる。payload byte数だけから固定frame長を推定しない。

容量0で一件生成した場合、TX処理後にdropped、SOFなし、attempt_count=0。Busが空いていても容量検査を飛ばして直送しない。容量1で同時刻に二件readyなら、最初の入場後は満杯のため次の要求をdropし、その後phase2が1件を取り出す。Gateway由来コピーの正容量満杯だけは5節のwaiting_txへ進む。

EOF=Tならイベントは未実行でin_flight、成功0。EOF<Tかつrelease≥Tなら送信成功だがBusはintermission中。Receiver到着はさらに後となり得る。結果のframe_bits,stuff_bits,crc15,serialized_bitsと予定/実績EOFを照合する。busy比率にはintermissionを含む観測区間の占有時間を用いる。

規格の参照範囲はISO 11898-1:2024のデータリンク/物理符号化副層の書誌確認。本profileのCRC・仲裁・理想ACKの採用範囲はCAN仕様を正本とし、通信エラー、再送、error-passive、bus-off、物理波形までの適合を主張しない。設計・bit列実装・資源仕様・試験。

変更判断:容量の評価単位はframe件数でよいか。占有をEOFまでに変えると次SOFと利用率が同時に変わる。CRC/stuffingを簡略化すると、同payload長でも異なる送信時間を比較する用途を失う。

第4節 受信フィルタ・処理遅延・成功と期限の読み方

概要

機能仕様:送信元以外の全Controllerへ完了フレームを通知し、受信者別のfilterとRX固定遅延を適用する。送信成功とアプリ受信を別に観測する。

動作仕様:EOF成功後、経路遅延を加えたobservedでfilterを判定する。拒否はfiltered、適合はrxProcessingDelay後にreceived。全受信者が拒否しても理想ACKは成立し、送信成功を取り消さない。

詳細

機能仕様:rxFilterは*、none、又はcomma区切りのstd:0xHEX/ext:0xHEX集合。HEXは1..8桁かつformatのID範囲内。空白・重複・空項目は拒否する。マスク・範囲式・実行中の動的filter変更はない。通常Controllerに有限アプリRXキューはなく、rxProcessingDelayは独立固定遅延でありCPU競合を表さない。

観測項目 意味・境界
observed EOF+source側tx channel.delay+receiver側rx channel.delay。各成分一回
received filter適合時だけobserved+rxProcessingDelay
TX状態 processing→pending→in_flight→success。容量拒否はdropped
Receiver状態 EOFで行を作成、観測前pending、filter不適合filtered、適合して処理完了received
未完了 T以上の観測・受信完了は実行せず予定だけ保持。成功要求にも未完了Receiverがあり得る
deadlineの設定 ideal/multibusのCAN generatorにはdeadline_ps等の期限キーなし。未知キーとして拒否

動作仕様:A送信、B=rxFilter="none"ではA.success=1、B.filtered=1、B.received=0。BのRX遅延だけを900usへ変えてもAのEOF、Bus release、次SOFは変わらず、Bの受信完了だけ後へ移る。遅延がTを跨げばBは未完了となる。

CANの期限評価は、現在のCAN入力に内蔵期限を追加したことにせず、received_ps−generated_ps又はoriginから末端までの遅延を外部の設計期限と比較する。遅延標本に未完了受信を補完しない。Ethernetのdeadline_psの自動集計はEthernet編の期限に限定する。

CAN Viewer

図は対象commitのCAN実行を読むためのViewer例。撮影入力・実行条件・表示時刻は図版の証跡を参照する。要求一覧と受信行を合わせ、successを全受信完了と読み替えない。

CAN要求a:0の記録時刻と受信ノード

詳細図ではEOFが238000000ps、Main.bとMain.cの受信完了も238000000psである。バス解放244000000psはintermission後の別の時刻である。「実行全体の記録時刻」には選択時刻238000000psより後の確定記録も載るため、その欄を選択時刻時点の完了判定と混同しない。

仕様・設計・filter parser・受信runtime・試験。操作例は受信フィルタとRX遅延比較。

変更判断:アプリが遅いほど次の受信も遅れる単一serverが必要か、要求ごと独立でよいか。前者への変更はrxProcessingDelayの値変更では表現できず、RX資源・queue・drop・計測の新しい契約が必要になる。

第5節 独立CANバスとCAN→CAN Gateway

概要

機能仕様:can.cc.multibus.v1は、独立仲裁する複数Busと静的Gateway経路を扱う。format/ID/dataを保ったstore-and-forwardとfanout、ingress別の有限RX保持、egress TX満杯待ちを提供する。

動作仕様:Gateway portの受信処理完了でRX枠を確保し、経路照合→Gateway処理→コピー生成→egress TX処理→TX受理→CAN仲裁を進める。全枝のTX受理又は終端破棄で親のRX枠を解放し、下流の送信成功を待たない。

詳細

機能仕様:INIのmodel-profile="can.cc.multibus.v1"とmodel-config="routing.json"を明示する。workloadはschema2、互換schema1も受理。登録型はdir.can.MultibusControllerとdir.can.MultibusBus。Busは1個以上、各BusのControllerは2個以上。Gateway portsはcompound配下の異なるBus上のControllerを2個以上指定する。

routing.jsonの場所 入力値・既定 範囲・変更効果
root 必須schema_version:1,gateways:[] 空配列はGWなしの独立Bus
gateways[].node,ports,routes 必須module名、Controller配列、経路配列 Controllerの複数GW所有・GW portからのnative generatorを拒否
processing_delay 任意時間文字列、既定0ps 0..u64max ps、RX保持中の独立固定処理
rx_queue_capacity 任意JSON整数、既定64 0..u32max。ingressごとに同容量を適用、親受信frame単位
hop_limit 任意JSON整数、既定16 1..65535。新hopsが上限を超えるとコピー生成前破棄
route id,ingress,egress,format,id_min,id_max 全項目必須 idはGW内一意、egress空不可・別Bus。範囲はstandard0..2047、extended0..536870911
egress ControllerのTX設定 通常CANと同じ queueCapacityの正容量満杯はwaiting_tx、0は終端queue_full

動作仕様:同ingress・formatのID区間重複は端点一致も拒否する。各ID区間についてBus有向経路の閉路を準備拒否し、native送信と経路egressのID所有予約も検証する。未発火・到達不能の経路も検査対象。ID書換え、実行中の経路変更、経路順による先勝ちはない。

受信filter拒否ではGW転送行を作らない。RX容量0/満杯ならgw.rx_bufferにrx_queue_full、元CAN要求のsuccessとReceiver.receivedは保持する。経路なしはgw.forwardがfiltered/no_routeとなりRXを即解放。経路一致なら各枝をパス順に作り、forward_due=received+processing_delay。hop適合時にchild要求を生成しgw.forward=submittedとなる。submittedはコピー生成済みを意味し、送信成功ではない。

正容量TXが満杯ならchildはwaiting_txでRX枠を保持する。SOFでTX待機枠が空くと次deltaで再試行し、GW/TX遅延は加え直さない。空いている枝は先に進めるが、最後の待ち枝がRXを占有し続けるため後続親がrx_queue_fullになり得る。容量0はqueue_fullで終端し、全枝終端後にRXを返す。処理期限=Tならforward行はprocessing、child要求はまだ存在しない。

結果のcan.request、can.receiver、gw.forward、gw.rx_bufferはschema2のsimulation.model_records内にある。旧schema1のsimulation.requestsをそのまま検索しない。originは元要求、parentは直前要求、childは分岐コピーを表す。gw_tx_buffer_wait_ps=tx_enqueued_ps−ready_psとarbitration_wait_ps=SOF−tx_enqueued_psを分ける。元送信一件が複数コピーへ分かれるため、成功件数の単純合算を元要求の配達率にしない。

Gateway Viewer

図はGatewayの物理Bus接続と内部中継の読み方の例。入力と撮影条件は図版の証跡。RX保持とTX待機を別に見る。

Gatewayの元要求詳細と転送コピー一覧

400us時点の詳細図。右上で元要求source:0は送信成功、転送コピー2件は成功1・未完了1と読める。下段のGateway転送表にはMain.gw.bとMain.gw.cへの枝が別々に並ぶ。元要求が成功していても、遅い枝は送信中である。原寸画像で右側の詳細と最下段の枝を確認できる。

GW仕様・GW設計・入力検証・転送実装・製品試験・fanout入力。操作例は処理遅延と複数CAN中継。

変更判断:RX容量はingress別でよいか、GW全体共有が必要か。TX満杯時に保持するか即dropするか。これらは処理遅延値の変更と違い、上流損失と下流待ちの関係、RX解放、保存則、Viewer表示まで変更する。

第6節 CAN FDの外部位相長モデル

概要

機能仕様:can.fd.precomputed.v1はFD専用バスの二速度・BRS・0..64byteの許可DLC長を扱う。内容依存のFD CRC/stuffingを内部生成せず、外部計算/測定で得た位相bit数を入力する。

動作仕様:frame・速度・位相bit数の結合hashと構造を準備検証し、nominal/dataの合計時間を算出する。候補・仲裁・filter・有限TXはCC規則を再利用する。FD波形の正しさはhash一致だけでは証明されない。

詳細

機能仕様:INIで専用profileとmodel-configを選ぶ。model-configは全キー必須の{schema_version:1,profile:"can.fd.precomputed.v1"}。NED登録型dir.canfd.ControllerV1/BusV1とdir.link.FixedDelay、Bus一個・Controller二個以上を使う。

設定位置・キー 値・範囲・単位 省略/固定
Bus nominalBitrate 必須1..1000000整数bps defaultなし
Bus dataBitrate 必須nominalBitrate..8000000整数bps defaultなし。本profileの範囲であり実機速度保証ではない
workload schema2、kind=can.fd.explicit.v1、times_ps 非負u64の正規十進文字列配列、非減少。周期は事前展開
frame 必須format,id,data,brs,wire format/IDはCCと同じ。brsはbool
dataの許可byte長 0..8、12、16、20、24、32、48、64 自動paddingなし、DLC導出
wire 必須nominal_bits,data_bits,evidence,binding_sha256 bit数はJSON整数0..1000000、nominal≥1
BRS=true data_bits≥max(1,8*payload bytes) 位相配分は外部計算
BRS=false data_bits=0、nominal_bits≥8*payload bytes データ速度区間なし
evidence / hash 1..512文字の非空証跡名/小文字hex64桁 hashの入力順は正本仕様参照。frame・速度・bit数と結合

動作仕様:N/Dを公称/データ位相bits、Rn/Rdを速度として、EOF差分は ceil(10^12*(N*Rd+D*Rn)/(Rn*Rd))。releaseはNをN+3に置き換え、和全体で一回切上げる。外部位相長にはSOFからEOF、CRC・stuff・ACKを含め、intermission3公称bitを含めない。速度変更時は外部条件とhashを更新し、古いhashを使い回さない。

正常時はEOFでcanfd.serialized、受信処理完了でcanfd.receivedを計上する。BRS=falseなのにdata_bits>0、10byteなど許可表外payload、hash不一致は準備拒否。EOF=Tは未実行、実績EOFはnullで予定だけを持つ。CCとFDの同一バス混在、RTR、ESI変化、エラー注入は対象外。

結果はdir.canfd.frame/request/receptionのmodel_records。fidelity=externally-precomputed-phase-bits、wire_validation=structural-onlyを保持する。evidence文字列は計算器の版・設定等を識別するためのもので、合法波形の認定ではない。同梱synthetic fixtureも実機golden vectorとは区別する。

FD仕様・設計・入力・runtime・試験・実行INI。操作例はデータ速度比較。

変更判断:外部位相長で相対比較できれば足りるか、payloadからFD bitstreamを自動算定する必要があるか。後者はCC CRCの流用では実現できず、FD専用codecと独立波形検証を追加する設計変更になる。

第7節 CAN↔Ethernet変換

概要

機能仕様:can.ethernet.gateway.v1はClassical CANと全二重Ethernetの静的VLAN/QoSを一つの実行に置き、明示した双方向変換規則で接続する。DIR独自の実験codec、有限共通RX保持、分岐、lineageによるループ停止を提供する。

動作仕様:通常の媒体受信条件を通過した後、codec→lineage→rule→RX容量を判定する。受理した変換を処理後に反対媒体へofferし、全枝の受理/終端破棄でRXを解放する。CAN→CANのmultibus Gatewayとは入力と容量の適用単位が異なる。

詳細

機能仕様:INIのprofile・model-config・workloadをすべて専用形式へ合わせる。NEDの登録キーはdir.bridge.CanController/CanBus/EthEndpoint/EthLink(Switchはdir.ethernet.Switch)。CAN Bus既定500kbps、Controller queue既定64、TX/RX遅延既定0ps、EthLink既定1Gbps/0ps。

model-config / workloadの場所 必須値・範囲 動かせる内容
config root {schema_version:1,can:{},ethernet:VLAN_CONFIG,gateways:[]} canは空object固定、ethernetはschema3の完全構成
gateways[].instance,can_ports,ethernet_endpoint compound、CAN Controller1個以上、Ethernet Endpoint1個 重複所有拒否
rx_capacity 必須JSON整数0..u32max GW全体の共通RX slot数。multibusのingress別容量と異なる
conversion_delay_ps 必須u64正規十進文字列ps observedからの固定変換遅延
max_hops 必須JSON整数1..255 訪問済GW・hop超過を抑止
rule 必須id,direction,ingress,match,egresses 方向はcan_to_ethernet又はethernet_to_can、完全一致のみ
CAN→Eth match / egress format,can_id / port,dst_mac,vid,pcp 出力VID1..4094、PCP0..7を固定写像
Eth→CAN match / egress vid,pcp,format,can_id / port,format,can_id 復号元IDで照合、出力IDへ明示書換え。複数CAN出力可
workload root {schema_version:1,can:CAN_WORKLOAD,ethernet:VLAN_WORKLOAD} 内部CAN schema2、Eth schema3。GW所有送信元はnative指定不可

動作仕様:Ethernetの受信はFCS→admit→VID membership→MAC宛先、CANはrxFilterを先に通す。自身以外のindividual MAC宛てをGWが無差別変換しない。DIR codecはEtherType 0x88B5、magic DIRC、version、format flag、big-endian ID、DLC、0..8byte dataの11..19byte。0x88B5はlocal experimental用途であり、AVTP・SOME/IP・IEEE1722の実装を意味しない。通常Ethernet paddingとCAN CRC/stuffは変換先で扱う。lineageは内部状態でありwire payloadへ埋め込まない。

受理時刻observedで共通RXを予約し、ready=observed+ingress RX処理+conversion_delay。egress TX処理を一回加えてofferする。通常の正容量満杯はwaiting、容量0又はMAC長がbyte上限を超えて永久入場不能ならtx_unadmittableで終端。別枝の成功を戻したり再送したりしない。

拒否理由はinvalid_codec/no_rule/loop_prevented/hop_limit/rx_fullを通常受信拒否と分ける。同GW・方向・ingressの重複ruleは先勝ちにせず準備拒否。Gateway間の論理循環はlineageで停止する一方、Ethernet物理成分はtreeが必要。CAN FD・RTR・半二重・媒体固有PHY・動的制御・TSNとの組合せは現在のprofileで準備拒否する。

結果のdir.can_ethernet.conversion/branch/segmentとnative CAN/Ethernet記録をorigin/parent/childで追う。conversion acceptedはprocessing+waiting_tx+released、branchはwaiting+admitted+dropped。end-to-end分母は各実SOF時に固定した通常terminalの機会数で、未来の変換先を補わない。未完了terminalは分子へ入れず、分母0の率はnull。異種媒体のsuccess件数を単純に足した率にはしない。

変換仕様・設計・入力・runtime・受入試験・双方向例。Ethernet側のVLANと8classはEthernet編を参照する。

変更判断:現在の実験codecと固定ID↔PCP写像でよいか、外部protocol互換が必要か。Gateway+TSN、FRER、preemptionは現行profileの有効設定ではなく提案・後続設計の範囲。採用するなら複合入力、同時刻順序、RX保持、lineage、受信母数、Viewerを合わせて改訂する。

第8節 実装の依存関係と採否レビュー

概要

機能仕様:各profileは入力検証、共通時刻・イベント実行、媒体runtime、結果schema、Viewerを組み合わせる。下位機構を共有していても、profile間の機能を任意に混ぜられるわけではない。

動作仕様:準備失敗は実行を開始せず、実行時の算術・内部不整合は未commit callbackを破棄し、確定済prefixだけを結果へ残す。通常のfilter・queue_full・待機は実行失敗とは分ける。

詳細

機能仕様:判断に必要な下位実装と利用ライブラリを示す。Cargo依存ではserde/serde_jsonが型・JSON、sha2がhash、tiny_httpがHTTPツール、rustix/signal-hookがOS・停止等の基盤を担う。CANのCRC・stuffing・仲裁は本リポジトリのRust実装。利用ライブラリの存在は外部規格codecへの適合を保証しない。

動作仕様:profile選択は入力入口、時刻順序はscheduler・engine、観測は結果仕様へ依存する。CANだけを残す判断でも、共通schema・保存・診断・Viewerから参照されるprofile名と登録型を確認する。詳細な製品試験範囲はCAN検証、GW検証、FD検証、変換検証を正本とし、本書の説明を今回全組合せ実行済みという意味で使わない。

判断 先に確かめる事項 変更に含める成果物
機能を残す どの測定判断に使うか、抽象化が用途に足りるか 代表入力、受入条件、既知制限
設定を変える 範囲内か、単位・既定・適用対象は正しいか NED/INI/JSON、metadata、比較結果
動作仕様を変える 容量境界、同時刻、停止境界、正常dropの意味 正本仕様、設計、実装、独立期待値、Viewer
機能を外す 旧入力・結果を読む必要があるか、他profileの再利用点か 登録・診断、sample、schema reader、移行説明、回帰試験

2026-10-17現行実装追補:承認済み後続10分野のAPI・設定・scope・出力・Viewer境界を追加した。固定commitに基づく既存画像・実測は取得時の証跡として保持する。新機能はv1.1.6に収録する。製品受入最終判定は同追補の製品検証記録へ分離する。文書版・履歴は本pushの改訂として確定した。

関連する実習

GatewayのRX容量と遅い分岐による後続配信の損失では、RX容量だけを変え、親保持・枝別TX受理と後続親の拒否を区別します