ofnet

package module
v0.0.0-...-ccb7345 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 4, 2016 License: Apache-2.0 Imports: 25 Imported by: 0

README ¶

Ofnet

Ofnet is a networking library that manages a network of openflow switches using a distributed controller architecture

Ofnet is a golang library that can be used by Container network drivers or container executors to manage a cluster wide network. Ofnet implements openflow 1.3 based controller and works with OpenVswitch. Ofnet manages only the openflow forwarding aspect of OVS. It does not create OVS interfaces/ports required by containers. It is assumed that container network driver creates OVS interface, moves it to container namespace and passes endpoint information to Ofnet library using its API.

Ofnet Controller supports multiple Software Defined Networking paradigms. They are

  1. vrouter - In this mode entire network operates like a giant router. IP packates are forwarded based on their IP dest address using a Vxlan overlay. Ofnet controller keeps track of all IP addresses in the network and programs OVS to lookup IP destination address and forward it using the overlay. It Proxies all ARP requests so that there is no need for broadcast in the network.
  2. vxlan bridge - In this mode each OVS acts as a VXLAN switch and together they emulate multiple bridge domains. This mode requires OVS 2.3.1 or higher.
  3. vlan bridge - In this mode OVS acts as a VLAN bridge
  4. vlan router - In this mode OVS acts as an IP Router. Control plane protocol like BGP is used to exchange routing information with physical switches

High level Architecture

Architecture

As shown above Ofnet Controller consists of Ofnet Agents that run on each host along with OVS and multiple Ofnet Masters. Ofnet agents can connect to any number of Ofnet Masters. Ofnet Masters largely act as state distributors. Ofnet Masters and Agents form an eventually consistent database that can survive multiple node failures, network partitioning and temporary hiccups. Controller state is guaranteed to eventually reach a consistent state.

Ofnet controller supports the concept of multiple networks. Depending on the forwarding paradign, this can be mapped to Tenats(VRF in networking lingo, VPC in cloud lingo), Subnets or bridge domains.

Multiple datapath plugins

Datapath Plugins

Ofnet Controller supports multiple data path plugins. Currently vrouter and vxlan plugins are implemented. Vlan plugin is in development. These plugins use Ofctrl library to program Flows in OVS. Please see Ofctrl subdirectory on more details.

Usage

Documentation ¶

Overview ¶

** Copyright 2014 Cisco Systems Inc. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

** Copyright 2014 Cisco Systems Inc. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

** Copyright 2014 Cisco Systems Inc. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

** Copyright 2014 Cisco Systems Inc. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

** Copyright 2014 Cisco Systems Inc. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

** Copyright 2014 Cisco Systems Inc. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

** Copyright 2014 Cisco Systems Inc. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Index ¶

Constants ¶

View Source
const (
	VLAN_TBL_ID           = 1
	SRV_PROXY_DNAT_TBL_ID = 2
	DST_GRP_TBL_ID        = 3
	POLICY_TBL_ID         = 4
	SRV_PROXY_SNAT_TBL_ID = 5
	IP_TBL_ID             = 6
	MAC_DEST_TBL_ID       = 7
)
View Source
const FLOW_FLOOD_PRIORITY = 10 // Priority for flood entries
View Source
const FLOW_MATCH_PRIORITY = 100 // Priority for all match flows
View Source
const FLOW_MISS_PRIORITY = 1 // priority for table miss flow
View Source
const FLOW_POLICY_PRIORITY_OFFSET = 10 // Priority offset for policy rules
View Source
const METADATA_RX_VTEP = 0x1
View Source
const OFNET_AGENT_VLAN_PORT = 9010
View Source
const OFNET_AGENT_VXLAN_PORT = 9002
View Source
const OFNET_MASTER_PORT = 9001

Default port numbers

View Source
const TCP_FLAG_ACK = 0x10
View Source
const TCP_FLAG_SYN = 0x2
View Source
const VXLAN_GARP_SUPPORTED = false

Variables ¶

This section is empty.

Functions ¶

func BuildGarpPkt ¶

func BuildGarpPkt(ip net.IP, mac net.HardwareAddr, vlanID uint16) *openflow13.PacketOut

BuildGarpPkt builds a Gratuitous ARP packet

func DstGroupMetadata ¶

func DstGroupMetadata(groupId int) (uint64, uint64)

DstGroupMetadata returns metadata for dst group

func ParseCIDR ¶

func ParseCIDR(cidrStr string) (string, uint, error)

ParseCIDR parses a CIDR string into a gateway IP and length.

func ParseIPAddrMaskString ¶

func ParseIPAddrMaskString(ipAddr string) (*net.IP, *net.IP, error)

ParseIPAddrMaskString Parse IP addr string

func SrcGroupMetadata ¶

func SrcGroupMetadata(groupId int) (uint64, uint64)

SrcGroupMetadata returns metadata for src group

func Vrfmetadata ¶

func Vrfmetadata(vrfid uint16) (uint64, uint64)

Types ¶

type EndpointInfo ¶

type EndpointInfo struct {
	PortNo        uint32
	EndpointGroup int
	MacAddr       net.HardwareAddr
	Vlan          uint16
	IpAddr        net.IP
	Vrf           string
}

local End point information

type OfnetAgent ¶

type OfnetAgent struct {
	MyPort uint16 // Port where the agent's RPC server is listening
	MyAddr string // RPC server addr. same as localIp. different in testing environments
	// contains filtered or unexported fields
}

OfnetAgent state

func NewOfnetAgent ¶

func NewOfnetAgent(bridgeName string, dpName string, localIp net.IP, rpcPort uint16,
	ovsPort uint16, routerInfo ...string) (*OfnetAgent, error)

Create a new Ofnet agent and initialize it

routerInfo[0] -> Uplink nexthop interface

func (*OfnetAgent) AddBgp ¶

func (self *OfnetAgent) AddBgp(routerIP string, As string, neighborAs string, peer string) error

AddBgpNeighbors add bgp neighbor

func (*OfnetAgent) AddLocalEndpoint ¶

func (self *OfnetAgent) AddLocalEndpoint(endpoint EndpointInfo) error

Add a local endpoint. This takes ofp port number, mac address, vlan , VrfId and IP address of the port.

func (*OfnetAgent) AddLocalProtoRoute ¶

