Friday, 26 January 2018

CISCO trex GUI

TRex Management

Main Features
This is an online part, you need to be connected to TRex in order to perform the following actions:
  • Connect and manage TRex v2.23 and above.
  • Ability to preview all ports along with their status and statistics.
  • Ability to assign traffic to a specific port and start the traffic.
  • Ability to update the bandwidth / update the multiplier options on the fly.
  • Dashboard to view the port details, stream details, latency details, global statistics and charts.
  • Logger view to preview server messages.
  • Advanced logger view to see all the JSON requests sent to the server and server's responses.
Port management

Enhanced port information and attributes

GUI provides enhanced information of a port and capability to change NIC attributes: such as Multicast, Promiscuous mode, Flow control and etc. The "Service Mode" also can be managed from the GUI and there is an capability to Reset port.

93aaad6e-31a4-11e7-8d27-b51b3dd3d8c2.png

Port configuration

There is no need to connect to TRex host and run trex-console app to configure port in L2 or L3 mode. GUI provides simple way to do it. Open "Configuration" tab, specify required SRC and DST parameters and click on "Apply" button. In case of L3 configuration  application will automatically do ARP resolution for DST address.

93a7f344-31a4-11e7-8ca6-887be2edd4d5.png

Hardware counters

If you have real NIC you probably need to see hardware counters for debugging purposes. You can see them in "Hardware counters" tab. By default non-zero counters are visible. If you need to find certain counter you can specify it's name in the filter and "Pin" interested one and see the value despite on filter options.

93abb1fa-31a4-11e7-80d9-601c114a6307.png

Dashboard

Global statistic and new port selector

At the top of the dashboard you can see updated global statistics panel. Now global statistics contains ten panels with most interesting counters. Four of them have a color indicator which is green if value is good and red if it is not. It are "CPU", "Rx CPU", "Drop Rate" and "Queue Full". For the "CPU" and "Rx CPU" a good value threshold is 85%, for the "Drop Rate" and "Queue Full" it is 0.
Port selector become more flexible. Now it allows to specify a certain set of ports.

ports.gif

Streams tab

Streams tab displays detailed information per stream.

6ac899e4-30cb-11e7-8a58-ff7740b4caa0.png


Latency

Latency window table represents detail information about the last ten temporary max latencies, jitter, max latency, avg latency and common information about the errors. Errors row has color indicator with good value threshold equals to 0.

Latency histogram table represents detail information about the latencies and errors. All error rows have color indicator with good value threshold equals to 0.

latency.gif

Charts
Also user can see stream's statistic in a charts which are more informative and handy. Multi-tile layout allows to see several statistics and compare them.
charts.gif

Tuesday, 24 October 2017

Open Contrail (Architecture and working) Analytics node

Open Contrail
Nodes
Analytics nodes collect, store, correlate, and analyze information from network elements, virtual or physical. This information includes statistics, logs, events, and errors.
Configuration Node:
Figure 6 shows the internal structure of a configuration node. The configuration node communicates with the orchestration system via a REST interface, with other configuration nodes via a distributed synchronization mechanism, and with control nodes via IF-MAP.
Configuration nodes also provide a discovery service that the clients can use to locate the service providers (that is, other nodes providing a particular service). For example, when the vRouter agent in a compute node connects to a control node1, it uses service discovery to discover the IP address of the control node. The clients use local configuration, DHCP or DNS to locate the service discovery server.




