arp実装について
仕事の都合で間が開いたので現状把握と仕切りなおし。自分の頭の整理のために書いてみる
- ARPTEST(サーバー)と HIGE クライアントの構成で IP Address to MAC Addressをできるか試している途中
id:mjtの人が言っていたように現在問題になっているのは「非同期の処理をどうあつかうか?」という点に尽きる。
これはとてもまじめに考えるべき問題であると思う。
今思いつく限りで、2つの大きな問題ある
- ソケットライブラリレベルでの非同期APIにおける、開発者向けインターフェースをどうするか?
- ソケットライブラリの内部実装において、非同期問題にどう対処するか?
前者に関しては各プラットフォームのソケットライブラリを参考にすればよい。
後者に関しては、Monaのサーバアーキテクチャやマルチスレッド等を考慮しなければならない
前提としては
呼び出し順序 | サーバー | Ether | Arp | Nic | 備考 |
---|---|---|---|---|---|
1 | ip address to mac address メッセージ受信 | ||||
2 | send | ||||
3 | nic->outputframe | ||||
4 | ここで非同期 | ||||
5 | 割り込みメッセージ受信 | ||||
6 | frame受信 | frame受信だけにとどめて処理をqueueに入れるという手もあるがとりあえず保留 | |||
7 | nic->inputframe | ||||
8 | Arp受信 | ||||
9 | 呼び出し元にメッセージを返す |