2017年6月12日 星期一

Sample Code

NuPython在發布時,附上很多的sample code。Sample中會一步步的說明代碼中使用到的形式,用途,以及產生的結果。我們試著讓代碼看起來易讀,好理解。

除了基本使用NuPython的代碼之外,我們有時候會在代碼中使用比較進階方式讓代碼更容易閱讀或是達到更加效能。假使有使用到的話,我們都會在說明中詳細指出。

我們將代碼分為兩大部分,一部分是執行在console頁面,另一部分則是使用跨平台UI去呈現,更多的代碼和表示,就請用戶自行發會想像力。
  • Console Program
    • Connect
      • 此範例展示和Server連線與斷線,我們做過超過數萬次的連線斷線機制驗證。這是所有程序的第一步,必須先連線之後,才能進行接下來的步驟。程序最後得斷線,確保使用者離開,否則將會占用連線。
    • Lock
      • 此範例展示如何將所需要的端口保留,釋放。端口被保留之後,才能對端口下命令運作,被保留的端口,不能被其他程序再次保留,確保優先權。保留的端口最後得釋放,確保端口自由,下次可以繼續使用。
    • Read Info - board
      • 此範例展示板卡的信息。讀去信息不用先保留端口,就可以獲取板卡的各項信息,如版本號,型態,發行日期等等。
    • Set Media
      • 標準百兆端口擁有10M/100M兩種速率。標準千兆端口擁有10M/100M/1G三種速率。另外還有光纖端口和10G端口,我們的端口根據不同規格板卡,有各種不同型態。此範例可以切換端口的media。
    • Transmit packets - single direct
      • 此範例展示端口送包功能,我們可以自行設定封包大小,數量,內容(從MAC開始設定),每個封包的間隔等等參數。
    • Transmit packets - layer3
      • 同上範例,展示第三層網路封包的設定方式。
    • Transmit packets - bi-direct
      • 同上範例,上述兩範例需要兩個端口,一個端口送包,一個端口收包。這個範例則展示同時雙向送收包。
    • Capture
      • 此範例利用接收端口,在獲取數據同時,可以進行擷取封包功能。
  • Windows Program
    • Transmit packets - single direct
      • 此範例以視窗方式展示參數設定,傳送封包以及顯示結果。利用python內建的TK來實現。將console範例的參數,視窗化配置。

Support

我們總是提供高優先的支援服務,關於我們的服務與產品品質,有很高的信心。您可以透過下載頁面下載我們的產品評測,不論評測用戶或是購買設備的用戶,我們皆提供支援服務與諮詢。您可以諮詢我們的產品看是否符合您的需求,直到滿意為止。


  • Xtramus Product

          拓碼產品頁面,為支援此軟件的硬件。您可以透過這頁面充分了解產品線,以及符合各           種網路環境的測試設備。

  • Direct Support

          為了直接獲得技術支援或產品諮詢,您可以透過如下e-mail:
          sales@mail.xtramus.com
          其中技術支援的部分,您可以透過如下e-mail:
          TS@mail.xtramus.com
          信件中,請您描述想了解的部分,我們將會即時的回覆

  • Documentation

          NuPython軟件在發布時,已經包含完整的文件說明,您也可以單獨下載文件。請參考
          我們的下載頁面去下載軟件,以及文件。最新的版本將會在那邊。

  • Sample Code
          NuPython發布時,也包含一些sample code,這些Sample code會一步步演示多種網路包
          的形式。透過Sample code您可以簡單,直覺地去了解。
          透過支援以及開發的過程,有時候我們發覺更先進的技術,改善我們的編碼,
          增進體驗這樣,我們在使用Sample code的時候,可以更優化直覺。Sample code
          我們會在以下的頁面發布:
          Sample Code

NuPython Download Archive

  • Download NuPython v0.1b005
  • Download NuPython v0.1b004
  • Download NuPython v0.1b003

Download NuPython

  • 目前最終版本為NuPython v0.1b006。
  • 最新消息請參考release notes。
  • 想下載更舊版本,請參考此連結

Download
Python Version
Size
Site
NuPython software and PDF document
- Remember to unlock the ZIP  file to use
v2.7/v3.0 above
735 KB
Download
NuPython PDF document only
--
872 KB
Download

