Installation & Operating Guide

 

VFC1011:  10 port VOA based fiber-cut switch

 

 

 

 

 

 

 

 

 

 

 

 

 

 

      vfc1011-small

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

echolaCompanyLogo

Text Box: Echola Systems L.L.C
1161 Ringwood Ct, Ste 100
San Jose, CA-95131                  
Phone: 408 321 9663
Fax: 408 321 9663
http://www.echola.com/optical

 

 


 

Installation

 

 

VFC1011 switch is a physical layer fiber cut switch which can also be used as a multi-port VOA (variable attenuator). It supports 10 VOAs that can be configured or monitored individually.

 

 

              vfc1011-small

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Connecting test equipment to VFC1011

 

For example, if you want to simulate a fiber cut scenario between 2 optical devices using one fiber/one direction.

 

                                  Duplex Fiber

  Device1-TX-------------------------è---------------------Device2-RX

  Device1-RX ------------------------ç----------------------Device2-TX

 

Each LC connector of VFC1011 has two input/outputs marked as B and A.

 

 

Then you need to disconnect one of the fibers connecting these 2 devices and connect them through VFC1011 port, between A and B like the following:

 

  Device1-TX è [VFC1011-Port1BàVFC1011-Port1A] è Device2-RX

 

 

If you want to simulate a break between both TX and RX fibers of these devices under test (which may be the case in many scenarios) then you will have to use 2 ports of VFC1011, like the following

 

Device1-TX è [VFC1011-Port1BàVFC1011-Port1A] è Device2-RX

 

Device1-RX ç [VFC1011-Port2BßVFC1011-Port2A] çDevice2-TX

 

UPSR, 2F-BLSR protection ring testing may require 2 VFC1011 ports while 4F-BLSR might require 4 ports.  To test 100Gbps ethernet devices you will require total of 20 ports (2x VFC1011s) for 10 lanes in each direction. Similarly, for 40Gbps you will require 8 ports for 4 lanes in each direction.

 

Configuring VFC1011

 

VFC1011 provides a micro-USB console port and an Ethernet (10/100) port for management. USB console port is normally used in special situations such as to debug network connectivity if VFC1011 is not reachable through Ethernet.

 

If you use USB console port then you will need a USB-A to micro-USB cable. Use either putty (windows) or screen (Linux) or equivalent terminal login software. The settings for console port need to be 115200 baud rate with 8-N-1. Also make sure you are using correct COM port number (For instance, you can find out the correct COM port using Device Manager on Windows).

 

If you use Ethernet then you will have to configure the PC or Laptop's IP to match VFC1011's default network. The default network configuration is DHCP so you will see the IP address of the unit on OLED display if ethernet is connected a network.

 

Default Account settings

 

Login: admin

Password: admin

 

Login: osctl

Password: osctl

 

The default root password is "osctl", but be careful while using root, we recommend using "sudo" instead to gain root access.  Make sure to change the root password after the initial setup.

 

Configuring Static IP

 

Before configuring IP please make sure the date and time settings are correct. You can use Linux CLI 'timedatectl' or our GUI 'clock' page to set the time. If you use GUI you will have to uncheck NTP and set the date and time.


You can use "osctl" CLI to configure a static IP address after login as "root" user. "osctl -?" shows detailed osctl command options with examples.

 

# osctl -i 192.168.1.10 -m 255.255.255.0 -g 192.168.1.1

 

The above command configures IP address of VFC1011 as 192.168.1.10 with mask 255.255.255.0 and gateway & DNS as 192.168.1. Once the IP is configured from a PC or a Laptop using Ethernet or serial port, you can then connect VFC1011 to your network and access it using "telnet" or "ssh".

 

Configuring Dynamic IP

 

A DHCP server should be running on your network in order to configure dynamic ip. The DHCP client on the device then gets the ip from the server. 

 

# osctl -D

 

Make sure you know the assigned IP address to login using "telnet" or "ssh". 

 

Configuring Hostname

 

To change the hostname of VFC1011 switch use '-h' option.

 

# osctl -h VFC1011-SW-1

 

The above command changes the hostname of VFC1011 to VFC1011-SW-1.

 

Configuring DNS/Nameserver

 

To configure a DNS or Nameserver, use "-n" option of osctl.

 

