TRILL Working Group W. Hao
INTERNET-DRAFT Y. Li
Intended status: Standards Track Huawei Technologies
D. Kumar
Cisco
M. Durrani
Cisco
H. Zhai
JIT
L. Xia
Huawei Technologies
Expires: February 2016 August 07, 2015
TRILL YANG Data Model
draft-ietf-trill-yang-03.txt
Abstract
This document defines a YANG data model for TRILL protocol.
Status of this Memo
This Internet-Draft is submitted to IETF in full conformance with
the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other
documents at any time. It is inappropriate to use Internet-Drafts
as reference material or to cite them other than as "work in
progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/1id-abstracts.html
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
Hao & Li, et al Expires November 7, 2016 [Page 1]
Internet-Draft TRILL YANG Data Model August 2015
Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with
respect to this document. Code Components extracted from this
document must include Simplified BSD License text as described in
Section 4.e of the Trust Legal Provisions and are provided without
warranty as described in the Simplified BSD License.
Table of Contents
1. Introduction ................................................ 2
2. Conventions Used in This Document............................ 2
3. Design of Data model......................................... 3
4. TRILL YANG Data model........................................ 7
5. Security Considerations..................................... 22
6. IANA Considerations ........................................ 22
7. References ................................................. 22
7.1. Normative References................................... 22
7.2. Informative References................................. 22
8. Acknowledgments ............................................ 23
1. Introduction
YANG [RFC6020] is a data definition language that was introduced to
define the contents of a conceptual data store that allows networked
devices to be managed using NETCONF [RFC6241].
This document defines a YANG [RFC6020] data model for the operation
of TRILL base protocol.
2. Conventions Used in This Document
This document uses the acronyms defined in [RFC6325], in addition to
the following:
CSNP: Complete Sequence Number Protocol Data Unit
DRB: Designated RBridge
Hao & Li, et al Expires February 7, 2016 [Page 2]
Internet-Draft TRILL YANG Data Model August 2015
IS-IS: Intermediate System to Intermediate System
LSDB: Link State Database
MAC: Media Access Control address
MTU: Maximum Transmission Unit
NETCONF: Network Configuration Protocol
PSNP: Partial Sequence Number Packet
RBridge: An alternative name for a TRILL Switch
RPF: Reverse Path Forward
SNP: Scalable Network Pack
SSH: Secure Shell
VLAN: Virtual Local-Area Network
3. Design of Data model
There is only one module for the TRILL base protocol. The module can
be augmented for other TRILL extended features with their specific
definitions, such as TRILL active-active connection, TRILL Fine
Grained Label, etc.
The TRILL Yang module includes one container of trillSites which
contains a list of instances as many implementations are currently
supporting multiple ISIS instances within a single RBridge. The
configuration data is divided into four categories which include per
RBridge, per nickname per RBridge, per port per RBridge, and per
VLAN per RBridge. The operating status includes the information of
LSDB, unicast and multicast routing table, RPF check, nickname, peer
and some statistics.
The figure below describes the overall structure of the TRILL Yang
model:
Hao & Li, et al Expires February 7, 2016 [Page 3]
Internet-Draft TRILL YANG Data Model August 2015
module: ietf-trill
+--rw trill-site
+--rw max-loadbalance-num? uint8
+--rw bandwidth-reference? uint32
+--rw native-confidence? uint8
+--rw remote-confidence? uint8
+--rw min-link-mtu? uint16
+--rw mtu-probes? uint8
+--rw lsp-timer
| +--rw lspLife? uint16
| +--rw lsp-refresh? uint16
| +--rw lsp-generation? uint8
+--rw lsp-snp-authen
| +--rw authen-mode? authen-mode
| +--rw cipher-or-plain? boolean
| +--rw password-key? string
| +--rw password? string
| +--rw keychain? string
+--rw tree-para
| +--rw nick-number? uint16
| +--rw tree-number? uint16
+--rw net-entity* string
+--rw nicknames
| +--rw nickname* [nickName]
| +--rw nickName uint16
| +--rw priority? uint8
| +--rw root-priority? uint16
+--rw trill-ports
| +--rw trill-port* [ifName]
| +--rw ifName string
| +--rw port-mode? port-mode
| +--rw hello-authen
| | +--rw authen-mode? authen-mode
| | +--rw cipher-or-plain? boolean
| | +--rw password-key? string
| | +--rw password? string
| | +--rw keychain? string
| +--rw csnp-timer? uint16
| +--rw hello? uint8
| +--rw holding-multiplier? uint16
| +--rw lsp-retransmit? uint16
| +--rw lsp-throttle
| | +--rw throttleInterval? uint16
| | +--rw count-number? uint16
| +--rw inhibition-timer? uint8
| +--rw drb-config
Hao & Li, et al Expires February 7, 2016 [Page 4]
Internet-Draft TRILL YANG Data Model August 2015
| | +--rw drb-priority? uint8
| | +--rw holding-timer? uint8
| +--rw mac-learning-flag? boolean
| +--rw trill-frame-receive-flag? boolean
| +--rw cost? uint32
| +--rw enabled-vlans? binary
| +--rw announcing-vlans? binary
| +--rw forwarding-vlans? binary
| +--rw designated-vlan? uint16
+--rw vlan-para
| +--rw vlan-config* [vlan-id]
| +--rw vlan-id uint16
| +--rw participation-flag? boolean
| +--rw priority? uint8
| +--rw holdingTimer? uint8
+--rw trill-route-infos
| +--ro trill-route-info* [nickname nexthop]
| +--ro nickname uint32
| +--ro cost? uint32
| +--ro out-interface? string
| +--ro out-vlan? uint32
| +--ro nexthop string
| +--ro hop-count? uint32
+--rw trill-mroute-infos
| +--ro trill-mroute-info* [vlan root-nickname]
| +--ro vlan uint16
| +--ro root-nickname uint16
| +--ro hop-count? uint16
| +--ro trill-mroute-outinterface-info*
[out-interface out-vlan]
| +--ro out-interface string
| +--ro out-vlan uint32
+--rw trill-rpf-check-infos
| +--ro trill-rpf-check-info* [ingress-nickname tree-nickname]
| +--ro ingress-nickname uint16
| +--ro tree-nickname uint16
| +--ro interface-name? string
| +--ro neighbor-mac? string
| +--ro out-vlan? uint16
+--rw trill-peer-infos
| +--ro trill-peer-info* [host-name circuit-id]
| +--ro host-name string
| +--ro interface-name? string
| +--ro circuit-id string
| +--ro status? peer-state
| +--ro holdTime? uint32
| +--ro priority? string
Hao & Li, et al Expires February 7, 2016 [Page 5]
Internet-Draft TRILL YANG Data Model August 2015
+--rw trill-lsdb-infos
| +--ro trill-lsdb-info* [lspid]
| +--ro lspid string
| +--ro seqence-number? string
| +--ro checksum? string
| +--ro lsp-length? uint32
| +--ro lsp-flags? bits
| +--ro holdtime? string
| +--ro local-lsp? boolean
+--rw trill-nickname-infos
| +--ro trill-nickname-info* [nickname systemid]
| +--ro nickname uint32
| +--ro priority? uint32
| +--ro root-priority? uint32
| +--ro systemid string
| +--ro conflict-state? conflict-state
| +--ro static-flag? static-flag
| +--ro is-local? boolean
+--ro trill-statistics
| +--ro interface-stat
| | +--ro up-num? uint32
| | +--ro down-num? uint32
| +--ro pktstatistics
| | +--ro report-num? uint32
| | +--ro detect-num? uint32
| | +--ro twoway-num? uint32
| +--ro unicast-routes-num? uint32
| +--ro multicast-routes-num? uint32
| +--ro rpf-entrys-num? uint32
| +--ro remote-nicknames-num? uint32
| +--ro lsdb-lsps-num? uint32
| +--ro self-lsps-num? uint32
| +--ro multicast-trees-num? uint32
| +--ro unicast-nodes-num? uint32
| +--ro multicast-nodes-num? uint32
+--rw pkt-statistics
+--ro pkt-statistic* [interface-name]
+--ro interface-name string
+--ro sent-hellos-num? uint32
+--ro recved-hellos-num? uint32
+--ro sent-lsps-num? uint32
+--ro recved-lsps-num? uint32
+--ro sent-csnps-num? uint32
+--ro recved-csnps-num? uint32
+--ro sent-psnps-num? uint32
+--ro recved-psnps-num? uint32
+--ro lsp-retransmissions-num? uint32
Hao & Li, et al Expires February 7, 2016 [Page 6]
Internet-Draft TRILL YANG Data Model August 2015
+--ro drb-elections-num? uint32
4. TRILL YANG Data model
<CODE BEGINS> file "ietf-trill@2015-08-07.yang"
module ietf-trill {
yang-version 1;
namespace "urn:ietf:params:xml:ns:yang:trill";
//namespace need to be assigned by IANA
prefix trill;
organization "IETF TRILL Working Group";
description "TRILL Yang Module";
revision 2015-08-06{
description "03 version, as per RFC6325";
reference "draft-ietf-trill-yang-03";
}
typedef port-mode {
type enumeration {
enum access {
value "0";
description "Access Port";
}
enum p2p {
value "1";
description "P2P Hello Link";
}
enum trunk {
value "2";
description "Trunk Port";
}
enum hybrid {
value "3";
description "Both Trunk and Access Port";
}
}
description "Trill Port Mode.";
}
typedef drb-state {
type enumeration {
enum non-drb {
value "0";
description "Non-DRB Port";
}
enum drb {
Hao & Li, et al Expires February 7, 2016 [Page 7]
Internet-Draft TRILL YANG Data Model August 2015
value "1";
description "DRB Port";
}
enum down {
value "2";
description "Down Port";
}
enum suspended {
value "3";
description "Suspended Port";
}
}
description "Port State in DRB Election Process.";
}
typedef peer-state {
type enumeration {
enum report {
value "0";
description "report state";
}
enum detect {
value "1";
description "detect state";
}
enum down {
value "2";
description "down state";
}
enum 2way {
value "3";
description "2way state";
}
}
description "TRILL Neighbour State.";
}
typedef authen-mode {
type enumeration {
enum "simple" {
value "0";
description "Indicates that the password is transmitted
in plaintext";
}
enum "md5" {
value "1";
description "Indicates that the password is transmitted
after encryption by MD5.";
}
Hao & Li, et al Expires February 7, 2016 [Page 8]
Internet-Draft TRILL YANG Data Model August 2015
enum "keychain" {
value "2";
description "Indicates that the password is a keychain
which varies with time.";
}
}
}
grouping authen-para {
leaf authen-mode {
type authen-mode;
description "authentication-mode ";
}
leaf cipher-or-plain {
type boolean;
description "0 indicates that the password is in ciphertext,
1 indicates that the password is in plaintext";
}
leaf password-key {
type string;
description "The value is a string of case-sensitive
characters, spaces not supported. The password range varies
with the authentication mode. When the authentication mode
is simple, the value is a string of 1 to 16 characters
in simple text, or a string of 32 characters in ciphertext.
When the authentication mode is md5, the value is a string
of 1 to 255 characters in simple text, or a string of 32 to
392 characters in ciphertext.";
}
leaf password {
type string;
description "The value is a string of case-sensitive
characters, spaces not supported. The password range
varies with the authentication mode.
When the authentication mode is simple,
the password ranges from 1 to 16 characters. When the
authentication mode is md5, the password ranges
from 1 to 255 characters.";
}
leaf keychain {
type string;
description "The name is keychain name which is a string
of 1 to 47 case-insensitive characters, spaces not supported.";
}
description "TRILL protocol authentication configurations.";
}
typedef conflict-state {
Hao & Li, et al Expires February 7, 2016 [Page 9]
Internet-Draft TRILL YANG Data Model August 2015
type enumeration {
enum "S" {
value "0";
description "Nickname suspended";
}
enum "A" {
value "1";
description "Nickname advertised";
}
}
}
typedef static-flag{
type enumeration {
enum "S" {
value "0";
description "Manually configured";
}
enum "D" {
value "1";
description "Dynamic generated";
}
}
description "Static or dynamic nickname flag.";
}
container trill-site {
leaf max-loadbalance-num {
default "32";
type uint8 {
range "1..max";
}
description "The maximum number of equal-cost
routes for load-balancing.";
}
leaf bandwidth-reference {
default "20000000";
type uint32 {
range "1..2147483648";
}
description "Sets the bandwidth reference value
for a TRILL interface. Unit:M bit/s.
Cost of the interface = Bandwidth reference
value/Interface bandwidth";
}
leaf native-confidence {
default "32";
type uint8;
Hao & Li, et al Expires February 7, 2016 [Page 10]
Internet-Draft TRILL YANG Data Model August 2015
description "The confidence in { MAC, VLAN, local port }
triples learned from locally received native frames";
}
leaf remote-confidence {
default "32";
type uint8;
description "The confidence in { MAC, VLAN, remote RBridge}
triples learned from decapsulating frames";
}
leaf min-link-mtu {
default "1470";
type uint16 {
range "1..max";
}
description "Minimum link MTU";
}
leaf mtu-probes {
default "3";
type uint8 {
range "1..max";
}
description "The number of failed MTU-probes";
}
container lsp-timer {
leaf lspLife {
default "1200";
type uint16 {
range "2..max";
}
description "LSP aging timer.Unit:Second";
}
leaf lsp-refresh {
default "900";
type uint16 {
range "1..65534";
}
description "LSP refresh timer.Unit:Second";
}
leaf lsp-generation {
default "2";
type uint8 {
range "1..120";
}
description "LSP generate timer.Unit:Second";
}
}
container lsp-snp-authen {
Hao & Li, et al Expires February 7, 2016 [Page 11]
Internet-Draft TRILL YANG Data Model August 2015
uses authen-para;
description "Authentication information for LSPs and SNPs";
}
container tree-para {
leaf nick-number {
default "1";
type uint16 {
range "1..256";
}
description "Nickname number";
}
leaf tree-number {
default "1";
type uint16 {
range "1..max";
}
description "Distribution tree number";
}
}
leaf-list net-entity {
type string;
description "TRILL network entity";
}
container nicknames {
list nickname {
key "nickName";
leaf nickName {
type uint16 {
range "1..65471";
}
}
leaf priority {
default "192";
type uint8 {
range "128..max";
}
}
leaf root-priority {
default "32768";
type uint16 {
range "1..max";
}
}
}
description "Nicknames and the associated properties";
Hao & Li, et al Expires February 7, 2016 [Page 12]
Internet-Draft TRILL YANG Data Model August 2015
}
container trill-ports {
list trill-port{
key "ifName";
leaf ifName {
type string;
description "trill interface";
}
leaf port-mode {
default "p2p";
type port-mode;
description "TRILL Port Mode";
}
container hello-authen {
uses authen-para;
description "Authentication information for Hellos";
}
leaf csnp-timer {
default "10";
type uint16 {
range "1..max";
}
}
leaf hello {
default "10";
type uint8 {
range "3..max";
}
}
leaf holding-multiplier {
default "3";
type uint16 {
range "3..1000";
}
}
leaf lsp-retransmit {
default "5";
type uint16 {
range "1..300";
}
}
container lsp-throttle {
leaf throttleInterval {
default "50";
type uint16 {
range "1..10000";
}
Hao & Li, et al Expires February 7, 2016 [Page 13]
Internet-Draft TRILL YANG Data Model August 2015
description "The interval timer between
two LSP messages.Unit:ms";
}
leaf count-number {
default "10";
type uint16 {
range "1..1000";
}
description "The max messages number being
sent each time.Unit:ms";
}
}
leaf inhibition-timer {
default "30";
type uint8 {
range "0..30";
}
description "The inhibition time for the port
when root bridge changes.Unit:Second";
}
container drb-config {
leaf drb-priority {
default "64";
type uint8 {
range "0..127";
}
}
leaf holding-timer {
default "10";
type uint8 {
range "3..255";
}
}
}
leaf mac-learning-flag {
default "true";
type boolean;
description "if learning MAC address from locally
received native frames";
}
leaf trill-frame-receive-flag {
default "false";
type boolean;
description "if receiving of TRILL frames from
non IS-IS adjacency";
}
Hao & Li, et al Expires February 7, 2016 [Page 14]
Internet-Draft TRILL YANG Data Model August 2015
leaf cost {
default "0";
type uint32 {
range "0..16777215";
}
description "link cost";
}
leaf enabled-vlans {
type binary{
length "1..512";
}
}
leaf announcing-vlans {
type binary{
length "1..512";
}
}
leaf forwarding-vlans {
type binary{
length "1..512";
}
}
leaf designated-vlan {
type uint16{
range "1..4096";
}
}
}
}
container vlan-para {
list vlan-config{
key vlan-id;
leaf vlan-id {
type uint16 {
range "1..4096";
}
}
leaf participation-flag {
default "false";
type boolean;
}
leaf priority {
default "64";
type uint8 {
range "0..127";
Hao & Li, et al Expires February 7, 2016 [Page 15]
Internet-Draft TRILL YANG Data Model August 2015
}
}
leaf holdingTimer {
default "10";
type uint8 {
range "3..max";
}
}
}
}
container trill-route-infos {
list trill-route-info {
key "nickname nexthop";
config "false";
leaf nickname {
config "false";
type uint32;
}
leaf cost {
config "false";
type uint32;
}
leaf out-interface {
config "false";
type string;
}
leaf out-vlan {
config "false";
type uint32;
}
leaf nexthop {
config "false";
type string;
}
leaf hop-count {
config "false";
type uint32;
}
}
}
container trill-mroute-infos {
list trill-mroute-info {
description "Distribution pruning tree route table;
For non-pruning tree, VLAN is set to be 0XFFFF";
Hao & Li, et al Expires February 7, 2016 [Page 16]
Internet-Draft TRILL YANG Data Model August 2015
key "vlan root-nickname";
config "false";
leaf vlan {
type uint16;
}
leaf root-nickname {
type uint16;
}
leaf hop-count {
type uint16;
}
list trill-mroute-outinterface-info {
key "out-interface out-vlan";
leaf out-interface {
type "string";
}
leaf out-vlan {
type "uint32";
}
}
}
}
container trill-rpf-check-infos {
list trill-rpf-check-info {
key "ingress-nickname tree-nickname";
config "false";
leaf ingress-nickname {
type "uint16";
}
leaf tree-nickname {
type "uint16";
}
leaf interface-name {
type "string";
}
leaf neighbor-mac {
type "string";
}
leaf out-vlan {
type "uint16";
}
}
Hao & Li, et al Expires February 7, 2016 [Page 17]
Internet-Draft TRILL YANG Data Model August 2015
}
container trill-peer-infos {
list trill-peer-info {
key "host-name circuit-id";
config "false";
leaf host-name {
type "string";
description "Peer RBridge name";
}
leaf interface-name {
type "string";
}
leaf circuit-id {
type "string";
}
leaf status {
type peer-state;
}
leaf holdTime {
type "uint32";
}
leaf priority {
type "string";
}
}
}
container trill-lsdb-infos{
list trill-lsdb-info{
key "lspid";
config "false";
leaf lspid {
type string;
}
leaf seqence-number {
type string;
}
leaf checksum {
type string;
}
leaf lsp-length {
type uint32 {
range "0..2000";
}
Hao & Li, et al Expires February 7, 2016 [Page 18]
Internet-Draft TRILL YANG Data Model August 2015
}
leaf lsp-flags {
type bits {
bit attbit {
position 0;
}
bit partition-bit {
position 1;
}
bit overload-bit {
position 2;
}
}
default "attbit";
}
leaf holdtime {
type string;
}
leaf local-lsp {
type boolean;
}
}
}
container trill-nickname-infos {
list trill-nickname-info {
key "nickname systemid";
config "false";
leaf nickname {
type uint32;
}
leaf priority {
type uint32;
}
leaf root-priority {
type uint32;
}
leaf systemid {
type string;
}
leaf conflict-state {
type conflict-state;
}
leaf static-flag {
Hao & Li, et al Expires February 7, 2016 [Page 19]
Internet-Draft TRILL YANG Data Model August 2015
type static-flag;
}
leaf is-local {
type boolean;
}
}
}
container trill-statistics {
config "false";
container interface-stat {
leaf up-num {
type uint32;
}
leaf down-num {
type uint32;
}
}
container pktstatistics {
leaf report-num {
type uint32;
}
leaf detect-num {
type uint32;
}
leaf twoway-num {
type uint32;
}
}
leaf unicast-routes-num {
type uint32;
}
leaf multicast-routes-num {
type uint32;
}
leaf rpf-entrys-num {
type uint32;
}
leaf remote-nicknames-num {
type uint32;
}
leaf lsdb-lsps-num {
type uint32;
}
leaf self-lsps-num {
type uint32;
}
leaf multicast-trees-num {
Hao & Li, et al Expires February 7, 2016 [Page 20]
Internet-Draft TRILL YANG Data Model August 2015
type uint32;
}
leaf unicast-nodes-num {
type uint32;
}
leaf multicast-nodes-num {
type uint32;
}
}
container pkt-statistics {
list pkt-statistic {
key "interface-name";
config "false";
leaf interface-name {
type string;
}
leaf sent-hellos-num {
type uint32;
}
leaf recved-hellos-num {
type uint32;
}
leaf sent-lsps-num {
type uint32;
}
leaf recved-lsps-num {
type uint32;
}
leaf sent-csnps-num {
type uint32;
}
leaf recved-csnps-num {
type uint32;
}
leaf sent-psnps-num {
type uint32;
}
leaf recved-psnps-num {
type uint32;
}
leaf lsp-retransmissions-num {
type uint32;
}
leaf drb-elections-num {
type uint32;
Hao & Li, et al Expires February 7, 2016 [Page 21]
Internet-Draft TRILL YANG Data Model August 2015
}
}
}
}
}
<CODE ENDS>
5. Security Considerations
The YANG module defined in this memo is designed to be accessed via
the NETCONF protocol [RFC6241] [RFC6241]. The lowest NETCONF layer
is the secure transport layer and the mandatory-to-implement secure
transport is SSH [RFC6242] [RFC6242]. The NETCONF access control
model [RFC6536] [RFC6536] provides the means to restrict access for
particular NETCONF users to a pre-configured subset of all available
NETCONF protocol operations and content.
6. IANA Considerations
This document requires no IANA Actions. RFC Editor: Please remove
this section before publication.
7. References
7.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2234] Crocker, D. and Overell, P.(Editors), "Augmented BNF for
Syntax Specifications: ABNF", RFC 2234, Internet Mail
Consortium and Demon Internet Ltd., November 1997.
7.2. Informative References
[RFC6325] Perlman, R., et.al., "Routing Bridges (RBridges): Base
Protocol Specification", RFC 6325, July 2011.
[RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the
Network Configuration Protocol (NETCONF)", RFC 6020,
October 2010.
[RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. Bierman,
"Network Configuration Protocol (NETCONF)", RFC6241, June
2011.
Hao & Li, et al Expires February 7, 2016 [Page 22]
Internet-Draft TRILL YANG Data Model August 2015
8. Acknowledgments
The authors wish to acknowledge the important contributions of
Donald Eastlake, Susan Hares, Guangying Zheng, Xianping Zhang,
Wenxia Hou, Zhibo Hu.
Authors' Addresses
Weiguo Hao
Huawei Technologies
101 Software Avenue,
Nanjing 210012
China
Phone: +86-25-56623144
Email: haoweiguo@huawei.com
Yizhou Li
Huawei Technologies
101 Software Avenue,
Nanjing 210012
China
Phone: +86-25-56625375
Email: liyizhou@huawei.com
Hao & Li, et al Expires February 7, 2016 [Page 23]
Internet-Draft TRILL YANG Data Model August 2015
Deepak Kumar
CISCO Systems
510 McCarthy Blvd
Milpitas, CA 95035.
Email: dekumar@cisco.com
Muhammad Durrani
Cisco
Email: mdurrani@cisco.com
Hongjun Zhai
Jinling Institute of Technology
99 Hongjing Avenue, Jiangning District
Nanjing, Jiangsu 211169
China
Email: honjun.zhai@tom.com
Liang Xia
Huawei Technologies
101 Software Avenue,
Nanjing 210012
China
Email: frank.xialiang@huawei.com
Hao & Li, et al Expires February 7, 2016 [Page 24]