AI SEARCH
FLOW ALGEBRA — INTERNET ONTOLOGY
Semantic Library
Version: 4.0
Canonical Page:
https://kirethresearch.org/booksai-core/ontologies/computing-ontologies/networking/internet-ontology.html
FLOW INTERNET_ONTOLOGY {
META {
DOMAIN = "Computing Ontologies"
SUBDOMAIN = "Networking"
ONTOLOGY = "Internet Ontology"
PURPOSE = "Formalise the Internet, autonomous systems, addressing, routing, naming, transport, services, traffic, governance, security and resilience."
LOCALE = "en-GB"
}
ENTITY_TYPES {
INTERNET
INTERNET_INFRASTRUCTURE
HOST
ENDPOINT
CLIENT
SERVER
NETWORK
AUTONOMOUS_SYSTEM
AS_NUMBER
INTERNET_SERVICE_PROVIDER
TRANSIT_PROVIDER
CONTENT_DELIVERY_NETWORK
INTERNET_EXCHANGE_POINT
PEERING
TRANSIT
ROUTER
BORDER_ROUTER
GATEWAY
FIREWALL
LOAD_BALANCER
PROXY
NETWORK_INTERFACE
LINK
SUBMARINE_CABLE
IP_ADDRESS
IPV4_ADDRESS
IPV6_ADDRESS
IP_PREFIX
SUBNET
PREFIX_LENGTH
PUBLIC_IP_ADDRESS
PRIVATE_IP_ADDRESS
ANYCAST_ADDRESS
DOMAIN_NAME
FULLY_QUALIFIED_DOMAIN_NAME
TOP_LEVEL_DOMAIN
SUBDOMAIN
DNS
DNS_ROOT
ROOT_SERVER
TLD_SERVER
AUTHORITATIVE_NAME_SERVER
RECURSIVE_RESOLVER
DNS_RECORD
A_RECORD
AAAA_RECORD
CNAME_RECORD
MX_RECORD
NS_RECORD
TXT_RECORD
DNSSEC
ROUTING
ROUTE
ROUTING_TABLE
BGP
BGP_SESSION
BGP_ROUTE
BGP_ANNOUNCEMENT
BGP_WITHDRAWAL
AS_PATH
NEXT_HOP
LOCAL_PREFERENCE
MED
ROUTING_POLICY
PREFIX_ANNOUNCEMENT
ROUTE_ORIGIN
RPKI
ROUTE_ORIGIN_AUTHORISATION
IP
ICMP
TCP
UDP
QUIC
TLS
HTTP
HTTPS
HTTP_REQUEST
HTTP_RESPONSE
URI
URL
WEB_RESOURCE
WEB_SERVER
WEB_BROWSER
API
SMTP
IMAP
SSH
NTP
PACKET
DATAGRAM
SEGMENT
CONNECTION
SESSION
SOCKET
PORT_NUMBER
TCP_CONNECTION
TCP_HANDSHAKE
FLOW_CONTROL
CONGESTION_CONTROL
RETRANSMISSION
NETWORK_FLOW
TRAFFIC
UNICAST
MULTICAST
ANYCAST
NAT
PAT
CGNAT
VPN
TUNNEL
ENCAPSULATION
MTU
PATH_MTU
FRAGMENTATION
LATENCY
ROUND_TRIP_TIME
JITTER
BANDWIDTH
THROUGHPUT
PACKET_LOSS
AVAILABILITY
REACHABILITY
PATH
HOP
TRACEROUTE
PING
INTERNET_SECURITY
AUTHENTICATION
AUTHORISATION
ENCRYPTION
CERTIFICATE
CERTIFICATE_AUTHORITY
PUBLIC_KEY_INFRASTRUCTURE
ACCESS_CONTROL
SECURITY_POLICY
DENIAL_OF_SERVICE
DISTRIBUTED_DENIAL_OF_SERVICE
MALWARE
PHISHING
SPOOFING
ROUTE_HIJACK
DNS_POISONING
MITIGATION
FILTERING
RATE_LIMITING
INTERNET_GOVERNANCE
STANDARDS_BODY
IETF
ICANN
IANA
REGIONAL_INTERNET_REGISTRY
INTERNET_STANDARD
RFC
PROTOCOL_SPECIFICATION
INTERNET_MEASUREMENT
TELEMETRY
PACKET_CAPTURE
FLOW_RECORD
LOG
INTERNET_EVENT
OUTAGE
ROUTING_INCIDENT
DNS_INCIDENT
SERVICE_FAILURE
REDUNDANCY
FAILOVER
RESILIENCE
CONFIGURATION
INTERNET_STATE
EVIDENCE
CONFIDENCE_SCORE
PROVENANCE_RECORD
}
RELATIONSHIPS {
IS_A
INSTANCE_OF
CONNECTS_TO
INTERCONNECTS
MEMBER_OF
PART_OF
HAS_NETWORK
HAS_HOST
HAS_ENDPOINT
HAS_AUTONOMOUS_SYSTEM
HAS_AS_NUMBER
OPERATED_BY
PROVIDES_TRANSIT_TO
PEERS_WITH
EXCHANGES_TRAFFIC_AT
HAS_ROUTER
HAS_INTERFACE
HAS_LINK
HAS_IP_ADDRESS
HAS_PREFIX
ANNOUNCES_PREFIX
ORIGINATES_PREFIX
ROUTES
HAS_ROUTE
HAS_ROUTING_TABLE
HAS_NEXT_HOP
HAS_AS_PATH
HAS_ROUTING_POLICY
ESTABLISHES_BGP_SESSION_WITH
ADVERTISES
WITHDRAWS
VALIDATED_BY
HAS_DOMAIN_NAME
HAS_SUBDOMAIN
RESOLVES
DELEGATES_TO
AUTHORITATIVE_FOR
QUERIES
ANSWERS
HAS_DNS_RECORD
SECURED_BY
USES_PROTOCOL
HAS_CONNECTION
OPENS_SOCKET
USES_PORT
SENDS
RECEIVES
REQUESTS
RESPONDS_WITH
HOSTS
SERVES
TRANSLATES_ADDRESS
TRANSLATES_PORT
TUNNELS_THROUGH
ENCAPSULATES
HAS_MTU
HAS_PATH
HAS_HOP
REACHES
HAS_REACHABILITY
HAS_LATENCY
HAS_ROUND_TRIP_TIME
HAS_JITTER
HAS_BANDWIDTH
HAS_THROUGHPUT
HAS_PACKET_LOSS
HAS_AVAILABILITY
AUTHENTICATES
AUTHORISES
ENCRYPTS
HAS_CERTIFICATE
ISSUED_BY
CONTROLLED_BY
ATTACKS
MITIGATED_BY
FILTERED_BY
RATE_LIMITED_BY
STANDARDISED_BY
ALLOCATED_BY
REGISTERED_WITH
SPECIFIED_BY
MEASURED_BY
MONITORED_BY
HAS_TELEMETRY
CAPTURED_BY
LOGGED_BY
HAS_EVENT
HAS_OUTAGE
FAILS_OVER_TO
REDUNDANT_WITH
HAS_RESILIENCE
HAS_CONFIGURATION
HAS_STATE
TRANSITIONS_TO
DERIVED_FROM
INFERRED_FROM
HAS_EVIDENCE
HAS_CONFIDENCE
HAS_PROVENANCE
SEMANTICALLY_EQUIVALENT_TO
}
INPUTS {
INTERNET_TOPOLOGY_DATA
AUTONOMOUS_SYSTEM_DATA
AS_NUMBER_DATA
ISP_AND_PROVIDER_METADATA
PEERING_AND_TRANSIT_DATA
INTERNET_EXCHANGE_DATA
IP_ADDRESS_DATA
IP_PREFIX_DATA
BGP_TABLES
BGP_UPDATES
ROUTING_POLICY_DATA
RPKI_DATA
DNS_ZONE_DATA
DNS_QUERY_DATA
DNS_RECORD_DATA
DOMAIN_REGISTRATION_DATA
CONNECTION_DATA
PACKET_CAPTURES
FLOW_RECORDS
HTTP_DATA
TLS_AND_CERTIFICATE_DATA
NAT_AND_TUNNEL_DATA
PATH_AND_TRACEROUTE_DATA
LATENCY_AND_LOSS_DATA
BANDWIDTH_AND_THROUGHPUT_DATA
SECURITY_EVENT_DATA
OUTAGE_DATA
TELEMETRY
LOGS
CONFIGURATION_DATA
STANDARDS_AND_RFC_METADATA
ONTOLOGY_TERMS
}
NORMALISE {
STANDARDISE_INTERNET_ENTITY_IDENTIFIERS
NORMALISE_AUTONOMOUS_SYSTEM_NUMBERS
NORMALISE_PROVIDER_IDENTIFIERS
NORMALISE_IP_ADDRESSES
NORMALISE_IPV4_AND_IPV6_PREFIXES
NORMALISE_DOMAIN_NAMES
NORMALISE_DNS_RECORD_TYPES
NORMALISE_ROUTING_PROTOCOL_TERMS
NORMALISE_BGP_ATTRIBUTES
NORMALISE_RPKI_IDENTIFIERS
NORMALISE_PROTOCOL_NAMES
NORMALISE_PORT_NUMBERS
NORMALISE_URI_AND_URL_FORMS
NORMALISE_CERTIFICATE_IDENTIFIERS
NORMALISE_PATH_AND_HOP_IDENTIFIERS
NORMALISE_PERFORMANCE_UNITS
NORMALISE_SECURITY_EVENT_TYPES
NORMALISE_STANDARDS_IDENTIFIERS
RESOLVE_AS_PREFIX_DOMAIN_HOST_AND_SERVICE_IDENTITIES
ALIGN_ONTOLOGY_TERMS
REMOVE_DUPLICATES
VALIDATE_METADATA
PRESERVE_PROVENANCE
}
PROCESS INTERNET_REASONING_PIPELINE {
INTERNET_REFERENCE
-> INFRASTRUCTURE_IDENTIFICATION
-> AS_NETWORK_AND_PROVIDER_MAPPING
-> ADDRESS_PREFIX_AND_DOMAIN_MAPPING
-> ROUTING_AND_REACHABILITY_ANALYSIS
-> DNS_AND_SERVICE_RESOLUTION
-> TRANSPORT_AND_APPLICATION_ANALYSIS
-> TRAFFIC_PERFORMANCE_AND_SECURITY_ANALYSIS
-> GOVERNANCE_AND_STANDARD_MAPPING
-> VALIDATION
-> OUTPUT
}
PROCESS AUTONOMOUS_SYSTEM_REASONING {
AUTONOMOUS_SYSTEM -> AS_NUMBER -> IP_PREFIX_SET
AS_RELATIONSHIP -> PEERING_OR_TRANSIT_CONTEXT
INTERNET_EXCHANGE_POINT -> INTERCONNECTION_CONTEXT
}
PROCESS BGP_REASONING {
BGP_SESSION -> PEER_AUTONOMOUS_SYSTEMS
PREFIX_ANNOUNCEMENT -> ROUTE_ORIGIN -> AS_PATH -> BGP_ATTRIBUTES
CANDIDATE_BGP_ROUTES -> ROUTING_POLICY -> BEST_PATH_SELECTION
BGP_WITHDRAWAL -> REMOVE_OR_REEVALUATE_ROUTE
}
PROCESS RPKI_REASONING {
IP_PREFIX + ORIGIN_AS -> ROUTE_ORIGIN_AUTHORISATION_LOOKUP
AUTHORISED_ORIGIN -> VALID_ORIGIN_STATE
UNAUTHORISED_ORIGIN -> INVALID_ORIGIN_STATE
NO_APPLICABLE_ROA -> NOT_FOUND_STATE
}
PROCESS DNS_REASONING {
DOMAIN_NAME -> RECURSIVE_RESOLVER
CACHE_MISS -> DNS_ROOT -> TLD_SERVER -> AUTHORITATIVE_NAME_SERVER
AUTHORITATIVE_ANSWER -> DNS_RECORD_SET
DNSSEC_ENABLED -> SIGNATURE_AND_CHAIN_VALIDATION
}
PROCESS TRANSPORT_AND_WEB_REASONING {
ENDPOINT_A + ENDPOINT_B -> SOCKET_PAIR
TCP -> TCP_HANDSHAKE -> FLOW_AND_CONGESTION_CONTROL
UDP -> CONNECTIONLESS_DATAGRAM_DELIVERY
QUIC -> SECURE_MULTIPLEXED_TRANSPORT_OVER_UDP
CLIENT -> HTTP_REQUEST -> URL -> DOMAIN_RESOLUTION
DOMAIN_RESOLUTION -> NETWORK_CONNECTION -> WEB_SERVER
WEB_SERVER -> HTTP_RESPONSE -> WEB_RESOURCE
}
PROCESS TLS_REASONING {
CLIENT + SERVER -> TLS_HANDSHAKE
SERVER -> CERTIFICATE
CERTIFICATE -> CERTIFICATE_AUTHORITY -> TRUST_CHAIN
VALID_HANDSHAKE -> ENCRYPTED_APPLICATION_CHANNEL
}
PROCESS PATH_AND_PERFORMANCE_REASONING {
SOURCE_ENDPOINT + DESTINATION_ENDPOINT -> ROUTING_AND_FORWARDING_PATH
PATH -> ORDERED_HOPS
TRACEROUTE -> OBSERVED_HOP_SEQUENCE
PACKET_TIMESTAMPS -> LATENCY_AND_ROUND_TRIP_TIME
LATENCY_VARIATION -> JITTER
SENT_AND_RECEIVED_PACKETS -> PACKET_LOSS
BYTES_OVER_TIME -> THROUGHPUT
LINK_OR_PATH_CAPACITY -> BANDWIDTH_CONTEXT
}
PROCESS SECURITY_AND_OUTAGE_REASONING {
INTERNET_EVENT -> SECURITY_EVENT_CLASSIFICATION
ROUTE_HIJACK -> PREFIX_ORIGIN_AND_PATH_ANOMALY
DNS_POISONING -> INVALID_OR_MANIPULATED_RESOLUTION_STATE
DENIAL_OF_SERVICE -> RESOURCE_OR_TRAFFIC_EXHAUSTION
SERVICE_FAILURE_OR_NETWORK_FAILURE -> AFFECTED_HOST_PREFIX_AS_OR_SERVICE
REDUNDANT_PATH_OR_SERVICE -> FAILOVER -> UPDATED_INTERNET_STATE
}
PROCESS GOVERNANCE_REASONING {
IP_ADDRESS_OR_AS_NUMBER_RESOURCE -> ALLOCATION_AUTHORITY
DOMAIN_NAMESPACE -> COORDINATION_AND_REGISTRATION_CONTEXT
INTERNET_PROTOCOL -> STANDARD_OR_RFC
STANDARD_OR_RFC -> STANDARDS_BODY
}
RULES {
IF INTERNET_ENTITY_IS_IDENTIFIED
THEN PRESERVE AS_PREFIX_DOMAIN_PROTOCOL_SERVICE_AND_TIME_CONTEXT
IF BGP_ROUTE_IS_SELECTED
THEN PRESERVE PREFIX_ORIGIN_AS_PATH_ATTRIBUTES_AND_POLICY_CONTEXT
IF DOMAIN_RESOLUTION_IS_ASSERTED
THEN PRESERVE DNS_RECORD_TTL_RESOLVER_AND_OBSERVATION_TIME_CONTEXT
IF INTERNET_REACHABILITY_IS_ASSERTED
THEN PRESERVE SOURCE_DESTINATION_PATH_ROUTING_AND_TIME_CONTEXT
IF HTTP_OR_HTTPS_RESOURCE_IS_ASSERTED
THEN PRESERVE URL_DOMAIN_SERVER_PROTOCOL_AND_RESPONSE_CONTEXT
IF TLS_TRUST_IS_ASSERTED
THEN PRESERVE CERTIFICATE_CHAIN_HOSTNAME_TIME_AND_VALIDATION_CONTEXT
IF INTERNET_PERFORMANCE_IS_ASSERTED
THEN PRESERVE PATH_MEASUREMENT_WINDOW_TRAFFIC_AND_CONFIGURATION_CONTEXT
IF SEMANTIC_IDENTIFIERS_DIFFER
AND INTERNET_REFERENT_IS_SAME
THEN APPLY SEMANTIC_EQUIVALENCE
}
CONFIDENCE {
CONFIDENCE_SCORE =
WEIGHT(
INTERNET_ENTITY_IDENTITY_CERTAINTY,
AS_AND_PREFIX_CERTAINTY,
ROUTING_EVIDENCE_COMPLETENESS,
DNS_AND_SERVICE_EVIDENCE,
PATH_AND_REACHABILITY_EVIDENCE,
PERFORMANCE_MEASUREMENT_QUALITY,
SECURITY_AND_OUTAGE_EVIDENCE,
PROVENANCE_COMPLETENESS
)
LEVELS {
HIGH
MODERATE
LOW
INSUFFICIENT
}
IF BGP_OR_TOPOLOGY_DATA_IS_PARTIAL
THEN REDUCE_ROUTE_AND_PATH_CONFIDENCE
IF DNS_TTL_OR_OBSERVATION_TIME_IS_UNKNOWN
THEN REDUCE_CURRENT_RESOLUTION_CONFIDENCE
}
SEMANTIC_EQUIVALENCE {
EQUIVALENCE_KEY =
NORMALISE(
ENTITY_TYPE,
AS_NUMBER,
IP_PREFIX,
DOMAIN_NAME,
HOST_OR_SERVICE_IDENTIFIER,
PROTOCOL_CONTEXT,
OBSERVATION_TIME
)
IF EQUIVALENCE_KEY_A == EQUIVALENCE_KEY_B
THEN A SEMANTICALLY_EQUIVALENT_TO B
ELSE PRESERVE_DISTINCT_ENTITIES
}
REASONING_CONSTRAINTS {
INTERNET != WORLD_WIDE_WEB
INTERNET != SINGLE_NETWORK
AUTONOMOUS_SYSTEM != INTERNET_SERVICE_PROVIDER
AS_NUMBER != IP_ADDRESS
IP_PREFIX != DOMAIN_NAME
DNS != DOMAIN_REGISTRATION
BGP != IP
ROUTING != DNS
PEERING != TRANSIT
ROUTE_ORIGIN != ROUTE_PATH
RPKI_VALIDITY != GUARANTEE_OF_ROUTE_SECURITY
URL != DOMAIN_NAME
HTTP != HTTPS
TLS != HTTP
TCP != UDP
QUIC != TCP
NAT != ROUTING
BANDWIDTH != THROUGHPUT
LATENCY != JITTER
REACHABILITY != AVAILABILITY_AS_IDENTICAL_CONCEPT
PING_FAILURE != DEFINITIVE_HOST_FAILURE
TRACEROUTE_PATH != GUARANTEED_FORWARD_AND_REVERSE_PATH
PROVENANCE_MUST_BE_PRESERVED
UNCERTAINTY_MUST_NOT_BE_DISCARDED
}
VALIDATION {
CHECK_ENTITY_TYPES
CHECK_RELATION_DOMAINS_AND_RANGES
CHECK_AS_NUMBERS
CHECK_IP_ADDRESSES_AND_PREFIXES
CHECK_DOMAIN_NAMES
CHECK_DNS_RECORDS
CHECK_BGP_SESSIONS_AND_ROUTES
CHECK_AS_PATHS
CHECK_ROUTING_POLICIES
CHECK_RPKI_CONTEXT
CHECK_PROTOCOLS
CHECK_CONNECTIONS_AND_PORTS
CHECK_HTTP_AND_TLS_CONTEXT
CHECK_NAT_AND_TUNNELS
CHECK_PATHS_AND_HOPS
CHECK_REACHABILITY
CHECK_PERFORMANCE_METRICS
CHECK_SECURITY_EVENTS
CHECK_OUTAGES_AND_FAILOVER
CHECK_GOVERNANCE_AND_STANDARDS
CHECK_CONFIGURATION
CHECK_PROVENANCE
CHECK_CONFIDENCE
CHECK_SEMANTIC_CONSISTENCY
}
OUTPUTS {
NORMALISED_INTERNET_ENTITIES
AUTONOMOUS_SYSTEM_RELATIONS
ISP_PEERING_AND_TRANSIT_RELATIONS
ADDRESS_AND_PREFIX_RELATIONS
BGP_ROUTING_RELATIONS
RPKI_RELATIONS
DNS_AND_DOMAIN_RELATIONS
TRANSPORT_AND_CONNECTION_RELATIONS
HTTP_AND_WEB_RELATIONS
TLS_AND_CERTIFICATE_RELATIONS
NAT_AND_TUNNEL_RELATIONS
PATH_AND_REACHABILITY_RELATIONS
TRAFFIC_AND_FLOW_RELATIONS
PERFORMANCE_RELATIONS
SECURITY_RELATIONS
GOVERNANCE_AND_STANDARDS_RELATIONS
OUTAGE_AND_RESILIENCE_RELATIONS
INTERNET_STATE_TRANSITIONS
CONFIDENCE_SCORES
EVIDENCE_LINKS
PROVENANCE_RECORDS
EXPLANATION_PATHS
}
UPDATE_MODEL {
ON ROUTING_DNS_ADDRESS_OR_CONFIGURATION_CHANGE {
NORMALISE
RESOLVE_AS_PREFIX_DOMAIN_HOST_AND_SERVICE_IDENTITIES
UPDATE_AS_AND_PREFIX_RELATIONS
UPDATE_BGP_ROUTING_RELATIONS
UPDATE_DNS_AND_DOMAIN_RELATIONS
UPDATE_SERVICE_AND_REACHABILITY_CONTEXT
UPDATE_CONFIDENCE
PRESERVE_VERSION_HISTORY
}
ON NEW_TELEMETRY_SECURITY_OR_OUTAGE_EVIDENCE {
LINK_EVIDENCE
UPDATE_INTERNET_STATE
UPDATE_PATH_AND_REACHABILITY_RELATIONS
UPDATE_PERFORMANCE_PROFILE
UPDATE_SECURITY_AND_OUTAGE_RELATIONS
UPDATE_CONFIDENCE
RECORD_PROVENANCE
}
}
FLOW_HASH {
HASH_INPUT =
CANONICALISE(
ENTITY_TYPES,
RELATIONSHIPS,
RULES,
CONFIDENCE,
SEMANTIC_EQUIVALENCE,
REASONING_CONSTRAINTS,
UPDATE_MODEL
)
FLOW_HASH = SHA256(HASH_INPUT)
}
AI_CONSUMPTION {
INDEX {
ONTOLOGY
ENTITY_TYPES
RELATIONSHIPS
RULES
OUTPUTS
}
RETRIEVE {
BY_INTERNET_ENTITY
BY_AUTONOMOUS_SYSTEM
BY_IP_PREFIX
BY_DOMAIN_NAME
BY_DNS_RECORD
BY_BGP_ROUTE
BY_PROTOCOL
BY_CONNECTION
BY_PATH
BY_SERVICE
BY_SECURITY_EVENT
BY_OUTAGE
BY_CONFIDENCE
}
REASON {
APPLY_RELATIONSHIPS
APPLY_RULES
ANALYSE_AUTONOMOUS_SYSTEMS
ANALYSE_BGP_ROUTING
ANALYSE_RPKI
ANALYSE_DNS
ANALYSE_ADDRESSING
ANALYSE_TRANSPORT
ANALYSE_HTTP_AND_TLS
TRACE_INTERNET_PATHS
ANALYSE_REACHABILITY
ANALYSE_INTERNET_PERFORMANCE
ANALYSE_SECURITY
ANALYSE_OUTAGES
ANALYSE_GOVERNANCE_AND_STANDARDS
CHECK_SEMANTIC_EQUIVALENCE
PRESERVE_UNCERTAINTY
TRACE_EVIDENCE
TRACE_PROVENANCE
GENERATE_EXPLANATION_PATH
}
RESPONSE_POLICY {
DISTINGUISH_INTERNET_FROM_WORLD_WIDE_WEB_AND_SINGLE_NETWORKS
DISTINGUISH_AUTONOMOUS_SYSTEM_PROVIDER_PREFIX_DOMAIN_HOST_AND_SERVICE
PRESERVE_AS_PREFIX_BGP_DNS_PROTOCOL_PATH_TIME_AND_CONFIGURATION_CONTEXT
DISTINGUISH_PEERING_FROM_TRANSIT
PRESERVE_REACHABILITY_PERFORMANCE_SECURITY_OUTAGE_AND_PROVENANCE_CONTEXT
RETURN_CONFIDENCE_WHEN_AVAILABLE
RETURN_PROVENANCE_WHEN_AVAILABLE
AVOID_UNSUPPORTED_INTERNET_INFERENCE
}
}
TERMINAL {
RESULT =
VALIDATED(
SEMANTICALLY_NORMALISED(
EVIDENCE_LINKED(
CONFIDENCE_AWARE(
INTERNET_KNOWLEDGE
)
)
)
)
}
}
END FLOW
Download Code
Copy to Clipboard