func (self *OfnetAgent) AddLocalProtoRoute(path *OfnetProtoRouteInfo)

func (*OfnetAgent) AddMaster ¶

func (self *OfnetAgent) AddMaster(masterInfo *OfnetNode, ret *bool) error

Add a master ofnet agent tries to connect to the master and download routes

func (*OfnetAgent) AddNetwork ¶

func (self *OfnetAgent) AddNetwork(vlanId uint16, vni uint32, Gw string, Vrf string) error

Add a Network. This is mainly used for mapping vlan id to Vxlan VNI and add gateway for network

func (*OfnetAgent) AddSvcSpec ¶

func (self *OfnetAgent) AddSvcSpec(svcName string, spec *ServiceSpec) error

AddSvcSpec adds a service spec to proxy

func (self *OfnetAgent) AddUplink(portNo uint32) error

AddUplink adds an uplink to the switch

func (*OfnetAgent) AddVtepPort ¶

func (self *OfnetAgent) AddVtepPort(portNo uint32, remoteIp net.IP) error

Add virtual tunnel end point. This is mainly used for mapping remote vtep IP to ofp port number.

func (*OfnetAgent) DelSvcSpec ¶

func (self *OfnetAgent) DelSvcSpec(svcName string, spec *ServiceSpec) error

DelSvcSpec removes a service spec from proxy

func (*OfnetAgent) Delete ¶

func (self *OfnetAgent) Delete() error

Delete cleans up an ofnet agent

func (*OfnetAgent) DeleteBgp ¶

func (self *OfnetAgent) DeleteBgp() error

func (*OfnetAgent) DeleteLocalProtoRoute ¶

func (self *OfnetAgent) DeleteLocalProtoRoute(path *OfnetProtoRouteInfo)

func (*OfnetAgent) DummyRpc ¶

func (self *OfnetAgent) DummyRpc(arg *string, ret *bool) error

func (*OfnetAgent) EndpointAdd ¶

func (self *OfnetAgent) EndpointAdd(epreg *OfnetEndpoint, ret *bool) error

Add remote endpoint RPC call from master

func (*OfnetAgent) EndpointDel ¶

func (self *OfnetAgent) EndpointDel(epreg *OfnetEndpoint, ret *bool) error

Delete remote endpoint RPC call from master

func (*OfnetAgent) GetRouterInfo ¶

func (self *OfnetAgent) GetRouterInfo() *OfnetProtoRouterInfo

func (*OfnetAgent) IsSwitchConnected ¶

func (self *OfnetAgent) IsSwitchConnected() bool

IsSwitchConnected returns true if switch is connected

func (*OfnetAgent) PacketRcvd ¶

func (self *OfnetAgent) PacketRcvd(sw *ofctrl.OFSwitch, pkt *ofctrl.PacketIn)

Receive a packet from the switch.

func (*OfnetAgent) RemoveLocalEndpoint ¶

func (self *OfnetAgent) RemoveLocalEndpoint(portNo uint32) error

Remove local endpoint

func (*OfnetAgent) RemoveMaster ¶

func (self *OfnetAgent) RemoveMaster(masterInfo *OfnetNode) error

Remove the master from master DB

func (*OfnetAgent) RemoveNetwork ¶

func (self *OfnetAgent) RemoveNetwork(vlanId uint16, vni uint32, Gw string, Vrf string) error

Remove a vlan from datapath

func (self *OfnetAgent) RemoveUplink(portNo uint32) error

RemoveUplink remove an uplink to the switch

func (*OfnetAgent) RemoveVtepPort ¶

func (self *OfnetAgent) RemoveVtepPort(portNo uint32, remoteIp net.IP) error

Remove a VTEP port

func (*OfnetAgent) SvcProviderUpdate ¶

func (self *OfnetAgent) SvcProviderUpdate(svcName string, providers []string)

SvcProviderUpdate Service Proxy Back End update

func (*OfnetAgent) SwitchConnected ¶

func (self *OfnetAgent) SwitchConnected(sw *ofctrl.OFSwitch)

Handle switch connected event

func (*OfnetAgent) SwitchDisconnected ¶

func (self *OfnetAgent) SwitchDisconnected(sw *ofctrl.OFSwitch)

Handle switch disconnect event

func (*OfnetAgent) WaitForSwitchConnection ¶

func (self *OfnetAgent) WaitForSwitchConnection()

WaitForSwitchConnection wait till switch connects

type OfnetBgp ¶

type OfnetBgp struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func NewOfnetBgp ¶

func NewOfnetBgp(agent *OfnetAgent, routerInfo []string) *OfnetBgp

Create a new vlrouter instance

func (*OfnetBgp) AddLocalProtoRoute ¶

func (self *OfnetBgp) AddLocalProtoRoute(pathInfo *OfnetProtoRouteInfo) error

AddLocalProtoRoute is used to add local endpoint to the protocol RIB

func (*OfnetBgp) AddProtoNeighbor ¶

func (self *OfnetBgp) AddProtoNeighbor(neighborInfo *OfnetProtoNeighborInfo) error

AddProtoNeighbor adds bgp neighbor

func (*OfnetBgp) DeleteLocalProtoRoute ¶

func (self *OfnetBgp) DeleteLocalProtoRoute(pathInfo *OfnetProtoRouteInfo) error

DeleteLocalProtoRoute withdraws local endpoints from protocol RIB

func (*OfnetBgp) DeleteProtoNeighbor ¶

func (self *OfnetBgp) DeleteProtoNeighbor() error

DeleteProtoNeighbor deletes bgp neighbor for the host

func (*OfnetBgp) GetRouterInfo ¶

func (self *OfnetBgp) GetRouterInfo() *OfnetProtoRouterInfo

GetRouterInfo returns the configured RouterInfo

func (*OfnetBgp) ModifyProtoRib ¶

func (self *OfnetBgp) ModifyProtoRib(path interface{})

func (*OfnetBgp) StartProtoServer ¶

func (self *OfnetBgp) StartProtoServer(routerInfo *OfnetProtoRouterInfo) error

Bgp serve routine does the following: 1) Creates inb01 router port 2) Add MyBgp endpoint 3) Kicks off routines to monitor route updates and peer state

func (*OfnetBgp) StopProtoServer ¶

func (self *OfnetBgp) StopProtoServer() error

type OfnetDatapath ¶

