Skip to content

Instantly share code, notes, and snippets.

@laurenmarietta
Created August 17, 2023 18:50
Show Gist options
  • Save laurenmarietta/e62071ed7153e428577abfcd0a9ca157 to your computer and use it in GitHub Desktop.
Save laurenmarietta/e62071ed7153e428577abfcd0a9ca157 to your computer and use it in GitHub Desktop.
IETF Inclusive Language Study
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "33b79bfb",
"metadata": {},
"source": [
"# Exploring Inclusive Language on IETF Mailing Lists with BigBang\n",
"*August 2023*<br>\n",
"*Center for Democracy and Technology*<br>\n",
"*Lauren Chambers (lauren@ischool.berkeley.edu)*\n",
"\n",
"This notebook is modified from the BigBang package Tutorial: https://github.com/datactive/bigbang/blob/main/examples/Tutorial.ipynb"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "bd72afcf",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n",
"Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n"
]
}
],
"source": [
"# Import necessary packages\n",
"import datetime\n",
"import glob\n",
"import os\n",
"import re\n",
"\n",
"import matplotlib.dates as mdates\n",
"import matplotlib.pyplot as plt\n",
"import nltk\n",
"import numpy as np\n",
"import pandas as pd\n",
"\n",
"# NOTE: Must have manually installed BigBang from source first, see:\n",
"# https://github.com/datactive/bigbang#installation\n",
"import bigbang.archive as archive"
]
},
{
"cell_type": "markdown",
"id": "6eb733ad",
"metadata": {},
"source": [
"# Data ingress\n",
"## Download IETF archives"
]
},
{
"cell_type": "markdown",
"id": "1925d89d",
"metadata": {},
"source": [
"Before you can analyze the IETF data, you must download it. Likely, this will look like specifying a list of IETF mailing lists (like [this one](https://github.com/datactive/bigbang/blob/main/examples/url_collections/mm.ietf.org.txt)) and then running this command in the Terminal:\n",
"\n",
"`bigbang collect-mail --file path/to/ietf_urls.txt`"
]
},
{
"cell_type": "markdown",
"id": "4f0c8118",
"metadata": {},
"source": [
"## Load IETF archives"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "b97c7e09",
"metadata": {},
"outputs": [],
"source": [
"# Get list of filepaths to each mailing list archive\n",
"archive_dir = \"/path/to/ietf/archives\"\n",
"all_ietf_lists = [os.path.basename(d) for d in glob.glob(archive_dir + \"/*\") if \".csv\" not in d]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "d1001ee0",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<bigbang.archive.Archive at 0x146e77350>,\n",
" <bigbang.archive.Archive at 0x1466ece10>,\n",
" <bigbang.archive.Archive at 0x146e53410>,\n",
" <bigbang.archive.Archive at 0x146da9810>,\n",
" <bigbang.archive.Archive at 0x1466eac90>,\n",
" <bigbang.archive.Archive at 0x146eb3e50>,\n",
" <bigbang.archive.Archive at 0x146ee0fd0>,\n",
" <bigbang.archive.Archive at 0x13e1e87d0>,\n",
" <bigbang.archive.Archive at 0x146eb1610>,\n",
" <bigbang.archive.Archive at 0x146eb0d90>,\n",
" <bigbang.archive.Archive at 0x1439841d0>,\n",
" <bigbang.archive.Archive at 0x146de1b90>,\n",
" <bigbang.archive.Archive at 0x143971790>,\n",
" <bigbang.archive.Archive at 0x146ee1910>,\n",
" <bigbang.archive.Archive at 0x146e72bd0>,\n",
" <bigbang.archive.Archive at 0x13a6dced0>,\n",
" <bigbang.archive.Archive at 0x1439726d0>,\n",
" <bigbang.archive.Archive at 0x146edf6d0>,\n",
" <bigbang.archive.Archive at 0x13e1b1690>]"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Create a bigbang.archive.Archive() object for each mailing list\n",
"archives = []\n",
"archive_names = []\n",
"empty_csv = []\n",
"no_mail_files = []\n",
"\n",
"for mailing_list in all_ietf_lists:\n",
" try:\n",
" a = archive.Archive(mailing_list, archive_dir=archive_dir) \n",
" archives.append(a)\n",
" archive_names.append(mailing_list)\n",
" except archive.MissingDataException as e:\n",
" if \"Archive after initial processing is empty\" in str(e):\n",
" empty_csv.append(mailing_list)\n",
" else:\n",
" print(mailing_list)\n",
" raise\n",
" except archive.ArchiveWarning as e:\n",
" if \"The error message is: 'NoneType' object is not subscriptable\" in str(e):\n",
" no_mail_files.append(mailing_list)\n",
" else:\n",
" print(mailing_list)\n",
" raise\n",
" except:\n",
" print(mailing_list)\n",
" raise\n",
" \n",
"archives"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "ddddbf03",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"All archives downloaded: 1179\n",
"Successfully loaded: 19\n",
"Failed to load; emails downloaded incorrectly: 0\n",
"Failed to load; no emails in archive: 1\n"
]
}
],
"source": [
"# See how many worked\n",
"print(\"All archives downloaded:\", len(all_ietf_lists))\n",
"print(\"Successfully loaded:\", len(archives))\n",
"print(\"Failed to load; emails downloaded incorrectly:\", len(empty_csv))\n",
"print(\"Failed to load; no emails in archive:\", len(no_mail_files))"
]
},
{
"cell_type": "markdown",
"id": "8ad3ccd6",
"metadata": {},
"source": [
"# Conduct Word Analysis \n",
"## Count words"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "3b53c6f5",
"metadata": {},
"outputs": [],
"source": [
"def count_word(text, word, exact=False, ignore_reply_quotes=True):\n",
" '''\n",
" exact - `word` must be bordered by spaces or punctuation.\n",
" ignore_reply_quotes - don't process lines that start with '>' (copied text in email replies)\n",
" '''\n",
" if not text:\n",
" return 0\n",
" \n",
" if isinstance(text, float) and np.isnan(text):\n",
" return 0\n",
" \n",
" if ignore_reply_quotes:\n",
" text = re.sub(\"\\\\n>.*?(?=\\\\n|$)\", '', \n",
" text)\n",
" \n",
" # For a single word\n",
" if exact and len(word.split(\" \")) <= 1:\n",
" ## normalize the text - remove apostrophe and punctuation, lower case\n",
" normalized_text = re.sub(r'[^\\w]', ' ',text.replace(\"'\",\"\")).lower()\n",
" \n",
" # tokenize the text - split it into a list along word/phrase boundaries\n",
" tokenized_text = nltk.tokenize.word_tokenize(normalized_text)\n",
" \n",
" if exact:\n",
" return tokenized_text.count(word)\n",
" \n",
" # For a phrase\n",
" else:\n",
" return text.lower().count(word)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "f4b1b4e4",
"metadata": {},
"outputs": [],
"source": [
"# Define words to count\n",
"checkwords = [\"whitelist\", \"blacklist\", \"slave\", \"master\"]"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "e7666171",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 91all\n",
"1 sframe\n",
"2 babel\n",
"3 lsd\n",
"4 6band\n",
"5 yot\n",
"6 oam\n",
"7 82attendees\n",
"8 iola-wgcharter-tool\n",
"9 103all\n",
"10 secdir\n",
"11 mipshop\n",
"12 80attendees\n",
"13 pidloc\n",
"14 earlywarning\n",
"15 cnrp\n",
"16 6lowapp\n",
"17 107attendees\n",
"18 78attendees\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>91all whitelist</th>\n",
" <th>91all blacklist</th>\n",
" <th>91all slave</th>\n",
" <th>91all master</th>\n",
" <th>sframe whitelist</th>\n",
" <th>sframe blacklist</th>\n",
" <th>sframe slave</th>\n",
" <th>sframe master</th>\n",
" <th>babel whitelist</th>\n",
" <th>babel blacklist</th>\n",
" <th>...</th>\n",
" <th>6lowapp slave</th>\n",
" <th>6lowapp master</th>\n",
" <th>107attendees whitelist</th>\n",
" <th>107attendees blacklist</th>\n",
" <th>107attendees slave</th>\n",
" <th>107attendees master</th>\n",
" <th>78attendees whitelist</th>\n",
" <th>78attendees blacklist</th>\n",
" <th>78attendees slave</th>\n",
" <th>78attendees master</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1999-10-12</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1999-10-14</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1999-10-18</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1999-10-20</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1999-11-01</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2022-04-08</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2022-04-10</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2022-04-11</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2022-04-14</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2022-04-15</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>4731 rows × 76 columns</p>\n",
"</div>"
],
"text/plain": [
" 91all whitelist 91all blacklist 91all slave 91all master \\\n",
"Date \n",
"1999-10-12 NaN NaN NaN NaN \n",
"1999-10-14 NaN NaN NaN NaN \n",
"1999-10-18 NaN NaN NaN NaN \n",
"1999-10-20 NaN NaN NaN NaN \n",
"1999-11-01 NaN NaN NaN NaN \n",
"... ... ... ... ... \n",
"2022-04-08 NaN NaN NaN NaN \n",
"2022-04-10 NaN NaN NaN NaN \n",
"2022-04-11 NaN NaN NaN NaN \n",
"2022-04-14 NaN NaN NaN NaN \n",
"2022-04-15 NaN NaN NaN NaN \n",
"\n",
" sframe whitelist sframe blacklist sframe slave sframe master \\\n",
"Date \n",
"1999-10-12 NaN NaN NaN NaN \n",
"1999-10-14 NaN NaN NaN NaN \n",
"1999-10-18 NaN NaN NaN NaN \n",
"1999-10-20 NaN NaN NaN NaN \n",
"1999-11-01 NaN NaN NaN NaN \n",
"... ... ... ... ... \n",
"2022-04-08 NaN NaN NaN NaN \n",
"2022-04-10 NaN NaN NaN NaN \n",
"2022-04-11 NaN NaN NaN NaN \n",
"2022-04-14 NaN NaN NaN NaN \n",
"2022-04-15 NaN NaN NaN NaN \n",
"\n",
" babel whitelist babel blacklist ... 6lowapp slave \\\n",
"Date ... \n",
"1999-10-12 NaN NaN ... NaN \n",
"1999-10-14 NaN NaN ... NaN \n",
"1999-10-18 NaN NaN ... NaN \n",
"1999-10-20 NaN NaN ... NaN \n",
"1999-11-01 NaN NaN ... NaN \n",
"... ... ... ... ... \n",
"2022-04-08 NaN NaN ... NaN \n",
"2022-04-10 NaN NaN ... NaN \n",
"2022-04-11 NaN NaN ... NaN \n",
"2022-04-14 NaN NaN ... NaN \n",
"2022-04-15 NaN NaN ... NaN \n",
"\n",
" 6lowapp master 107attendees whitelist 107attendees blacklist \\\n",
"Date \n",
"1999-10-12 NaN NaN NaN \n",
"1999-10-14 NaN NaN NaN \n",
"1999-10-18 NaN NaN NaN \n",
"1999-10-20 NaN NaN NaN \n",
"1999-11-01 NaN NaN NaN \n",
"... ... ... ... \n",
"2022-04-08 NaN NaN NaN \n",
"2022-04-10 NaN NaN NaN \n",
"2022-04-11 NaN NaN NaN \n",
"2022-04-14 NaN NaN NaN \n",
"2022-04-15 NaN NaN NaN \n",
"\n",
" 107attendees slave 107attendees master 78attendees whitelist \\\n",
"Date \n",
"1999-10-12 NaN NaN NaN \n",
"1999-10-14 NaN NaN NaN \n",
"1999-10-18 NaN NaN NaN \n",
"1999-10-20 NaN NaN NaN \n",
"1999-11-01 NaN NaN NaN \n",
"... ... ... ... \n",
"2022-04-08 NaN NaN NaN \n",
"2022-04-10 NaN NaN NaN \n",
"2022-04-11 NaN NaN NaN \n",
"2022-04-14 NaN NaN NaN \n",
"2022-04-15 NaN NaN NaN \n",
"\n",
" 78attendees blacklist 78attendees slave 78attendees master \n",
"Date \n",
"1999-10-12 NaN NaN NaN \n",
"1999-10-14 NaN NaN NaN \n",
"1999-10-18 NaN NaN NaN \n",
"1999-10-20 NaN NaN NaN \n",
"1999-11-01 NaN NaN NaN \n",
"... ... ... ... \n",
"2022-04-08 NaN NaN NaN \n",
"2022-04-10 NaN NaN NaN \n",
"2022-04-11 NaN NaN NaN \n",
"2022-04-14 NaN NaN NaN \n",
"2022-04-15 NaN NaN NaN \n",
"\n",
"[4731 rows x 76 columns]"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Count how many times each checkword appears in each mailing list archive\n",
"archive_word_data = {}\n",
"for i, a in enumerate(archives):\n",
" print (i, archive_names[i])\n",
" data = a.data.copy()\n",
" dates = data['Date'].map(lambda x: x.date())\n",
" data['Date'] = dates\n",
" \n",
" for word in checkwords:\n",
" data[word] = data['Body'].apply(lambda x: count_word(x,word, exact=True))\n",
" archive_word_data[f\"{archive_names[i]} {word}\"] = data.groupby('Date')[word].sum()\n",
"\n",
"word_data = pd.DataFrame(archive_word_data)\n",
"word_data.index = pd.to_datetime(word_data.index) # Make the index a datetime object\n",
"word_data"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "42dfc1dc",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>91all whitelist</th>\n",
" <th>91all blacklist</th>\n",
" <th>91all slave</th>\n",
" <th>91all master</th>\n",
" <th>sframe whitelist</th>\n",
" <th>sframe blacklist</th>\n",
" <th>sframe slave</th>\n",
" <th>sframe master</th>\n",
" <th>babel whitelist</th>\n",
" <th>babel blacklist</th>\n",
" <th>...</th>\n",
" <th>6lowapp slave</th>\n",
" <th>6lowapp master</th>\n",
" <th>107attendees whitelist</th>\n",
" <th>107attendees blacklist</th>\n",
" <th>107attendees slave</th>\n",
" <th>107attendees master</th>\n",
" <th>78attendees whitelist</th>\n",
" <th>78attendees blacklist</th>\n",
" <th>78attendees slave</th>\n",
" <th>78attendees master</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1999-10-12</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1999-10-14</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1999-10-18</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1999-10-20</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1999-11-01</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2022-04-08</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2022-04-10</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2022-04-11</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2022-04-14</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2022-04-15</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>4731 rows × 76 columns</p>\n",
"</div>"
],
"text/plain": [
" 91all whitelist 91all blacklist 91all slave 91all master \\\n",
"Date \n",
"1999-10-12 NaN NaN NaN NaN \n",
"1999-10-14 NaN NaN NaN NaN \n",
"1999-10-18 NaN NaN NaN NaN \n",
"1999-10-20 NaN NaN NaN NaN \n",
"1999-11-01 NaN NaN NaN NaN \n",
"... ... ... ... ... \n",
"2022-04-08 NaN NaN NaN NaN \n",
"2022-04-10 NaN NaN NaN NaN \n",
"2022-04-11 NaN NaN NaN NaN \n",
"2022-04-14 NaN NaN NaN NaN \n",
"2022-04-15 NaN NaN NaN NaN \n",
"\n",
" sframe whitelist sframe blacklist sframe slave sframe master \\\n",
"Date \n",
"1999-10-12 NaN NaN NaN NaN \n",
"1999-10-14 NaN NaN NaN NaN \n",
"1999-10-18 NaN NaN NaN NaN \n",
"1999-10-20 NaN NaN NaN NaN \n",
"1999-11-01 NaN NaN NaN NaN \n",
"... ... ... ... ... \n",
"2022-04-08 NaN NaN NaN NaN \n",
"2022-04-10 NaN NaN NaN NaN \n",
"2022-04-11 NaN NaN NaN NaN \n",
"2022-04-14 NaN NaN NaN NaN \n",
"2022-04-15 NaN NaN NaN NaN \n",
"\n",
" babel whitelist babel blacklist ... 6lowapp slave \\\n",
"Date ... \n",
"1999-10-12 NaN NaN ... NaN \n",
"1999-10-14 NaN NaN ... NaN \n",
"1999-10-18 NaN NaN ... NaN \n",
"1999-10-20 NaN NaN ... NaN \n",
"1999-11-01 NaN NaN ... NaN \n",
"... ... ... ... ... \n",
"2022-04-08 NaN NaN ... NaN \n",
"2022-04-10 NaN NaN ... NaN \n",
"2022-04-11 NaN NaN ... NaN \n",
"2022-04-14 NaN NaN ... NaN \n",
"2022-04-15 NaN NaN ... NaN \n",
"\n",
" 6lowapp master 107attendees whitelist 107attendees blacklist \\\n",
"Date \n",
"1999-10-12 NaN NaN NaN \n",
"1999-10-14 NaN NaN NaN \n",
"1999-10-18 NaN NaN NaN \n",
"1999-10-20 NaN NaN NaN \n",
"1999-11-01 NaN NaN NaN \n",
"... ... ... ... \n",
"2022-04-08 NaN NaN NaN \n",
"2022-04-10 NaN NaN NaN \n",
"2022-04-11 NaN NaN NaN \n",
"2022-04-14 NaN NaN NaN \n",
"2022-04-15 NaN NaN NaN \n",
"\n",
" 107attendees slave 107attendees master 78attendees whitelist \\\n",
"Date \n",
"1999-10-12 NaN NaN NaN \n",
"1999-10-14 NaN NaN NaN \n",
"1999-10-18 NaN NaN NaN \n",
"1999-10-20 NaN NaN NaN \n",
"1999-11-01 NaN NaN NaN \n",
"... ... ... ... \n",
"2022-04-08 NaN NaN NaN \n",
"2022-04-10 NaN NaN NaN \n",
"2022-04-11 NaN NaN NaN \n",
"2022-04-14 NaN NaN NaN \n",
"2022-04-15 NaN NaN NaN \n",
"\n",
" 78attendees blacklist 78attendees slave 78attendees master \n",
"Date \n",
"1999-10-12 NaN NaN NaN \n",
"1999-10-14 NaN NaN NaN \n",
"1999-10-18 NaN NaN NaN \n",
"1999-10-20 NaN NaN NaN \n",
"1999-11-01 NaN NaN NaN \n",
"... ... ... ... \n",
"2022-04-08 NaN NaN NaN \n",
"2022-04-10 NaN NaN NaN \n",
"2022-04-11 NaN NaN NaN \n",
"2022-04-14 NaN NaN NaN \n",
"2022-04-15 NaN NaN NaN \n",
"\n",
"[4731 rows x 76 columns]"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Remove erroneous dates before 1970 or after 2023\n",
"all_dates = word_data.index\n",
"word_data = word_data[word_data.index.year > 1970]\n",
"word_data = word_data[word_data.index.year <= 2023]\n",
"word_data"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "94c3b35d",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>91all whitelist</th>\n",
" <th>91all blacklist</th>\n",
" <th>91all slave</th>\n",
" <th>91all master</th>\n",
" <th>sframe whitelist</th>\n",
" <th>sframe blacklist</th>\n",
" <th>sframe slave</th>\n",
" <th>sframe master</th>\n",
" <th>babel whitelist</th>\n",
" <th>babel blacklist</th>\n",
" <th>...</th>\n",
" <th>6lowapp slave</th>\n",
" <th>6lowapp master</th>\n",
" <th>107attendees whitelist</th>\n",
" <th>107attendees blacklist</th>\n",
" <th>107attendees slave</th>\n",
" <th>107attendees master</th>\n",
" <th>78attendees whitelist</th>\n",
" <th>78attendees blacklist</th>\n",
" <th>78attendees slave</th>\n",
" <th>78attendees master</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1999-10-12</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1999-10-13</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1999-10-14</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1999-10-15</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1999-10-16</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2022-04-11</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2022-04-12</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2022-04-13</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2022-04-14</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2022-04-15</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>8222 rows × 76 columns</p>\n",
"</div>"
],
"text/plain": [
" 91all whitelist 91all blacklist 91all slave 91all master \\\n",
"1999-10-12 0.0 0.0 0.0 0.0 \n",
"1999-10-13 0.0 0.0 0.0 0.0 \n",
"1999-10-14 0.0 0.0 0.0 0.0 \n",
"1999-10-15 0.0 0.0 0.0 0.0 \n",
"1999-10-16 0.0 0.0 0.0 0.0 \n",
"... ... ... ... ... \n",
"2022-04-11 0.0 0.0 0.0 0.0 \n",
"2022-04-12 0.0 0.0 0.0 0.0 \n",
"2022-04-13 0.0 0.0 0.0 0.0 \n",
"2022-04-14 0.0 0.0 0.0 0.0 \n",
"2022-04-15 0.0 0.0 0.0 0.0 \n",
"\n",
" sframe whitelist sframe blacklist sframe slave sframe master \\\n",
"1999-10-12 0.0 0.0 0.0 0.0 \n",
"1999-10-13 0.0 0.0 0.0 0.0 \n",
"1999-10-14 0.0 0.0 0.0 0.0 \n",
"1999-10-15 0.0 0.0 0.0 0.0 \n",
"1999-10-16 0.0 0.0 0.0 0.0 \n",
"... ... ... ... ... \n",
"2022-04-11 0.0 0.0 0.0 0.0 \n",
"2022-04-12 0.0 0.0 0.0 0.0 \n",
"2022-04-13 0.0 0.0 0.0 0.0 \n",
"2022-04-14 0.0 0.0 0.0 0.0 \n",
"2022-04-15 0.0 0.0 0.0 0.0 \n",
"\n",
" babel whitelist babel blacklist ... 6lowapp slave \\\n",
"1999-10-12 0.0 0.0 ... 0.0 \n",
"1999-10-13 0.0 0.0 ... 0.0 \n",
"1999-10-14 0.0 0.0 ... 0.0 \n",
"1999-10-15 0.0 0.0 ... 0.0 \n",
"1999-10-16 0.0 0.0 ... 0.0 \n",
"... ... ... ... ... \n",
"2022-04-11 0.0 0.0 ... 0.0 \n",
"2022-04-12 0.0 0.0 ... 0.0 \n",
"2022-04-13 0.0 0.0 ... 0.0 \n",
"2022-04-14 0.0 0.0 ... 0.0 \n",
"2022-04-15 0.0 0.0 ... 0.0 \n",
"\n",
" 6lowapp master 107attendees whitelist 107attendees blacklist \\\n",
"1999-10-12 0.0 0.0 0.0 \n",
"1999-10-13 0.0 0.0 0.0 \n",
"1999-10-14 0.0 0.0 0.0 \n",
"1999-10-15 0.0 0.0 0.0 \n",
"1999-10-16 0.0 0.0 0.0 \n",
"... ... ... ... \n",
"2022-04-11 0.0 0.0 0.0 \n",
"2022-04-12 0.0 0.0 0.0 \n",
"2022-04-13 0.0 0.0 0.0 \n",
"2022-04-14 0.0 0.0 0.0 \n",
"2022-04-15 0.0 0.0 0.0 \n",
"\n",
" 107attendees slave 107attendees master 78attendees whitelist \\\n",
"1999-10-12 0.0 0.0 0.0 \n",
"1999-10-13 0.0 0.0 0.0 \n",
"1999-10-14 0.0 0.0 0.0 \n",
"1999-10-15 0.0 0.0 0.0 \n",
"1999-10-16 0.0 0.0 0.0 \n",
"... ... ... ... \n",
"2022-04-11 0.0 0.0 0.0 \n",
"2022-04-12 0.0 0.0 0.0 \n",
"2022-04-13 0.0 0.0 0.0 \n",
"2022-04-14 0.0 0.0 0.0 \n",
"2022-04-15 0.0 0.0 0.0 \n",
"\n",
" 78attendees blacklist 78attendees slave 78attendees master \n",
"1999-10-12 0.0 0.0 0.0 \n",
"1999-10-13 0.0 0.0 0.0 \n",
"1999-10-14 0.0 0.0 0.0 \n",
"1999-10-15 0.0 0.0 0.0 \n",
"1999-10-16 0.0 0.0 0.0 \n",
"... ... ... ... \n",
"2022-04-11 0.0 0.0 0.0 \n",
"2022-04-12 0.0 0.0 0.0 \n",
"2022-04-13 0.0 0.0 0.0 \n",
"2022-04-14 0.0 0.0 0.0 \n",
"2022-04-15 0.0 0.0 0.0 \n",
"\n",
"[8222 rows x 76 columns]"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Fill in dataframe for every date in the date range\n",
"new_date_range = pd.date_range(start=word_data.index.min(), end=word_data.index.max(), freq=\"D\")\n",
"word_data = word_data.reindex(new_date_range, fill_value=0) \n",
"word_data = word_data.fillna(0)\n",
"word_data"
]
},
{
"cell_type": "markdown",
"id": "fe3cc711",
"metadata": {},
"source": [
"## Correct for anomalous trends in the data\n",
"### Count automated GitHub emails containing \"refs/heads/master\" separately"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "3f2d9a31",
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"sframe master\n",
"babel master\n",
"lsd master\n",
"yot master\n",
"82attendees master\n",
"secdir master\n",
"mipshop master\n",
"80attendees master\n",
"cnrp master\n",
"6lowapp master\n",
"78attendees master\n"
]
}
],
"source": [
"for column in word_data.columns:\n",
" if re.match(\".*master$\", column) is not None:\n",
" c = word_data[column]\n",
" if c.sum() != 0:\n",
" print(column)\n",
" archive_name = column.split(\" m\")[0]\n",
" word_data[archive_name + \" master_github\"] = 0 # add new empty column\n",
" archive_data = archives[archive_names.index(archive_name)].data[[\"Date\", \"Body\"]]\n",
" for _, row in archive_data.iterrows():\n",
" if type(row.Body) == str and \"master\" in row.Body:\n",
" github_masters = row.Body.count(\"refs/heads/master\")\n",
" email_date = pd.Timestamp(row.Date.date())\n",
" if github_masters > 0:\n",
" print(archive_name, email_date, github_masters)\n",
" date_index = word_data.index == email_date\n",
" word_data.loc[date_index, archive_name + \" master_github\"] += github_masters\n",
" \n",
"# Subtract \"master_github\" column from \"master\" column\n",
"for c in word_data.columns:\n",
" if \"github\" in c:\n",
" og_archive_name = c.split(\"_github\")[0]\n",
" word_data[og_archive_name] = word_data[og_archive_name] - word_data[c]"
]
},
{
"cell_type": "markdown",
"id": "3be5180f",
"metadata": {},
"source": [
"### Count automated spam emails containing \"safetyslave.com\" separately"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "ec2b0a8c",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"babel slave\n",
"secdir slave\n",
"cnrp slave\n"
]
}
],
"source": [
"for column in word_data.columns:\n",
" if \"slave\" in column:\n",
" c = word_data[column]\n",
" if c.sum() != 0:\n",
" print(column)\n",
" archive_name = column.split(\" slave\")[0]\n",
" word_data[archive_name + \" safetyslave\"] = 0 # add new empty column\n",
" archive_data = archives[archive_names.index(archive_name)].data[[\"Date\", \"Body\"]]\n",
" for _, row in archive_data.iterrows():\n",
" if type(row.Body) == str and \"slave\" in row.Body:\n",
" safetyslave_url = row.Body.count(\"://safetyslave.com\")\n",
" email_date = pd.Timestamp(row.Date.date())\n",
" if safetyslave_url > 0:\n",
" print(archive_name, email_date, safetyslave_url)\n",
" date_index = word_data.index == email_date\n",
" word_data.loc[date_index, archive_name + \" safetyslave\"] += safetyslave_url\n",
" \n",
"# Subtract!\n",
"for c in word_data.columns:\n",
" if \"safetyslave\" in c:\n",
" og_archive_name = c.split(\"safety\")[0] + \"slave\"\n",
" word_data[og_archive_name] = word_data[og_archive_name] - word_data[c]"
]
},
{
"cell_type": "markdown",
"id": "4fa7f27e",
"metadata": {},
"source": [
"## Analyze word counts"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "2c52ec6a",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>91all whitelist</th>\n",
" <th>91all blacklist</th>\n",
" <th>91all slave</th>\n",
" <th>91all master</th>\n",
" <th>sframe whitelist</th>\n",
" <th>sframe blacklist</th>\n",
" <th>sframe slave</th>\n",
" <th>sframe master</th>\n",
" <th>babel whitelist</th>\n",
" <th>babel blacklist</th>\n",
" <th>...</th>\n",
" <th>82attendees master_github</th>\n",
" <th>secdir master_github</th>\n",
" <th>mipshop master_github</th>\n",
" <th>80attendees master_github</th>\n",
" <th>cnrp master_github</th>\n",
" <th>6lowapp master_github</th>\n",
" <th>78attendees master_github</th>\n",
" <th>babel safetyslave</th>\n",
" <th>secdir safetyslave</th>\n",
" <th>cnrp safetyslave</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1999-11-10</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1999-11-11</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1999-11-12</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1999-11-13</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1999-11-14</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2022-04-11</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2022-04-12</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2022-04-13</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2022-04-14</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2022-04-15</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>8193 rows × 90 columns</p>\n",
"</div>"
],
"text/plain": [
" 91all whitelist 91all blacklist 91all slave 91all master \\\n",
"1999-11-10 0.0 0.0 0.0 0.0 \n",
"1999-11-11 0.0 0.0 0.0 0.0 \n",
"1999-11-12 0.0 0.0 0.0 0.0 \n",
"1999-11-13 0.0 0.0 0.0 0.0 \n",
"1999-11-14 0.0 0.0 0.0 0.0 \n",
"... ... ... ... ... \n",
"2022-04-11 0.0 0.0 0.0 0.0 \n",
"2022-04-12 0.0 0.0 0.0 0.0 \n",
"2022-04-13 0.0 0.0 0.0 0.0 \n",
"2022-04-14 0.0 0.0 0.0 0.0 \n",
"2022-04-15 0.0 0.0 0.0 0.0 \n",
"\n",
" sframe whitelist sframe blacklist sframe slave sframe master \\\n",
"1999-11-10 0.0 0.0 0.0 0.0 \n",
"1999-11-11 0.0 0.0 0.0 0.0 \n",
"1999-11-12 0.0 0.0 0.0 0.0 \n",
"1999-11-13 0.0 0.0 0.0 0.0 \n",
"1999-11-14 0.0 0.0 0.0 0.0 \n",
"... ... ... ... ... \n",
"2022-04-11 0.0 0.0 0.0 0.0 \n",
"2022-04-12 0.0 0.0 0.0 0.0 \n",
"2022-04-13 0.0 0.0 0.0 0.0 \n",
"2022-04-14 0.0 0.0 0.0 0.0 \n",
"2022-04-15 0.0 0.0 0.0 0.0 \n",
"\n",
" babel whitelist babel blacklist ... 82attendees master_github \\\n",
"1999-11-10 0.0 0.0 ... 0.0 \n",
"1999-11-11 0.0 0.0 ... 0.0 \n",
"1999-11-12 0.0 0.0 ... 0.0 \n",
"1999-11-13 0.0 0.0 ... 0.0 \n",
"1999-11-14 0.0 0.0 ... 0.0 \n",
"... ... ... ... ... \n",
"2022-04-11 0.0 0.0 ... 0.0 \n",
"2022-04-12 0.0 0.0 ... 0.0 \n",
"2022-04-13 0.0 0.0 ... 0.0 \n",
"2022-04-14 0.0 0.0 ... 0.0 \n",
"2022-04-15 0.0 0.0 ... 0.0 \n",
"\n",
" secdir master_github mipshop master_github \\\n",
"1999-11-10 0.0 0.0 \n",
"1999-11-11 0.0 0.0 \n",
"1999-11-12 0.0 0.0 \n",
"1999-11-13 0.0 0.0 \n",
"1999-11-14 0.0 0.0 \n",
"... ... ... \n",
"2022-04-11 0.0 0.0 \n",
"2022-04-12 0.0 0.0 \n",
"2022-04-13 0.0 0.0 \n",
"2022-04-14 0.0 0.0 \n",
"2022-04-15 0.0 0.0 \n",
"\n",
" 80attendees master_github cnrp master_github \\\n",
"1999-11-10 0.0 0.0 \n",
"1999-11-11 0.0 0.0 \n",
"1999-11-12 0.0 0.0 \n",
"1999-11-13 0.0 0.0 \n",
"1999-11-14 0.0 0.0 \n",
"... ... ... \n",
"2022-04-11 0.0 0.0 \n",
"2022-04-12 0.0 0.0 \n",
"2022-04-13 0.0 0.0 \n",
"2022-04-14 0.0 0.0 \n",
"2022-04-15 0.0 0.0 \n",
"\n",
" 6lowapp master_github 78attendees master_github \\\n",
"1999-11-10 0.0 0.0 \n",
"1999-11-11 0.0 0.0 \n",
"1999-11-12 0.0 0.0 \n",
"1999-11-13 0.0 0.0 \n",
"1999-11-14 0.0 0.0 \n",
"... ... ... \n",
"2022-04-11 0.0 0.0 \n",
"2022-04-12 0.0 0.0 \n",
"2022-04-13 0.0 0.0 \n",
"2022-04-14 0.0 0.0 \n",
"2022-04-15 0.0 0.0 \n",
"\n",
" babel safetyslave secdir safetyslave cnrp safetyslave \n",
"1999-11-10 0.0 0.0 0.0 \n",
"1999-11-11 0.0 0.0 0.0 \n",
"1999-11-12 0.0 0.0 0.0 \n",
"1999-11-13 0.0 0.0 0.0 \n",
"1999-11-14 0.0 0.0 0.0 \n",
"... ... ... ... \n",
"2022-04-11 0.0 0.0 0.0 \n",
"2022-04-12 0.0 0.0 0.0 \n",
"2022-04-13 0.0 0.0 0.0 \n",
"2022-04-14 0.0 0.0 0.0 \n",
"2022-04-15 0.0 0.0 0.0 \n",
"\n",
"[8193 rows x 90 columns]"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Calculate a rolling monthly average\n",
"window = 30 \n",
"plot_data = word_data.rolling(window).mean().dropna(how='all')\n",
"plot_data"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "4ebe9484",
"metadata": {},
"outputs": [],
"source": [
"blacklist_names = [c for c in plot_data.columns if \"blacklist\" in c]\n",
"whitelist_names = [c for c in plot_data.columns if \"whitelist\" in c]\n",
"slave_names = [c for c in plot_data.columns if \" slave\" in c]\n",
"master_names = [c for c in plot_data.columns if re.match(\".*master$\", c) is not None]\n",
"\n",
"blacklist_data = plot_data[blacklist_names]\n",
"whitelist_data = plot_data[whitelist_names]\n",
"slave_data = plot_data[slave_names]\n",
"master_data = plot_data[master_names]"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "6ec33637",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 640x480 with 0 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 800x600 with 4 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure()\n",
"fig, [ax1, ax2, ax3, ax4] = plt.subplots(nrows=4, ncols=1, figsize=(8, 6))\n",
"\n",
"ax1.plot(blacklist_data.index, blacklist_data.sum(axis=1), label=\"'blacklist'\")\n",
"ax1.text(0.01, 1, \"'blacklist'\", horizontalalignment='left',\n",
" verticalalignment='top', transform=ax1.transAxes, fontsize=14)\n",
"ax1.text(datetime.datetime.strptime(\"12-22-2018\", \"%m-%d-%Y\"), blacklist_data.max().max(), \n",
" \"Inclusive\\nlanguage\\ndraft\", horizontalalignment='left',\n",
" verticalalignment='top', fontsize=10.5)\n",
"ax2.plot(whitelist_data.index, whitelist_data.sum(axis=1), label=\"'whitelist'\")\n",
"ax2.text(0.01, 1, \"'whitelist'\", horizontalalignment='left',\n",
" verticalalignment='top', transform=ax2.transAxes, fontsize=14)\n",
"ax3.plot(master_data.index, master_data.sum(axis=1), label=\"'master'\")\n",
"ax3.text(0.01, 1, \"'master'\", horizontalalignment='left',\n",
" verticalalignment='top', transform=ax3.transAxes, fontsize=14)\n",
"ax4.plot(slave_data.index, slave_data.sum(axis=1), label=\"'slave'\")\n",
"ax4.text(0.01, 1, \"'slave'\", horizontalalignment='left',\n",
" verticalalignment='top', transform=ax4.transAxes, fontsize=14)\n",
"\n",
"for ax in [ax1, ax2, ax3, ax4]:\n",
" ax.axvline(x=datetime.datetime.strptime(\"10-22-2018\", \"%m-%d-%Y\"), linestyle=':', color=\"grey\", alpha=.5)\n",
" ax.set_xlim(datetime.datetime.strptime(\"01-01-1998\", \"%m-%d-%Y\"),\n",
" datetime.datetime.strptime(\"08-01-2023\", \"%m-%d-%Y\"))\n",
" ax.xaxis.set_major_locator(mdates.YearLocator(2)) \n",
" ax.set_ylabel(\"Monthly average\\nemails\")\n",
" \n",
" ax.grid(visible=True, alpha=.4, linestyle=\":\")\n",
" ax.spines[['right', 'top']].set_visible(False)\n",
" \n",
" start, end = ax.get_ylim()\n",
" ax.yaxis.set_ticks(np.arange(0, end, 5))\n",
" \n",
"ax1.set_xticklabels([])\n",
"ax2.set_xticklabels([])\n",
"ax3.set_xticklabels([])\n",
"\n",
"plt.suptitle(\"Term usage across IETF mailing lists\", fontsize=16)\n",
"\n",
"plt.tight_layout(h_pad=1.2)\n",
"plt.savefig('all_terms.png', dpi=300, bbox_inches='tight')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "bfa1f55d",
"metadata": {},
"source": [
"## Explore which mailing lists use \"master\" the most"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "13e29667",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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e4xZs2YRFhaGh4cHX375JQsXLryjuAwGA7NmzTLbt8zR0VF9bGdnfANGo9GoTYKL08zNYDDw/PPPM2HCBJPXateuzb///ouNjQ179+41qfXObR747LPPEhYWxi+//MLmzZuZN28eCxcuZPz48QUeN2/cuYmguWW557Jw4UIWL17MkiVLaNasGS4uLkycOJGsrCwgpx9dVFQU0dHRbN68mWXLlvHqq6/y999/ExQUVOC5t27d2ijJzOXt7a0+zk3mKpp7+5srhBBClGcasLWVn1pRuQUFBeHr60tUVBQhISFAzuAPf/zxh1ETu1wff/wxDz/8sNGFOMCuXbsICAjg1VdfVZflb3pob2+PXq832aednZ3J8latWnH8+HHq1at3x+fWuHFjk2Hj//rrL5PjHD58uMDjhISEoNfruXz5Mp07dy7wWP7+/owePZrRo0czbdo0Pvzww0ITrZLasWMH/fv358knnwRykqT//vuP4OBgdR2NRkPHjh3p2LEjM2fOJCAggO+//57JkyebLftWrVqxbt06qlevfsc1j/cyub0mhBCiUso/uXBFlPcMpY+WKCspKSnqHKeQM/jFgQMH1JGjNRoNEydOZO7cuXz//fccOnSI4cOH4+zszLBhw4z2dfLkSbZv386zzz5rcpx69eoRHx/Pl19+yalTp1i6dCnff288UEhgYKB6/KtXr5KZmaku/+2337h48SI3btwAcvotffrpp0RGRnL48GGOHj3KunXrjPqBFWX06NGcOnWKyZMnc/z4cb744guTwdymTJnCn3/+yQsvvMCBAwf477//+PHHH9UkqUGDBjzxxBOEh4fz3XffERsby549e3jzzTfVkQUnTpzIpk2biI2NZd++ffz+++9GCVBpqFevnlpjdfToUZ5//nm1fx3A33//zdy5c4mJiSE+Pp7vvvuOK1euqHEEBgby77//cvz4ca5evUp2djZPPPEE1apVo3///uzYsYPY2Fj++OMP/u///o9z586VavzlkSRaQgghRBkxGAzExcURFxenNs8RoqKJiYkhJCREra2aPHkyISEhzJw5U10nIiKCiRMnMnbsWNq0acP58+fZvHmzSd+dVatWUbNmTaMRCnP179+fSZMmMW7cOFq2bEl0dLRJP67BgwfTu3dvunfvjre3tzo8+cKFC4mKisLf31+NMywsjJ9//pmoqCja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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"master_names = [c for c in plot_data.columns if re.match(\".* master$\", c) is not None]\n",
"master_data = plot_data[master_names]\n",
"top_master_cols = master_data.sum(axis=0).sort_values(ascending=False)[:30].index\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.add_subplot(1,1,1) \n",
"\n",
"for c in top_master_cols:\n",
" plt.plot(plot_data[c].index, plot_data[c], alpha=.4, label=c)\n",
"plt.axvline(x=datetime.datetime.strptime(\"10-22-2018\", \"%m-%d-%Y\"), linestyle=':', color=\"grey\", alpha=.5)\n",
"\n",
"plt.xlim(datetime.datetime.strptime(\"01-01-1995\", \"%m-%d-%Y\"),\n",
" datetime.datetime.strptime(\"08-01-2023\", \"%m-%d-%Y\"))\n",
"plt.xticks(rotation=45)\n",
"\n",
"plt.ylabel(\"Daily usage\")\n",
"ax.legend(bbox_to_anchor=(1.1, 1.05))\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "5982a026",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n",
"secdir 2018-07-30 00:00:00\n",
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n",
"babel 2018-01-24 00:00:00\n",
"After babeld 1.9.0 is out (hopefully this week or next), I'd like to merge\n",
"Matthieu's code for the new source-specific extension into babeld master.\n",
"\n",
"Now:\n",
"\n",
" - draft-ietf-babel-source-specific-02 suggests using sub-TLV number 128,\n",
" which is the first number in the mandatory range;\n",
" - Matthieu's code uses sub-TLV number 250, which, according to\n",
" rfc6126bis Section 5, is reserved for experimental use.\n",
"\n",
"What shall I do in babeld master? I guess I could either request that\n",
"IANA allocate number 128 for draft-ietf-babel-source-specific-02, or use\n",
"an experimental sub-TLV number, or I could simply ignore the IETF and\n",
"squat number 128.\n",
"\n",
"Advice?\n",
"\n",
"-- Juliusz\n",
"---------------------------------\n",
"> - draft-ietf-babel-source-specific-02 suggests using sub-TLV number 128=\n",
",\n",
"> which is the first number in the mandatory range;\n",
"> - Matthieu's code uses sub-TLV number 250, which, according to\n",
"> rfc6126bis Section 5, is reserved for experimental use.\n",
">=20\n",
"> What shall I do in babeld master? I guess I could either request that IA=\n",
"NA\n",
"> allocate number 128 for draft-ietf-babel-source-specific-02, or use an\n",
"> experimental sub-TLV number, or I could simply ignore the IETF and squat\n",
"> number 128.\n",
"\n",
"I would suggest requesting IANA allocate.\n",
"But in looking at https://www.iana.org/assignments/babel/babel.xhtml, I'm c=\n",
"urious...\n",
"Why are we leaping over 4 through 127? The unassigned (which I would interp=\n",
"ret as \"reserved-for-mandatory\") range is 4-223 according to the registry p=\n",
"age. 4 would be the next logical value.\n",
"While asking IANA to do things to the babel registry, does it make sense to=\n",
" ask them to get rid of the current TLV allocations for draft-boutier-babel=\n",
"-source-specific?\n",
"13 Source-specific Update [draft-boutier-babel-source-specific]=20\n",
"14 Source-specific Request [draft-boutier-babel-source-specific]=20\n",
"15 Source-specific Seqno Request [draft-boutier-babel-source-specific]\n",
"\n",
"If I can be of any assistance in dealing with IANA, please let me know. I'v=\n",
"e been getting pretty good at this IANA registry stuff.\n",
"Barbara\n",
"---------------------------------\n",
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n",
"mipshop 2006-06-06 00:00:00\n",
"I am probably overly critical in my review of this document, for a \n",
"number of reasons, including for instance trying to hold this \n",
"document to the standards of RFC 4101. There are also several nits \n",
"in the review which can be safely ignored, but if clarified will \n",
"improve the document IMO.\n",
"\n",
"Summary: The primary suggestion is to follow 4101 and provide a \n",
"summary of the protocol in an easy to review/analyze format in the \n",
"earlier parts of the document. Next, I have a question on whether \n",
"two seemingly complementary techniques (referring to the use of a \n",
"message-ID and a sequence number field) are necessary for replay \n",
"protection. Vidya and I had a subsequent discussion and the \n",
"conclusion was that there may be an advantage to keeping both \n",
"techniques . I think some of that comes from trying to protect \n",
"against a sub-class of adversaries. Perhaps inclusion of the threat \n",
"model in the early parts of the document and referring to that model \n",
"in the rest of the document might help clarify the purpose of the two \n",
"fields, should they be kept in the final specification. Even \n",
"otherwise, inclusion of a protocol model and a threat model is \n",
"strongly encouraged.\n",
"\n",
"Please see inline for detailed comments.\n",
"\n",
"best regards,\n",
"Lakshminath\n",
"\n",
"\n",
" >Mipshop V. Narayanan\n",
" >Internet-Draft Qualcomm, Inc.\n",
" >Expires: October 28, 2006 N. Venkitaraman\n",
" > Motorola Labs\n",
" > H. Tschofenig\n",
" > Siemens\n",
" > G. Giaretta\n",
" > TILab\n",
" > J. Bournelle\n",
" > GET/INT\n",
" > April 26, 2006\n",
"\n",
"\n",
" > Handover Keys Using AAA\n",
" > draft-vidya-mipshop-handover-keys-aaa-02.txt\n",
" >\n",
" >Status of this Memo\n",
" >\n",
" > By submitting this Internet-Draft, each author represents that any\n",
" > applicable patent or other IPR claims of which he or she is aware\n",
" > have been or will be disclosed, and any of which he or she becomes\n",
" > aware will be disclosed, in accordance with Section 6 of BCP 79.\n",
"\n",
" > Internet-Drafts are working documents of the Internet Engineering\n",
" > Task Force (IETF), its areas, and its working groups. Note that\n",
" > other groups may also distribute working documents as Internet-\n",
" > Drafts.\n",
"\n",
" > Internet-Drafts are draft documents valid for a maximum of six months\n",
" > and may be updated, replaced, or obsoleted by other documents at any\n",
" > time. It is inappropriate to use Internet-Drafts as reference\n",
" > material or to cite them other than as \"work in progress.\"\n",
"\n",
" > The list of current Internet-Drafts can be accessed at\n",
" > http://www.ietf.org/ietf/1id-abstracts.txt.\n",
"\n",
" > The list of Internet-Draft Shadow Directories can be accessed at\n",
" > http://www.ietf.org/shadow.html.\n",
"\n",
" > This Internet-Draft will expire on October 28, 2006.\n",
"\n",
" >Copyright Notice\n",
"\n",
" > Copyright (C) The Internet Society (2006).\n",
"\n",
" >Abstract\n",
"\n",
" > This document describes a AAA-assisted key management protocol to\n",
"\n",
"\n",
"\n",
" > generate a handover key between a mobile node (MN) and an access\n",
" > router (AR) for the purpose of securing FMIPv6 signaling messages.\n",
" > As such, it specifies a message exchange between the MN and the AR\n",
" > and assumptions that must hold in order for this protocol to work.\n",
" > The idea is that the key derived between a mobile node and an access\n",
" > router through this protocol can be used in fast handovers.\n",
"{**\n",
"How is the last sentence different from the first? Can the key be\n",
"used to protect non-FMIPv6 fast handover signaling messages? Perhaps\n",
"that can be clarified with \"fast handovers with protocols other than\n",
"FMIPv6?\"}\n",
"\n",
"\n",
"<snip>\n",
"\n",
" > 1.1. Applicability\n",
"\n",
" > Although this document is focused on FMIPv6, it is applicable to\n",
" > other protocols as well. In the context of FMIPv6, the key derived\n",
" > using this protocol can be used to secure the Fast Binding Update\n",
" > (FBU) sent from the MN to the PAR as specified in FMIPv6 [1]. Other\n",
" > protocols may also use this mechanism as noted below. For instance,\n",
" > CxTP [9] can also use this protocol to derive keys between the AR and\n",
" > MN to secure the CTAR message. Additionally, keys between an MN and\n",
" > a MAP can be derived using this protocol for HMIPv6 [10] operation.\n",
" > This draft, however, does not address any details on how the protocol\n",
" > described in this draft may be used for CxTP or HMIPv6.\n",
"\n",
"A number of acronyms being used for the first time in the document,\n",
"please expand them\n",
"\n",
"\n",
"2. Terminology\n",
"\n",
" > The key words \"MUST\", \"MUST NOT\", \"REQUIRED\", \"SHALL\", \"SHALL NOT\",\n",
" > \"SHOULD\", \"SHOULD NOT\", \"RECOMMENDED\", \"MAY\", and \"OPTIONAL\" in this\n",
" > document are to be interpreted as described in RFC- 2119 RFC2119 [2].\n",
"\n",
" > In addition, this document uses the following terms:\n",
"\n",
" > MN-AAA Handover Master Key (HMK):\n",
"\n",
" > A key that is shared between the Mobile Node and the AAA server,\n",
" > hereby referred to simply as the Handover Master Key. The HMK is\n",
" > never used directly to protect any messages.\n",
"\n",
" > MN-AAA Handover Integrity Key (HIK):\n",
"\n",
" > A key that is shared between the Mobile Node and the AAA server,\n",
" > hereby referred to simply as the Handover Integrity Key. The HIK\n",
" > is derived from the HMK and is used for authenticating the HKReq/\n",
" > HKResp messages between the MN and the AAA server.\n",
"\n",
" > Handover Key (HK):\n",
"\n",
" > Session key used to secure messages between the Mobile Node and\n",
" > Access Router. A given HK between an MN and ARn is termed as HKn.\n",
"\n",
"Secure any messages? Or just fast handover signaling messages?\n",
"\n",
"3. Goals, Assumptions and Requirements\n",
"\n",
" > The document generally follows the key management guidelines\n",
" > documented in [11]. This section describes the goals and assumptions\n",
" > that the protocol design is based on.\n",
"\n",
" > o A major goal of the protocol is to leverage the existence of AAA\n",
" > infrastructure to establish session keys for securing FMIPv6\n",
" > signaling messages. AAA protocols are widely deployed today due\n",
" > to the usage of AAA-based network access authentication. The AAA\n",
" > server is used to authenticate and authorize the MN for fast\n",
" > handovers prior to generation of the handover key. The solution\n",
" > presented in this document relies on the AAA infrastructure to\n",
" > derive and distribute keying material for handover support.\n",
"\n",
"Combining the last two sentences: \"The handover keying protocol\n",
"(HKP) uses the AAA server to authenticate and authorize the MN for\n",
"fasthandovers and uses the AAA protocol for derivation and delivery of\n",
"the keying material.\" Something like that.\n",
"\n",
" > o The protocol must be able to provide separation of the keys used\n",
" > for integrity protection and the derivation of the handover keys.\n",
"\n",
"Does a protocol provide separation of keys?\n",
"\n",
" > For this purpose, two keys are derived from the HMK for a given\n",
" > node - the Handover Integrity Key (HIK) and the actual Handover\n",
" > Key (HK). The former is used to create the MAC (Message\n",
" > Authentication Code) in the signaling messages for the key\n",
" > management protocol described in this document and the latter is\n",
" > used for FMIPv6 signaling protection.\n",
"\n",
"How about this? To avoid reusing the HMK for two distinct purposes,\n",
"namely in a PRF for key derivation and in a MAC for integrity\n",
"protection, two keys are derived from the HMK -- an HIK, that protects\n",
"HKP messages and an HK that protects the FMIPv6 signaling messages.\n",
"\n",
" > o Unique key naming of the keys must be provided. Key naming of the\n",
" > HMK and HIK is provided using the Network Access Identifier (NAI)\n",
" > of the MN. In order to provide identity protection, it may be\n",
" > undesirable to reuse the same NAI as used for network access\n",
" > authentication. For sake of identity protection, it may be\n",
" > desirable to have the AAA server to derive an ephemeral identity\n",
" > at the time of HMK creation that can be used in subsequent\n",
" > creation of handover keys. Such privacy protection mechanisms are\n",
" > outside the scope of this document. The HK is also named using\n",
" > the NAI - however, at some point, a valid MN Care-of-address and\n",
" > an SPI are associated with the HK.\n",
"\n",
"The above is not very clear. Could the identity protection text be\n",
"moved to security/privacy considerations? That's out of scope anyway.\n",
"With that all keys are initially identified with the NAI and the HK will\n",
"be associated with an SPI.\n",
"\n",
"<snip>\n",
"\n",
"\n",
" > 4. Protocol Overview\n",
"\n",
" > This section provides a description of the procedure to obtain the\n",
" > Handover Key (HK). We assume that the MN shares a key, called\n",
" > Handover Master Key (HMK), with the AAA server. For the purpose of\n",
" > the protocol itself, the HMK may simply be a handover specific master\n",
" > key pre-shared between the MN and the AAA server.\n",
"\n",
" > A Handover Integrity Key (HIK) is derived from the HMK at the MN and\n",
" > AAA server. The HIK is used to provide integrity protection to\n",
" > messages exchanged by the MN and the AAA server. Also, the actual\n",
" > Handover Key (HK) shared between the MN and the AR is derived from\n",
" > the HMK. The derivation of these keys is described in Section 6.1.\n",
"\n",
" > Figure 1 depicts the high-level protocol interaction.\n",
"\n",
"\n",
"\n",
"\n",
" > MN AR AAAH Server\n",
" > | HKReq. | |\n",
" > | ---------> | |\n",
" > | | AAA Request |\n",
" > | | ----------------------> |\n",
" > | | AAA Response |\n",
" > | | <----------------------- |\n",
" > | HKResp. | (Keying material) |\n",
" > | <--------- | |\n",
"\n",
"\n",
" > Figure 1: Protocol Operation\n",
"\n",
"Please fix the figures. The lines should go all the way to the\n",
"server, right? Why is the AAA server shown as AAAH?\n",
"\n",
" > The MN, upon attaching to an AR (say AR1) in a given administrative\n",
" > domain, sends a Handover Key Request (HKReq) message to the AR. The\n",
" > MN creates a HKReq message including an NAI-like identifier (that was\n",
" > derived possibly during the time of HMK derivation), a message ID, a\n",
" > sequence number and the care-of-address (CoA). The MN also generates\n",
" > a nonce and includes it in the HKReq message. Further, the MN\n",
" > indicates the PRF algorithm that it chooses to use for key generation\n",
" > in the HKReq message. The MN includes a MAC of the message fields in\n",
" > an MN-AAA MAC Mobility sub-option. Upon receiving the HKReq from the\n",
" > MN, AR1 must first ensure that it has a valid neighbor cache entry\n",
" > for the CoA claimed by the MN. AR1 further verifies the validity and\n",
" > uniqueness of the CoA claimed by the MN. After verifying the\n",
" > validity of the CoA of the MN, AR1 forwards the HKReq message to the\n",
" > AAA Server. The MAC in the HKReq allows the AAA server to\n",
" > authenticate the MN and to perform authorization for fast handoffs\n",
" > before deriving a unique and fresh session key, the Handover Key\n",
" > (HK1).\n",
"\n",
" > HK1 will subsequently be used between the MN and the AR1 after a\n",
" > successful protocol execution. The key derivation procedure for the\n",
" > Handover Key is defined as follows:\n",
"\n",
" > HK1 = gprf+ (HMK, AAA Nonce | MN Nonce | AR1 ID | MN ID | \"Handover\n",
" > Key\"), where | indicates concatenation\n",
"\n",
" > The AR1 ID is the IP address of AR1 as seen by the MN. The MN ID is\n",
" > the NAI of the MN that is sent by the MN in the HKReq message. The\n",
" > AAA and MN Nonces are nonces generated by the AAA server and the MN\n",
" > respectively for the purpose of HK1 derivation. The function gprf+\n",
" > is defined in Section 6.1.\n",
"\n",
" > After successful authentication and authorization, the AAA Server\n",
" > then sends two different parameters to AR1 - one of the parameters\n",
" > includes the key HK1 and the lifetime associated with it. The other\n",
" > parameter, to be sent to the MN, includes the AAA Nonce. The message\n",
" > is protected with the AR1-AAA SA when forwarded to AR1.\n",
"\n",
"A few comments on the previous paragraph:\n",
"\n",
"* how about: the AAA server sends two sets of parameters to AR1: HK1\n",
"and associated lifetime destined to AR1 and the AAA nonce to be sent to\n",
"the MN.\n",
"\n",
"* contains the only reference to AR1-AAA SA. A clarification might be\n",
"in order?}\n",
"\n",
"<snip>\n",
"\n",
"\n",
" > 5.1. Mobility Header Types\n",
"\n",
" > 5.1.1. Handover Key Request (HKReq)\n",
"\n",
"<snip>\n",
"\n",
" > HKReq Fields\n",
"\n",
" > Message Type\n",
"\n",
" > A one octet field indicating the handover key exchange\n",
" > mechanism encoded in the mobility options, the value of which\n",
" > is taken from the IANA Handover Key Exchange Mechanism Type\n",
" > registry. A value of '1' (to be assigned by IANA) indicates\n",
" > AAA-assisted handover key exchange. Other key exchange\n",
" > protocols defined in future may define additional values.\n",
"\n",
" > v\n",
"\n",
" > Verify flag. This is set by the MN to indicate that it may\n",
" > already share a key with the AR.\n",
"\n",
"if v is set, is the MAC option a MUST/SHOULD/MAY ?\n",
"\n",
" > PRF\n",
"\n",
" > A 3 bit field indicating the PRF algorithm that the MN wishes\n",
" > to use for key generation. This is the algorithm the MN\n",
" > proposes to use in the derivation of HIK and HK from the HMK.\n",
" > Currently, the value of 1 is assigned to indicate HMAC-SHA1.\n",
"\n",
" > Reserved\n",
"\n",
" > Set to 0; ignored on reception.\n",
"\n",
" > Message ID\n",
"\n",
" > A two octet random value used to uniquely match requests and\n",
" > responses and identify retransmissions.\n",
"\n",
" > Sequence #\n",
"\n",
" > A two octet unsigned integer used by the AR in combination with\n",
" > the message ID to detect retransmissions and replays.\n",
"\n",
"My guess is only one of the two fields above may be required, but\n",
"more on that later\n",
"\n",
" > Key Care of Address\n",
"\n",
" > Sixteen octet field containing the IPv6 CoA for which the key\n",
" > is requested.\n",
"\n",
" > Mobility Suboptions\n",
"\n",
" > Variable length field of such length that the complete Mobility\n",
" > Header is an integer multiple of 8 octets. This field contains\n",
" > one or more TLV-encoded mobility suboptions. Valid mobility\n",
" > sub-options for this message include the following:\n",
"\n",
" > Handover Nonce Mobility Option (new option defined in\n",
" > section Section 5.2.1 below)\n",
"\n",
" > Mobile Node Identifier Mobility Sub-option, as defined in\n",
" > [3]\n",
"\n",
" > MAC Mobility Option as defined in Section 5.2.2\n",
"\n",
" > Timestamp Mobility Option as defined in Section 5.2.3\n",
"\n",
" > 5.1.2. Handover Key Response (HKResp)\n",
"\n",
" > A handover key response (HKResp) message MUST be sent from the AR to\n",
" > the MN in response to a HKReq message. HKResp MUST carry suboptions\n",
" > appropriate to the key agreement mechanism requested in the HKReq,\n",
" > which the MN can use to derive a handover key.\n",
"\n",
"The second \"MUST\" is vague. Perhaps the requirement can be stated more\n",
"precisely.\n",
"\n",
" > The HKResp message uses the MH Type value TBA2. When this value is\n",
" > indicated in the MH Type field, the format of the Message Data field\n",
" > in the Mobility Header is as follows:\n",
"\n",
"\n",
" > +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n",
" > | Message Type |v|PRF|Reserved|\n",
" > +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n",
" > | Message ID | Sequence # |\n",
" > +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n",
" > | Status Code | Lifetime |\n",
" > +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n",
" > | SPI |\n",
" > +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n",
" > | |\n",
" > . .\n",
" > . Mobility options .\n",
" > . .\n",
" > | |\n",
" > +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n",
"\n",
"\n",
"\n",
" > Figure 3: Handover Key Response\n",
"\n",
" > HKResp Fields\n",
"\n",
" > Message Type\n",
"\n",
" > A one octet field indicating the key exchange mechanism encoded\n",
" > in the mobility options, the value of which is taken from the\n",
" > IANA Handover Key Agreement Mechanism Type registry. A value\n",
" > of '1' (to be assigned by IANA) indicates AAA-assisted handover\n",
" > key exchange. Other key exchange protocols defined in future\n",
" > may define additional values.\n",
"\n",
" > v\n",
"\n",
" > Verified flag. Set by the AR in response to a HKReq with the V\n",
" > bit set, if it verified the request.\n",
"\n",
"Please use the same case for v throughout\n",
"\n",
" > PRF Type\n",
"\n",
" > A 3 bit field indicating the PRF algorithm that the AAA server\n",
" > used for key generation. This is the algorithm used in the\n",
" > derivation of HIK and HK from the HMK. If the AAA server\n",
" > accepts the algorithm proposed by the MN, it sets the value to\n",
" > the same as in the HKReq. If not, the value in this field\n",
" > indicates the algorithm the MN must use to derive the keys.\n",
"\n",
"s/must/MUST\n",
"\n",
" > Currently, the value of 1 is assigned to indicate HMAC-SHA1.\n",
"\n",
" > Reserved\n",
"\n",
" > Set to 0; ignored on reception.\n",
"\n",
" > Message ID\n",
"\n",
" > A two octet random value used to uniquely match requests and\n",
" > responses and identify retransmissions. This value is copied\n",
" > from the corresponding HKReq.\n",
"\n",
" > Sequence #\n",
"\n",
" > A two octet unsigned integer from the matching HKReq that\n",
" > triggered this message.\n",
"\n",
" > Status Code\n",
"\n",
" > One octet status code indicating the status of the request.\n",
"\n",
" > 0 - Success.\n",
"\n",
" > 129 - HKE_NOT_SUPPORTED.\n",
"\n",
" > 130 - CoA_AUTH_FAILED\n",
"\n",
" > 131 - ADMINISTRATIVELY_PROHIBITED.\n",
"\n",
" > 132 - HK_VERIFY_FAILED\n",
"\n",
" > 133 - MN_AR_MAC_REQD\n",
"\n",
" > 134 - INVALID_AUTH_VALUE\n",
"\n",
" > 135 - TIMESTAMP_REQD\n",
"\n",
" > 136 - INVALID_PRF_ALG\n",
"\n",
" > 137 - INVALID_MAC_ALG\n",
"\n",
" > 138 - INVALID_TIMESTAMP\n",
"\n",
"Some error codes are not listed!\n",
"\n",
" > Lifetime\n",
"\n",
" > Lifetime of the handover key, in seconds.\n",
"\n",
"\n",
" > SPI\n",
"\n",
" > Four octet Security Parameter Index for the handover key at the\n",
" > AR. The SPI is used by the MN and the AR to identify the key\n",
" > when the key is used.\n",
"\n",
"The AR picks this and the MN and AR use it to identify the HK,\n",
"right. My recollection from a discussion earlier is that the SPI alone\n",
"is not sufficient to identify the key and instead <AR-ID, SPI> is used\n",
"at the MN and the SPI is used at the AR, right? Where is that\n",
"specified? Perhaps later in the document.\n",
"\n",
"<snip>\n",
"\n",
" > 6. Protocol Details\n",
"\n",
" > The proposed protocol enables a MN to derive session keys (HKs) with\n",
" > an access router. This section describes the key derivation process\n",
" > and the processing rules for the mobile node, the access router and\n",
" > the AAA server.\n",
"\n",
" > 6.1. Key Derivation\n",
"\n",
" > As mentioned earlier, the MN and the AAA server share a key for the\n",
" > purpose of handover key derivation, called the Handover Master Key\n",
"\n",
"\n",
"\n",
" > (HMK). The HMK may be a pre-shared key or may be derived between the\n",
" > MN and AAA server by means outside the scope of this document. The\n",
" > HMK MUST be at least 64 bytes in length and SHOULD NOT be generated\n",
" > from a password. The HMK MUST NOT be directly used to protect any\n",
" > data or derive handover keys. The HMK is only used to derive the\n",
" > Handover Integrity Key (HIK) and the Handover Key (HK).\n",
"\n",
"Some of the above is repetition; is it necessary?\n",
"Further, there is no need to expand all the key names etc.\n",
"Not sure I understand the notion of not directly using HMK to derive\n",
"handover keys, it is after all used to derive the HK!\n",
"\n",
" > The HMK must be updated periodically to allow the derivation of\n",
" > cryptographically strong handover keys.\n",
"\n",
"Small must and how frequently? This belongs in SEC considerations\n",
"on the assumptions about the HMK.\n",
"\n",
" > The MN and the AAA server MUST derive a Handover Integrity Key (HIK)\n",
" > and a Handover Key (HK) from the Handover Master Key. The PRF used in\n",
" > the derivation must be communicated by the MN to the AAA server in\n",
" > the HKReq message. The AAA server may choose to mandate a different\n",
" > PRF type by indicating so in the HKResp message. The key derivation\n",
" > follows the procedure explained in this section.\n",
"\n",
" > For the purpose of deriving keys of variable length that depend on\n",
" > the PRF type and MAC algorithm used, this document uses an adaptation\n",
" > of prf+ defined in RFC4306 [5]. This function is termed \"Generalized\n",
" > prf+ (gprf+)\" and is defined as follows (where | indicates\n",
" > concatenation).\n",
"\n",
" > gprf+ (K, S) = T1 | T2 | T3 | T4 ...\n",
"\n",
" > where:\n",
"\n",
" > T1 = PRF (K, S | Y)\n",
"\n",
" > T2 = PRF (K, T1 | S | Y+1)\n",
"\n",
" > T3 = PRF (K, T2 | S | Y+2)\n",
"\n",
" > T4 = PRF (K, T3 | S | Y+3)\n",
"\n",
" > continuing as needed to compute all required keys. The keys are\n",
" > taken from the output string without regard to boundaries, depending\n",
" > on the length of the key required. These lengths are dependent on\n",
" > the MAC algorithm and the PRF chosen. For instance, if the HIK\n",
" > required is a 256-bit key and the PRF used yields 160-bit keys, the\n",
" > HIK will come from T1 and the beginning of T2. Y is a two-byte\n",
" > hexadecimal value that may differ in different uses of gprf+. Each\n",
" > key derivation procedure below explains the appropriate values of K,\n",
" > S and Y.\n",
"\n",
"The explanation about the length of the key required is repetitious\n",
"and I think that the example is not needed.\n",
"\n",
"s/byte/octet\n",
"\n",
"If Y is different in different uses of the gprf+, shouldn't it be a\n",
"parameter of gprf+?\n",
"\n",
" > 6.1.1. Handover Integrity Key Derivation\n",
"\n",
" > The gprf+ is used as follows to derive the HIK.\n",
"\n",
"\n",
"\n",
" > HIK = gprf+ (HMK, \"Handover Integrity Key\")\n",
"\n",
" > where, the string Handover Integrity Key is a 22-character ascii\n",
" > string with no null termination. The value of Y is the Message ID\n",
" > (in hex) from the HKReq sent by the MN. The Message ID is used in\n",
" > the derivation to allow the values of HIK to change upon every\n",
" > instantiation of the gprf+ for this purpose. Since the HIK\n",
" > derivation does not involve nonces or other changing parameters, the\n",
" > Message ID is included to avoid the use of the same HIK for a long\n",
" > time. This really is provided to allow implementations that don't\n",
" > refresh the HMK appropriately to still be able to have changing HIKs.\n",
" > If the HMK is refreshed periodically, there is not a need to derive a\n",
" > new HIK at every HKReq/HKResp exchange. However, at the time of this\n",
" > writing, it is felt that it will not be uncommon to configure a HMK\n",
" > and not change it for a long period of time.\n",
"\n",
" > The actual length of the HIK required is determined by the PRF used\n",
" > in the derivation. Note that the length of the HIK must be\n",
" > sufficient for the MAC algorithm used. Hence, the choice of PRF must\n",
" > be done such that it results in a sufficiently long key that can be\n",
" > used by the MAC algorithm.\n",
"\n",
"The above paragraph is not required. First, the length semantics\n",
"are clear already. The PRF algorithm's output length is not relevant\n",
"since prf+ is being used.\n",
"\n",
"6.1.2. Handover Key Derivation\n",
"\n",
" > The gprf+ is used as follows to derive the HK (where | indicates\n",
" > concatenation).\n",
"\n",
" > HK = gprf+ (HMK, \"MN Nonce | AAA Nonce | MN ID | AR ID | \"Handover\n",
" > Key\")\n",
"\n",
"there is an extra \" above\n",
"\n",
" > where, the string Handover Key is a 12-character ascii string with no\n",
" > null termination. The MN Nonce is generated by the MN and\n",
" > communicated to the AAA server in the HKReq message. The AAA nonce\n",
" > is generated by the AAA server and communicated to the MN in the\n",
" > HKResp message. The MN ID is the NAI of the MN and the AR ID is the\n",
" > IP address of the AR as seen by the MN. The value of Y for the HK\n",
" > derivation is set to 0x0000.\n",
"\n",
" > The actual length of the HK required is determined by the PRF used in\n",
" > the derivation. Note that the length of the HK must be sufficient\n",
" > for the MAC algorithm used in the protection of FMIPv6 signaling.\n",
" > Hence, the choice of PRF must be done such that it results in a\n",
" > sufficiently long key that can be used by the MAC algorithm.\n",
"\n",
"Same as before: length of HK is dependent on the MAC algorithm used\n",
"for FMIPv6 and that's all. It does not depend on the PRF choice\n",
"\n",
" > More details on the process leading to HK derivation and its usage\n",
" > can be found in sections below.\n",
"\n",
"\n",
"\n",
" > 6.2. Mobile Node Considerations\n",
"\n",
" > After attaching to an AR, an FMIPv6 capable mobile node SHOULD\n",
" > immediately proceed to obtain a session key between itself and its\n",
" > current AR.\n",
"\n",
" > 6.2.1. Sending Handover Key Request Messages\n",
"\n",
" > In order to derive a shared key with the AR, the MN MUST create a\n",
" > HKReq with a unique, random Message ID and a sequence number also\n",
" > starting at a random value. The MN MUST also derive a fresh MN nonce\n",
" > that will be used in HK derivation and include it in the HKReq. For\n",
" > subsequent retransmissions, the sequence number MUST be incremented\n",
" > by 1 and the Message ID MUST remain the same.\n",
"\n",
"It is not clear why the Message ID and the Sequence number are\n",
"needed, but perhaps that is described later? A one-liner here might be\n",
"useful.\n",
"Fresh nonce? Do you mean random nonce?\n",
"\n",
" > In order to obtain absolute replay protection, the MN SHOULD use the\n",
" > Timestamp mobility option defined in Section 5.2.3.\n",
"\n",
"\"Absolute\" replay protection? Please explain what, if any, replay\n",
"protection is offered with other mechanisms and explain why TSs are\n",
"required to claim replay protection. Or, perhaps this can be moved to\n",
"later.\n",
"\n",
" > The MN MUST indicate the PRF algorithm it used for HIK derivation and\n",
" > intends to use for HK derivation in the PRF field of the HKReq\n",
" > header. A value of 1 indicates HMAC-SHA1. That is the only value\n",
" > presently defined in this document.\n",
"\n",
"Why refer to HMAC-SHA1 here? If that is replaced in the future,\n",
"it would need to be done in multiple places.\n",
"\n",
" > The HKReq sent by the MN MUST include the MN-AAA MAC Mobility Sub-\n",
" > Option. The AUTH Value in the MN-AAA MAC option shall be calculated\n",
" > as follows:\n",
"\n",
" > AUTH = prf(HIK, MH Data)\n",
"\n",
"You mean MAC and not PRF?\n",
"\n",
" > The prf used is indicated in the Algorithm Type included in the MAC\n",
" > Mobility Option. At the time of writing of this document, the only\n",
" > value defined is 1 for HMAC-SHA1.\n",
"\n",
"\n",
"No need for the second sentence. In the first sentence, replace the\n",
"prf with MAC.\n",
"\n",
" > MH Data is the content of the Mobility Header up to and including the\n",
" > Algorithm Type field of this option.\n",
"\n",
" > The MN should send a new HKReq before the expiry of the lifetime of\n",
" > the key obtained via the pervious HKReq. Once a MN obtains a new\n",
" > key, it MUST discard the old key and use the new key for\n",
" > authenticating the FBU.\n",
"\n",
" > If the MN does not receive a response after a configured timeout\n",
" > (HKEY_REQ_TOUT), it SHOULD retransmit the request for a maximum of N\n",
" > HO_KEYTRIES. In each of the retry attempts, the MN MUST use the same\n",
" > message ID. The default value of N_HO_KEYTRIES is 3.\n",
"\n",
"\n",
"Doesn't say anything about incrementing SEQ# in the retries; perhaps\n",
"that comes later?\n",
"\n",
"\n",
"\n",
"6.2.2. Receiving and Processing Handover Key Response Messages\n",
"\n",
" > Upon receiving a successful HKResp message from the AR, the MN MUST\n",
" > ensure that the message contains the MN-AR MAC mobility option. If\n",
" > not, it MUST silently discard the message. The MN MUST ensure that\n",
" > the Message ID matches with that of the corresponding HKReq. If\n",
" > there is a mismatch, it MUST drop the packet. The MN MUST compute\n",
" > the handover key using the keying material contained in the HKResp\n",
" > message. The key is computed as described in Section 6.1. It is\n",
" > repeated here for completion.\n",
"\n",
"Not required at all, I'd delete the derivation thing. Why repeat\n",
"after only a few pages of the spec? Furthermore, if something changes,\n",
"the updates may make this inconsistent in the document.\n",
"\n",
" > HK = gprf+ (HMK, AAA Nonce| MN Nonce | AR ID | MN ID | \"Handover\n",
" > Key\"), where | indicates concatenation\n",
"\n",
" > The AR ID is the IP address of the AR. The MN ID is the NAI of the\n",
" > MN that is sent by the MN in the HKReq message. The AAA Nonce is a\n",
" > nonce generated by the AAA server and included in the HKResp received\n",
" > by the MN. The MN Nonce is the nonce generated by the MN and\n",
" > included in the HKReq message. The PRF used is indicated by the PRF\n",
" > field of the HKResp message.\n",
"\n",
" > The MN MUST verify the AUTH Value in the MN-AR MAC mobility option\n",
" > using the HK derived. The MAC algorithm used is the one specified in\n",
" > the Algorithm Type field of the MN-AR MAC mobility sub-option. If\n",
" > the MAC algorithm is not supported by the MN, it MUST discard the\n",
" > message. If the AUTH Value verification fails, the MN MUST silently\n",
" > discard the message.\n",
"\n",
" > Upon successful processing of the HKResp and derivation of the valid\n",
" > HK, the MN MUST store the SPI and lifetime associated with the key,\n",
" > as sent in the HKResp.\n",
"\n",
"At this point the reader does not know what's in the HKResp\n",
"messages, so the above description seems to be in vacuum. We know only\n",
"that there is a MAC and the associated verification rules, and the above\n",
"line says something about SPI and lifetime etc., without any explanation\n",
"of the use of those fields.\n",
"\n",
"6.2.2.1. Error Processing\n",
"\n",
" > If the MN receives a HKResp with the Code set to\n",
" > ADMINISTRATIVELY_PROHIBITED, the MN MUST NOT send any more HKReq\n",
" > messages via that AR. If the MN receives a HKResp with the Code set\n",
" > to HKE_NOT_SUPPORTED, it SHOULD use a different key exchange protocol\n",
" > to derive the handover key. If the code is set to COA_AUTH_FAILED,\n",
" > it MAY retransmit the HKReq after a random time greater than\n",
" > HK_RETRY_INTERVAL. However, the MN MUST NOT retransmit the HKReq\n",
" > more than N HO_KEYTRIES. If the code is set to MN_AAA_AUTH_REQD, the\n",
" > MN MUST send a new HKReq with the MN AAA Authentication Option\n",
" > included. If the code is set to INVALID_AUTH_VALUE, the MN MUST NOT\n",
" > send any more HKReq messages via that AR. If the code is set to\n",
" > TIMESTAMP_REQD, the MN SHOULD send another HKReq using the Timestamp\n",
" > mobility option. If the code is set to INVALID_TIMESTAMP, the MN\n",
" > SHOULD send another HKReq with the adjusted timestamp value. If the\n",
"\n",
"AUTH and MAC are interchangeable and I don't like that confusion.\n",
"It appears that you are saying an MN_AAA_AUTH_REQD might be sent, but it\n",
"is not clear when the AAA server might send that error code since the\n",
"rule might be that it MUST discard messages without MACs silently!\n",
"Actually that is not clear either! I'd definitely say that the AAA\n",
"server MUST NOT send INVALID_AUTH_VALUE, as that introduces a\n",
"vulnerability: the AAA server becomes an Oracle for an attacker.\n",
"\n",
"\n",
" > code is set to INVALID_PRF_ALG, the MN MAY send another HKReq with\n",
" > the PRF Algorithm specified in the HKResp message. If the code is\n",
" > set to INVALID_MAC_ALG in the MN-AAA MAC sub-option, the MN MAY send\n",
" > another HKReq with the Algorithm Type value set to that found in the\n",
" > corresponding field of the HKResp message.\n",
"\n",
"6.2.3. Returning to an Access Router\n",
"\n",
" > When a MN attaches to an AR with which the MN believes it has a\n",
" > shared Key (for example the MN has an unexpired key it obtained when\n",
" > it was Previously associated with the access router), the MN MAY\n",
"\n",
"s/Previously/previously\n",
"\n",
" > request that the AR utilize the Key as long as the key has not\n",
"\n",
"s/Key/key\n",
"\n",
" > expired. If the MN wishes to re-use the key, it MUST do so only\n",
" > after verifying that by sending a HKReq with the verify flag set.\n",
" > The message ID field in the HKReq is a freshly generated random\n",
" > number. However the sequence number value in this HKReq MUST be\n",
" > greater than the sequence number in previous HKReq sent to the AR\n",
" > corresponding to the key. The MN MUST include an MN-AR MAC mobility\n",
" > option in HKReq with verify flag set. The MN-AR MAC Option MUST be\n",
" > the last option included in the HKReq. The verify procedure serves\n",
" > two purposes: (1) It is used to verify that the AR still has the key\n",
" > and allows use of the key until the lifetime of the key and (2)It\n",
" > enables the MN CoA to be bound to the key. If the verify request is\n",
" > not successful the MN SHOULD create a new MN-AR handover key by\n",
" > sending a HKReq with the MN-AAA Auth option .\n",
"\n",
"Several problems with the text above:\n",
"1. The text about message IDs and sequence numbers is not clear,\n",
"especially the part about message IDs. For the SEQ part, I am still\n",
"looking for a justification of the need for it, but perhaps it is\n",
"elsewhere in the document.\n",
"2. I guess the MAC is for PoP of the key; perhaps that might be stated.\n",
"3. It is not clear how the MN CoA is bound to the key, perhaps it is to\n",
"non FMIPv6 challenged folks. A sentence on it might help!\n",
"\n",
"\n",
" > If the MN receives a HKResp with the code set to HK_VERIFY_FAILED, it\n",
" > SHOULD send another HKReq with the MN-AAA MAC Mobility sub-option to\n",
" > obtain a new handover key via the AAA server.\n",
"\n",
"I see references to MN-AAA Auth option and MN-AAA MAC Mobility\n",
"sub-option; I guess they are different. Please clarify.\n",
"\n",
" > 6.3. Access Router Considerations\n",
"\n",
" > If the HKReq message does not contain the MN ID Mobility Option, the\n",
" > AR MUST silently discard the message. If the HKReq does not have the\n",
" > verify bit set, the AR does the following.\n",
"\n",
" > If the HKReq message does not contain the MN-AAA MAC Mobility sub-\n",
" > option, it MUST silently discard the message.\n",
"\n",
" > The AR MUST first determine if it has a pending request from the MN\n",
" > with the same message id. If so and if the AR has already received a\n",
" > AAA response corresponding to the HKReq, the AR SHOULD retransmit the\n",
" > HKResp to the MN. If the received message has the same message ID\n",
" > and the sequence number as before, the AR MUST drop the packet. For\n",
" > further protection from replays, the rate of retransmissions of\n",
" > responses to MN MUST not be more than a preconfigured RETRANS_RATE.\n",
" > If the AR already forwarded this message to the home AAA Server but\n",
" > has not yet received a response from AAA server, the AR MUST silently\n",
"\n",
"\n",
"\n",
" > discard the retransmitted request from the MN. Note that the AAA\n",
" > protocol should independently perform its own retransmission. If\n",
" > this is a new HKReq, the AR MUST check to determine if the MN-AAA MAC\n",
" > Mobility sub-option has been included in this message by the MN. If\n",
" > it has been included, then the AR MUST forward the request to the\n",
" > home AAA Server.\n",
"\n",
"Usually retransmission means (atleast in certain protocols that I am aware of)\n",
"that the sender doesn't change anything in the message. In this case, the MN\n",
"is really preparing the message again and sending it.\n",
"\n",
"I believe that only one of message-id and seq fields is needed.\n",
"\n",
"With your current semantics, the processing rule about the same msg ID\n",
"and seq number comes before the same message ID, and \"response\n",
"available\" case\n",
"\n",
" > If the AR expects timestamp-based replay protection, it MUST return a\n",
" > HKResp with the error code set to \"TIMESTAMP_REQD\".\n",
"\n",
" > If it is a new HKReq, the AR SHOULD send a request to the AAA server\n",
" > only after successful validation of the CoA. Section 7.4 provides\n",
" > additional discussion on the issues associated with address\n",
" > validation and some possible options for address validation. If the\n",
" > AR fails to verify the CoA, it MUST send a HKResp with the code set\n",
" > to CoA_AUTH_FAILED.\n",
"\n",
"Perhaps a sentence on what validation of the CoA would mean might be\n",
"useful here. I am not sure it's a good idea to report AUTH failures.\n",
"\n",
" > The AAA message is constructed using the appropriately defined\n",
" > attributes (illustrated in Appendix A for RADIUS and Appendix B for\n",
" > Diameter). While creating the AAA request message, the AR MUST\n",
" > include the NAS-IP-Address AVP in the AAA message (e.g. RADIUS\n",
" > Access Request) sent to the AAA server. The AR MUST use its IP\n",
" > address as seen by the MN in this AVP. This will be used as the AR\n",
" > ID in deriving the handover key.\n",
"\n",
" > The domain name in the NAI is used to determine the AAA server to be\n",
" > contacted.\n",
"\n",
" > If the AR receives a successful AAA response (e.g., RADIUS Access\n",
" > Accept) message from the AAA server, it MUST store the handover key\n",
" > received from the AAA server along with the CoA and MN ID and index\n",
" > it additionally with an SPI. The AR MUST send the SPI, AAA Nonce and\n",
" > lifetime in the RADIUS message in the HKResp message to the MN. The\n",
" > AR MUST include a MAC of the message created using the HK in the\n",
" > MN-AR MAC Mobility Sub-Option carried in the HKResp message.\n",
"\n",
" > The AUTH Value in the MN-AR MAC option is created as follows.\n",
"\n",
" > AUTH = prf (HK, MH Data)\n",
"\n",
" > The prf used is indicated in the Algorithm Type included in the MAC\n",
" > Mobility Option. At the time of writing of this document, the only\n",
" > value defined is 1 for HMAC-SHA1.\n",
"\n",
" > MH Data is the content of the Mobility Header up to and including the\n",
" > Algorithm Type field of this option.\n",
"\n",
"\n",
"Starting at the \"The AUTH value, this seems like repetition from\n",
"earlier and I recall stating several issues with it. First, I'd suggest\n",
"deleting this. If not, please see below:\n",
"\n",
"1. Please replace AUTH with MAC. That'd result in changes in a few\n",
"other places.\n",
"2. Replace prf with MAC.\n",
"3. No need to specify HMAC-SHA1 here again.\n",
"\n",
"\n",
" > If the AR received an MN-AAA MAC sub-option from the AAA server, it\n",
"\n",
"\"If\": is this really an option? Is the MN-AAA MAC an option?\n",
"\n",
"\n",
" > MUST include that in the HKResp to the MN.\n",
"\n",
" > If the AR receives an unsuccessful AAA response (e.g., RADIUS Access\n",
" > Reject) message from the AAA server, the AR MUST send an appropriate\n",
" > error code to the MN in the HKResp message.\n",
"\n",
" > The AR SHOULD buffer the information to be sent to the MN for a\n",
" > maximum value of HKEY_REQ_TOUT, so that it can be retransmitted upon\n",
" > receiving a HKReq with the same Message ID and incremented sequence\n",
" > number.\n",
"\n",
" > If an AR receives a AAA response message corresponding to a MN that\n",
" > is no longer connected to it, the AR SHOULD silently discard it.\n",
"\n",
" > After retransmission timeout, if the AR does not receive a response\n",
" > from the AAA server, it MUST remove all state associated with the MN\n",
" > and MUST NOT send a response to the MN.\n",
"\n",
" > When the neighbor cache entry for the CoA expires, the AR MUST\n",
" > disassociate the key and the corresponding CoA. When the lifetime of\n",
" > the key expires, the AR should remove the SPI.\n",
"\n",
" > 6.3.1. Returning Mobile Node\n",
"\n",
" > If a mobile node believes that it shares a handover key with a valid\n",
" > lifetime with the AR, it may send a HKReq with the 'V' bit set. If\n",
" > so, the AR MUST use the MN ID to lookup the MN and obtain the key.\n",
"\n",
"\n",
"s/MN ID/SPI\n",
"\n",
" > If a key is present the AR MUST verify the AUTH value in the MAC\n",
" > option. If it is valid, it MUST verify that the sequence number in\n",
" > the HKReq is greater than the value in the sequence number field in\n",
" > the previously received HKReq from the MN for the same key. This\n",
" > ensures that the message is not a replay of a previous message with a\n",
" > verify bit set. If the sequence number check fails the AR MUST\n",
" > silently discard the message.\n",
"\n",
"Is the assumption on replay protection using the \"same msg-id, diff\n",
"seq number\" that the AR stores the entire message that it has forwarded\n",
"to the AAA server and compares it or does it just verify the msg-id and\n",
"respond back?\n",
"\n",
" > If the sequence number check is successful and computed MAC matches\n",
" > the AUTH value included in the HKReq message, the AR SHOULD verify\n",
" > that the IP address is valid and is not claimed by any other node.\n",
" > If that procedure succeeds, the AR MUST send a response with the\n",
" > verified bit set including a MAC of the response. Also, the AR MUST\n",
" > record the CoA of the MN as the IP address associated with the\n",
" > handover key for that MN, in addition to the MN ID (NAI). If the\n",
" > MN-AR MAC Mobility Sub-Option is not present in the HKReq in this\n",
" > case, the AR MUST drop the message and return a HKResp with the error\n",
" > code set to \"MN_AR_MAC_REQD\". Also, if the option was included but\n",
" > the AR was unable to verify the MAC, it MUST drop the message and\n",
" > return a HKResp with the error code set to \"INVALID_AUTH_Value\". The\n",
"\n",
"MAC_REQD is ok, but INVALID_AUTH MUST NOT be sent. BTW, why is it\n",
"invalid AUTH and not MAC? I may have asked that Q already.\n",
"\n",
"\n",
" > rate of transmissions of responses to MN MUST not be more than a\n",
" > preconfigured TRANS_RATE. If the AR does not have the key and if the\n",
" > HKReq does not have the MN-AAA MAC Option, it MUST drop the message\n",
" > and return a HKResp with the error code set to \"HK_VERIFY_FAILED\".\n",
"\n",
"The HK_VERIFY as useful as it might be, should be generic and should\n",
"not indicate whether the MAC failed, but instead should say something\n",
"like the AR wants to force the MN do full authentication\n",
"\n",
" > If the AR does not have the key and the HKReq included the MN-AAA MAC\n",
" > Mobility Sub-Option, the AR MAY process the HKReq as though the 'V'\n",
" > bit was not set.\n",
"\n",
" > 6.4. AAA Server Considerations\n",
"\n",
" > A description of the actual AAA attributes is included in Appendix A\n",
" > and Appendix B. The text in the Appendices are provided for\n",
"\n",
"s/text/attributes perhaps\n",
"\n",
" > illustration only and these are expected to be specified in separate\n",
" > documents. This section provides a brief description of the\n",
" > operation of the AAA server for this protocol. The discussion is\n",
" > explained with RADIUS as the example AAA protocol, but applies\n",
" > equally to Diameter as well.\n",
"\n",
" > If the MN cannot be authenticated by the AAA server, it MUST silently\n",
" > discard the HKReq message. If authorization failed for the MN to use\n",
" > FMIPv6 at the AR it is visiting, the AAA server MUST return a\n",
" > response with the code set to ADMINISTRATIVELY_PROHIBITED.\n",
"\n",
" > If the AAA server expects to use a PRF other than the one indicated\n",
" > in the HKReq message, it MUST return an error set to INVALID_PRF_ALG\n",
" > and set the PRF field in the HKResp to indicate the algorithm that\n",
" > must be used. The AAA server, in this case, MUST include an MN-AAA\n",
" > MAC option with the AUTH Value computed using the HIK.\n",
"\n",
"So I guess the MN-AAA MAC doesn't need to be present all the time?\n",
"That's not very clear\n",
"\n",
" > The AAA server MUST derive a Handover Integrity Key (HIK) from the\n",
" > Handover Master Key (HMK) for the MN as specified in Section 6.1.\n",
"\n",
" > If the AAA server is expecting timestamp-based replay protection in\n",
" > the HKReq, it MUST send an error set to TIMESTAMP_REQD in response to\n",
" > an HKReq that does not contain the Timestamp mobility option. If the\n",
" > HKReq contains the Timestamp mobility option, it MUST be processed in\n",
" > accordance with Section 5.2.3. If the timestamp sent by the MN does\n",
" > not match its own timestamp, the AAA server MUST send an error with\n",
" > the code INVALID_TIMESTAMP and include its timestamp in accordance\n",
" > with Section 5.2.3. The AAA server, in this case, MUST include an\n",
" > MN-AAA MAC option with the AUTH Value computed using the HIK.\n",
"\n",
" > Upon receiving a handover key request, the AAA server MUST verify\n",
" > that the MN-AAA MAC Mobility Sub-Option is present in the message.\n",
" > If it is absent, the AAA server MUST silently discard the message.\n",
" > Otherwise, the AAA server MUST verify the AUTH Value in the option.\n",
" > If it is invalid, the AAA server MUST silently discard the message.\n",
"\n",
"\n",
"\n",
" > If it is valid, the AAA server must proceed with the handover key\n",
" > generation described in Section 6.1. If the MAC Algorithm used by\n",
" > the MN is unacceptable, the AAA server SHOULD return an error of type\n",
" > INVALID_MAC_ALG, including an MN-AAA MAC option with the algorithm\n",
" > set to the desired value and the AUTH Value computed using the HIK.\n",
"\n",
" > If the NAS-IP-Address AVP was not included in the request, the AAA\n",
" > server MUST return an error to the AR, indicating that the NAS-IP-\n",
" > Address is required.\n",
"\n",
" > The AAA server MUST send a response back to the AR, including the AAA\n",
" > Nonce as well as the derived HK. Note that the AAA protocol is\n",
" > expected to provide its own security between the AR and the AAA\n",
" > server for purposes of encrypting the HK. The AAA server SHOULD\n",
" > include a lifetime for the HK in the RADIUS Access Accept message.\n",
" > The AAA server is, however, not required to store the key or the\n",
" > lifetime.\n",
"\n",
" > 6.5. Indirect MN-AR Handover Key Exchange\n",
"\n",
" > The MN may wish to derive a handover key with an AR when it is not\n",
" > directly attached to that AR. This may happen in case the MN is\n",
" > using FMIPv6 service with pAR as its anchor (while moving rapidly\n",
" > across ARs, for instance) and its handover key with the pAR is about\n",
" > to expire. In this case, the MN may need to refresh the key via the\n",
" > nAR it is attached to.\n",
"\n",
" > To establish a new handover key with an AR, the MN simply sends HKReq\n",
" > message destined to that AR. The CoA for such indirect refreshes\n",
" > SHOULD be set to NULL. If the CoA is non-NULL, the pAR MUST check if\n",
" > the CoA provided in the HKReq is the same address that is tied to the\n",
" > NAI provided by the MN. If that is not the case the pAR MUST reject\n",
" > the HKReq. If the checks are valid, the pAR contacts the AAA server\n",
" > to establish a handover key as described before.\n",
"\n",
"\n",
" > 7. Security Considerations\n",
"\n",
" > This section describes the security considerations for the protocol\n",
" > for establishing handover keys specified in this document. The\n",
" > messages described in this document are intended to allow the\n",
" > establishment of a security association between the mobile node and\n",
" > access router for fast handoff purposes. The protocol is loosely\n",
" > based on the Mobile IP-AAA model [12] where the MN-HA security\n",
" > association is derived using a AAA server.\n",
"\n",
" > The handover key protocol described in this document transports the\n",
" > nonce from the AAA server to the MN and the MN derives its own\n",
"\n",
"\n",
"\n",
" > handover key using the nonce and other parameters.\n",
"\n",
" > The proposed protocol uses an NAI-like identity of the MN as the\n",
" > identity to derive the handover keys between the MN and AR. This\n",
" > protocol does not provide active or passive user identity\n",
" > confidentiality. If such confidentiality is desired, a service\n",
" > specific identity must be derived as part of the HMK bootstrapping\n",
" > procedure.\n",
"\n",
"7.1. Strength of the HMK\n",
"\n",
" > The protocol relies on the HMK shared between the mobile node and the\n",
" > AAA server for handover key derivation. It also relies on the\n",
" > security of the AAA protocol (RADIUS or Diameter) used between the AR\n",
" > and the AAA server for HK distribution to the AR.\n",
"{**What AAA channel properties do you require? Confidentiality,\n",
"integrity and replay protection?}\n",
"\n",
" > The Security Associations resulting from use of this protocol do not\n",
" > offer any higher level of security than what is already implicit in\n",
" > use of the AAA Security Association between the mobile node and the\n",
" > AAA server. In order to deny any adversary the luxury of unbounded\n",
" > time to analyze and break the HMK, it must be refreshed periodically.\n",
" > The provisioning and refreshing of the HMK in the MN and AAA server\n",
" > is outside the scope of this document.\n",
"\n",
"7.2. Strength of the HIK and HK\n",
"\n",
" > The protocol allows the derivation of the Handover Integrity Key\n",
" > (HIK) and the Handover Key (HK) from the HMK. The HIK is shared\n",
" > between the MN and the AAA server and used in integrity protection of\n",
" > the HKReq message and in implicit authentication of the MN. The AUTH\n",
" > value in the MAC option of the message is calculated using the HIK,\n",
" > allowing integrity protection. By verifying proof of possession of\n",
" > the valid HIK, the MN is authenticated by the AAA server.\n",
"\n",
" > The Handover Key (HK) is shared between the MN and the AR and is used\n",
" > in integrity protection of messages between the MN and the AR. The\n",
" > AR uses the HK to compute the AUTH value in the HKResp message to the\n",
" > MN. Also, when the MN sends a HKReq to the AR with the MN-AR MAC\n",
" > Mobility Sub-Option, it uses the HK to derive the AUTH value in it.\n",
" > Subsequently, when the MN and AR exchange FMIPv6 signaling messages\n",
" > (FBU/FBAck), the HK is used to protect the signaling.\n",
"\n",
"The HK is known to the AAA server and the AAA server can spoof any\n",
"of these messages. In other words, there is no MSK-TSK like derivation\n",
"procedure here. Do you guys want to talk about that?\n",
"\n",
" > This protocol allows the PRF used for key derivation to be indicated\n",
" > by the MN in the HKReq message. Also, the AAA server may choose to\n",
" > deny the usage of the chosen PRF by specifying a different PRF in the\n",
" > HKResp messages. Currently, HMAC-SHA1 is the only PRF for which a\n",
" > value has been defined in this document. Future documents may define\n",
" > more PRF types and values. The choice of the PRF must be done in\n",
"\n",
"\n",
"\n",
" > keeping with the security properties of the desired key and the\n",
" > desired level of security. Also, the MAC algorithm used in the\n",
" > creation of the AUTH value must be taken into consideration to\n",
" > determine the length of the HK and the HIK required.\n",
"\n",
"7.3. Replay Protection\n",
"\n",
" > The proposed protocol uses a sequence number in combination with a\n",
" > message ID to detect retransmissions and replays at the AR. It also\n",
" > allows the use of timestamp based absolute replay protection between\n",
" > the MN and the AAA server. Using the sequence number alone provides\n",
" > limited replay protection. Replay protection is provided as long as\n",
" > there is state corresponding to an MN at the AR. An attacker may,\n",
" > however, cache a HKReq message sent on the link between an MN and AR\n",
" > and replay it at a sufficiently later time when the AR has no state\n",
" > for that MN. In this case, the AR will end up sending a AAA request\n",
" > to the AAA server. The HKReq will be successfully processed by the\n",
" > AAA server in this case, since the authentication data will be valid\n",
" > (as the attacker has not modified anything in the message). The AAA\n",
" > server will create a HK corresponding to this message and will\n",
" > provide it to the AR. However, it must be noted that the MN cannot\n",
"\n",
"The MN or the attacker?\n",
"\n",
" > obtain the HK, because, without the HMK, it cannot derive the key\n",
" > from the nonce. Hence, this scenario does not lead to an adversary\n",
" > using FMIP services on the AR. But, it does result in some minimal\n",
" > resource consumption at the AAA server (for computing the handover\n",
" > key). The assumption from an accounting perspective here is that\n",
" > accounting at the AAA server will not be triggered until the MN\n",
" > actually starts using the FMIP service (in other words, until the MN\n",
" > sends an FBU to the AR). If accounting for FMIPv6 is started based\n",
" > on when the handover key is derived, this issue could result in an MN\n",
" > getting charged for FMIP service due to an adversary. To provide\n",
" > absolute replay protection, the use of a timestamp-based approach\n",
" > using the Timestamp mobility option is recommended.\n",
"\n",
"I would have thought the need for message-ID *and* the seq #\n",
"would've been explained here. I just strongly to remove the seq#. It\n",
"has very limited use for an interestingly limited adversary.\n",
"\n",
" > 7.4. IP Address Authorization\n",
"\n",
" > For FMIPv6 operation, the access router must ensure that a mobile\n",
" > node cannot redirect traffic belonging to any other node. For this\n",
" > purpose, the access router must bind the handover key of a mobile\n",
" > node to its care-of-address. The AR must ensure that the CoA claimed\n",
" > by the MN does not belong to any other node.\n",
"\n",
" > IP address authorization may be done in different ways in different\n",
" > networks. For example, where stateful address assignment is used, it\n",
" > is possible for a DHCP server to securely notify the AR (DHCP Relay\n",
" > Agent potentially) of the IP address assigned to the MN. The AR may\n",
" > note the IP address to MN ID mapping at that time. Also, when IPv6CP\n",
"What's IPv6CP, first use, please expand\n",
" > is used, it is possible for the AR to know the same mapping.\n",
"\n",
" > When stateless autoconfiguration is used by the MN to obtain a CoA,\n",
" > SeND may be used to protect against the threats of ND in general. It\n",
"\n",
"Need a reference for SeND; expand ND\n",
" > must be noted that this protocol is not attempting to solve the\n",
" > general threats of ND itself. Some other mechanisms may also be\n",
" > available for IP address authorization. For instance, in cellular\n",
" > networks that do not have a broadcast link between the MN and a base\n",
" > station, the packets coming on the link between the MN and BS can be\n",
" > considered valid, since it is an authenticated point-to-point link to\n",
" > the MN. In such a case, SeND is not required to achieve IP address\n",
" > authorization, even for of stateless IP address autoconfiguration. .\n",
"\n",
"Not sure whether SEC considerations are complete given that the \n",
"threat model is not available.\n",
"\n",
"8. IANA Considerations\n",
"\n",
"<snip>\n",
"\n",
"\n",
"_______________________________________________\n",
"Mipshop mailing list\n",
"Mipshop@ietf.org\n",
"https://www1.ietf.org/mailman/listinfo/mipshop\n",
"---------------------------------\n",
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n",
"82attendees 2011-11-15 00:00:00\n",
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n",
"cnrp 2000-05-09 00:00:00\n",
"On Sun, May 07, 2000 at 04:48:53PM -0400, Leslie Daigle wrote:\n",
"> My own perspective is that:\n",
">\n",
"> . we have the service/server distinction currently, but\n",
"> . this is looking for an ability to acknowledge/express\n",
"> relationships between different services (administrative\n",
"> control) that cover the same space (dataset).\n",
">\n",
"> Answers for Roland? Comments?\n",
"\n",
"Hmm... Of what use would such an expression of relationships be\n",
"to the client? With DNS for example the concept of primary vs\n",
"secondary only has meaning to the servers and isn't representable\n",
"in NS records. Do we need that in the client here or is it\n",
"enough to have a service/server distinction?\n",
"\n",
"\n",
"> From: Roland Hedberg <roland@catalogix.ac.se>\n",
"> Subject: more CNRP\n",
"> To: leslie@THINKINGCAT.COM (Leslie Daigle)\n",
">\n",
"> Hi again,\n",
">\n",
"> Perhaps this should have been sent to the list instead of to you.\n",
"> You can forwarded it if you want.\n",
">\n",
"> My problem is as follows:\n",
">\n",
"> If a CNRP server wants to return as a result for a query a set of sets\n",
"> of referrals.\n",
">\n",
"> A example taken from the a LDAP environment ( but don't let that bother\n",
"> you, read CNRP everywhere it says LDAP :-) ).\n",
">\n",
"> As a response to a LDAP query a server can return several 'groups' of\n",
"> referrals. Where the underlying assumption is that all referrals within\n",
"> one group are references to the same data ( masters and slaves ).\n",
">\n",
"> How would that be represented in a CNRP response ?\n",
"\n",
"By returning a referral that references a Service object that had\n",
"multiple Servers listed.\n",
">\n",
"> If I understand the CNRP DTD correctly, which I am not totally convinced of,\n",
"> then the definition of 'service' doesn't allow you to have several\n",
"> serviceURI's.\n",
"> Which I take to mean that you can not handle the kind of situation that I have\n",
"> described above.\n",
"\n",
"ServiceURI isn't really the URI of the actual server. ServiceURI is\n",
"an identifier only in that it allows you to differntiate one service (dataset)\n",
"from another. In the Service object there is only one ServiceURI but\n",
"multiple Server objects listed under the Servers tag.\n",
"\n",
"The question becomes: is that sufficient for your needs? Are you\n",
"going to something more robust than master/slave that needs to be\n",
"expressed to the client?\n",
"\n",
"-MM\n",
"\n",
"--\n",
"--------------------------------------------------------------------------------\n",
"Michael Mealling | Vote Libertarian! | www.rwhois.net/michael\n",
"Sr. Research Engineer | www.ga.lp.org/gwinnett | ICQ#: 14198821\n",
"Network Solutions | www.lp.org | michaelm@netsol.com\n",
"---------------------------------\n",
"> On Sun, May 07, 2000 at 04:48:53PM -0400, Leslie Daigle wrote:\n",
"> > My own perspective is that:\n",
"> >\n",
"> > . we have the service/server distinction currently, but\n",
"> > . this is looking for an ability to acknowledge/express\n",
"> > relationships between different services (administrative\n",
"> > control) that cover the same space (dataset).\n",
"> >\n",
"> > Answers for Roland? Comments?\n",
">\n",
"> Hmm... Of what use would such an expression of relationships be\n",
"> to the client? With DNS for example the concept of primary vs\n",
"> secondary only has meaning to the servers and isn't representable\n",
"> in NS records. Do we need that in the client here or is it\n",
"> enough to have a service/server distinction?\n",
"\n",
"It must be to the benefit of the client if it is told that a group of\n",
"servers all point to the same information, such that the client can choose\n",
"anyone of them when it wants to follow a referral.\n",
"And if the first choice is not reachable another from the group can be used.\n",
"\n",
"\n",
"> > How would that be represented in a CNRP response ?\n",
">\n",
"> By returning a referral that references a Service object that had\n",
"> multiple Servers listed.\n",
"\n",
"Ah, your correct.\n",
"So the following construct would be used:\n",
"\n",
"<service id=\"1\" >\n",
" <serviceURI=\"1.2.752.17.5.1\">\n",
" <servers>\n",
" <server>\n",
" <serverURI>ldap://ldap.umu.se/dc=umu,dc=se</serverURI>\n",
" </server>\n",
" <server>\n",
" <serverURI>ldap://ldap.sunet.se/dc=umu,dc=se</serverURI>\n",
" </server>\n",
" </servers>\n",
"</service>\n",
"\n",
"> ServiceURI isn't really the URI of the actual server. ServiceURI is\n",
"> an identifier only in that it allows you to differntiate one service (dataset)\n",
"> from another. In the Service object there is only one ServiceURI but\n",
"> multiple Server objects listed under the Servers tag.\n",
"\n",
"Now, I'm lost. If the serviceURI is just a identifier and the collection\n",
"of characters has no intrinsic meaning. Then a construct\n",
"like this (extract from example 6.3 in cnrp-02.txt) must be rather useless:\n",
"\n",
"<results>\n",
" <service id=\"2\">\n",
" <serviceURI>\"http://servers.acmecorp.co.uk</serviceURI>\n",
" </service>\n",
" <resource>\n",
" <referral>\n",
" <serviceRef id=\"2\">\n",
" </referral>\n",
" </resource>\n",
"</results>\n",
"\n",
"According to the text this piece should be a referral. But if it is\n",
"as you write, that the serviceURI is just a identifier and should not\n",
"be interpreted as a URI pointing to some information, then where is\n",
"the real referral.\n",
"\n",
"Shouldn't it at least have been:\n",
"\n",
"<results>\n",
" <service id=\"2\">\n",
" <serviceURI>\"http://servers.acmecorp.co.uk</serviceURI>\n",
" <server>\n",
" <serverURI>\"http://servers.acmecorp.co.uk/</serverURI>\n",
" </server>\n",
" </service>\n",
" <resource>\n",
" <referral>\n",
" <serviceRef id=\"2\">\n",
" </referral>\n",
" </resource>\n",
"</results>\n",
"\n",
"in order to be useful.\n",
"\n",
"> The question becomes: is that sufficient for your needs? Are you\n",
"> going to something more robust than master/slave that needs to be\n",
"> expressed to the client?\n",
"\n",
"Well, it could be useful to be able to order the servers like in SRV records.\n",
"Perhaps 'property' could be used since it is already in the DTD.\n",
"\n",
"<service id=\"1\" >\n",
" <serviceURI=\"1.2.752.17.5.1\">\n",
" <servers>\n",
" <server>\n",
" <serverURI>ldap://ldap.umu.se/dc=umu,dc=se</serverURI>\n",
" <property name=\"priority\">10</property>\n",
" </server>\n",
" <server>\n",
" <serverURI>ldap://ldap.sunet.se/dc=umu,dc=se</serverURI>\n",
" <property name=\"priority\">100</property>\n",
" </server>\n",
" </servers>\n",
"</service>\n",
"\n",
"\n",
"-- Roland\n",
"------------------------------------------------\n",
"Roland Hedberg phone : +47 23 08 29 96\n",
"Dalsveien 53 mobile(NO): +47 90 66 44 52\n",
"No-0775 Oslo mobile(SE): +46 70 520 420 3\n",
"Norway\n",
"---------------------------------\n",
"On Tue, May 09, 2000 at 03:04:23PM +0200, Roland Hedberg wrote:\n",
"> > On Sun, May 07, 2000 at 04:48:53PM -0400, Leslie Daigle wrote:\n",
"> > > My own perspective is that:\n",
"> > >\n",
"> > > . we have the service/server distinction currently, but\n",
"> > > . this is looking for an ability to acknowledge/express\n",
"> > > relationships between different services (administrative\n",
"> > > control) that cover the same space (dataset).\n",
"> > >\n",
"> > > Answers for Roland? Comments?\n",
"> >\n",
"> > Hmm... Of what use would such an expression of relationships be\n",
"> > to the client? With DNS for example the concept of primary vs\n",
"> > secondary only has meaning to the servers and isn't representable\n",
"> > in NS records. Do we need that in the client here or is it\n",
"> > enough to have a service/server distinction?\n",
">\n",
"> It must be to the benefit of the client if it is told that a group of\n",
"> servers all point to the same information, such that the client can choose\n",
"> anyone of them when it wants to follow a referral.\n",
"> And if the first choice is not reachable another from the group can be used.\n",
"\n",
"Oh yes. That is useful. But what is not communicated to the client\n",
"is which one is the master and which one is hte slave. All the client\n",
"sees is multiple NS records with no ordering or any other semantics.\n",
"Let me clarify the question: of what use is it for the client to know\n",
"anything more than a list of servers all serving the same dataset equally?\n",
"Do you need to prioritize them (ala MX records)? Do you need to know\n",
"the master/slave relationship at the client level?\n",
"\n",
"\n",
"> > > How would that be represented in a CNRP response ?\n",
"> >\n",
"> > By returning a referral that references a Service object that had\n",
"> > multiple Servers listed.\n",
">\n",
"> Ah, your correct.\n",
"> So the following construct would be used:\n",
">\n",
"> <service id=\"1\" >\n",
"> <serviceURI=\"1.2.752.17.5.1\">\n",
"> <servers>\n",
"> <server>\n",
"> <serverURI>ldap://ldap.umu.se/dc=umu,dc=se</serverURI>\n",
"> </server>\n",
"> <server>\n",
"> <serverURI>ldap://ldap.sunet.se/dc=umu,dc=se</serverURI>\n",
"> </server>\n",
"> </servers>\n",
"> </service>\n",
"\n",
"Yep...\n",
"\n",
"> > ServiceURI isn't really the URI of the actual server. ServiceURI is\n",
"> > an identifier only in that it allows you to differntiate one service (dataset)\n",
"> > from another. In the Service object there is only one ServiceURI but\n",
"> > multiple Server objects listed under the Servers tag.\n",
">\n",
"> Now, I'm lost. If the serviceURI is just a identifier and the collection\n",
"> of characters has no intrinsic meaning. Then a construct\n",
"> like this (extract from example 6.3 in cnrp-02.txt) must be rather useless:\n",
">\n",
"> <results>\n",
"> <service id=\"2\">\n",
"> <serviceURI>\"http://servers.acmecorp.co.uk</serviceURI>\n",
"> </service>\n",
"> <resource>\n",
"> <referral>\n",
"> <serviceRef id=\"2\">\n",
"> </referral>\n",
"> </resource>\n",
"> </results>\n",
">\n",
"> According to the text this piece should be a referral. But if it is\n",
"> as you write, that the serviceURI is just a identifier and should not\n",
"> be interpreted as a URI pointing to some information, then where is\n",
"> the real referral.\n",
"\n",
"In this case yes, it has no meaning. But there are others where it may\n",
"since the ServiceURI uniquely identifies the 'dataset' being talked about.\n",
"In some cases the involved parties may already know who the servers are\n",
"but they just need to know they're talking about the same service.\n",
"Its difficult to express this kind of semantic in the DTD....\n",
"\n",
">\n",
"> Shouldn't it at least have been:\n",
">\n",
"> <results>\n",
"> <service id=\"2\">\n",
"> <serviceURI>\"http://servers.acmecorp.co.uk</serviceURI>\n",
"> <server>\n",
"> <serverURI>\"http://servers.acmecorp.co.uk/</serverURI>\n",
"> </server>\n",
"> </service>\n",
"> <resource>\n",
"> <referral>\n",
"> <serviceRef id=\"2\">\n",
"> </referral>\n",
"> </resource>\n",
"> </results>\n",
">\n",
"> in order to be useful.\n",
"\n",
"For a referral, yes. But for other places where the Service object\n",
"is used, no....\n",
"\n",
"> > The question becomes: is that sufficient for your needs? Are you\n",
"> > going to something more robust than master/slave that needs to be\n",
"> > expressed to the client?\n",
">\n",
"> Well, it could be useful to be able to order the servers like in SRV records.\n",
"> Perhaps 'property' could be used since it is already in the DTD.\n",
"\n",
"Yep. This is the #1 reason why the Server tag is allowed to hold properties.\n",
"Neat, huh? You could also create other properties used here such as\n",
"saying things like \"this server is for the pacific rim and this server is\n",
"for Europe\" (although how you say that reliably is beyond me at this point).\n",
"\n",
"> <service id=\"1\" >\n",
"> <serviceURI=\"1.2.752.17.5.1\">\n",
"> <servers>\n",
"> <server>\n",
"> <serverURI>ldap://ldap.umu.se/dc=umu,dc=se</serverURI>\n",
"> <property name=\"priority\">10</property>\n",
"> </server>\n",
"> <server>\n",
"> <serverURI>ldap://ldap.sunet.se/dc=umu,dc=se</serverURI>\n",
"> <property name=\"priority\">100</property>\n",
"> </server>\n",
"> </servers>\n",
"> </service>\n",
"\n",
"Ywp..\n",
"\n",
"-MM\n",
"\n",
"--\n",
"--------------------------------------------------------------------------------\n",
"Michael Mealling | Vote Libertarian! | www.rwhois.net/michael\n",
"Sr. Research Engineer | www.ga.lp.org/gwinnett | ICQ#: 14198821\n",
"Network Solutions | www.lp.org | michaelm@netsol.com\n",
"---------------------------------\n",
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n",
"lsd 2010-07-09 00:00:00\n",
"A new IETF working group has been formed in the Real-time Applications and\n",
"Infrastructure Area. For additional information, please contact the Area\n",
"Directors or the WG Chairs.\n",
"\n",
"Loosely-coupled SIP Devices (LSD)\n",
"---------------------------------------------------\n",
"Current Status: Active Working Group\n",
"\n",
"Chairs:\n",
" Simon Pietro Romano <spromano@unina.it>\n",
"\n",
"Real-time Applications and Infrastructure Area Directors:\n",
" Gonzalo Camarillo <Gonzalo.Camarillo@ericsson.com>\n",
" Robert Sparks <rjsparks@nostrum.com>\n",
"\n",
"Real-time Applications and Infrastructure Area Advisor:\n",
" Gonzalo Camarillo <Gonzalo.Camarillo@ericsson.com>\n",
"\n",
"Mailing Lists: General Discussion: lsd@ietf.org\n",
" To Subscribe: https://www.ietf.org/mailman/listinfo/lsd\n",
" Archive: http://www.ietf.org/mail-archive/web/lsd/current/maillist.html\n",
"\n",
"Description of Working Group:\n",
"\n",
"Disaggregated media refers to the ability for a user to create a\n",
"multimedia session combining different media streams coming from\n",
"different devices under his or her control so that they are treated by\n",
"the far end of the session as a single media session. \n",
"\n",
"Generally, a given participant uses a single device to establish (or\n",
"participate in) a given multimedia session. Consequently, the SIP\n",
"signaling to manage the multimedia session and the actual media\n",
"streams are typically co-located in the same device. In scenarios\n",
"involving disaggregated media, a user wants to establish a single\n",
"multimedia session combining different media streams coming from\n",
"different devices under his or her control. This creates a need to\n",
"coordinate the exchange of the those media streams within the\n",
"multimedia session.\n",
"\n",
"There are a number of existing mechanisms that can be used to\n",
"coordinate different devices under user's control and to involve them\n",
"in the call (e.g. Message Bus (Mbus) [RFC3259], Megaco [ITU-T H.248.1]\n",
"and SIP 3pcc [RFC3725]). However, these mechanisms are intended to be\n",
"used in \"tightly coupled\" scenarios. The use of all those mechanisms\n",
"requires the presence of a \"master\" device. That is, at least one\n",
"among the different devices under the control of the same user must\n",
"support the control mechanism and be able to become a controller for\n",
"the other devices in the call. Moreover, the \"master\" device is\n",
"supposed to remain involved in the user's session for its entire\n",
"duration given that performing a handover of the master role is\n",
"typically cumbersome and sometimes impossible.\n",
"\n",
"The objective of this working group is to develop a framework for\n",
"disaggregated media in \"loosely-coupled\" scenarios, where no single\n",
"device needs to remain in the session for its entire duration and no\n",
"single device needs to act as a master. Coordination among devices in\n",
"this type of scenario is less tight than in the scenarios described\n",
"above since they do not assume central elements with complete\n",
"knowledge of the whole media session. While the framework may describe\n",
"how to use existing mechanisms (e.g., the SIP REFER method) to\n",
"coordinate devices, the working group will not develop new device\n",
"coordination mechanisms. The framework may identify the need for new\n",
"(non-device-coordination) mechanisms to enable the implementation of\n",
"loosely-coupled scenarios. In case the need for such new mechanisms is\n",
"identified, the working group will specify them.\n",
"\n",
"Specifically, the proposed working group will develop the following\n",
"deliverables:\n",
"\n",
"1. A framework document describing key considerations for the exchange\n",
" of disaggregated media in SIP. The document will include use cases\n",
" and examples. The document may indentify the need for new\n",
" mechanisms or extensions to existing mechanisms.\n",
"\n",
"2. Specifications of new mechanisms or extensions to existing\n",
" mechanisms if the need is identified in the framework.\n",
"\n",
"Goals and Milestones:\n",
"\n",
"Feb 2011 - Framework document sent to the IESG (Informational)\n",
"---------------------------------\n",
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n",
"78attendees 2010-07-24 00:00:00\n",
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n",
"yot 2017-07-20 00:00:00\n",
"Dear all,\n",
"\n",
"This is a reminder for the YANG of THINGS Side meeting, which will take =\n",
"place *TODAY* (July 20th), 10AM-12PM CEST in room room Tyrolka, =\n",
"Mezzanine Level.\n",
"\n",
"The materials for the meeting are available online at the following =\n",
"address: https://github.com/Ixau/yot/tree/master/ietf99\n",
"\n",
"Remote presence will be made available thanks to Jitsi - just go to the =\n",
"address through your browser: https://jitsi.tools.ietf.org/yot=20\n",
"We will also try to take notes in the Etherpad: =\n",
"http://etherpad.tools.ietf.org:9000/p/yot (This is of course an =\n",
"informal meeting, so don=E2=80=99t expect detailed minutes)\n",
"\n",
"Best,\n",
"Alexander\n",
"---------------------------------\n",
"Dear all,\n",
"\n",
"I=E2=80=99d like to thank everyone who participated today - in person or =\n",
"remotely via Jitsi. The room was full and we=E2=80=99ve had a lot of =\n",
"interesting discussions on the place of the different YANG-related =\n",
"technologies in the constrained space. One of the take-aways is to =\n",
"specify the classes of =C2=AB Things =C2=BB which may be of interest - =\n",
"potentially adding classes which would not fall in the typical =\n",
"constrained space (but which are embedded systems). (And we have at =\n",
"least 3 IoT-centric YANG modules.. which we could probably discuss via =\n",
"this ML.)\n",
"\n",
"You can find the minutes at the following address: =\n",
"https://github.com/Ixau/yot/blob/master/ietf99/minutes\n",
"\n",
"Don=E2=80=99t hesitate to add new elements with your notes (via a pull =\n",
"request or by mail).\n",
"\n",
"Best,\n",
"Alexander\n",
"---------------------------------\n",
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n",
"sframe 2020-11-20 00:00:00\n",
"Hi all,\n",
"\n",
"One point that was raised during the SFrame meeting at IETF 109 was whether\n",
"the MLS-SFrame integration should re-use the MLS \"secret tree\" structure.\n",
"\n",
"For those who might not be deep in MLS, the secret tree provides forward\n",
"secrecy for MLS messages sent within an epoch, without the need to generate\n",
"base keys for all participants [1]. In other words, if you have a group\n",
"where (a) only a few participants are speaking and (b) they ratchet their\n",
"key after each message, then the secret tree assures that compromise of any\n",
"group member with current state won't leak the keys for messages that have\n",
"already been sent/received.\n",
"\n",
"Let's consider three possible integrations:\n",
"\n",
"1. SFrame uses the same secret tree as MLS (export at the leaves)\n",
"2. SFrame exports a single secret, then makes its own secret tree\n",
"3. SFrame exports a single secret, then uses a simpler scheme (like the\n",
"current one)\n",
"\n",
"I would posit that (1) is not workable. That requires a tight coupling\n",
"between the MLS and SFrame stacks, which will often not be tractable, e.g.,\n",
"in situations where the media logic is in a separate thread or process from\n",
"the MLS logic.\n",
"\n",
"(2) only adds value over (3) if SFrame senders ratchet their keys.\n",
"Otherwise, there's no forward secrecy boundary; criterion (b) above doesn't\n",
"apply. The current MLS-SFrame document has no provision for ratcheting\n",
"within an epoch. We could do it, but it would require more bits of header\n",
"to send a \"generation\" as MLS does, to indicate how many times you've\n",
"ratcheted. It also seems like situations where you have mostly silent\n",
"participants are more rare in real-time cases than in messaging cases.\n",
"\n",
"So my preference would still be for (3), largely because intra-epoch\n",
"forward secrecy seems like a pretty secondary consideration here. If\n",
"intra-epoch forward secrecy is a problem people want to solve, then we\n",
"should do ratcheting, and we should do the secret tree.\n",
"\n",
"--Richard\n",
"\n",
"[1]\n",
"https://github.com/mlswg/mls-protocol/blob/master/draft-ietf-mls-protocol.md#secret-tree-secret-tree\n",
"---------------------------------\n",
"Thanks for the detailed write-up!\n",
"\n",
"I agree that option 1 is very problematic for a number of reasons and I don’t see a good reason to pursue it.\n",
"I think you hit the nail on the head when you asked whether we want into-epoch forward secrecy or not.\n",
"\n",
"In uses cases where call participants comes together ad-hoc as an ephemeral group, there is certainly little need for it. In other scenarios, where a fixed set of participants have reoccurring calls it might well be that there won’t be an epoch change for a considerable time (because no one joins or leaves the group). For these use cases option 2 & 3 come into play.\n",
"Option 2 solves the problem, but the solution comes at the price of implementation complexity.\n",
"Option 3 could be much simpler, namely it would be enough to use a unique session ID to derive a base key that is unique to the session:\n",
"\n",
"sframe_epoch_secret = MLS-Exporter(\"SFrame 10 MLS\", \"\", AEAD.Nk)\n",
"session_secret = HKDF-Expand(sframe_epoch_secret, session_id, AEAD.Nk)\n",
"sender_base_key[index] = HKDF-Expand(session_secret, encode_big_endian(index, 8), AEAD.Nk)\n",
"\n",
"This is easy to implement and efficient but a little more error-prone since forward secrecy will only be achieved if session_id is unique between sessions. Re-using the same value will not yield forward secrecy.\n",
"\n",
"Raphael\n",
"\n",
"> On 20 Nov 2020, at 16:17, Richard Barnes <rlb@ipv.sx> wrote:\n",
"> \n",
"> Hi all,\n",
"> \n",
"> One point that was raised during the SFrame meeting at IETF 109 was whether the MLS-SFrame integration should re-use the MLS \"secret tree\" structure. \n",
"> \n",
"> For those who might not be deep in MLS, the secret tree provides forward secrecy for MLS messages sent within an epoch, without the need to generate base keys for all participants [1]. In other words, if you have a group where (a) only a few participants are speaking and (b) they ratchet their key after each message, then the secret tree assures that compromise of any group member with current state won't leak the keys for messages that have already been sent/received.\n",
"> \n",
"> Let's consider three possible integrations:\n",
"> \n",
"> 1. SFrame uses the same secret tree as MLS (export at the leaves)\n",
"> 2. SFrame exports a single secret, then makes its own secret tree\n",
"> 3. SFrame exports a single secret, then uses a simpler scheme (like the current one)\n",
"> \n",
"> I would posit that (1) is not workable. That requires a tight coupling between the MLS and SFrame stacks, which will often not be tractable, e.g., in situations where the media logic is in a separate thread or process from the MLS logic.\n",
"> \n",
"> (2) only adds value over (3) if SFrame senders ratchet their keys. Otherwise, there's no forward secrecy boundary; criterion (b) above doesn't apply. The current MLS-SFrame document has no provision for ratcheting within an epoch. We could do it, but it would require more bits of header to send a \"generation\" as MLS does, to indicate how many times you've ratcheted. It also seems like situations where you have mostly silent participants are more rare in real-time cases than in messaging cases.\n",
"> \n",
"> So my preference would still be for (3), largely because intra-epoch forward secrecy seems like a pretty secondary consideration here. If intra-epoch forward secrecy is a problem people want to solve, then we should do ratcheting, and we should do the secret tree.\n",
"> \n",
"> --Richard\n",
"> \n",
"> [1] https://github.com/mlswg/mls-protocol/blob/master/draft-ietf-mls-protocol.md#secret-tree-secret-tree <https://github.com/mlswg/mls-protocol/blob/master/draft-ietf-mls-protocol.md#secret-tree-secret-tree>-- \n",
"> Sframe mailing list\n",
"> Sframe@ietf.org\n",
"> https://www.ietf.org/mailman/listinfo/sframe\n",
"---------------------------------\n",
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n",
"6lowapp 2009-11-17 00:00:00\n",
"Hello All,\n",
"\n",
"I only just joined 6lowapp, so I caught up by reading the archives a bit. I didn't see any previous discussion of commissioning, besides a very quick security discussion. I apologize if this is thus already discussed somewhere I missed! I was working on the commissioning problem on the IPSO side, and was just directed to 6lowapp. \n",
"\n",
"I had some questions on the fundamental assumptions of commissioning:\n",
"\n",
"> 1) Duckling mode. One Device is put in a \"mother duck\" mode where it\n",
"> listens for broadcasts of Devices trying to imprint.\n",
"\n",
"I'm assuming this is based on http://www.cl.cam.ac.uk/~fms27/duckling/ (The Resurrecting Duckling). \n",
"\n",
"As described, the method isn’t highly secure. The main problems are:\n",
"\n",
"1)\tIf you just add whoever is in ‘imprint’ mode, it is easy for an attacker to add themselves to your network.\n",
"\n",
"2)\tHow to put nodes in duckling mode? The paper mentions maybe having a ‘master key’ who can do this.\n",
"\n",
"Wi-Fi Protected Setup (WPS) helps get around some of these problems by having a push-button and LED. The button puts the node into either mother or duckling mode (depending on node type), and an LED lets the user see which two nodes are going to connect. \n",
"\n",
">2) Out of Band Key mode. Each Device in manufactured with an initial\n",
"> symmetric key physically printed on the side in numeric and barcode\n",
"> form...\n",
"\n",
"This is similar to WPS’s PIN-based entry. The issue with that was many nodes which could run 6LoWPAN will physically be too small to have labels legibly printed on them. Further having labels which must agree with a preprogrammed key would increase manufacturing cost, and there is a problem with labels being knocked off. WPS gets around this by having nodes being able to generate their own PIN and displaying it on an LCD, but most 6LOWPAN nodes would be too cheap for this.\n",
"\n",
"There is a security threat too: let’s say you have a ‘secure’ network. An attacker has physical access to your end nodes, but not to the central station which authorizes new nodes to come online. For many application this would be a reasonable assumption I would think. They could just put a label with a different key on your end node, then drain the batteries from the node or do something else that would force a maintenance operation. When the node is being ‘fixed’ it will be put back on the network, but really you’ve just opened up your network to an attacker.\n",
"\n",
"> 3) Certificate mode. Each Device is manufactured with a certificate\n",
" > with an asymmetric key. The fingerprint of the certificate is printed\n",
"\n",
"Similar issues to labels above, but since it’s optional it could be deployed where manufactures specifically see it as an advantage. The issue with the first two is they are mandatory.\n",
"\n",
"> no public key cryptography to support\n",
"> modes 1 and 2 and additional crypto profile with public key\n",
"> cryptography for support of mode 3\n",
"\n",
"I also see that only mode 3 will use Public-Private exchange. Should method 1 not require a public-private exchange, as I know of no other way to secure a hostile channel? You can use ECC encryption which is pretty light-weight (less than 3K ROM, 300 bytes SRAM).\n",
"\n",
"If a node is too small to run ECC it has no business doing an In-Band key exchange. Passive listening on RF networks is far too easy and impossible to detect. Man In The Middle and other attacks at least need the attacker to do something detectable mostly. It’s not just an issue of someone by chance listening when you do the setup. The problem is they could easily purposely force one node off the network by selective jamming, and waiting until maintenance personal reset or replace the node and do a new key exchange. \n",
"\n",
"Was any consideration given to an Out Of Band (OOB) exchange method? Something like using IR (either IrDA or discrete IR), or even a very simple physical connection. It would almost guarantee a secure key exchange, have little code overhead, and physical connection can be used to power parasitically-powered nodes which might not be able to go through lengthy configuration processes. As well it would lend itself to a small ‘widget’ being used to authorize nodes, such as a cheap pen-sized tool with some smarts in it. \n",
"\n",
"Regards,\n",
"\n",
" -Colin O’Flynn\n",
"\n",
"PS: I have some information I wrote down for IPSO about Security problems & Commissioning problems I could try to post somewhere 6LOWAPP would have access to them as well.\n",
"---------------------------------\n",
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n",
"80attendees 2011-03-23 00:00:00\n",
"rpelletier@isoc.org:\n",
"> While we're talking about T-Shirts, don't forget to upload a picture\n",
"> to <http://www.ietf.org/ietf25/gallery.py>\n",
"\n",
"> Oldest one so far is IETF 32\n",
"\n",
"Arghh! Claudio, you beat me to the IETF 28 one! ;-)\n",
"\n",
"... but the caption under the picture is incorrect. IETF 28 was in the\n",
"autumn of 1993, not 1992. ;-)\n",
"\n",
"I guess my only remaining trump is the limited edition official terminal\n",
"room staff T-shirt from IETF 33 (July 1995). I'll upload soon. ;-)\n",
"\n",
"... but the person you really need to talk to is Bill Manning,\n",
"authorized T-shirt master collector. ;-)\n",
"\n",
"\t\t\t\tCheers,\n",
"\t\t\t\t /Liman\n",
"#----------------------------------------------------------------------\n",
"# Lars-Johan Liman, M.Sc. ! E-mail/SIP/Jabber: liman@autonomica.se\n",
"# Senior Systems Specialist ! Tel: +46 8 - 562 860 12\n",
"# Autonomica AB, Stockholm ! http://www.autonomica.se/\n",
"#----------------------------------------------------------------------\n",
"---------------------------------\n",
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n",
"earlywarning 1999-11-10 00:00:00\n",
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n",
"107attendees 1999-11-10 00:00:00\n",
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n",
"91all 1999-11-10 00:00:00\n",
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n",
"pidloc 1999-11-10 00:00:00\n",
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n",
"iola-wgcharter-tool 1999-11-10 00:00:00\n",
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n",
"oam 1999-11-10 00:00:00\n",
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n",
"6band 1999-11-10 00:00:00\n",
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n",
"103all 1999-11-10 00:00:00\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/var/folders/_l/m1t5fd6s2yn3409p5pl_8q7c0000gn/T/ipykernel_6695/647057365.py:5: FutureWarning: Comparison of Timestamp with datetime.date is deprecated in order to match the standard library behavior. In a future version these will be considered non-comparable. Use 'ts == pd.Timestamp(date)' or 'ts.date() == date' instead.\n",
" matching_dates = archives[archive_names.index(root_name)].data.Date.dt.date == max_date\n"
]
}
],
"source": [
"# Read through some emails from those mailing lists\n",
"for c in top_master_cols:\n",
" max_date = plot_data[c][plot_data[c] == plot_data[c].max()].index[0]\n",
" root_name = c.split(\" \")[0]\n",
" matching_dates = archives[archive_names.index(root_name)].data.Date.dt.date == max_date\n",
" print(\"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\")\n",
" print(root_name, max_date)\n",
" for b in archives[archive_names.index(root_name)].data[matching_dates].Body:\n",
" if \"master\" in b:\n",
" print(b)\n",
" print(\"---------------------------------\")"
]
},
{
"cell_type": "markdown",
"id": "b1d2203a",
"metadata": {},
"source": [
"## Look closer at 2018-2020"
]
},
{
"cell_type": "code",
"execution_count": 55,
"id": "acc94f43",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>91all whitelist</th>\n",
" <th>91all blacklist</th>\n",
" <th>91all slave</th>\n",
" <th>91all master</th>\n",
" <th>sframe whitelist</th>\n",
" <th>sframe blacklist</th>\n",
" <th>sframe slave</th>\n",
" <th>sframe master</th>\n",
" <th>babel whitelist</th>\n",
" <th>babel blacklist</th>\n",
" <th>...</th>\n",
" <th>82attendees master_github</th>\n",
" <th>secdir master_github</th>\n",
" <th>mipshop master_github</th>\n",
" <th>80attendees master_github</th>\n",
" <th>cnrp master_github</th>\n",
" <th>6lowapp master_github</th>\n",
" <th>78attendees master_github</th>\n",
" <th>babel safetyslave</th>\n",
" <th>secdir safetyslave</th>\n",
" <th>cnrp safetyslave</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2018-10-28</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-10-29</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-10-30</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-10-31</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-11-01</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2020-12-27</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2020-12-28</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2020-12-29</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2020-12-30</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2020-12-31</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>796 rows × 90 columns</p>\n",
"</div>"
],
"text/plain": [
" 91all whitelist 91all blacklist 91all slave 91all master \\\n",
"2018-10-28 0.0 0.0 0.0 0.0 \n",
"2018-10-29 0.0 0.0 0.0 0.0 \n",
"2018-10-30 0.0 0.0 0.0 0.0 \n",
"2018-10-31 0.0 0.0 0.0 0.0 \n",
"2018-11-01 0.0 0.0 0.0 0.0 \n",
"... ... ... ... ... \n",
"2020-12-27 0.0 0.0 0.0 0.0 \n",
"2020-12-28 0.0 0.0 0.0 0.0 \n",
"2020-12-29 0.0 0.0 0.0 0.0 \n",
"2020-12-30 0.0 0.0 0.0 0.0 \n",
"2020-12-31 0.0 0.0 0.0 0.0 \n",
"\n",
" sframe whitelist sframe blacklist sframe slave sframe master \\\n",
"2018-10-28 0.0 0.0 0.0 0.0 \n",
"2018-10-29 0.0 0.0 0.0 0.0 \n",
"2018-10-30 0.0 0.0 0.0 0.0 \n",
"2018-10-31 0.0 0.0 0.0 0.0 \n",
"2018-11-01 0.0 0.0 0.0 0.0 \n",
"... ... ... ... ... \n",
"2020-12-27 0.0 0.0 0.0 0.0 \n",
"2020-12-28 0.0 0.0 0.0 0.0 \n",
"2020-12-29 0.0 0.0 0.0 0.0 \n",
"2020-12-30 0.0 0.0 0.0 0.0 \n",
"2020-12-31 0.0 0.0 0.0 0.0 \n",
"\n",
" babel whitelist babel blacklist ... 82attendees master_github \\\n",
"2018-10-28 0.0 0.0 ... 0.0 \n",
"2018-10-29 0.0 0.0 ... 0.0 \n",
"2018-10-30 0.0 0.0 ... 0.0 \n",
"2018-10-31 0.0 0.0 ... 0.0 \n",
"2018-11-01 0.0 0.0 ... 0.0 \n",
"... ... ... ... ... \n",
"2020-12-27 0.0 0.0 ... 0.0 \n",
"2020-12-28 0.0 0.0 ... 0.0 \n",
"2020-12-29 0.0 0.0 ... 0.0 \n",
"2020-12-30 0.0 0.0 ... 0.0 \n",
"2020-12-31 0.0 0.0 ... 0.0 \n",
"\n",
" secdir master_github mipshop master_github \\\n",
"2018-10-28 0.0 0.0 \n",
"2018-10-29 0.0 0.0 \n",
"2018-10-30 0.0 0.0 \n",
"2018-10-31 0.0 0.0 \n",
"2018-11-01 0.0 0.0 \n",
"... ... ... \n",
"2020-12-27 0.0 0.0 \n",
"2020-12-28 0.0 0.0 \n",
"2020-12-29 0.0 0.0 \n",
"2020-12-30 0.0 0.0 \n",
"2020-12-31 0.0 0.0 \n",
"\n",
" 80attendees master_github cnrp master_github \\\n",
"2018-10-28 0.0 0.0 \n",
"2018-10-29 0.0 0.0 \n",
"2018-10-30 0.0 0.0 \n",
"2018-10-31 0.0 0.0 \n",
"2018-11-01 0.0 0.0 \n",
"... ... ... \n",
"2020-12-27 0.0 0.0 \n",
"2020-12-28 0.0 0.0 \n",
"2020-12-29 0.0 0.0 \n",
"2020-12-30 0.0 0.0 \n",
"2020-12-31 0.0 0.0 \n",
"\n",
" 6lowapp master_github 78attendees master_github \\\n",
"2018-10-28 0.0 0.0 \n",
"2018-10-29 0.0 0.0 \n",
"2018-10-30 0.0 0.0 \n",
"2018-10-31 0.0 0.0 \n",
"2018-11-01 0.0 0.0 \n",
"... ... ... \n",
"2020-12-27 0.0 0.0 \n",
"2020-12-28 0.0 0.0 \n",
"2020-12-29 0.0 0.0 \n",
"2020-12-30 0.0 0.0 \n",
"2020-12-31 0.0 0.0 \n",
"\n",
" babel safetyslave secdir safetyslave cnrp safetyslave \n",
"2018-10-28 0.0 0.0 0.0 \n",
"2018-10-29 0.0 0.0 0.0 \n",
"2018-10-30 0.0 0.0 0.0 \n",
"2018-10-31 0.0 0.0 0.0 \n",
"2018-11-01 0.0 0.0 0.0 \n",
"... ... ... ... \n",
"2020-12-27 0.0 0.0 0.0 \n",
"2020-12-28 0.0 0.0 0.0 \n",
"2020-12-29 0.0 0.0 0.0 \n",
"2020-12-30 0.0 0.0 0.0 \n",
"2020-12-31 0.0 0.0 0.0 \n",
"\n",
"[796 rows x 90 columns]"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data_2018_20 = plot_data[plot_data.index.date > datetime.date(2018, 10, 21)]\n",
"data_2018_20 = data_2018_20[data_2018_20.index.year <= 2020]\n",
"\n",
"window = 7 # rolling weekly average\n",
"data_2018_20 = data_2018_20.rolling(window).mean().dropna(how='all')\n",
"data_2018_20"
]
},
{
"cell_type": "code",
"execution_count": 56,
"id": "dd398e50",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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kyZNyvLDfGYuX75MlSpV6Nq1KyVLliQmJob58+dTt25dTp06hbOzMwDHjx+nRYsWeHt7s3TpUqytrfn2229Zvnx5mmNOnTqVcePG0adPH8aNG0dycjJffPEFjRs35s8//8xV2tijR49488036devHx9++CG7du1i8uTJODg4GKVWZZfhefPSSy+py/766y8AfH19jbYtXbo0zs7O6vqcMDMzY8iQIXz//fc0b95cTS0bM2YMDg4ODBgwIMfHNNixYwcuLi64uroaPYbGjRun2dbwPD958iRly5bN8JgZXRcXFxfc3NzSPWZurosQQmSocDuEXnxPp5Z9++23CqCsXbvWaLvPP/9cAZQtW7aoywDFyspKuX79urosJSVFqVq1quLl5ZXpeQ1pNzVr1jRKWwgNDVUA5c033zTa/oMPPlAAJTY2Nt3j6fV65dGjR8rOnTsVQDl27Ji6buLEicrTT5X0Ust4Kl1myZIlCqAMGTLEaLsZM2YogBITE6MoiqKcPHlSAZTRo0cbbbdq1SoFUHr16pXptUjv3Dt27FAAZceOHYqipKaBAEpoaGimx8kotez1119XatWqlWU7nma4BlFRUUbLn27foUOHFEDZsGFDpsdzd3c3uh6G47Rp08Zou7Vr1yqAsm/fPkVRFOXOnTuKhYWF0qVLF6Pt9u3bpwBZptMZtps5c6bR8qtXrypWVlbKRx99pC5LTExU/Pz8FA8PD+XUqVNKqVKllICAACUlJUXdpm/fvoqZmZly6tSpDM+ZXmpZr169FHd39zTbPv0c/fLLLxVAuXfvXo6OP2LECMXKyspov1OnTimAMnfuXHVZ1apVFT8/P+XRo0dGx3z99deV0qVLG/1Ppufp5+vTUlJSlEePHinNmjVT2rdvn6bNvr6+Rtfzzz//VABl1apViqKkpjK5ubkp9evXNzrulStXFDMzM6Nr+PRz8elzZZbal5KSosTHxys2NjbKV199pS7v1KmTYmNjo9y8eVNdptPpFB8fH6P/h+joaMXU1FR57733jI57//59xc3NTencuXOG586o7b169Ur3NbhNmzZKlSpVMj1eeq5du6aUKlVKqVOnjtHfdcCAAYqFhUW6+3h7eystW7ZMd11mqWWKkvpaPGHCBMXExEQBFECpUKGCEhkZmeO2GyxcuFABjP5GiqIoZmZmyqBBg9JsHxERoQDK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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"top_columns = data_2018_20.sum().sort_values(ascending=False)[:10].index\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.add_subplot(1,1,1) \n",
"\n",
"for c in top_columns:\n",
" plt.plot(data_2018_20[c].index, data_2018_20[c], alpha=.4, label=c)\n",
"\n",
"plt.axvline(x=datetime.datetime.strptime(\"10-22-2018\", \"%m-%d-%Y\"), linestyle=':', color=\"grey\", alpha=.5)\n",
"\n",
"plt.xticks(rotation=45)\n",
"plt.title(\"Top mailing lists using exclusive language in 2018-2020\")\n",
"plt.ylabel(\"Weekly average\")\n",
"plt.legend()\n",
"ax.legend(bbox_to_anchor=(1.1, 1.05))\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7da566a2",
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"# Read some of those emails\n",
"max_date = datetime.date(2018, 11, 28)\n",
"root_name = \"dots\"\n",
"matching_dates = archives[archive_names.index(root_name)].data.Date.dt.date == max_date\n",
"for b in archives[archive_names.index(root_name)].data[matching_dates].Body:\n",
" print(b)\n",
" print(\"* * * * * * * * * * * * * * * * * * * * * * * * * \")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.4"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {
"height": "calc(100% - 180px)",
"left": "10px",
"top": "150px",
"width": "167.6px"
},
"toc_section_display": true,
"toc_window_display": true
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment