W3C の Trace Context  の翻訳

W3Cのドラフトの Trace Context を深く理解する必要があったので、理解の確認がてら翻訳しながら読んでいるので翻訳をシェアしたいと思います。もち間違いなどありましたら、ご指摘いただけると嬉しいです。まだ途中ですが、そのうち、全部翻訳すると思います。

# Trace Context
## W3C Editor's Draft 15 October 2018

[原本へのリンク](https://w3c.github.io/trace-context/)

# 概要 

分散トレーシングは分散アプリケーションのヘルスチェックや、信頼性をモニタするためのツールやプラクティスです。分散アプリケーションは、複数のコンポーネントからなっており、別々にデプロイされ運用されます。マイクロサービスとも呼ばれます。

分散トレーシングの背景にある主となるコンセプトは、Event Correlation (イベントコリレーション：イベントの関連性)という考え方です。Event correlation は、１つのコンポーネントからのイベントと別のコンポーネントからのイベントを関連付ける方法です。これにより、それらのイベント間での「原因と結果」の関連を見つけることができるようになります。たとえば、ブラウザの中でどのユーザのアクションがビジネスロジックレイヤの失敗を引き起こしたかということを見つけることができます。

コンポーネント間のインベントを関連付けるためには、コンポーネント間でコンテキスト(Context)と呼ばれる情報を交換して、保存しておく必要があります。コンテキスト(Context)は一般的にトレースをスタートさせたイベントのイベント識別子、そののコンポーネント識別子、そしてほかのイベントのプロパティからなります。コンテキストは２つのパートからなります。最初のパートは、トーレスコンテキストです。トレースコンテキストはイベントコリレーションに必須のプロパティから構成されています。二つ目のパートは、コリレーションコンテキストです。コリレーションコンテキストは、ユーザが定義したプロパティをもっています。これらのプロパティは、コリレーションのシナリオに役に立つでしょう。しかし、それらは、必須ではありません。コンポーネントは、それらをもちはこんだり、保存したりしないことを選ぶかもしれません。

分散トレーシングのコンテキストのフォーマットを統一することと、値 (value)の意味付けの整合性をとることは、このワーキンググループの主な目的です。ゴールは、それをコミュニティにシェアし、いろんなトレーシングと診断(Diagnostics)プロダクトが、一緒に運用できるようにすることです。

# このドキュメントのステータス

このセクションは、これが公開された時点でのドキュメントのステータスを説明しています。ほかのドキュメントがこのドキュメントを差し替える可能性があります。現在の W3C の公開リストと、最新のリビジョンのこのテクニカルレポートは、[W3C technical report index](https://www.w3.org/TR/)で見つけることができます。

これは、最初の公開されたワーキングドラフト([FPWD](https://www.w3.org/2017/Process-20170301/#working-draft))です。既にいくつかの実際に使えるプロトコルが存在します。実験的な相互乗り入れのシナリオは、すでに実践されていて、良い結果がでています。そのあとで、仕様(the specification)、候補推薦ステージ(Candidate Recommendation stage)に進む予定になっています。バイナリや、AMQP、MQTTプロトコルのドラフトは、この仕様の中で、コンセプトと、構造が述べられています。それらは、ほかのプロトコルに移植できるようになっています。

このドキュメントは、[Distributed Tracing Working Group](https://www.w3.org/2018/distributed-tracing/)によって編集者ドラフトとして公開されています。

GitHub issues は、この仕様を話し合うのに望ましい場所です。ほかの方法としては、みなさんは、コメントをメーリングリストに送ることができます。public-trace-context@w3.org([archives](https://lists.w3.org/Archives/Public/public-trace-context/))に distributed-trace-contxt をe-mail の subject の先頭につけて送ってください。

編集者ドラフトとしての後悔は、W3Cのメンバーシップから推薦されていることを意味しません。これはドラフトドキュメントで、更新されるかもしれませんし、置き換えられたり、新しいドキュメントにより、古くて意味のないものになる可能性があります。このドキュメントは、検討中以外のドキュメントでしかありません。

このドキュメントは、[W3C Patent Policy](https://www.w3.org/Consortium/Patent-Policy-20170801/)を守ったグループによって作られました。W3C は、所有している権利のリストを公開してメンテナンスしています。そのリストはグループの検討の過程でできた成果物と関連してつくられています。そのページは、所有している権利の公開のインストラクションも含んでいます。一つの知的財産権に関して実際の知識をもっている個人は、[Essential Claim(s)](https://www.w3.org/Consortium/Patent-Policy-20170801/#def-essential)が情報を公開しています。第六章 W3C Patent Policy でも述べられています。

このドキュメントは、[February 2018 W3C Process Document](https://www.w3.org/2018/Process-20180201/) として管理されています。

# 全体像

トレースコンテキストは、いくつかのプロパティから構成されます。それは分散アプリケーションのイベントコリレーションに必須の情報です。トレースコンテキストは、分散トレースの中でリクエストに位置付けされます。あなたが、分散トレースを関係グラフのリクエストとしてみなすと、１つのリクエストは、複数のグラフの１部になりえます。例えば、コンポーネントAがコンポーネントBを呼んでいて、コンポーネントBがCを呼んでいる。１つの分散トレーシングシステムがコンポーネントAがコンポーネントBを呼んでいるのだけが見えているかもしれない。ほかのシステムが３つすべてのコンポーネントを見ているかもしれない。だから、BからCの呼び出しは、サービスAに関するトレースコンテキストと上流であるBからの直接の情報をもっているでしょう。

この状況、つまり、１つのリクエストが複数のグラフの一部というのは、頻繁に発生する。１つの分散アプリケーションが複数の分散トレーシングシステムで監視されうる。これらの分散トレーシングシステムは、クラウドベンダーから提供されているものや、すでに組み込まれているコンポーネントで置き換えするのが簡単でないかもしれない。

トレースコンテキストは、すべての分散トレーシングシステムに拡張できるよう設計されている。分散トレーシングシステムは、ほかの分散トレーシングシステムでセットされたコンテキストに従うことを要求します。

トレースコンテキストは name/value のペアのセットとして表現されて、すべての http リクエストのidentity(その人がだれであるか？）をあらわします。２つの propergatin field (伝搬させるためのフィールドという意味だと思われる) はトレースコンテキストを構成する共通の部分そして、ベンダー固有のプロパティを伝搬します。

* traceparent トレースグラフの中で受け取ったリクエストのポジションを表しています。ポータブルで、固定長フォーマットです。早くパースすることができるようなデザインになっています。
* tracestate 受け取った親のすべてのグラフの写像です。おそらくはベンダー固有のフォーマットです。例えば、リクエストがクロストレーシングシステムだったら、tracestate に、それぞれのシステムが１つのエントリを持っています。

一般的に、tracestate フィールドは traceparent のデータの観点で独立していません。

ライブラリやプラットフォームは、tranceparent と trancestate のヘッダを伝搬させる必要があります。トレースが壊れないよう保証しなければなりません。

# トレースコンテキスト Http ヘッダフォーマット

この章では、分散トレースコンテキストの決まり事を組み込む方法、traceparent と tracestate を http headers に組み込む方法を説明します。

## ヘッダの関係

traceparent ヘッダは、トレーシングシステムの共通のフォーマットで、受信したリクエストを表します。tracestate ヘッダは親の情報を含み、おそらくはベンダー固有のフォーマットです。

たとえば、congo システムでトレースされているクライアントは、次のヘッダをアウトバウンドの http リクエストに追加します。

```
traceparent: 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01
tracestate: congo=BleGNlZWRzIHRohbCBwbGVhc3VyZS4
```

もし、受信サーバーが rojo トレーシングシステムでトレースされたら、それは、ステートに引き続き存在して、新しいエントリをそのトレースの特定の場所に追加されます。

```
traceparent: 00-0af7651916cd43dd8448eb211c80319c-00f067aa0ba902b7-01
tracestate: rojo=00-0af7651916cd43dd8448eb211c80319c-00f067aa0ba902b7-01,congo=BleGNlZWRzIHRohbCBwbGVhc3VyZS4
```

rojo システムが、traceparent の値を tracestate　のエントリに再利用しているのにお気づきかもしれません。これは、一般的なトレースシステムを意味します。そうでなければ、tracestate エントリーは、理解しずらくなるでしょう。
もし、上記の受信サーバが再び congo になった場合、最後のポジションから再開して、新しい親を表す新しいエントリで上書きするでしょう。

```
traceparent: 00-0af7651916cd43dd8448eb211c80319c-b9c7c989f97918e1-01
tracestate: congo=lZWRzIHRoNhcm5hbCBwbGVhc3VyZS4,rojo=00-0af7651916cd43dd8448eb211c80319c-00f067aa0ba902b7-01
```

congo が、traceparent エントリを書くときに、前のトレースIDを再利用しています。これは、これらのコリレーションを実施するにあたり、一貫性を保つのに役立ちます。しかし、 tracestate は、理解不能で、違ったものになっています。このことは、問題ありません。

最終的に、tracestate が、rojo のエントリを持っています。全く同じものです。右側に移動したことを除いては。最も左にあるポジションによって、次のサーバーがどのトレーシングシステムが traceparent に一致しちえるかを知らせています。このケースでは、congo が traceparent を書きました。この tracestate エントリは、もっとも左にあるべきです。

## TraceParant フィールド

### Header name

複数のプロトコルの相互互換性を向上させたり、デフォルトでのインテグレーションを成功させるために、ヘッダー名は小文字にすることをお勧めします。ヘッダ名は１つのワードで、-等のデリミタがありません。

> Header name: traceparent

プラットフォームやライブラリは、ヘッダ名が、小文字であろうと、大文字であろうと処理できることを期待します。そして、ヘッダ名を小文字で送信するべきと考えます。

### フィールドバリュー

この章は「the Augmented Backus-Naur Form(ABNF)記法」[RFC5234](https://tools.ietf.org/html/rfc5234)が使われます。HEXDIG ルールも含みます。

```
value           = version "-" version-format
version         = 2HEXDIG   ; this document assumes version 00. Version 255 is forbidden
```

Value は、US-ASCII でエンコードされたキャラクタです。(それらは、UTF-8 に準拠している。　キャラクタの - はフィールドのデリミタとして使われます。
Version は、1バイトの表現で、8-bit の unsigned integerです。 Version 255 は不正です。現在の仕様では、バージョンは 00 にセットされることが想定されています。次のバージョンフォーマットの定義は、バージョン 00 に使われます。

```
version-format   = trace-id "-" span-id "-" trace-flags

trace-id         = 32HEXDIG  ; 16 bytes 配列の識別子。すべて０は禁止されている。
span-id          = 16HEXDIG  ; 8 bytes 配列の識別子。すべて０は禁止されている。
trace-flags      = 2HEXDIG   ; 8 bit のフラグ.　現在は１ビットのみ使われている。次の詳細を参照
```

### Trace-id 

トレースID は、トレースの「森」のIDです。16バイト配列です。例えば、`4bf92f3577b34da6a3ce929d0e0e4736`。すべてのバイトで、０は不正と考えられています。

Trace-id は分散トレースをユニークに特定するためにつかわれます。ですので、実装は、グローバルにユニークな値を生成するべきです。多くのゆーにーくなIDを生成するアルゴリズムは、いくつかの定数パート(NOTE: not sure)を基にしています - 時間とか、ホストベースとか、ランダムバリューなど。ランダムなサンプリングによる意思決定を行うものがあります。それらは、trace-id の値を基にしています。ですので、相互運用性を向上させるために、trace-id の右側のランダムなパートを保持することが推薦されます。

システムが短い trace-id で運用されたときは、残りのバイトをゼロではなく、ランダムバリューで埋めることが推薦されます。システムが、8バイトの trace-id たとえば、`3ce929d0e0e4736` だとします。trace-id を `0000000000000003ce929d0e0e4736` にするかわりに ジェネレートしたバリューである`4bf92f3577b34da6a3ce929d0e0e4736`するのが推奨されます。`4bf92f3577b34da6a` はランダムな値もしくは、時間の関数や、ホストの値です。たとえ、システムが、短い trace-id で運用されていたとしても、分散トレーシングのレポートのためには、フルの trace-id が伝搬されるべきです。仕様を満たすためには必須です。

trace-id が不正な場合、実装は、traceparent を無視すべきです。たとえば、もし、trace-id が認められていないキャラクターを使っているケースなどです。

### Span-id 

Span-id とは、親の呼び出しもとの ID です。８ビットの配列で表されています。例えば `00f067aa0ba902b7` です。すべてのバイトにおいて、0は、不正と考えられます。

span-id が不正な場合は、実装は、traceparent を無視すべきです。例えば、span-id が認められていないキャラクターをもっている場合などです。

### Trace-flags

８ビットのフィールドで、サンプリングや、トレースレベルなどのトレーシングのフラグをコントロールします。これらのフラグは、推薦されます、厳密なルールにしたがうというより、呼び出しもとによって与えられます。次の３つの理由によります。

1. 信頼と
2. 呼び出し元のバグ
3. 呼び出し元と呼び出し先の負荷の違いが、強制的に呼び出し先 (down sample)

詳細は本仕様のセキュリティの章で詳細をみつけることができます。

他のフィールドと同じく、trace-flags は、１６進数でエンコードされています。例えば、すべての８つのフラグがセットされる場合は、`ff` なるでしょう。フラグがない場合は、`00` になります。

これはビットのフィールドなので、フラグを１６進数でデーコードして、結果をみることは必要ありません。例えば、フラグ `00000001` は、16進で、`01` になる、もしくは、16進数で`09`　は、`00001000` のフラグで表現されます。  ビットフィールドのよくある間違いとしては、フラグを解釈するときに、マスクするのを忘れることです。次に適切に設定された trace flag のサンプルを示します。

```
static final byte FLAG_RECORDED = 1; // 00000001
...
boolean recorded = (traceFlags & FLAG_RECORDED) == FLAG_RECORDED
```

現在の仕様のバージョンだと、recorded と呼ばれるシングルフラグのみサポートされています。

### Recorded Flag (00000001)

セットされた場合、ドキュメントのもっとも影響の少ないビットで、呼び出し元は、トレースデータを記録する。呼び出し元が、トレースデータを記録しないときは、flag をアンセットにしておく。

分散トレーシングの参加者の一部だけが記録される場合、多くの分散トレーシングのシナリオは破綻します。あるていどの負荷に記録される情報、受信、送信のリクエストは、信じられないほど高価になりうる。ランダムを生成したり、データコレクションのコンポーネント特有の決定をおこなうと、すべての分散トレースでフラグメントデータになりやすい。
このように、トレーシングベンダーや、プラットフォームが、記録された決定を分散トレースや、意思決定を行うために、引き渡すことはよくあることだ。

レコーディングの意思決定をするためのベストのアルゴリズムがどれかは、コンセンサスがない状態だ。いろんなテクニックが含まれる: 
たしかさのサンプリング(サンプル1-100　コインを投げることによる、分散トレーシング)遅延決定(コレクションを期間や、呼び出しの決定により、決定ベース(decision based)　サンプリングの遅延 (deferred sampling) (受信側にリクエストに対してリクエストの情報を収集するか決定させる)。すべてのテクニックにトレーシングベンダー特有だったり、アプリケーションが決めたバリエーションやカスタマイズが存在する。

tracestate フィールドは、さまざまなテクニックを処理できるようにデザインされている。これは、トレーシングシステムやプラットフォーム毎に、記録の決定をほかの特定の情報によって特定するようできている。recorded フラグはベンダーによりよい、相互運用性を提供している。それは、記録の決定をコミュニケーションして、顧客によりよい体験ができるようにしている。

たとえば、SaaS サービスが、分散トレーシングに参加しているとき、このサービスは、呼び出し元からつかわれるときに、トレーシングシステムに関しての知識がないとします。しかし、このサービスは来たリクエストをモニタしたり、トラブルシューティングのために、リクエストを記録するようにしているかもしれません。recorded フラグはリクエスト、呼び出しもとにより、記録するとマークされたリクエストを、SaaS サービスでも記録されるようにします。だから呼び出しもとは、すべての記録されたリクエストの振る舞いをトラブルシューティングすることができます。

recorded のフラグは、その値が変わることについて(mutated)、特に制約はありません。ただし、span-id が変更になったときのみ変更することができます。"Mutating the tranceparent field"の章をご覧ください。しかしながら、ベンダーの互換性を向上させるためのいくつかの推薦事項があります。

1. コンポーネントが レコーディングの決定をしたのならば、その決定は、recorded フラグに反映されるべきです。
2. コンポーネントがレコーディングの決定をする必要があるならば、それは、recorded フラグの値を尊重するべきです。セキュリティの考慮事項をちゃんと適用するべきです。さもないと、このフラグが攻撃や不正な使い方がされるでるでしょう。Security の章をご覧ください。
3. コンポーネントが、決定を先送りにしたり、遅らせたり、テレメトリの一部のみ記録されていたら、 recorded フラグは変更されずに伝搬させられるべきです。そして、デフォルトとして、0にセットします。トーレスが、コンポーネントによって初期化されたときは。そこでは２つのオプションがあります。
  1. レコーディングの決定を先送りにしたり遅らせたりすることを決めたコンポーネントは、プライオリティを通信します。recorded フラグをサブセットのリクエストとしてセットします。
  2. コンポーネントは、サブセットのリクエストの場合、recorded フラグを１にして、確率サンプリング (probability sampling)に戻ります。

  ### 他のフラグ

  他のフラグの振る舞い。例えば(00000100) は、定義されていません。未来のために予約されています。実装は、これらを０にすべきです。

  ## HTTP ヘッダの例

### 呼び出しもとが、リクエスを記録した時に、妥当な traceparent 

```
Value = 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
base16(<version>) = 00
base16(<traceid>) = 4bf92f3577b34da6a3ce929d0e0e4736
base16(<spanid>) = 00f067aa0ba902b7
base16(<traceflags>) = 01  // recorded
```

### 呼び出しもとが、リクエストを記録しないときの、妥当な traceparent

```
Value = 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-00
base16(<version>) = 00
base16(<traceid>) = 4bf92f3577b34da6a3ce929d0e0e4736
base16(<spanid>) = 00f067aa0ba902b7
base16(<traceflags>) = 00  // not recorded
```

## traceparent のバージョニング

実装は、未来のバージョンの仕様について、強い意見があることでしょう。現在のバージョンの仕様からは、未来のバージョンの traceparent ヘッダーは現在のものに、追加される形式になるでしょう。
実装は、想定外のヘッダーをパースするときに、次のルールに従ってください。

1. パススルーサービスは、バージョンを分析するべきではありません。パススルーサービスは、ヘッダーが未来により大きなサイズになるかもしれないこと、そのサイズがとんでもなく大きくなったときのみ認めないようにすることを想定します。
2. バージョンのプレフィックスがパースできない時 (それは、2つの１６進数のキャラクターで、ダッシュ(-)のあとにつきます)、実装は、トレースをリスタートします。
3. もし、より高いバージョンが検出されたら - 実装はそれをパースすべきです。
  1. もし、ヘッダのサイズが 55キャラクタより短かったら、実装はヘッダをパースするべきではなく、トレースをリスタートすべきです。
  2. trace-id を最初のダッシュから、次の 32 キャラクタまでパースしましょう。実装は、32 キャラクターが16進数であることを確認しましょう。そして、ダッシュがそのあとに来ていることを確認しましょう。
  3. span-id を３５番目の２個目のダッシュから、16キャラクタまでパースしましょう。実装は、16 キャラクターが16進数であることを確認しましょう。そして、ダッシュがそのあとに来ていることを確認しましょう。
  4. サンプリングビットのフラグをパースしましょう。３つ目のダッシュから２キャラクタです。そのあとが、文字列の終了もしくは、ダッシュになっています。もし、３つめのバリューがうまくパースできたら、実装は、それらを使うべきです。実装は、このバージョンの知らないフィールドをパースしたり、想定したりすべきではありません。実装は、これらの値を新しい traceparent フィールドを作成するのに使うべきです。最もバージョンの高い仕様にしたがって、そうしましょう。(この仕様は、00です。)


# トレースステート　フィールド

tracestate HTTP ヘッダフィールドは、複数の分散トレーシンググラフの中で、リクエストのポジションの情報を伝達します。

## ヘッダ名

複数のプロトコルでの、互換性を向上させるために、ヘッダは、小文字にすることを推奨します。ヘッダ名は、シングルワードで構成されていて、-でデリミタされます。

> Header name: tracestate

プラットフォームやライブラリは、ヘッダ名がすべてのケース（大文字、小文字）であることを期待すべきですが、ヘッダを送信するときは小文字にすべきです。

## ヘッダの値

このセクションは、`Augmented Backus-Naur Form (ABNF)` 記法を使います。([RFC5234](https://tools.ietf.org/html/rfc5234))。[appendix B.1 for RFC5234](https://tools.ietf.org/html/rfc5234#appendix-B.1) の DIGIT ルールを含みます。そして、[RFC7230 section 3.2.3](https://tools.ietf.org/html/rfc7230#section-3.2.3)のOWS ルールも含みます。

> DIGIT ルール　は、0-9 を定義します。

OWS ルールは、オプションのホワイトスペースを定義します。０かそれ以上のホワイトスペースが使われる可能性があります。もし、可読性を上げたいのなら、送り手は、オプションのホワイトスペースを、１つのスペースとして生成するべきでです。そうでなければ、送り手は、オプションのホワイトスペースを生成するべきではありません。詳細は、該当する RFC をご覧ください。

tracestate フィールドの値は、下記のリストを参照してください。リストは、連続の`list-members`で、`,` によって分割されています。`list-members` は、キーバリューペアで、`=` によって分割されます。`list-members` をかこっているスペースやタブは無視されます。最大値で 32の`list-members`がリストの中に存在あします。

リストの単純な例として、２つの `list-members` を持ったものは次のようになります。:

```
vendorname1=opaqueValue1,vendorname2=opaqueValue2.
```

```
list  = list-member 0*31( OWS "," OWS list-member )
list-member = key "=" value
```

識別子(Identifiers)は短いテキストです(256キャラクターまで)

```
key = lcalpha 0*255( lcalpha / DIGIT / "_" / "-"/ "*" / "/" )
key = lcalpha 0*240( lcalpha / DIGIT / "_" / "-"/ "*" / "/" ) "@" lcalpha 0*13( lcalpha / DIGIT / "_" / "-"/ "*" / "/" )
lcalpha    = %x61-7A ; a-z
```

識別子は、小文字から始まる必要があります。そして、`a-z`、`0-9`、`_`, `-`, `*`, そして `/` が含まれます。マルチテナントのベンダーのシナリオでは、`@` サインが、ベンダーのプレフィックス名として使うことができます。推薦される使い方は、tenant id をキーの最初でセットします。例えば`fw529a3039@dt` `fw529a3039` は、tenant id で、 `@dt` は、ベンダー名です。`@dt=` で検索することは、より堅牢なパースになります。（すべてのベンダーキーの検索）
値は、可読性の悪い文字列で、256文字までで、印刷可能な、ASCII [RFC0020](https://www.rfc-editor.org/info/rfc20)のキャラクターです。(0x20 から 0x7E です)。ただし、`,` と `=` は除きます。タブや、ニューライン、キャリッジリターン等も排除されます。

```
value    = 0*255(chr) nblk-chr
nblk-chr = %x21-2B / %x2D-3C / %x3E-7E
chr      = %x20 / nblk-chr
```

ヘッダの合計の長さは、512バイト未満であるひつようがあります。もし、ヘッダ全体の長さが 512 バイト以上だったら、無視されるべきです。

```
Example: vendorname1=opaqueValue1,vendorname2=opaqueValue2
```

トレースグラフのキーバリューペアの値をつなぎ合わせたものです。１つのキーに対して、１つのエントリだけが認められています。エントリは、トレースの最後のポジションをあらわすからです。だから、実装は、それらのエントリを、彼ら自身のトレースしすてむでリエントリします。

たとえば、トレーシングシステムの名前が `congo` で、トレースがそのシステムで始まって、`rojo` というシステムを通って、`congo` に戻ってくるとします。`tracestate` の値は次のようになりません。

```
congo=congosFirstPosition,rojo=rojosFirstPosition,congo=congosSecondPosition
```

そうではなく、エントリは、もっとも最近のポジションのみがかかれます。

```
congo=congosSecondPosition,rojo=rojosFirstPosition
```

** 制約事項: ** 複数の `tracestate` ヘッダが一つのリクエストに入っているかもしれません。[RFC7230 section 3.2.2.](https://tools.ietf.org/html/rfc7230#section-3.2.2)。ヘッダの最大値は、512文字です。この長さは、セパレータのコンマを含みます。しかし、オプションのホワイトスペース文字(OWA)は含んではいけません。

`tracestate` フィールドは、リクエストコリレーションの本質的な情報を含んでいます。プラットフォームとトレーシングシステムは、このヘッダを伝搬するべきです。`tracestate`　を仕様に準拠して、リクエストのペイロードや、関係するメタデータに保存されることが求められます。長いフィールドの値を認めてしまうと、仕様に沿うことができません。だから、512文字のアグレッシブな制約が選ばれました。

もし、`tracestate` の値が、512 文字以上になったら、トレーサーは、`tracestate` を転送することを決めることができます。`trancestate` が文字上限を超えて伝搬させたら、レシーバは、このヘッダをドロップします。




# 単語

Originating: Originate V When something originates or when someone originates it, it begins to happen or exist. 
 - The disease originated in Africa.
 - I suppose no one has any idea who originated the stroy

 semantic: Semantic is used to describe things that deal with the meanings of words and sentences. 
 - He did not want to enter into a semantic debate

 align: v to change something so that it has a correct relationship to something else: 
   Later this year, the company will introduce a price platform for its home insurance contracts and will aligh all it prices. 

diagnostic: ADJ Diagnostic equipment, methods, or systems are used for discovering what is wrong with people who are ill or with things that do not work properly. 

- X-rays and other diagnostic tools. 

operate: v The way that something operates is the way that it works or has a particular effect.
- Ceiling and wall lights can operate independently.
- The world of work doen't operate that way.

supersede v If something is superseded by something newer, it is replaced because it has become old-fashioned or unacceptable. 
- Hand tools are relics of the past that have now been superseded by the machine. 

relic n-count If you refer to something or someone as a relic of an earlier period, you mean that they belonged to that period but have survived into the present. 

- Germany's asylum law is a relic of an era in Eurpoean history which has passed. 

endorsement n-count An endosement is a statement or action which shows that you support or approve of something or someone. 
- This is a powerful endorsement for his softer style of goverment. 

Something that is obsolete is no longer needed because something better has been invented. 
- So much equipment becomes obsolete almost as sonn as it's made

patent n-count A patent is an official right to be the only person or company allowed to make or sell a new product for a certain period of time. 
- P&G applied for a patent on its cookies.
- He held a number of patents for hist many innovations. 

disclosure n-var Disclosure is the act of giving people new or secret information. 
- insufficient disclousre of negative information about the company.

claim v If you say that someone claims that something is true, you mean they say that it is true but you are not sure whether or not they are telling the truth. 
- He claimed that it was all a conspiracy against him.

conspiracy n-var Conspiracy is the secret planning by a group of people to do something illegal. 
- Seven men, all from Bristol, admitted conspiracy to commit arson. 

arson n-uncount Arson is the crime of deliberately setting fire to a building or vehicle. 
- ...a terrible wave of rioting, theft and arson.

publication n-uncount The publication is a book or magazine that has been published. 
- They have started legal proceedings against two publications which spoke of an affair. 

position v If you position something somewhere, you put it there carefully, so that it is in the right place or position. 
- Place the pastry circles on to a baking sheet and position one apple on each circle. 

correlate v If one thing correlates with another, there is a close similarity or connection between them, often because one thing causes the other. You can also say that two things correlate. 
- Obesity correlates tith increased risk for hypertension and stroke. 

hypertension n-uncount Hypertension is a medical condition in which a person has very high blood pressure. 
stroke n-count If someone has a stroke, a blood vessel in their brain bursts or becomes blockend, which may kill them or make them unable to move one side of their body. 
- He had a minor stroke in 1987, which left him partly paralysed. 

as a result of something that is part of a connected series of events 
- Her mother taught her, and she in turn taught her own daughter. 
one after the other in an order that has been agreed or officially decided 
- We look at each element of the process in turn 

upstream ADV alter v Something that is moving upstream is moving towards the source of a river, Something that is upstream is towards the source of a river. 
The water rose high enough for them to continue upstream.
AdV add meaning for something which is not noun. this senttence add explanation after the main sentence. 
https://mysuki.jp/english-adverb-4554

If you respect a low or moral principle, you agree not to break it. 
- It is about time tour operators respected the law and their own code of conduct. 

it's about time (idiom)
used to say often in an annoyed way that something sould have happened sooner
- It's about time you got here. I've been waiting for over an hour!
- They're getting married. Well, it's about time. 

https://www.merriam-webster.com/dictionary/it's%20about%20time

represent v If someone such as a lawer or a politician represents a person or group of people, they act on behalf of that person or group.
- the politicians we elect to represent us. 

identity n-count , n-var
Your identity is who you are.
- Abu is not his real name, but it's one he uses to disguise his identity. 
The identity of a person or place is the characteristics they have that distinguish them from others. 
- I wanted a sense of my own identity. 

propagation n If people propagate an idea or piece of information, they spread it and try to make people believe it or support it. 
- They propagated polictical doctrines which promised to tear apart the fabric of British society. 

doctrin n-var A doctrine is a set of principles or beliefs, especially religious one. 
- the Marxist doctrine of perpetual revolution. 

perpetual adj A perpetual feeling, state, or quality is one that never ends or changes. 
A perpetual act, situation, or state is one that happens again and again and so seems never to end. 
- I thought her perpetual complaints where going to prove too much for me. 

incoming adj An incoming message or phone call is one that you receive. 
- We keep a tape of incoming calls.

map v to assign(something, such a a set or an element) in a mathematical or exact correspondence 
- map picture elements to video memory

Notably adv You use notably to specify an important or typical example of something that you are talking about.
- The divorce would be granted when more important problems, notably the fate of the children, had been decided. 

unreliant adj reliant means having or showing dependence: 
- reliant on money from home. 
reliant confident; trustful. 

binding adj A binding promise, agreement or decision must be obeyed or carried out. 
- proposals for a legally binding commitment on nations to stabilise emission of carbon dioxide. 

carry over phrasal verb 
If something carries over or is carried over from one situation to another, it continues to exist or apply in the new situation. 
- Priestley's rational outlook in science carried over to religion. 
- Springs and wells were decorated, a custom which was carried over into Christian times in Europe. 

opaque adj 
If an object or substance is opaque, you cannot see through it. 
- You can always use opaque glass if you need to block a street view. 
If you say that something is opaque, you mean that it is difficult to understand.
- the opaque language of the inspector's reports. 


augment v To augment something means to make it larger, stronger, or more effective by adding something to it. 
- While searching for a way to augment the family income, she began making dolls. 

backus middle english sir name

naur
https://en.wikipedia.org/wiki/Backus–Naur_form

notiation n-var
A system of notation is a set of written symbols that are used to represent something such as music or mathematics. 
- Musical notation was conceived for the C major scale and each line and space represents a note in this scale. 

compliant adj
If you say that someone is compliant, you mean they willingly do what they are asked to do. 
- a docile and compliant workforce. 

docile ajd
A person or animal that is docile is quiet, not aggressive, and easily controlled. 
- docile, obedient children. 

forest n-var

something resembling a large wooded area, esp in density. 
- a forest of telegraph poles. 

constant adj
You use constant to describe something that happens all the time or is always there. 
- Inflation is a constant threat. 

span 

abuse

significant adj
A significant amount or effect is large enough to be important or affect a situation to a noticeable degress.
- A small but significant number of 11-year-olds are illiterate.

illiterate adj
Someone who is illiterate does not know how to read or write.
- A large percentage of the population is illiterate.


out-of-band 
Out-of band is activity outside a defined telecommunications frequency band, or, metaphorically, outside some other kind of activity. Protection from falsing is among its purpose. 

certain adj
If you say that something is certain, you firmly believe that it is true, or have definite knowledge about it. 
- One thing is certain, both have the utmost respect for each other. 

utmost adj
You can use utmost to emphasize the importance or seriousness of something or to empasize the way that it is done. 
- It is a matter of the utmost urgency to find out what has happened to these people. 

prohibitive adj
If the cost of something is prohibitive, it is so high that many people cannot afford. 
- The cost of private treatment can be prohibitive.

fragment n-count
A fragment of something is a small piece or part of it. 
- fragments of metal in my shoulder

defer v 
If you defer an event or action, you arrange for it to happen at a later date, rather than immediately or at the previously planned time. 
- Customers often defer payment for as long as possible.

mutation n
the act of process of changing

abusive adj
Someone who is abusive behaves in a cruel and violent way towards other people
- He become violent and abusive toward Ben's mother.

defer v
If you defer an event or action, you arrange for it to happen at a later date, rather than immediately or at the previously planned time.
- Customers often defer payment for as long as possible.

fall back phrasal verb
If you fall back, you move backwords a short distance away from someone or something. 
- He fell back in embarrassment when he saw that Ross had no hair at all.

also it means to receide. receide means: If something recedes from you, it moves away.
- The waves fell back. 

opinionated adj
If you describe someone as opinionated, you mean that they have very strong opinions and refuse to accept that they may be wrong. 
- Sue is the extrovert in the family, opinionated, talkative and passionate about politics. 

additive n-count
An additive is a small substance which is added in small amounts to foods or other things in order to improve them or to make them last longer. 
- Strict safety tests are carried out on food additives. 

prohibitive adj
If the cost of something is prohibitive, it is so high that many people cannot afford. 
- The cost of private treatment can be prohibitive.