Configuration nodes contain the following components:
A REST API server provides the northbound interface to an orchestration system or other application. This interface is used to install configuration state using the high-level data model.
A Redis [redis] message bus facilitates communications among internal components.
A Cassandra [cassandra] database provides persistent storage of configuration. Cassandra is a fault-tolerant and horizontally scalable database.
A Schema transformer detects changes in the high-level data model over the Redis message bus and transforms (or compiles) these changes in the high-level data model into corresponding changes in the low-level data model.
ZooKeeper [zookeeper] (not shown in diagram) is used for allocation of unique object identifiers and to implement transactions.
Analytics Node:
Figure 7 shows the internal structure of an analytics node. An analytics node communicates with applications using a northbound REST API (northbound interface is an interface that allows a particular component of a network communicate with a higher-level component), with other analytics nodes using a distributed synchronization mechanism, and with components in control and configuration nodes using an XML-based protocol called Sandesh designed specifically for handling high volumes of data.
Sandesh is a southbound interface protocol that is used by the Open Contrail Analytics engine to gather information from the Open Contrail virtual routers and other software modules like the control-node, and the configuration manager, which run as part of the controller.
The analytics nodes contain the following components:
A collector exchanges Sandesh messages with components in control nodes and configuration nodes to collect analytics information.
A NoSQL database stores this information.
A rules engine automatically collects operational state when specific events occur.
A REST API server provides a northbound interface for querying the analytics database and for retrieving operational state.
A query engine executes the queries received over the northbound REST API. This engine provides the capability for flexible access to potentially large amounts of analytics data.
Sandesh carries two kinds of messages—asynchronous messages received by analytics nodes for the purpose of reporting logs, events, and traces; and synchronous messages whereby an analytics node can send requests and receive responses to collect specific operational state.
All information gathered by the collector is persistently stored in the NoSQL database. No filtering of messages is done by the information source. The analytics nodes provide a northbound REST API to allow client applications to submit queries.
Explanation:
An analytics node communicates with applications using a northbound REST API, with other analytics nodes using a distributed synchronization mechanism, and with components in control and configuration nodes using an XML-based protocol known as Sandesh designed specifically for handling high volumes of data.
The collector collects messages sent by the sandesh to collect the analytics data and this data is stored in the NoSQL database. To get all the information from the sandesh these messages have not passed through filters. When specific events occur rules engine automatically collects operational state. A REST API server provides a northbound interface for querying the analytics database and retrieving the operational state from the database information. A query engine execute the queries received over the northbound REST API. This query engine provides the capability for flexible access to potentially large amounts of analytics data. The data is analyzed by the analytics nodes one by one and the process goes on.
REST API is provided by analytics nodes to allow client applications to submit queries. Analytics nodes provide scatter-gather logic called “aggregation.” A single GET request (and a single corresponding CLI command in the client application) can be mapped to multiple request messages whose results are combined. The query engine is implemented as a simple map-reduce engine. The vast majority of Contrail queries are time series (series of data points indexed)

Redis Structure



Redsi is use as a message bus in contrail system. It can use for many purposes and there are many key-value stores. Contrail populate 4 different key-value stores.
There names are
  • DB1
  • DB3
  • DB4
  • DB7
DB1
This key value store use to store querries coming from API servers. Then querry engine read querry from DB1 and perform it on Database. After executing querry Querry engine store data in DB1.


DB3:
This key-value store use to store flow records


DB4:
This key-value store use to store UVES in xml form that we see on port 8081
DB7:
This key-value store is same as what we see on port 8081


Note: The data store in all the key-value store is distributed using keys and values concept. So, if you want to retrive data you need key for that data. If you are a subscriber you received key where the change occurs and then you perform query on redis to get data.

Cassandra Structure

There are many databases in Cassandra but we focus on Analytics Data base which is name as ContrailAnalyticsCql
ContrailAnalyticsCql Database:
Now, these are the tables in contrail analytics database