2017年6月11日 星期日

函数命名规则

NuPython函数皆符合Python命名规范,NuPython没有全局变量,所有变量皆透由函数操作。NuPython的函数命名有四种规则如下:
1. 动词_名词
此类型函数命名较为直觉,大部份用于主要设置。比方传送封包等命令:
- set_media
- set_stream
- transmit_pkts
2. 名词_动词
此类型的函数,是在这个名词有很多行为动作时使用,名词用于前方,可以方便排序。比方, 连接"Server",断开Server,触发Server,三者皆有Server这个名词,因此把名词放于前方, 函数命名如:
- server_connect
- server_disconnect
- server_trigger
3. 动词_形容词_名词
此类型函数命名如同「动词_名词」,属直觉上的命名。比方,配置_传送的_包数,或是 _stream_包长等,如:
- config_stream_pktlen
- config_tx_txpkts
4. 动词_名词_形容词
此类型函数类似「名词_动词」的倒置语气方式,名词和形容词对调,目的是方便排序。比方: 读取portcounter,读取streamcounter,都有counter,因此counter提前。又或者是读 board信息,读取link信息,都有信息,因此提前:
- read_counter_port
- read_counter_stream
- read_info_board
- read_info_license


引用的Python内建函数

socket - Server传送和接收信息
struct - 组合与拆解网络包
sys - 判断Python版本
time - 动态生成当前时间,提供给log使用
array - 板卡map组合
os - 可以载入外部程序
xml.sax - XML constructor / parser
Tkinter - UI元件
tkMessageBox - 弹出对话框

外部函数及程序


必须安装wireshark,因为程序会使用到里头tshark分析工具。其中processpcap.bat记载wireshark安装路径,可以修改以符合所需。目前分析功能只限定Windows用户,Linux仍在研究。

NuPython结构与规范

NuPython提供的命令以及命令之间的关系图,如图下所示。NuPython命令,使用前必须先Server连线socket方式连接收送这边开启两个socketserver连线,一为Port = 4000(socket1),一为Port = 4001(socket2)。其中Socket2负责和Server沟通保持连线,程序中每个命令之后必须搭配一个trigger Server命令,Server才会持续处理下一步动作。Socket1负责其他所有命令。每个命令还包含其他子命令,将在下一章说明。
NuStreams Module
NuStreams控制卡
NuServer
统整命令,并和NuStreams Module沟通的APNuStreams 600i/2000i系列,NuServer为独立AP, 需要额外启动。NuStreams 700系列,NuServer内建于控制卡,用户不用个别启动,只需以IP连 线即可。
Logger
无论收送命令,或是其他内部动作,皆自动写出文档,供debug使用。因此最终需要使用关档命令 结束。
Combiner
Header和Commmand合并成为一个命令。透过Socket送出。因为每个NuStreams命令,皆有标 头档,NuPython特别将标头档拆开,可以独立设置。最后再透过combiner组合起来即为完整命令。
Parser
接收到来自Socket命令后,根据不同ID,选择不同Parser动作,再将处理结果放入Counters,供后续读取。比方收到board信息idNuPython会丢给board info parser分析,之后再将分析结果丢到board info列表保存。
Command Header
所有传送命令,统一由Command Header加上标头,统一管理ID,sequence number。
Server Command
提供针对Server相关的命令,比方connect/disconnect/trigger等命令,这些命令透过Socket2传送给Server。
Module Command
提供除了Server命令之外,其余板卡相关的命令,这些命令透过Socket1传送给Server。Server再转换后送给Module
Tools
提供一些常用工具,比方取得PortList中的Index,比方说Checksum的计算。
Information
存放系统,板卡等相关信息,如版本号,MAC,Serial NumberLicense等等。
Counter
存放板卡及板卡特定Stream结果数据。

Quick Start

NuPython是运行在Python 环境底下,操作NuStreams测试系统的开源脚本,其中Python为免费软件,自行下载安装Python环境之后,将[NuPython.py]放置python环境底下,即可开始使用。API不限定Python运行版本(Python2/3适用),不限定作业系统(Windows/Linux适用)

使用时运用命令:
import NuPython
本文章接下来介绍NuPython的架构,并提供编程建议。