スマートフォンの普及であちこちで指摘され始めているのが、「3G回線のパンク」。しかし、このパンクと言う事態を正確に描写している例はあまり見ないような気がするので、私的に、3G回線のパンクとはどういう状況かを、いくつかの想定で紹介したいと思います。の話。
パンクと言っても、実際にネットワークが爆発するなんてことは無くて、「お腹がパンクしそう」と言うような比喩表現の借り物的表現としての「パンク」なわけですから、実際に起こることはもう少し緩やかな現象になります。もちろん、データを食べ過ぎてリバースしちゃうなんてこともありません。
英語的表現だと、ネットワークがパンクしそう、と言うような言い方はなく、もっとダイレクトに「ネットワークの処理能力を超えそうだ」と言うような言い方をすることが多いようです。要するに処理能力(キャパシティ)に対して、処理すべき対象の量が100%に近いことが、3G回線のパンクと言う表現に一番近いということになります。
まずは、その「処理能力」が何を指すのか、と言う点でいくつかの想定を。
最も端的には、無線リソース(電波)が足りなくなる場合。
電波が通る媒体である「空間」と言うのは基本的には「1つ」しかありません。それをいろんな方法で分け合うことでたくさんのユーザが(見かけ上)同時に利用できるようになります(多重アクセス方式)。その分け合い方は、場所であったり周波数であったり時間であったり数学的な変換プロセスであったり、といろいろですが、「無限」であることは絶対にありえません。必ず有限の分割数の上限があります。
一つは、方式上、これ以上分割できないという基礎的な分割数の上限。これは、多くても10とか30とか、比較的小さな数です。一方、実際の無線基地局ではこれより多くのユーザの接続を受けつけ、方式上分割された最小単位をさらに時間的に飛び飛びに割り当てるようなやり方でさらに多くのユーザを収容しようとします。もちろんデータが流れていない人には何も割り当てない、などと言うことをして割当単位をさらに節約します。
こうやって一人当たりの平均割り当て頻度を落としていくことでいくらでも多くの人を収容できるようになりますが、当然各々の割り当て量は減り、つまり平均通信速度は落ちます。さらに進むと、割り当ての最小単位をもらえる間隔が伸びすぎてしまい、通信を行っているアプリケーションが「送ったはずのパケットの返答が来ないから再送してみる」とか「要求したデータが来ないからもう一度リクエストしてみる」なんてことを行うような時間にまでなります。これが起こり始めると一気に破綻します。こうなると、ほぼ全く通信が成立しなくなります。この辺が論理的な分割数の上限。
と言うことで、同時にデータ送受信を行おうとする端末が増えすぎることで無線上の割り当て単位が足りなくなり、飛び飛び割り当て間隔も伸びて一般的な上位プロトコルやアプリケーションがタイムアウトを起こすような状態になる、と言うのが、「ネットワークがパンク」の最も典型的な例と言えます。
また、ここから派生して、センター局から基地局に向けて送信されてくるデータがあまりに多すぎる場合。その瞬間に無線リソースを全て割いても送りきれないデータの分は、次の送信機会にまわすために基地局が持っているバッファメモリに一時保存されますが、バッファメモリといえども無限ではないので、いつか溢れます。当然溢れた分は捨てられます。この状態が持続するようなときもある意味で無線リソース不足によるネットワークパンクの一つの形態と言えます(詳細は後述)。
次に、有線回線(バックホール=基地局と地域センター局の間・バックボーン=地域センター局同士の間)が足りなくなるような状況。こちらは話は単純で、ある瞬間に同時に流そうとするデータが有線回線の容量(バックホールで1Mbps~100Mbps程度、バックボーンは大抵は1Gbpsとか10Gbpsとかその程度)を超えると、先ほどの基地局バッファの話と同じように、送信側の回線に繋がっているフロー制御担当装置(メディアコンバータやスイッチなど)のバッファメモリに一旦保存されます。
で、このバッファメモリは順次回線に送信され解消されていくわけですが、それを上回るスピードで送信側からデータが送られてくると、バッファメモリはいつか溢れてしまい、溢れた分は捨てられてしまいます。その捨てられるパケットが一つ二つならTCPなどの再送アルゴリズムで容易に救済できるのですが、パケット損失率が上がっていくと徐々に再送だけで多くの帯域を消費するようになり、たとえばいくつかの仮定を置いて計算してみると、パケット損失率が10%を超えるとスループットが半分以下になる、くらいの極端な効果が出始めます。
つまり、単に足りないというだけでなく、足りないことによりパケット損失がおき、そのパケット損失がさらにスループットを低下させ滞留パケットを増加させるという正帰還的メカニズムが働いてしまうということです。このような状態になった時もやはり「ネットワークのパンク」と言えると思います。
普通に考えると、無線よりも有線のほうが速度が速い(容量が大きい)のでこのようなことは起こり得ない、と思われるかもしれませんが、案外起こる、というか、専用の有線回線って結構高額なので、起こるような容量になっていることがよくあるようです。バックホールに関しても、無線が最大14Mbpsと言ってもそれは無線が完全な状態でなおかつ全く途切れなく通信が行われた場合に限るわけで、統計的には数Mbps程度が最大になり、また特に田舎ではさらに統計的に最大速度は小さくなるので、実際には1Mbpsくらいしか引いてない、何てこともままあります。バックボーンになるとさらに顕著で、10Mbps出る基地局が1000局ぶら下がっていたら合計10Gbpsが必要に思えますが、統計的なばらつき(いわゆる集線効果)があるため、1Gbpsしか引いていない、と言うこともよくあります。
こういうように、有線区間は無線の究極的な容量(通信速度)よりもかなり低い容量で設計するのが一般的です。となると、無線がありえないほど利用率が上がってしまうと、有線区間でのどん詰まりが実際に起こってしまうことになります。特に、スマートフォンではユーザが知らずに定期的にアクセスするアプリが多いため、これが一斉に大容量データをダウンロードするケースでは、無線よりもまず有線区間でパンクが起こってしまうことがあります。
以上のように、無線のパンク(主に一つの基地局エリア内での容量不足)と有線のパンク(主にネットワーク全体の容量不足)という二つのケースが大雑把に想定できるということになります。実際はこの組み合わせの症状が断続的に起きはじめていよいよ「3G回線のパンク」と言うことになるかと思います。
なので、実際の症状としては、やはり徐々にスループットが落ち始め、同時に、レスポンス時間が延びていきます。pingみたいな単純な仕組みではさほど影響が見えなくても、TCP通信のように何往復もするものだと、レスポンスに1秒も2秒もかかり始めます。これがアナログ的にどんどん進み、誰もが数kbps以下のスループットと10秒以上のレスポンス時間、なんていう状況になっていくわけです。この間のどこが「パンク」の瞬間と言うことは無く、そういうことが徐々に起こっていくのがパンクの過程。実際、通信事業者的には「捌けずに捨ててしまったパケットが○%を超えたら」と言うような指標があるでしょうが、基本的には容量(回線能力、処理能力、バッファ容量、etc)が足りずにパケットを捨て始めたら負け。そこからは正帰還で悪化がガンガン進むと思って良いと思います(と言っても実際は特定の最繁時間のみなので悪化と正常化を当面繰り返す)。
まだここまでの事態には誰も達していないとは思いますし、そうなる前に対策しなければならないわけで、実際、各社は加入者ごとにバルクの通信量を制限するという対策をし始めました。実際、この帯域制限の「絞り度」ツマミをぐりぐりまわせばまだなんとでもなる状態なので、本当の意味での「パンク」にいたることはそうそう無いとは思います。もちろんツマミをまわせば体感速度は落ちますが、手を付けられないパケット破棄が起こる場合の「レスポンスの顕著な悪化」が無ければまだ大丈夫、と。
と言うことで、今日は3G回線のパンクって一体何、のお話でした。