AXP(Application eXtension Platform)/シリアル接続

バージョン 5

    AXP(Application eXtension Platform)へ戻る

     

    Cisco AXP は、リモートシリアルポート接続をサポートしています。現在、サポートしているASYNCインタフェースは、以下になります。 詳細については、Developer Guide - Remote Serial Device Configuration を参照してください。

    ※AUXを含め、最大で16シリアルデバイスをサポートしています。

    • HWIC-4T
    • HWIC-4A/S
    • HWIC-8A/S-232
    • HWIC-8A
    • HWIC-16A

     

     

    コンフィギュレーション

    リモートシリアル を利用するためには、Cisco IOSとCisco AXP Service Moduleの設定を行う必要があります。

    詳しくは、Cisco Developer Community - AXP の wiki を参照してください。

     

    Cisco IOS ソフトウェア内のコンフィギュレーション例

    Router# conf t
    Router(config)# ip domain-name cisco.com
    Router(config)# username cisco privilege 15 password 0 cisco
    Router(config)# crypto key generate rsa modulus 1024 label axpkeys
    Router(config)# ip ssh rsa keypair-name axpkeys

    Router(config)# ip ssh version 2

    Router(config)# ip access-list standard 1
    Router(config-std-nacl)# 1 permit 192.168.71.0 0.0.0.255
    Router(config-std-nacl)# exit
    Router(config)# line vty 0 4

    Router(config-line)# login local

    Router(config-line)# transport input ssh

    Router(config-line)# transport output ssh

    Router(config-line)# exit

    Router(config)# netconf ssh acl 1
    Router(config)# netconf max-sessions 16

     

    Cisco AXP Service Module 内のコンフィギュレーション例
    AXP# conf t
    AXP(config)# netconf ssh client 192.168.71.1 username cisco password 0 cisco
    AXP(config)# netconf max-sessions 16

    192.168.71.1 は Cisco IOS ルータの IP アドレスです。

    ※netconf を投入するためには、vserialapiの依存関係のあるパッケージを事前にインストールする必要があります。

     

     

     

    デバイス名の確認とAXPへのバインド

    リモートシリアルデバイスを使うためには、vserialapi(7a013f0e-07cb-4c25-8122-4a0af7704c3b,all)を依存関係として指定する必要があります。

    以下に、シリアルデバイスの設定例を示します。

    1. ISR/ISR G2に、ASYNCインタフェースカードを挿入します。
    2. ISR IOS上で、show lineコマンドを実行し確認します。
      Router#show line
          Tty Line Typ     Tx/Rx    A Modem  Roty AccO AccI  Uses  Noise Overruns  Int
             0    0 CTY              -    -      -    -    -     0      0    0/0      -
             1    1 AUX   9600/9600  -    -      -    -    -     0      0    0/0      -
         0/0/0    2 TTY   9600/9600  -    -      -    -    -     0      0    0/0      -
         0/0/1    3 TTY   9600/9600  -    -      -    -    -     0      0    0/0      -
         0/0/2    4 TTY   9600/9600  -    -      -    -    -     0      0    0/0      -
         0/0/3    5 TTY   9600/9600  -    -      -    -    -     0      0    0/0      -
         0/0/4    6 TTY   9600/9600  -    -      -    -    -     0      0    0/0      -
         0/0/5    7 TTY   9600/9600  -    -      -    -    -     0      0    0/0      -
         0/0/6    8 TTY   9600/9600  -    -      -    -    -     0      0    0/0      -
         0/0/7    9 TTY   9600/9600  -    -      -    -    -     0      0    0/0      -
            66   66 TTY   9600/9600  -    -      -    -    -     0      0    0/0      -
           130  130 TTY   9600/9600  -    -      -    -    -     0      0    0/0      -
        *   578  578 VTY              -    -      -    -    -     1      0    0/0      -
        *   579  579 VTY              -    -      -    -    -     0      0    0/0      -
        *   580  580 VTY              -    -      -    -    -     0      0    0/0      -
           581  581 VTY              -    -      -    -    -     0      0    0/0      -
           582  582 VTY              -    -      -    -    -     0      0    0/0      -
    3. AXP上で、show device serialコマンドで確認します。     
      AXP# show device serial

      Device Name     TTY No. Line No.   Line Type    Intf Name  Assigned To
      vaux1           1       1            AUX        -               -
      vtty000         0/0/0   2            TTY        -               -
      vtty001         0/0/1   3            TTY        -               -
      vtty002         0/0/2   4            TTY        -               -
      vtty003         0/0/3   5            TTY        -               -
      vtty004         0/0/4   6            TTY        -               -
      vtty005         0/0/5   7            TTY        -               -
      vtty006         0/0/6   8            TTY        -               -
      vtty007         0/0/7   9            TTY        -               -
      ※Device Name は、後でbindするために指定します。
    4. AXPのパッケージにシリアルデバイスを割り当てます。
      AXP# conf t
      AXP(config)# app-service example
      AXP(config-example)# bind serial vaux1 ・・・(1)
      AXP(config-example)# bind serial vtty000 ・・・(2)
      AXP(config-example)# bind serial vtty001 ttyS1 ・・・(3)
      AXP(config-example)# end
      AXP# wr
      (1) AUX を割り当てます。ゲストOS上では、/dev/vaux1 となります。
      (2) vtty000 を割り当てます。ゲストOS上では、/dev/vtty000 となります。
      (3) vtty001 を割り当てます。ゲストOS上では、/dev/ttyS1 となります。
    5. show device serialコマンドで確認します。     
      AXP# show device serial

      Device Name     TTY No. Line No.   Line Type    Intf Name  Assigned To
      vaux1           1       1            AUX        -               example
      vtty000         0/0/0   2            TTY        -               example
      vtty001         0/0/1   3            TTY        -               example
      vtty002         0/0/2   4            TTY        -               -
      vtty003         0/0/3   5            TTY        -               -
      vtty004         0/0/4   6            TTY        -               -
      vtty005         0/0/5   7            TTY        -               -
      vtty006         0/0/6   8            TTY        -               -
      vtty007         0/0/7   9            TTY        -               -
      vaux1、vtty000、vtty001 が example アプリケーションに割り当てられたことが確認できます。
    6. アプリケーションのexecモードでresetします。     
      AXP# app-service example
      AXP(exec-example)# reset
    7. ゲストOSが起動するまで、少し待ちます。
    8. ゲストOSから、モデムにアクセスします。     
      AXP(exec-example)# connect console
      bash-3.2# cu -l vtty000
      Connected.

      AT
      OK
      ATI4
      MNP Class 10 V.34 Modem Rev 2.3/14

      OK
      ~.

      Disconnected.
      bash-3.2#

     

     

     

    USBを使ったシリアルポートへの接続については、LKMについて - USBシリアルポートの利用を参照してください。

     

     

     

    シリアルの設定変更

    シリアルの設定変更は、IOS上で行います。以下に例を示します。

    Router# cont t
    Router(config)# interface Async 0/0/0

    Router(config-if)# no ip address
    Router(config-if)# encapsulation slip
    Router(config-if)# line 0/0/0
    Router(config-line)# no exec
    Router(config-line)# transport preferred none

    Router(config-line)# transport input none
    Router(config-line)# speed 115200

    Router(config-line)# stopbits 1
    Router(config-line)# parity none
    Router(config-line)# end

     

    また、IOS CLI APIからも可能です。以下に、サンプルコードを記載します。

    #include <stdio.h>
    #include "iosapi.h"

    void main(int argc, char* argv[]) {
         char *buf = "line 0/0/0; speed 2400; stopbits 1; parity none; databits 8";
         IosServiceAPI_t iosapi;
         IosapiMessage_t msg;
         getIosApi("CommonService", &iosapi);
         msg.size = 0;
         msg.response = NULL;
         msg.request = buf;
         if (iosapi.config(&msg)==IOSAPI_OK) {
             puts(msg.response);
         } else {
             puts("failure");
         }
    }