type OfnetDatapath interface {
	// New master was added.
	MasterAdded(master *OfnetNode) error

	// Switch connected notification
	SwitchConnected(sw *ofctrl.OFSwitch)

	// Switch disconnected notification
	SwitchDisconnected(sw *ofctrl.OFSwitch)

	// Process Incoming packet
	PacketRcvd(sw *ofctrl.OFSwitch, pkt *ofctrl.PacketIn)

	// Add a local endpoint to forwarding DB
	AddLocalEndpoint(endpoint OfnetEndpoint) error

	// Remove a local endpoint from forwarding DB
	RemoveLocalEndpoint(endpoint OfnetEndpoint) error

	// Add a remote endpoint to forwarding DB
	AddEndpoint(endpoint *OfnetEndpoint) error

	// Remove a remote endpoint from forwarding DB
	RemoveEndpoint(endpoint *OfnetEndpoint) error

	// Add an remote VTEP
	AddVtepPort(portNo uint32, remoteIp net.IP) error

	// Remove remote VTEP
	RemoveVtepPort(portNo uint32, remoteIp net.IP) error

	// Add a vlan
	AddVlan(vlanId uint16, vni uint32, vrf string) error

	// Remove a vlan
	RemoveVlan(vlanId uint16, vni uint32, vrf string) error

	//Add uplink port
	AddUplink(portNo uint32) error

	//Delete uplink port
	RemoveUplink(portNo uint32) error

	// Add a service spec to proxy
	AddSvcSpec(svcName string, spec *ServiceSpec) error

	// Remove a service spec from proxy
	DelSvcSpec(svcName string, spec *ServiceSpec) error

	// Service Proxy Back End update
	SvcProviderUpdate(svcName string, providers []string)
}

Interface implemented by each datapath

type OfnetEndpoint ¶

type OfnetEndpoint struct {
	EndpointID    string    // Unique identifier for the endpoint
	EndpointType  string    // Type of the endpoint "internal", "external" or "externalRoute"
	EndpointGroup int       // Endpoint group identifier for policies.
	IpAddr        net.IP    // IP address of the end point
	IpMask        net.IP    // IP mask for the end point
	Vrf           string    // IP address namespace
	MacAddrStr    string    // Mac address of the end point(in string format)
	Vlan          uint16    // Vlan Id for the endpoint
	Vni           uint32    // Vxlan VNI
	OriginatorIp  net.IP    // Originating switch
	PortNo        uint32    // Port number on originating switch
	Timestamp     time.Time // Timestamp of the last event
}

OfnetEndpoint has info about an endpoint

type OfnetMaster ¶

type OfnetMaster struct {
	// contains filtered or unexported fields
}

Ofnet master state

func NewOfnetMaster ¶

func NewOfnetMaster(portNo uint16) *OfnetMaster

Create new Ofnet master

func (*OfnetMaster) AddRule ¶

func (self *OfnetMaster) AddRule(rule *OfnetPolicyRule) error

AddRule adds a new rule to the policyDB

func (*OfnetMaster) DelRule ¶

func (self *OfnetMaster) DelRule(rule *OfnetPolicyRule) error

DelRule removes a rule from policy DB

func (*OfnetMaster) Delete ¶

func (self *OfnetMaster) Delete() error

Delete closes rpc listener

func (*OfnetMaster) EndpointAdd ¶

func (self *OfnetMaster) EndpointAdd(ep *OfnetEndpoint, ret *bool) error

Add an Endpoint

func (*OfnetMaster) EndpointDel ¶

func (self *OfnetMaster) EndpointDel(ep *OfnetEndpoint, ret *bool) error

Delete an Endpoint

func (*OfnetMaster) MakeDummyRpcCall ¶

func (self *OfnetMaster) MakeDummyRpcCall() error

Make a dummy RPC call to all agents. for testing purposes..

func (*OfnetMaster) RegisterNode ¶

func (self *OfnetMaster) RegisterNode(hostInfo *OfnetNode, ret *bool) error

Register an agent

type OfnetNode ¶

type OfnetNode struct {
	HostAddr string
	HostPort uint16
}

Information about each node

type OfnetPolicyRule ¶

type OfnetPolicyRule struct {
	RuleId           string // Unique identifier for the rule
	Priority         int    // Priority for the rule (1..100. 100 is highest)
	SrcEndpointGroup int    // Source endpoint group
	DstEndpointGroup int    // Destination endpoint group
	SrcIpAddr        string // source IP addrss and mask
	DstIpAddr        string // Destination IP address and mask
	IpProtocol       uint8  // IP protocol number
	SrcPort          uint16 // Source port
	DstPort          uint16 // destination port
	TcpFlags         string // TCP flags to match: syn || syn,ack || ack || syn,!ack || !syn,ack;
	Action           string // rule action: 'accept' or 'deny'
}

OfnetPolicyRule has security rule to be installed

type OfnetProto ¶

type OfnetProto interface {

	//Create a protocol server
	StartProtoServer(routerInfo *OfnetProtoRouterInfo) error

	StopProtoServer() error

	//Add a Protocol Neighbor
	AddProtoNeighbor(neighborInfo *OfnetProtoNeighborInfo) error

	//Delete a Protocol Neighbor
	DeleteProtoNeighbor() error

	//Get Protocol router info
	GetRouterInfo() *OfnetProtoRouterInfo

	//Add Local Route
	AddLocalProtoRoute(path *OfnetProtoRouteInfo) error

	//Delete Local Route
	DeleteLocalProtoRoute(path *OfnetProtoRouteInfo) error

	//Modify protocol Rib (Could be used for testing)
	ModifyProtoRib(path interface{})
}

Interface implemented by each control protocol.

type OfnetProtoNeighborInfo ¶

type OfnetProtoNeighborInfo struct {
	ProtocolType string // type of protocol
	NeighborIP   string // ip address of the neighbor
	As           string // As of neighbor if applicable
}

type OfnetProtoRouteInfo ¶

type OfnetProtoRouteInfo struct {
	ProtocolType string // type of protocol
	// contains filtered or unexported fields
}

type OfnetProtoRouterInfo ¶

type OfnetProtoRouterInfo struct {
	ProtocolType string // type of protocol
	RouterIP     string // ip address of the router
	VlanIntf     string // uplink L2 intf
	As           string // As for Bgp protocol
}