# osctl -n 192.168.1.11

 

Configuring Syslog Server

 

To send system generated events to an external syslog server, use the "-S" option. You have to specify the address of the syslog server which will receive these event logs. (Note: this option only available in software version 2.0 and above).

 

# osctl -S 192.168.1.200

 

Version Info

 

The following command shows hardware and software versions and the serial number of the switch.

 

# osctl -V

 

 

Other Administrative commands

 

Most of the other administrative functions can be achieved using standard Debian Linux commands. For example, to change the password use the "passwd" command from the Linux prompt and to add new user use the "useradd" command. You have to be "root" user in order to add a new user.

 

 


 

Operation

 

 

To simply the operation, all functions are provided in a single command called "osctl". The osctl command provides 3 major functions

 

1.     Network & Host configuration (allowed only in "root")

2.     Switch Control & Status

3.     Port group Management

 

 

Network & Host configuration                                       

 

 

The following are the commands used to configure network.

 

1.     To configure static IP

         # osctl -i <ip> -m <mask> -g <gw>

 

2.     To use DHCP (dynamic IP)

         # osctl -D

 

3.     To configure hostname

         # osctl -h <hostname>

 

4.     To configure a DNS or Nameserver, use "-n" option

         # osctl -n <dns-server-ip>

 

5.     To configure syslog server to receive VFC1011's events

         # osctl -S <syslog-server-ip>

 

For details refer to installation section as these are explained in that section.


 

Switching Control                                       

           

 

In order to switch a particular port or ports or a group ON or OFF, you can use following command:

 