flowrecordtable flowtablevrouterver2 statstablebydbltagv3
objectvaluetable messagetablemessagetype messagetablekeyword
messagetabletimestamp messagetablecategory statstablebyu64strtagv3
statstablebyu64tagv3 messagetablesource statstablebystrstrtagv3
systemobjecttable flowtableprotdpver2 statstablebystru64tagv3
objecttable statstablebyu64u64tagv3 flowtabledvndipver2
messagetable statstablebystrtagv3 flowtableprotspver2
flowtablesvnsipver2 messagetablemoduleid
Now we list all tables with their attributes
flowrecordtable
  • action
  • bytes
  • data_sample
  • destip
  • destvn
  • direction_ing
  • dport
  • drop_reason
  • input_interface
  • key
  • max_interarrival
  • mean_interarrival
  • min_interarrival
  • mpls_label
  • nw_ace_uuid
  • other_vrouter_ip
  • output_interface
  • packets
  • protocol
  • reverse_uuid
  • setup_time
  • sg_rule_uuid
  • sourceip
  • sourcevn
  • sport
  • stddev_interarrival
  • tcp_flags
  • teardown_time
  • tos
  • underlay_proto
  • underlay_source_port
  • vm
  • vmi_uuid
  • vrouter
  • vrouter_ip


flowtablevrouterver2
  • column1
  • column2
  • column3
  • key
  • key2
  • key3
  • value
statstablebydbltagv3
  • column1
  • column2
  • column3
  • key
  • key2
  • key3
  • key4
  • key5
  • value
objectvaluetable
  • column1
  • key
  • key2
  • value
Messagetablemessagetype
  • column1
  • column2
  • column3
  • key
  • key2
Messagetablekeyword
  • column1
  • column2
  • column3
  • key2
messagetabletimestamp
  • column1
  • column2
  • key
  • key2
messagetablecategory
  • column1
  • column2
  • column3
  • key
  • key2
statstablebyu64strtagv3
  • column1
  • column2
  • column3
  • column4
  • key
  • key2
  • key3
  • key4
  • key5
  • key6
  • value
statstablebyu64tagv3
  • column1
  • column2
  • column3
  • key
  • key2
  • key3
  • key4
  • key5
  • value
messagetablesource
  • column1
  • column2
  • column3
  • key
  • key2
statstablebystrstrtagv3
  • column1
  • column2
  • column3
  • column4
  • key
  • key2
  • key3
  • key4
  • key5
  • key6
  • value
systemobjecttable
  • SystemObjectConfigAuditTtl
  • SystemObjectFlowDataTtl
  • SystemObjectFlowStartTime
  • SystemObjectGlobalDataTtl
  • SystemObjectMsgStartTime
  • SystemObjectStartTime
  • SystemObjectStatStartTime
  • SystemObjectStatsDataTtl
  • key
flowtableprotdpver2:
  • flowtableprotdpver2
  • column1
  • column2
  • column3
  • column4
  • key
  • key2
  • key3
  • value
statstablebystru64tagv3
  • column1
  • column2
  • column3
  • column4
  • key
  • key2
  • key3
  • key4
  • key5
  • key6
  • value
objecttable
  • column1
  • column2
  • key
  • key2
  • key3
  • value
statstablebyu64u64tagv3
  • column1
  • column2
  • column3
  • column4
  • key
  • key2
  • key3
  • key4
  • key5
  • key6
  • value
flowtabledvndipver2
  • column1
  • column2
  • column3
  • column4
  • key
  • key2
  • key3
  • value


messagetable
  • Category
  • Context
  • IPAddress
  • InstanceId
  • Level
  • MessageTS
  • Messagetype
  • ModuleId
  • Namespace
  • NodeType
  • Pid
  • SequenceNum
  • Source
  • Type
  • VersionSig
  • Xmlmessage
  • key
statstablebystrtagv3
  • column1
  • column2
  • column3
  • key
  • key2
  • key3
  • key4
  • key5
  • value
flowtableprotspver2
  • column1
  • column2
  • column3
  • column4
  • key
  • key2
  • key3
  • value
flowtablesvnsipver2
  • column1
  • column2
  • column3
  • column4
  • key
  • key2
  • key3
  • value
messagetablemoduleid

  • column1
  • column2
  • column3
  • key
  • key2