type OfnetVrfInfo ¶

type OfnetVrfInfo struct {
	VrfName     string //vrf name
	VrfId       uint16 //local vrf id
	NumNetworks uint16 //ref count of networks in the vrf
}

type PolicyAgent ¶

type PolicyAgent struct {
	Rules      map[string]*PolicyRule  // rules database
	DstGrpFlow map[string]*ofctrl.Flow // FLow entries for dst group lookup
	// contains filtered or unexported fields
}

PolicyAgent is an instance of a policy agent

func NewPolicyAgent ¶

func NewPolicyAgent(agent *OfnetAgent, rpcServ *rpc.Server) *PolicyAgent

NewPolicyMgr Creates a new policy manager

func (*PolicyAgent) AddEndpoint ¶

func (self *PolicyAgent) AddEndpoint(endpoint *OfnetEndpoint) error

AddEndpoint adds an endpoint to dst group lookup

func (*PolicyAgent) AddRule ¶

func (self *PolicyAgent) AddRule(rule *OfnetPolicyRule, ret *bool) error

AddRule adds a security rule to policy table

func (*PolicyAgent) DelEndpoint ¶

func (self *PolicyAgent) DelEndpoint(endpoint *OfnetEndpoint) error

DelEndpoint deletes an endpoint from dst group lookup

func (*PolicyAgent) DelRule ¶

func (self *PolicyAgent) DelRule(rule *OfnetPolicyRule, ret *bool) error

DelRule deletes a security rule from policy table

func (*PolicyAgent) InitTables ¶

func (self *PolicyAgent) InitTables(nextTblId uint8) error

InitTables initializes policy table on the switch

func (*PolicyAgent) SwitchConnected ¶

func (self *PolicyAgent) SwitchConnected(sw *ofctrl.OFSwitch)

Handle switch connected notification

func (*PolicyAgent) SwitchDisconnected ¶

func (self *PolicyAgent) SwitchDisconnected(sw *ofctrl.OFSwitch)

Handle switch disconnected notification

type PolicyRule ¶

type PolicyRule struct {
	// contains filtered or unexported fields
}

PolicyRule has info about single rule

type PortSpec ¶

type PortSpec struct {
	Protocol string
	SvcPort  uint16 // advertised port
	ProvPort uint16 // actual port of provider
}

PortSpec defines protocol/port info required to host the service

type Providers ¶

type Providers struct {
	// contains filtered or unexported fields
}

Providers holds the current providers of a given service

type ServiceProxy ¶

type ServiceProxy struct {
	// contains filtered or unexported fields
}

ServiceProxy is an instance of a service proxy

func NewServiceProxy ¶

func NewServiceProxy() *ServiceProxy

NewServiceProxy Creates a new service proxy

func (*ServiceProxy) AddSvcSpec ¶

func (proxy *ServiceProxy) AddSvcSpec(svcName string, spec *ServiceSpec) error

AddSvcSpec adds or updates a service spec.

func (*ServiceProxy) DelEndpoint ¶

func (proxy *ServiceProxy) DelEndpoint(endpoint *OfnetEndpoint)

DelEndpoint handles an endpoint delete

func (*ServiceProxy) DelSvcSpec ¶

func (proxy *ServiceProxy) DelSvcSpec(svcName string, spec *ServiceSpec) error

DelSvcSpec deletes a service spec.

func (*ServiceProxy) HandlePkt ¶

func (proxy *ServiceProxy) HandlePkt(pkt *ofctrl.PacketIn)

HandlePkt processes a received pkt from a matching table entry

func (*ServiceProxy) InitDNATTable ¶

func (proxy *ServiceProxy) InitDNATTable(nextIDdNAT uint8) error

InitDNATTable initializes the dNAT table

func (*ServiceProxy) InitSNATTable ¶

func (proxy *ServiceProxy) InitSNATTable(nextIDsNAT uint8) error

InitSNATTable initializes the sNAT table

func (*ServiceProxy) ProviderUpdate ¶

func (proxy *ServiceProxy) ProviderUpdate(svcName string, providers []string)

ProviderUpdate updates the list of providers of the service

func (*ServiceProxy) SwitchConnected ¶

func (proxy *ServiceProxy) SwitchConnected(sw *ofctrl.OFSwitch)

Handle switch connected notification

func (*ServiceProxy) SwitchDisconnected ¶

func (proxy *ServiceProxy) SwitchDisconnected(sw *ofctrl.OFSwitch)

Handle switch disconnected notification

type ServiceSpec ¶

type ServiceSpec struct {
	IpAddress string
	Ports     []PortSpec
}

ServiceSpec defines a service to be proxied

type Vlan ¶

type Vlan struct {
	Vni uint32 // Vxlan VNI
	// contains filtered or unexported fields
}

Vlan info

type VlanBridge ¶

type VlanBridge struct {
	// contains filtered or unexported fields
}

VlanBridge has Vlan state.

func NewVlanBridge ¶

func NewVlanBridge(agent *OfnetAgent, rpcServ *rpc.Server) *VlanBridge

NewVlanBridge Create a new vlan instance

func (*VlanBridge) AddEndpoint ¶

func (vl *VlanBridge) AddEndpoint(endpoint *OfnetEndpoint) error

AddEndpoint Add an endpoint to the datapath

func (*VlanBridge) AddLocalEndpoint ¶

func (vl *VlanBridge) AddLocalEndpoint(endpoint OfnetEndpoint) error

AddLocalEndpoint Add a local endpoint and install associated local route

func (*VlanBridge) AddSvcSpec ¶

func (vl *VlanBridge) AddSvcSpec(svcName string, spec *ServiceSpec) error

AddSvcSpec adds a service spec to proxy

func (vl *VlanBridge) AddUplink(portNo uint32) error

AddUplink adds an uplink to the switch

func (*VlanBridge) AddVlan ¶

func (vl *VlanBridge) AddVlan(vlanID uint16, vni uint32, vrf string) error

AddVlan Add a vlan.

func (*VlanBridge) AddVtepPort ¶

func (vl *VlanBridge) AddVtepPort(portNo uint32, remoteIP net.IP) error

AddVtepPort Add virtual tunnel end point.

func (*VlanBridge) DelSvcSpec ¶

func (vl *VlanBridge) DelSvcSpec(svcName string, spec *ServiceSpec) error