$ osctl -p {<port#/s> | <port-range> | <port-group>} <on|off> [-t <secs>]

 

Note that the "{}" (braces) groups options and "|" is equivalent to "or". If the options are in square brackets "[]" then it is optional. Wherever you see port# or in_port# they all the same and represents one of 8 ports of VFC1011.

 

For example:

 

         $ osctl -p 4 on

è switch port 4 to ON. LED on port 4 of VFC1011 lids when this command is issued which confirms that the port is switched ON.

 

         $ osctl -p "1 2 3" on

è switch ports 1, 2 and 3 to ON. Note the double quote, without that it won't work.

 

         $ osctl -p "1-4" off

è switch ports 1, 2, 3 and 4 to OFF (range 1 to 4). This comes in handy when you want to switch bunch of ports together.

 

         $ osctl -p gp1 off

è switch all ports in group "gp1" to OFF. You will have to create group before using it with "-c" option as explained in "Group Management" section.

 

         $ osctl -p 2 off -t 120

è switch port 2 to OFF after 120 (delayed switching)

 

         $ osctl -p 2 off -T 120  

è switch port 2 to OFF gradually within 120 milliseconds. This option is only available on VFC series switches. It is different from above delay where the switching happens almost immediately 120 secs of wait but in this case switching takes 120 milliseconds to come to completely OFF state to simulate real world fiber cuts. Default is 10 milliseconds.

 


 

Switch Status                                    

 

 

Th following command shows the status of a port or the status of ports in a pre-defined group, whether it is on/off.

 

       $ osctl -s [<port_group> | <in_port#>]

       $ osctl -A [<port_group> | <in_port#>]

       $ osctl -B [<port_group> | <in_port#>]

 

For example:

       $ osctl -s

è shows all ports' & groups' status as follows. It shows first all ports and tells you which ports are part of a group.

  

          All Ports Status

====================================

      Port      | Port Status

====================================

      1         |      off

      2         |      off

      3         |      off

      4         |      off

      5         |      on

      6         |      on

      7         |      on

      8         |      on

------------------------------------

          Group Status

=================================

    Group Name | Port Status

=================================

          gp1          |      off

---------------------------------

===========================================

                   Group's Port Details

===========================================

  GroupName: <gp1>

     Port Status: off

       Ports in the group: 1 2 3 4

 

 

          $ osctl -s gp1

è shows group "gp1" status only. You will have to create group before using it with "-c" option as explained in "Group Management" section.

 

          $ osctl -s 3

è shows port 3 status only

 

$ osctl -A 2

è displays port 2 attenuation in 1-256 range

 

$ osctl -B 4

è displays port 4 attenuation in dB

 

 

 


 

Port group Management                                       

 

 

Port group management commands provide the convenience of switching many ports together identified by a name. The group name can be any alpha-numeric name but cannot be a number alone or start with a number. For example, group name cannot be "10" or 10gp1.

 

1.     To create a new group

           $ osctl -c <port-group> {<in-port#/s> | <inport-range>}

2.     To update existing group

         $ osctl -u <port-group> {-a | -r <in-port#/s>}

3.     To delete a group

            $ osctl -d <port-group>

4.     To delete all groups

          $ osctl -R

5.     To list ports in a group

            $ osctl -l [<port-group> | <in-port#>]

 

For example:

 

$ osctl -c gp1 "1 3 4"

è creates group named "gp1" with ports 1,3 and 4. The double quotes around space separated port numbers are required. Note that when you create a group, all the ports in the gp1 will be in OFF state by default.

 

$ osctl -c gp2 "5-8"

è creates group named "gp2" with ports 5,6,7 and 8 (5 to 8 range)

 

$ osctl -u gp1 -a "5 6"

è adds ports 5 & 6 to existing group gp1

 

$ osctl -u gp1 -a 7

è adds port 7 to existing group gp1

 

$ osctl -u gp1 -r "2 4"

è removes ports 2 & 4 from group gp1

 

$ osctl -d gp1

è deletes group gp1 and release all ports which were part of the group.

 

 

 

 

$ osctl -l

è lists ports in group, like

    GroupName: <gp1>

      Ports in the group: 1 2 3 4

 

$ osctl -R

è delete all groups in the database.


 

 

Setting Attenuation (VFC series only)

 

-A option

 

The "-A" option is used to set the attenuation of any particular output port or group to fraction of input power. It takes a number from 1 to 256 as a divisor. It attenuates the power output of the port by that number. The more the divisor, the more the attenuation is (256 is fully off & 1 is on). 

 

The attenuation setting is nonlinear. So, if you set the attenuation to 128, it doesn't mean you are setting the attenuation to half of the source power. Please refer to the graph at the end of the manual which shows the relationship between applied voltage and the attenuation. The applied voltage is linear but the VOA response is nonlinear. Currently, the attenuation setting is not saved, once you reset or reboot the switch attenuation setting is lost; you will have to configure it again.

 

$ osctl   -A {<port_group> | <in_port#>} [ <divisor [1-256]> | [<divisor range [1-256]>   -T <msec>]]

 

For example:

 

       $ osctl -A 1 128

            -> set attenuation of port#1 to 128 (256 is fully off & 1 is on)

 

       $ osctl -A 1

            -> displays current attenuation of port#1

 

       $ osctl -A gp1 64

            -> set the attenuation of all ports in the group gp1 to 64

 

       $ osctl -A 3-8 32

            -> set the attenuation of ports 3,4,5,6,7 & 8 to 32

              

       $ osctl -A 1 100-160 -T 5000 (requires sw.  ver 3.0 and above) 

            -> set attenuation of port#1 to 100 first and ramp up to 160 in 5000 milliseconds period. This is useful for creating packet errors as opposed to full fiber-cut scenario.

 

 

       $ osctl -A 1 160-100 -T 5000 (requires sw.  ver 3.0 and above) 

            -> set attenuation of port#1 to 160 first and ramp down to 100 in 5000 milliseconds period.

 

The osctl version 5.3 and above includes a default calibration setting, which allows you to set attenuation in dB but it may not be accurate. You need to calibrate all VOAs to get better accuracy. Please refer to calibration section in this document for the details.

 

-B option

 

The -B option is used to set the attenuation in dB.

 

            $ osctl -B {<port-group> | <in-port#>} [ <dB [1-25]>]

 

Examples:

 

$ osctl -B 1 5

            à set attenuation of port#1 to 5 dB

 

$ osctl -B 1

            àdisplays current attenuation of port#1

 


 

 

Web Interface

 

In order to access the VFC1011 Web interface just enter its IP address on URL address bar of the web browser. 

 

Following screen shot shows how the Web interface for VFC1011 looks like…

 

 

Secured HTTP (HTTPS) Setup


The Web interface for the Echola device is not secured by default as the browser doesn’t trust the device’s SSL self-signed certificate. Keeping your connection secure prevents cybercriminals from stealing sensitive data, such as your login credentials. To establish a secured HTTP connection to the Echola device, follow the following steps.

Step (1): Save the Certificate from the Echola device to your Windows PC using Chrome Browser


 (a) Click on the “Not Secure” Browser’s URL tab

 (b) Click on “Certificate not valid” from the pulldown menu

 (c) Select the “Details” tab

 (d) Click on the “Export” button to save the certificate to a local file.

Step (2): Import Saved Certificate to make it a trusted certificate by the Chrome browser


 (a) Select Chrome’s Settings-> Security-> Manage Certificates

 (b) Select “Trusted Root Certification Authorities” from the top tabs of “Managed Certificates.”

 (c) Click on the “Import” button to import the saved certificate

Step (3): Add following line to the file C:\Windows\System32\drivers\etc\hosts


 192.168.1.62 echola.sys

After saving the hosts file, point your browser to https://echola.sys, and you should be able to establish a secured (HTTPS) connection to Echola device. Though the above steps are meant for Windows 11/Chrome, similar steps work for other OSs and Browsers.

Custom Self-signed Certificate


To create your custom self-signed certificate, you can run a helper script “ss_cert.sh” from the Echola device command line. This way, you can use the Echola device IP address or a domain name of your choice. You must follow the first two steps to use an IP address as your common name. If you select a domain name, follow all three steps above to reinstall the certificate on your Windows system.

Control page

 

The default page for the Web Application is the 'Set Attenuation' page. If you set it to the lowest attenuation then the switch is fully 'ON', similarly the highest attenuation sets it to 'OFF'. You can also set the attenuation in increments of 1 dB using the slider or 1/10th of a dB using the text input box. Each port must be calibrated to get the required accuracy you want. The calibration is a little laborious but it is a one-time task done at the time of deployment. There is a web page under maintenance which helps to make this calibration easier. 

 

Setup page

 

The setup page allows you to change Hostname, Static IP address configuration and Dynamic IP (DHCP). Initially it shows the current set values. You can change them by clicking on the corresponding field. Note that changing the IP, Gateway, Mask or DHCP setting will make the switch reboot!

Device Info page

 

Device Info page shows hardware and software information such as model and version.

Maintenance page

 

This page can be used to "Reset/Reboot" the system or calibrate the VOA. The calibration of the VOA requires a laser source and an optical meter. Please contact support@echola.com for calibration details.


 

VOA Attenuation vs Drive Voltage graph

 

The VOA drive voltage is 0-5V and the hardware is capable of 256 steps resolution. You can see from the below graph that they are not linear and varies between each VOAs

 

ATvsDV-VOA


 


VOA In-house Calibration

 

 

Please note the accuracy of the calibration depends on quality of laser source/reference, optical power meter and fiber connecters/coupling/adapter that you use in the calibration setup. Also try to use wavelength and CW/modulation settings of the laser source close to that of production.

 

Each port has to be calibrated individually. The above diagram shows the setup for one port, you will have to repeat the same calibration procedure for all 10 ports. Laser source can be of either 1310nm or a 1510nm wavelength or even tunable laser depending on production requirement.

 

You will need a PC or a Laptop or a Tablet right in front of the setup to run the calibration web application from the device web page (under Maintenance tab select Calibration). This web page allows to change attenuation in real time. There are 26 values in total that need to be entered to complete each port's calibration. The other values will be interpolated by the software to fill in the whole 0 to 255 range.

 



 



 

 

Automating Echola's Optical Switches

Using RESTful API

 

Our REST APIs accept JSON request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication (basic), and verbs (GET and PUT only). The following table summarizes the available APIs.

 

 

Method

URI

Action

Request (body) data

GET

https://[host_ip]/api/ports

Retrieve all ports state

 

GET

https://[host_ip]/api/ports/[port_#]

Retrieve specific port's state

 

PUT

https://[host_ip]/api/ports/[port_#]

Switch On | Off a specific port

{"state":<on | off>}

GET

https://[host_ip]/api/voa

Retrieve all ports attenuation

 

GET

https://[host_ip]/api/voa/[port_#]

Retrieve specific port's attenuation

 

PUT

https://[host_ip]/api/voa/[port_#]

Set attenuation of a specific port

{"attenuation":<data>}

GET

https://[host_ip]/api/voadb

Retrieve all ports attenuation in dB

 

GET

https://[host_ip]/api/voadb/[port_#]

Retrieve specific port attenuation in dB

 

PUT

https://[host_ip]/api/voadb/[port_#]

Set attenuation of a specific port in dB

{"attenuation":<data>}

 

Examples:

 

1.                 The following example shows how the attenuation of port 1 can be set using a 'curl' command line script. Please note, it is not a good practice to use password on command line directly as shown below. Alternatively, you could use curl with --netrc-file option and protect the password file with the appropriate permissions.

 

curl -X PUT \

    -u admin:admin \

    -H "Content-Type: application/json" \

    -d '{"attenuation": "159"}' \

    -k https://192.168.1.120/api/voa/1

 

2.                 Following command returns the state of the port 2 (whether it is ON or OFF)

 

curl -u admin:admin \

       -H "Content-Type: application/json" \

       -k https://192.168.1.120/api/ports/2

 

responds with

 

{"state":"on"}

 

 

3.                 Following command returns the attenuation of port 1

 

curl -u admin:admin \

       -H "Content-Type: application/json" \

       -k https://192.168.1.120/api/voa/1

 

responds with

 

{"attenuation":"159"}

 

 

4.                 Following command switches port 2 to OFF

 

 

curl -u admin:admin -X PUT \

        -H "Content-Type: application/json" \

        -d '{"state": "off"}' \

        -k https://192.168.1.120/api/ports/2

 

5.                 Following command sets, the attenuation of port 1 with an endpoint which accepts input in dB

 

curl -X PUT \

    -u admin:admin \

    -H "Content-Type: application/json" \

    -d '{"attenuation": "10"}' \

    -k https://192.168.1.120/api/voadb/1

 

Using osctl CLI

 

VFC1011 configuration or monitoring can be automated using osctl command available on the switch using an external terminal automation tools such as Tcl/Expect. Unlike RESTful API which supports limited configurations, the osctl command supports all configurations including network.

 

Running scripts from Unix/Linux systems

 

If you want to run the script from a Unix/Linux based machines then there is possibility that you may have these tools on your system. Check if it's already been installed by typing "expect" from the Unix/Linux prompt. If it is not installed then you will have to install it using package install tool for that particular flavor of Unix/Linux. For instance, on Fedora core Linux, you can use "yum install tcl expect" to install Tcl and Expect.

 

Running scripts from Windows

 

For Windows based systems you can install the Windows free community version of ActiveTcl from Activestate then make sure to install "expect" using the command "teacup install Expect".

Also, you need to enable "telnet" client on Windows before running any scripts. To enable telnet on Windows follow these steps

 

1.     Start

2.     Control Panel

3.     Programs and Features

4.     Turn Windows features on or off

5.     Check Telnet Client Hit OK

 

After that you can start Telnet via Command Prompt to check if it works.

 

The following sample script logs into VFC1011/VFC1011 switch and issue a switch command then check whether the switch command was successful and return the result before terminating the telnet session. This script takes an argument (port number and state of the port (on/off)) from the command line argument. Cut and Paste the following script on to any editor and save as "rosctl". Then you can run the script by issuing rosctl -p <port#> on|off.  For instance, to switch port 2 to ON, you can call the script as rosctl -p 2 on. Make sure you have a proper path set for Expect on first line "#!/usr/bin/expect" for Unix/Linux based systems. For Windows, you will have to uncomment 'exec' and 'package' commands as mentioned in the script. All comments inside '#' provide more info on what the script is doing.

 


Sample Tcl/Expect script Using 'osctl' CLI

 

#!/usr/bin/expect

##############################################################################

# This script switches the given port and verifies if the port is switched from a remote machine

#             Command Usage: rosctl -p <port#> on|off

##############################################################################

# For windows uncomment following

#    exec tclsh "$0" ${1+"$@"}

#    package require Expect

 

# Check number of arguments passed to this command if < 3 then spit out error & exit

 

      if { $argc < 3 } {

              puts "Usage: rosctl -p <port#> on|off\n"

              exit 1

      }

 

# Set telnet host, username, password and other parameters, modify these to reflect your setup

 

      set hostname "192.168.2.20" 

      set username "osctl"

      set password "osctl"

      set prompt "osctl@.*\$"

      set port [lindex $argv 1]

      set status [lindex $argv 2]

      set commandcontrol "osctl -p $port $status"

      set commandstatus "osctl -s $port"

 

# Display info.

 

      puts "Connecting to $hostname."

 

# Connect to the telnet server using the "spawn" command.

 

      spawn telnet $hostname

      #spawn C:\Putty\putty.exe -telnet $hostname

 

 

# Wait for a login prompt.

 

      expect -re "(Name|login|Login|Username).*:.*" {

 

          # Login prompt received. Send user name to VFC1011/VFC1011.

 

          send "$username\r"

 

      } eof {

 

          # No login prompt received. Display an error.

 

          puts "could not connect\n"

      }

 

# Wait for a password prompt from the Unix server.

 

      expect "Password:" {

 

          # Password prompt received. Send the password.

 

          send "$password\r"

      }

 

# Wait for the switch prompt.

 

      expect -re $prompt {

 

          # Issue osctl command to switch given port

 

          send "$commandcontrol\r"

      }

 

# Wait for the switch prompt again to check status.

 

      expect -re $prompt {

 

          # Issue osctl command to check status

 

          send "$commandstatus\r"

      }

 

# Discard echoed command - we need only the status

 

      expect "$commandstatus\r"

 

# Discard unwanted prompt as well

 

      expect -re "(.*)$prompt"

 

      #Debug

      #puts "\nGOT*****$expect_out(buffer)***************\n"

      #puts "\n GOTS ####$expect_out(1,string)#####\n"

 

# Save remaining to buffer 'data'

 

      set data $expect_out(1,string)

 

# Check return status and display result accordingly

      switch -re $data {

         "off" { puts "Port $port is OFF" }

  "on"  { puts "Port $port is ON" }

 default { puts "Port $port status is unknown" }

      }

 

# Terminate telnet

 

send "exit\r"

 

Hardware Specifications

 

Electrical

Input Power

100-240 AC

Total Power Consumption

< 7 Watts

Serial Port

1x micro-USB

Networking

1x 10/100 Ethernet

Optical Specification for FC Series

Connectivity

10 duplex LC connectors

Data rate

Any data rate - Physical Layer Switch, no limitation

Wavelength (nm)

Multi-mode version:

   850/1310 nm

Single-mode version:

  1280-1625 nm

Optical Technology

VOA

Insertion Loss (dB)

0.5 Typical, 0.8 Max. (without connectors)

Switching Time (ms)

≤ 10

Crosstalk (dB)

≤ -80

Repeatability (dB)

≤ 0.1

Optical Specification for VFC Series (SM)

Connectivity

10 duplex LC connectors

Data rate

Any data rate - Physical Layer Switch, no limitation

Display

OLED (1 inch)

Wavelength (nm)

1310±50nm  & 1550±50nm

Optical Technology

MEMS VOA

Insertion Loss (dB)

< 0.8 dB (without connectors)

Switching Time (ms)

≤ 5

Crosstalk (dB)

≥ 65

Attenuation Dynamic Range (dB)

> 30

Attenuation Resolution (steps)

256 steps

Optical Power Handling (mW)

≤ 250mW/channel

Environmental

Operating Temperature (ºC)

-5 ~ +75

Storage Temperature (ºC)

-40 ~ +85

Relative Humidity Range (%)

 0 ~ 85

 


 

 

 

General Software Info

 

 

 

è This device runs Debian distribution of the Linux OS. Most of the Debian tools can be used as is for debugging purpose.

 

è All the group information is stored in a hidden XML database file. If for some reason this file is corrupt, the system will recover from this error by trying to copy the backup database file. If this happens it will throw a warning message but it is not guaranteed that all the group information will be restored correctly. In that case you may need to recreate missing groups.

 

è For adding additional users, you can use Linux's "useradd" command. You have to be "root" in order to add new user to the system.

 

 

 

 

è   Contact Info

 

 

If you have any technical questions and need help you can send email to support@echola.com. You can also download latest documents and software from our website www.echola.com/optical.