DelSvcSpec removes a service spec from proxy

func (*VlanBridge) MasterAdded ¶

func (vl *VlanBridge) MasterAdded(master *OfnetNode) error

MasterAdded Handle new master added event

func (*VlanBridge) PacketRcvd ¶

func (vl *VlanBridge) PacketRcvd(sw *ofctrl.OFSwitch, pkt *ofctrl.PacketIn)

PacketRcvd Handle incoming packet

func (*VlanBridge) RemoveEndpoint ¶

func (vl *VlanBridge) RemoveEndpoint(endpoint *OfnetEndpoint) error

RemoveEndpoint removes an endpoint from the datapath

func (*VlanBridge) RemoveLocalEndpoint ¶

func (vl *VlanBridge) RemoveLocalEndpoint(endpoint OfnetEndpoint) error

RemoveLocalEndpoint Remove local endpoint

func (vl *VlanBridge) RemoveUplink(portNo uint32) error

RemoveUplink remove an uplink to the switch

func (*VlanBridge) RemoveVlan ¶

func (vl *VlanBridge) RemoveVlan(vlanID uint16, vni uint32, vrf string) error

RemoveVlan Remove a vlan

func (*VlanBridge) RemoveVtepPort ¶

func (vl *VlanBridge) RemoveVtepPort(portNo uint32, remoteIP net.IP) error

RemoveVtepPort Remove a VTEP port

func (*VlanBridge) SvcProviderUpdate ¶

func (vl *VlanBridge) SvcProviderUpdate(svcName string, providers []string)

SvcProviderUpdate Service Proxy Back End update

func (*VlanBridge) SwitchConnected ¶

func (vl *VlanBridge) SwitchConnected(sw *ofctrl.OFSwitch)

SwitchConnected Handle switch connected notification

func (*VlanBridge) SwitchDisconnected ¶

func (vl *VlanBridge) SwitchDisconnected(sw *ofctrl.OFSwitch)

SwitchDisconnected Handle switch disconnected notification

type Vlrouter ¶

type Vlrouter struct {
	// contains filtered or unexported fields
}

Vlrouter state. One Vlrouter instance exists on each host

func NewVlrouter ¶

func NewVlrouter(agent *OfnetAgent, rpcServ *rpc.Server) *Vlrouter

Create a new vlrouter instance

func (*Vlrouter) AddEndpoint ¶

func (self *Vlrouter) AddEndpoint(endpoint *OfnetEndpoint) error
AddEndpoint does the following :

1)Adds a remote endpoint and associated flows to OVS 2)The remotes routes can be 3 endpoint types :

  a) internal - json rpc based learning from peer netplugins/ofnetagents in the cluster
	b) external - remote endpoint learn via BGP
	c) external-bgp - endpoint of BGP peer

func (*Vlrouter) AddLocalEndpoint ¶

func (self *Vlrouter) AddLocalEndpoint(endpoint OfnetEndpoint) error

func (*Vlrouter) AddSvcSpec ¶

func (self *Vlrouter) AddSvcSpec(svcName string, spec *ServiceSpec) error

AddSvcSpec adds a service spec to proxy

func (self *Vlrouter) AddUplink(portNo uint32) error

AddUplink adds an uplink to the switch

func (*Vlrouter) AddVlan ¶

func (self *Vlrouter) AddVlan(vlanId uint16, vni uint32, vrf string) error

Add a vlan. This is mainly used for mapping vlan id to Vxlan VNI

func (*Vlrouter) AddVtepPort ¶

func (self *Vlrouter) AddVtepPort(portNo uint32, remoteIp net.IP) error

func (*Vlrouter) DelSvcSpec ¶

func (self *Vlrouter) DelSvcSpec(svcName string, spec *ServiceSpec) error

DelSvcSpec removes a service spec from proxy

func (*Vlrouter) MasterAdded ¶

func (self *Vlrouter) MasterAdded(master *OfnetNode) error

Handle new master added event

func (*Vlrouter) PacketRcvd ¶

func (self *Vlrouter) PacketRcvd(sw *ofctrl.OFSwitch, pkt *ofctrl.PacketIn)

Handle incoming packet

func (*Vlrouter) RemoveEndpoint ¶

func (self *Vlrouter) RemoveEndpoint(endpoint *OfnetEndpoint) error

RemoveEndpoint removes an endpoint from the datapath

func (*Vlrouter) RemoveLocalEndpoint ¶

func (self *Vlrouter) RemoveLocalEndpoint(endpoint OfnetEndpoint) error
RemoveLocalEndpoint does the following

1) Removes the local endpoint and associated flows from OVS 2) Withdraws the route from BGP RIB

func (self *Vlrouter) RemoveUplink(portNo uint32) error

func (*Vlrouter) RemoveVlan ¶

func (self *Vlrouter) RemoveVlan(vlanId uint16, vni uint32, vrf string) error

Remove a vlan

func (*Vlrouter) RemoveVtepPort ¶

func (self *Vlrouter) RemoveVtepPort(portNo uint32, remoteIp net.IP) error

Remove a VTEP port

func (*Vlrouter) SvcProviderUpdate ¶

func (self *Vlrouter) SvcProviderUpdate(svcName string, providers []string)

SvcProviderUpdate Service Proxy Back End update

func (*Vlrouter) SwitchConnected ¶

func (self *Vlrouter) SwitchConnected(sw *ofctrl.OFSwitch)

Handle switch connected notification

func (*Vlrouter) SwitchDisconnected ¶

func (self *Vlrouter) SwitchDisconnected(sw *ofctrl.OFSwitch)

Handle switch disconnected notification

type Vrouter ¶

type Vrouter struct {
	// contains filtered or unexported fields
}

Vrouter state. One Vrouter instance exists on each host

func NewVrouter ¶

func NewVrouter(agent *OfnetAgent, rpcServ *rpc.Server) *Vrouter

Create a new vrouter instance

func (*Vrouter) AddEndpoint ¶

func (self *Vrouter) AddEndpoint(endpoint *OfnetEndpoint) error

AddEndpoint Add an endpoint to the datapath

func (*Vrouter) AddLocalEndpoint ¶

func (self *Vrouter) AddLocalEndpoint(endpoint OfnetEndpoint) error

Add a local endpoint and install associated local route

func (*Vrouter) AddSvcSpec ¶

func (vr *Vrouter) AddSvcSpec(svcName string, spec *ServiceSpec) error

AddSvcSpec adds a service spec to proxy

func (vr *Vrouter) AddUplink(portNo uint32) error

AddUplink adds an uplink to the switch

func (*Vrouter) AddVlan ¶

func (self *Vrouter) AddVlan(vlanId uint16, vni uint32, vrf string) error

Add a vlan. This is mainly used for mapping vlan id to Vxlan VNI

func (*Vrouter) AddVtepPort ¶

func (self *Vrouter) AddVtepPort(portNo uint32, remoteIp net.IP) error

Add virtual tunnel end point. This is mainly used for mapping remote vtep IP to ofp port number.

func (*Vrouter) DelSvcSpec ¶

func (vr *Vrouter) DelSvcSpec(svcName string, spec *ServiceSpec) error

DelSvcSpec removes a service spec from proxy

func (*Vrouter) MasterAdded ¶

func (self *Vrouter) MasterAdded(master *OfnetNode) error

Handle new master added event

func (*Vrouter) PacketRcvd ¶

func (self *Vrouter) PacketRcvd(sw *ofctrl.OFSwitch, pkt *ofctrl.PacketIn)

Handle incoming packet

func (*Vrouter) RemoveEndpoint ¶

func (self *Vrouter) RemoveEndpoint(endpoint *OfnetEndpoint) error

RemoveEndpoint removes an endpoint from the datapath

func (*Vrouter) RemoveLocalEndpoint ¶

func (self *Vrouter) RemoveLocalEndpoint(endpoint OfnetEndpoint) error

Remove local endpoint

func (vr *Vrouter) RemoveUplink(portNo uint32) error

RemoveUplink remove an uplink to the switch

func (*Vrouter) RemoveVlan ¶

func (self *Vrouter) RemoveVlan(vlanId uint16, vni uint32, vrf string) error

Remove a vlan

func (*Vrouter) RemoveVtepPort ¶

func (self *Vrouter) RemoveVtepPort(portNo uint32, remoteIp net.IP) error

Remove a VTEP port

func (*Vrouter) SvcProviderUpdate ¶

func (vr *Vrouter) SvcProviderUpdate(svcName string, providers []string)

SvcProviderUpdate Service Proxy Back End update

func (*Vrouter) SwitchConnected ¶

func (self *Vrouter) SwitchConnected(sw *ofctrl.OFSwitch)

Handle switch connected notification

func (*Vrouter) SwitchDisconnected ¶

func (self *Vrouter) SwitchDisconnected(sw *ofctrl.OFSwitch)

Handle switch disconnected notification

type Vxlan ¶

type Vxlan struct {
	// contains filtered or unexported fields
}

Vxlan state.

func NewVxlan ¶

func NewVxlan(agent *OfnetAgent, rpcServ *rpc.Server) *Vxlan

Create a new vxlan instance

func (*Vxlan) AddEndpoint ¶

func (self *Vxlan) AddEndpoint(endpoint *OfnetEndpoint) error

AddEndpoint Add an endpoint to the datapath

func (*Vxlan) AddLocalEndpoint ¶

func (self *Vxlan) AddLocalEndpoint(endpoint OfnetEndpoint) error

Add a local endpoint and install associated local route

func (*Vxlan) AddSvcSpec ¶

func (vx *Vxlan) AddSvcSpec(svcName string, spec *ServiceSpec) error

AddSvcSpec adds a service spec to proxy

func (vx *Vxlan) AddUplink(portNo uint32) error

AddUplink adds an uplink to the switch

func (*Vxlan) AddVlan ¶

func (self *Vxlan) AddVlan(vlanId uint16, vni uint32, vrf string) error

Add a vlan.

func (*Vxlan) AddVtepPort ¶

func (self *Vxlan) AddVtepPort(portNo uint32, remoteIp net.IP) error

Add virtual tunnel end point. This is mainly used for mapping remote vtep IP to ofp port number.

func (*Vxlan) DelSvcSpec ¶

func (vx *Vxlan) DelSvcSpec(svcName string, spec *ServiceSpec) error

DelSvcSpec removes a service spec from proxy

func (*Vxlan) MasterAdded ¶

func (self *Vxlan) MasterAdded(master *OfnetNode) error

Handle new master added event

func (*Vxlan) PacketRcvd ¶

func (self *Vxlan) PacketRcvd(sw *ofctrl.OFSwitch, pkt *ofctrl.PacketIn)

Handle incoming packet

func (*Vxlan) RemoveEndpoint ¶

func (self *Vxlan) RemoveEndpoint(endpoint *OfnetEndpoint) error

RemoveEndpoint removes an endpoint from the datapath

func (*Vxlan) RemoveLocalEndpoint ¶

func (self *Vxlan) RemoveLocalEndpoint(endpoint OfnetEndpoint) error

Remove local endpoint

func (vx *Vxlan) RemoveUplink(portNo uint32) error

RemoveUplink remove an uplink to the switch

func (*Vxlan) RemoveVlan ¶

func (self *Vxlan) RemoveVlan(vlanId uint16, vni uint32, vrf string) error

Remove a vlan

func (*Vxlan) RemoveVtepPort ¶

func (self *Vxlan) RemoveVtepPort(portNo uint32, remoteIp net.IP) error

Remove a VTEP port

func (*Vxlan) SvcProviderUpdate ¶

func (vx *Vxlan) SvcProviderUpdate(svcName string, providers []string)

SvcProviderUpdate Service Proxy Back End update

func (*Vxlan) SwitchConnected ¶

func (self *Vxlan) SwitchConnected(sw *ofctrl.OFSwitch)

Handle switch connected notification

func (*Vxlan) SwitchDisconnected ¶

func (self *Vxlan) SwitchDisconnected(sw *ofctrl.OFSwitch)

Handle switch disconnected notification

Directories ¶

Path Synopsis
Godeps
_workspace/src/github.com/Sirupsen/logrus
Package logrus is a structured logger for Go, completely API compatible with the standard library logger.
Package logrus is a structured logger for Go, completely API compatible with the standard library logger.
_workspace/src/github.com/cenkalti/hub
Package hub provides a simple event dispatcher for publish/subscribe pattern.
Package hub provides a simple event dispatcher for publish/subscribe pattern.
_workspace/src/github.com/cenkalti/rpc2
Package rpc2 provides bi-directional RPC client and server similar to net/rpc.
Package rpc2 provides bi-directional RPC client and server similar to net/rpc.
_workspace/src/github.com/cenkalti/rpc2/jsonrpc
Package jsonrpc implements a JSON-RPC ClientCodec and ServerCodec for the rpc2 package.
Package jsonrpc implements a JSON-RPC ClientCodec and ServerCodec for the rpc2 package.
_workspace/src/github.com/golang/protobuf/proto
Package proto converts data structures to and from the wire format of protocol buffers.
Package proto converts data structures to and from the wire format of protocol buffers.
_workspace/src/github.com/golang/protobuf/proto/proto3_proto
Package proto3_proto is a generated protocol buffer package.
Package proto3_proto is a generated protocol buffer package.
_workspace/src/github.com/google/gopacket
Package gopacket provides packet decoding for the Go language.
Package gopacket provides packet decoding for the Go language.
_workspace/src/github.com/google/gopacket/afpacket
Package afpacket provides Go bindings for MMap'd AF_PACKET socket reading.
Package afpacket provides Go bindings for MMap'd AF_PACKET socket reading.
_workspace/src/github.com/google/gopacket/bytediff
Package bytediff provides a simple diff utility for looking at differences in byte slices.
Package bytediff provides a simple diff utility for looking at differences in byte slices.
_workspace/src/github.com/google/gopacket/dumpcommand
Package dumpcommand implements a run function for pfdump and pcapdump with many similar flags/features to tcpdump.
Package dumpcommand implements a run function for pfdump and pcapdump with many similar flags/features to tcpdump.
_workspace/src/github.com/google/gopacket/examples/arpscan
arpscan implements ARP scanning of all interfaces' local networks using gopacket and its subpackages.
arpscan implements ARP scanning of all interfaces' local networks using gopacket and its subpackages.
_workspace/src/github.com/google/gopacket/examples/bidirectional
This binary provides an example of connecting up bidirectional streams from the unidirectional streams provided by gopacket/tcpassembly.
This binary provides an example of connecting up bidirectional streams from the unidirectional streams provided by gopacket/tcpassembly.
_workspace/src/github.com/google/gopacket/examples/bytediff
This binary shows how to display byte differences to users via the bytediff library.
This binary shows how to display byte differences to users via the bytediff library.
_workspace/src/github.com/google/gopacket/examples/httpassembly
This binary provides sample code for using the gopacket TCP assembler and TCP stream reader.
This binary provides sample code for using the gopacket TCP assembler and TCP stream reader.
_workspace/src/github.com/google/gopacket/examples/pcapdump
The pcapdump binary implements a tcpdump-like command line tool with gopacket using pcap as a backend data collection mechanism.
The pcapdump binary implements a tcpdump-like command line tool with gopacket using pcap as a backend data collection mechanism.
_workspace/src/github.com/google/gopacket/examples/pfdump
The pfdump binary implements a tcpdump-like command line tool with gopacket using pfring as a backend data collection mechanism.
The pfdump binary implements a tcpdump-like command line tool with gopacket using pfring as a backend data collection mechanism.
_workspace/src/github.com/google/gopacket/examples/statsassembly
This binary provides sample code for using the gopacket TCP assembler raw, without the help of the tcpreader library.
This binary provides sample code for using the gopacket TCP assembler raw, without the help of the tcpreader library.
_workspace/src/github.com/google/gopacket/examples/synscan
synscan implements a TCP syn scanner on top of pcap.
synscan implements a TCP syn scanner on top of pcap.
_workspace/src/github.com/google/gopacket/examples/util
Package util provides shared utilities for all gopacket examples.
Package util provides shared utilities for all gopacket examples.
_workspace/src/github.com/google/gopacket/ip4defrag
Package ip4defrag implements a IPv4 defragmenter
Package ip4defrag implements a IPv4 defragmenter
_workspace/src/github.com/google/gopacket/layers
Package layers provides decoding layers for many common protocols.
Package layers provides decoding layers for many common protocols.
_workspace/src/github.com/google/gopacket/macs
Package macs provides an in-memory mapping of all valid Ethernet MAC address prefixes to their associated organization.
Package macs provides an in-memory mapping of all valid Ethernet MAC address prefixes to their associated organization.
_workspace/src/github.com/google/gopacket/pcap
Package pcap allows users of gopacket to read packets off the wire or from pcap files.
Package pcap allows users of gopacket to read packets off the wire or from pcap files.
_workspace/src/github.com/google/gopacket/pcap/gopacket_benchmark
This benchmark reads in file <tempdir>/gopacket_benchmark.pcap and measures the time it takes to decode all packets from that file.
This benchmark reads in file <tempdir>/gopacket_benchmark.pcap and measures the time it takes to decode all packets from that file.
_workspace/src/github.com/google/gopacket/pcapgo
Package pcapgo provides some native PCAP support, not requiring C libpcap to be installed.
Package pcapgo provides some native PCAP support, not requiring C libpcap to be installed.
_workspace/src/github.com/google/gopacket/pfring
Package pfring wraps the PF_RING C library for Go.
Package pfring wraps the PF_RING C library for Go.
_workspace/src/github.com/google/gopacket/routing
Package routing provides a very basic but mostly functional implementation of a routing table for IPv4/IPv6 addresses.
Package routing provides a very basic but mostly functional implementation of a routing table for IPv4/IPv6 addresses.
_workspace/src/github.com/google/gopacket/tcpassembly
Package tcpassembly provides TCP stream re-assembly.
Package tcpassembly provides TCP stream re-assembly.
_workspace/src/github.com/google/gopacket/tcpassembly/tcpreader
Package tcpreader provides an implementation for tcpassembly.Stream which presents the caller with an io.Reader for easy processing.
Package tcpreader provides an implementation for tcpassembly.Stream which presents the caller with an io.Reader for easy processing.
_workspace/src/github.com/jainvipin/bitset
Package bitset implements bitsets, a mapping between non-negative integers and boolean values.
Package bitset implements bitsets, a mapping between non-negative integers and boolean values.
_workspace/src/github.com/osrg/gobgp/api
Package gobgpapi is a generated protocol buffer package.
Package gobgpapi is a generated protocol buffer package.
_workspace/src/github.com/vishvananda/netlink
Package netlink provides a simple library for netlink.
Package netlink provides a simple library for netlink.
_workspace/src/github.com/vishvananda/netlink/nl
Package nl has low level primitives for making Netlink calls.
Package nl has low level primitives for making Netlink calls.
_workspace/src/golang.org/x/net/context
Package context defines the Context type, which carries deadlines, cancelation signals, and other request-scoped values across API boundaries and between processes.
Package context defines the Context type, which carries deadlines, cancelation signals, and other request-scoped values across API boundaries and between processes.
_workspace/src/golang.org/x/net/context/ctxhttp
Package ctxhttp provides helper functions for performing context-aware HTTP requests.
Package ctxhttp provides helper functions for performing context-aware HTTP requests.
_workspace/src/golang.org/x/net/http2
Package http2 implements the HTTP/2 protocol.
Package http2 implements the HTTP/2 protocol.
_workspace/src/golang.org/x/net/http2/h2i
The h2i command is an interactive HTTP/2 console.
The h2i command is an interactive HTTP/2 console.
_workspace/src/golang.org/x/net/http2/hpack
Package hpack implements HPACK, a compression format for efficiently representing HTTP header fields in the context of HTTP/2.
Package hpack implements HPACK, a compression format for efficiently representing HTTP header fields in the context of HTTP/2.
_workspace/src/golang.org/x/net/internal/timeseries
Package timeseries implements a time series structure for stats collection.
Package timeseries implements a time series structure for stats collection.
_workspace/src/golang.org/x/net/trace
Package trace implements tracing of requests and long-lived objects.
Package trace implements tracing of requests and long-lived objects.
_workspace/src/golang.org/x/sys/unix
Package unix contains an interface to the low-level operating system primitives.
Package unix contains an interface to the low-level operating system primitives.
_workspace/src/google.golang.org/grpc
Package grpc implements an RPC system called gRPC.
Package grpc implements an RPC system called gRPC.
_workspace/src/google.golang.org/grpc/benchmark
Package benchmark implements the building blocks to setup end-to-end gRPC benchmarks.
Package benchmark implements the building blocks to setup end-to-end gRPC benchmarks.
_workspace/src/google.golang.org/grpc/benchmark/grpc_testing
Package grpc_testing is a generated protocol buffer package.
Package grpc_testing is a generated protocol buffer package.
_workspace/src/google.golang.org/grpc/codes
Package codes defines the canonical error codes used by gRPC.
Package codes defines the canonical error codes used by gRPC.
_workspace/src/google.golang.org/grpc/credentials
Package credentials implements various credentials supported by gRPC library, which encapsulate all the state needed by a client to authenticate with a server and make various assertions, e.g., about the client's identity, role, or whether it is authorized to make a particular call.
Package credentials implements various credentials supported by gRPC library, which encapsulate all the state needed by a client to authenticate with a server and make various assertions, e.g., about the client's identity, role, or whether it is authorized to make a particular call.
_workspace/src/google.golang.org/grpc/credentials/oauth
Package oauth implements gRPC credentials using OAuth.
Package oauth implements gRPC credentials using OAuth.
_workspace/src/google.golang.org/grpc/examples/helloworld/helloworld
Package helloworld is a generated protocol buffer package.
Package helloworld is a generated protocol buffer package.
_workspace/src/google.golang.org/grpc/examples/route_guide/client
Package main implements a simple gRPC client that demonstrates how to use gRPC-Go libraries to perform unary, client streaming, server streaming and full duplex RPCs.
Package main implements a simple gRPC client that demonstrates how to use gRPC-Go libraries to perform unary, client streaming, server streaming and full duplex RPCs.
_workspace/src/google.golang.org/grpc/examples/route_guide/routeguide
Package routeguide is a generated protocol buffer package.
Package routeguide is a generated protocol buffer package.
_workspace/src/google.golang.org/grpc/examples/route_guide/server
Package main implements a simple gRPC server that demonstrates how to use gRPC-Go libraries to perform unary, client streaming, server streaming and full duplex RPCs.
Package main implements a simple gRPC server that demonstrates how to use gRPC-Go libraries to perform unary, client streaming, server streaming and full duplex RPCs.
_workspace/src/google.golang.org/grpc/grpclog
Package grpclog defines logging for grpc.
Package grpclog defines logging for grpc.
_workspace/src/google.golang.org/grpc/grpclog/glogger
Package glogger defines glog-based logging for grpc.
Package glogger defines glog-based logging for grpc.
_workspace/src/google.golang.org/grpc/health
Package health provides some utility functions to health-check a server.
Package health provides some utility functions to health-check a server.
_workspace/src/google.golang.org/grpc/health/grpc_health_v1alpha
Package grpc_health_v1alpha is a generated protocol buffer package.
Package grpc_health_v1alpha is a generated protocol buffer package.
_workspace/src/google.golang.org/grpc/interop/grpc_testing
Package grpc_testing is a generated protocol buffer package.
Package grpc_testing is a generated protocol buffer package.
_workspace/src/google.golang.org/grpc/metadata
Package metadata define the structure of the metadata supported by gRPC library.
Package metadata define the structure of the metadata supported by gRPC library.
_workspace/src/google.golang.org/grpc/naming
Package naming defines the naming API and related data structures for gRPC.
Package naming defines the naming API and related data structures for gRPC.
_workspace/src/google.golang.org/grpc/test/codec_perf
Package codec_perf is a generated protocol buffer package.
Package codec_perf is a generated protocol buffer package.
_workspace/src/google.golang.org/grpc/test/grpc_testing
Package grpc_testing is a generated protocol buffer package.
Package grpc_testing is a generated protocol buffer package.
_workspace/src/google.golang.org/grpc/transport
Package transport defines and implements message oriented communication channel to complete various transactions (e.g., an RPC).
Package transport defines and implements message oriented communication channel to complete various transactions (e.g., an RPC).
_workspace/src/gopkg.in/tomb.v2
The tomb package handles clean goroutine tracking and termination.
The tomb package handles clean goroutine tracking and termination.
** Copyright 2014 Cisco Systems Inc.
** Copyright 2014 Cisco Systems Inc.
** Copyright 2014 Cisco Systems Inc.
** Copyright 2014 Cisco Systems Inc.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL